La seguridad

Hace unas semanas hubo cierto revuelo en los medios relacionados con la informática y la tecnología. Esto era debido a que se descubrió un grave problema de seguridad en los sistemas Apple (tanto móviles como ordenadores y tablets) que resultaba en una falla de seguridad importante a la hora de acceder a páginas web con encriptación SSL. Esto ha ocurrido mientras terminaba un curso online sobre criptografía, así que atrajo mi atención en seguida.

Lo grave del asunto es que ese error era debido, no a un error sutil que hiciese difícil encontrarlo o reproducirlo, sino a un error de programación digno de un novato (y lo dice alguien que no pasa más allá de amateur). El error está explicado en este enlace, pero para resumirlo, podemos decir que la duplicación “inadvertida” de una línea provocaba un salto en el código que hacía que la línea que chequeaba si la conexión era segura siempre era omitida. Es decir, nunca se realizaba la comprobación de seguridad.

Y la gestión de la solución se ha llevado algo mal, con cierto secretismo, quizá provocado por la vergüenza de cometer un error tan básico. Se han comentado cosas como que Apple podría estar compinchada con la NSA desde hace tiempo, pero parece que esto tiene más que ver con un problema en la fase de testeo dentro de la empresa. Esto, aunque menos morboso que la posible conspiración, sigue siendo tremendamente grave. Que una empresa, de las más grades del mundo y con los productos ubiquos en el mundo tenga un problema de este calibre a la hora de detectar un fallo es algo que preocupa. Porque aunque el error puede pasar desapercibido, detectar que existía era tan sencillo como comprobar que, en caso de ser una conexión no segura, el SSL hacía su trabajo. Después habría tiempo para encontrar el error exacto, pero detectar que había un error era y es sencillo (en este caso). Lo que indica que no lo están haciendo bien.

Por otra parte, según parece hubo algunos de los papeles de Wikileaks en los que se mostraba que la NSA señalaba los dispositivos Apple como “vulnerables”, es decir, que la NSA ha estado tiempo sabiendo de este agujero de seguridad, por lo que probablemente fuese sencillo para ellos interceptar comunicaciones de equipos de la compañia y obtener información. Espiar nunca fue tan fácil.

Pero como digo, lo grave del asunto es que Apple tiene dos grandes problemas: uno de ellos, como comentan en el enlace anterior, está en el estilo de programación. Usando un estilo coherente y profesional, usando llaves de apertura y cierre, hubiesen solucionado el problema que hubiese sido un mero código duplicado que no provocaría ningún problema de seguridad. El segundo de ellos es en el proceso de testeo, fase fundamental para minimizar la cantidad de errores (porque en el código, SIEMPRE hay errores o bugs) antes de poner a disposición nuevas versiones de software. Y eso es grave. Enlaza con las ideas de algunos importantes programadores e ingenieros de computación, como Bjarne Stroustrup, que llevan tiempo avisando que la formación de los profesionales de la informática es deficiente cuando se trata de desarrollar software de calidad, con estilos de programación eficientes. Y que esto facilita el intrusismo profesional de físicos, matemáticos y otros ingenieros (aquí me siento aludido, claro) que aprenden a programar con una calidad inferior, pero que tienen ventajas para los empleadores de forma que prefieren enseñar a programar a un físico que a un informático enseñarle matemáticas avanzadas o física.

Código propietario

A primera vista parece que, una de las principales ventajas del código libre, sería que al estar disponible el mismo, la detección de errores de seguridad y auditoría. Porque habría miles de personas, literalmente, estudiando ese código y modificandolo. Tal es así que incluso podrían evitarse problemas de backdoors. Esto es, que los programadores introdujesen un medio de acceder al sistema sin necesidad de contraseña ni ser detectado. Más o menos, el típico argumento de película de ciencia ficción sobre hackers (en concreto, parecido al argumento de La Red). Por lo que parece, el que acusó a Microsoft tenía una especie de cruzada contra ellos y no aporta pruebas. Bueno, quizá el típico conspiranoico, quién sabe. Pero lo cierto es que sería factible, al menos en teoría.

Por otro lado, el error de Apple es relativamente obvio a la hora de detectarlo para alguien experto. Al menos, si cientos de personas o miles pudiesen estudiar el código, lo más probable es que alguno lo hubiese detectado a tiempo (antes probablemente que la NSA). Además nos ahorramos la componente de conspiración, ya que si el código es público, no cabe la posibilidad de que fuese una conspiración (salvo que se pretendiese que todos aquellos que saben programar en el mundo). Pero como no ha sido así, es muy sencillo sospechar que hubiese algún tipo de “contubernio” entre Apple y la NSA, ya que en ciertos cabes de Wikileaks, como he dicho, se comentaba que los sistemas de esta compañía eran vulnerables.Código abierto

Código libre

Así, parece que la solución para evitar estos sutiles errores sería el código libre, dejando aparte que el negocio del software no lo vería como una solución de nada (Richard Stallman no estaría de acuerdo). Pero al final, resulta que tampoco. Esto del software libre no es la panacea y también se descubren errores bastante graves. En concreto, este. Tener en cuenta que Red Hat, aunque distribuye sistemas Linux y el código es abierto, tiene también software propietario. Aún así, el código estaba a la vista de mucha gente y pasó desapercibido, por lo que parece.

El problema es que encontrar comportamientos impredecibles y bugs en software muy complejo, con muchas interacciones y posibilidades, es tremendamente difícil y quizá haya que cambiar la filosofía de testing y debugging.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s