lunes, 17 de septiembre de 2018

El diablo está en los detalles

Un conocido dicho anglosajón afirma que el diablo está en los detalles, y viene a advertirnos de que, en no pocas ocasiones, son las pequeñas cosas, a las que solemos dar poca importancia o directamente ignoramos, las que pueden convertir cualquier empresa en un éxito o un fracaso.

Con la criptografía ocurre algo muy parecido. La mayor parte de su utilidad radica en garantizar que no se puedan hacer determinadas cosas con la información, fundamentalmente alterarla o acceder a ella de manera fraudulenta, y en este sentido las matemáticas se han convertido en una herramienta fundamental para lograr estos objetivos. Por suerte, los razonamientos matemáticos son lo suficientemente rigurosos como para saber, sin temor a equivocarnos, cuándo se cumple esta o aquella propiedad. Y esto hasta el punto de poder identificar cosas que intuimos ciertas, pero que hemos logrado probar que jamás podremos demostrar por completo.

Pero ese no es el problema, ni los detalles de los que quiero hablar en este post. Hoy por hoy, los fundamentos matemáticos de la criptografía gozan de muy buena salud, y apenas son cuestionados más allá del sano escrutinio académico que permite refinar nuestro cuerpo de conocimiento, y avanzar a la ciencia en general.

Hoy me quiero centrar en el que me atrevería a calificar como el principal problema de la criptografía a día de hoy: las implementaciones. En el idealizado mundo del papel o la pizarra, las ecuaciones siempre funcionan y las propiedades siempre se cumplen, pero a la hora de trasladar estos conceptos al mundo real, de codificarlos como instrucciones que tienen que ser ejecutadas por un microprocesador, dentro de una arquitectura determinada, en un contexto físico concreto, es donde aparecen esos detalles que pueden arruinar nuestro sistema. Y hay que reconocer que la imaginación de quienes buscan esos pequeños resquicios no conoce límites, habiendo logrado dar al traste con más de un sistema completamente seguro sobre el papel.

Los llamados canales laterales son unos de los más molestos chivatos que podemos encontrar en un sistema informático. Se han desarrollado métodos que permiten recuperar claves de cifrado mediante el análisis del consumo energético del hardware, o de las emisiones térmicas, electromagnéticas, acústicas, etc. que produce cuando ejecuta nuestros algoritmos. En este caso, el verdadero enemigo suelen ser los mecanismos de optimización que colocamos nosotros o, peor aún, que se incorporan de forma automática cuando se compila o se ejecuta el código, sin que podamos hacer mucho al respecto. Con el objeto de reducir los requerimientos computacionales (tiempo y memoria) de nuestro algoritmo, lo que se hace en muchos casos es acentuar las diferencias, observables desde el exterior, que se producen cuando se ejecuta el mismo con diferentes valores de entrada, dando involuntariamente información sobre estos a un observador malicioso.

Y es que el tema de la seguridad es siempre global, y debe ser analizado desde un punto de vista lo más amplio posible. En caso contrario, ese diablo que se esconde en los detalles acabará jugándonos una mala pasada.