¿Por qué la falta de seguridad es algo implícito en los sistemas informáticos?

He leído un interesante artículo, que trata sobre por qué el software antivirus es relativamente inútil contra nuevos especímenes y la razón de que la informática sea cada día más insegura, y que paso a traducir a continuación.

Neil Barrett se remonta a los orígenes de la informática moderna para explicar por qué el software antivirus es tan limitado y por qué es tan difícil detectar código maligno.

Algunas frases son indudablemente ciertas: yo soy un varón adulto. Otras son indudablemente falsas: puedo respirar bajo el agua. Otras, sin embargo, requieren información adicional: vivo en una casa con un baño con losetas verdes. Puedes visitar mi casa, puedes preguntar a mi familia. Es una frase resoluble o decidible, siempre y cuando sea posible obtener la información suficiente.

Sin embargo, hay frases que no son totalmente decidibles, incluso aportando información adicional, o con toda la información posible: no es posible decidir si son verdaderas o falsas. El ejemplo más conocido es la frase: “Esta frase es falsa”. Si es cierta, entonces será falsa. Si es falsa, entonces será cierta. Es gramaticalmente correcta y bien formada, pero no es posible determinar si es cierta o, por el contrario, es falsa.

Son el tipo de frases utilizadas para confundir a los niños pero que han resultado ser un anatema para los matemáticos, cuyo propósito en la vida parece ser determinar si fórmulas matemáticas bien formadas son ciertas o falsas. Si frases como “esta frase es falsa” tuvieran fórmulas matemáticas análogas, éstas no tendrían solución y, por ello, los matemáticos se habrían impuesto una tarea imposible de resolver. Este hecho empezó a cobrar importancia a principios del siglo 20, cuando matemáticos de la talla de David Hillbert y Kurt Gödel intentaron definir principios matemáticos basándose en las premisas y teorías más rigurosas. Intentaban demostrar que las matemáticas eran una ciencia exacta, completa y consistente. Desafortunadamente, lo que consiguieron fue justo lo contrario. Pero en el camino hacia dicho descubrimiento, inventaron los ordenadores, ayudaron a ganar la Segunda Guerra Mundial y construyeron los fundamentos que hoy en día constituyen la “era de la información moderna”.

El mayor responsable, más que ningún otro, de establecer estos principios fue el genial matemático Alan Turing. No sólo dió respuesta al Problema de la Resolubilidad, sino que ideó una técnica imaginativa que permite construir autómatas matemáticos, ordenadores que fueron capaces desde un principio de resolver el cifrado de la máquina Enigma, y solucionaron posteriormente problemas desde el pago de las nóminas hasta el lanzamiento de cohetes. Y lo hizo creando lo que pasó a llamarse la “Máquina de Turing”, una versión idealizada de un matemático que manipula símbolos, transformando frases en otras alternativas, llegando a obtener la respuesta a cualquier forma de cálculo que pudiera ser expresada.

Esta máquina está formada por una cinta de longitud infinita, dividida en celdas discretas, donde cada una de ellas contiene un símbolo. También contiene una unidad capaz de leer y escribir dichos símbolos sobre una celda, junto con la posición actual dentro de la cinta y el valor del símbolo a escribir, que viene determinado por un conjunto pequeño de reglas sencillas que se basan en los valores leídos. La unidad se mueve por la cinta, leyendo y alterando los símbolos, de forma que se consiga alterar el valor de la cinta correspondiente al problema “original” para obtener la “respuesta”. La máquina de Turing se detiene una vez se ha hallado la respuesta. Cualquier problema para el que la máquina consigue detenerse se dice que tiene solución o que es “decidible”, y aquellos para los cuales no se detiene se dice que son “no decidibles”. Turing demostró que existen expresiones matemáticas bien definidas para las que una máquina de Turing nunca conseguiría legar a parar, y por ello, se puede decir que son expresiones no decidibles.

La Máquina de Turing, como concepto, es tremendamente potente y ofrece a los matemáticos una forma simple y mecánica de realizar su trabajo. La Máquina de Turing, una vez construida, se convierte en un dispositivo aún más potente, convirtiéndose en un autómata matemático, un ordenador programable capaz de realizar cualquier cálculo. Quizás, el salto más importante en esta dirección lo dió John von Neumann, quien diseño una forma de construir la máquina físicamente y que ha dado forma al ordenador moderno.

En el lenguaje de las matemáticas, un programa de ordenador es una Máquina de Turing, y un ordenador – aquel dispositivo que es capaz de ejecutar una Máquina de Turing – se denomina “Máquina Universal de Turing”, un modelo matemático capaz de interpretar cualquier otro modelo matemático. Uno de los objetivos del trabajo de Turing fue demostrar que existen programas que no terminan nunca, programas que son análogos a “esta frase es falsa”, y que por ello no son decidibiles.

¿Qué significado tiene ésto para la seguridad de la información? Esencialmente, se pretende saber a priori si una secuencia dada de cambios a una serie de datos (como un programa) es dañina o no. Por desgracia, en 1986, Fred Cohen fue capaz de demostrar que el problema de determinar si un trozo de código es un virus es, realmente, un problema no decidible y que una máquina de Turing que ejecutase dicho análisis no pararía nunca. La única forma de determinar el efecto que supone ejecutar un programa, es ejecutarlo y ver qué sucede.

Esto es un resultando de una tremenda trascendencia. Significa que la labor de un software antivirus es, esencialmente, un problema matemático sin solución. Por extensión, la tarea de determinar a priori si la ejecución de un programa tendrá consecuencias nefastas es, igualmente, imposible. La única forma de determinar las consecuencias de invocar un programa es permitirle que se ejecute y observar el estado en el que queda el sistema. Por ello, el objetivo de predecir si la ejecución de un programa es nefasta, desde el punto de vista de la seguridad informática, es una tarea inalcanzable.

Esta conclusión lleva implícito el hecho de que el modelo matemático de la computación es inherentemente inseguro y que no se puede saber de antemano si algo provocará efectos dañinos o no. Tomando prestada la frase de un colega, los ordenadores son “ontológicamente inseguros”, estén construídos a partir del modelo de von Neumann o de cualquier otro.

Indudablemente, esta no es la conclusión definitiva: el software antivirus existe y realiza una función vital e importante al igual que los sistema de detección de intrusiones, los modelos de memoria segregados y otras muchas soluciones. Sin embargo, debemos ser conscientes de que cada una de estas soluciones, por sí mismas, sólo son capaces de cerrar uno de los agujeros del dique. Para conseguir una verdadera seguridad informática, es necesario utilizar algo diferente que no esté sujeto a las reglas del modelo de la Máquina de Turing. Es necesario ver el problema desde el exterior y examinarlo desde otros puntos de vista. Es necesario aplicar la perspectiva humana, del mundo real, una perspectiva fascinante que no se vea afectada por frases como “esta frase es falsa”.

2 thoughts on “¿Por qué la falta de seguridad es algo implícito en los sistemas informáticos?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s