La criptología estudia, por una parte, la criptografía, cómo mantener un mensaje secreto y por otra parte el criptoanálisis, cómo desvelar ilícitamente esos mismos mensajes.
El arte de ocultar la información a los demás es tan viejo como el mundo y, tan humano como pueda serlo, el intentar leer esos mensajes sin permiso; qué poderosa fuerza es la de la curiosidad, y qué malas consecuencias tiene siempre sucumbir a ella. La historia antigua nos muestra múltiples ejemplos de ingeniosos mecanismos para ocultar mensajes; también técnicas para revelarlos de forma sistemática.
El arte de ocultar la información a los demás es tan viejo como el mundo
Los algoritmos han ido evolucionando al ritmo de la lucha entre la capacidad de ocultar, cifrar, un mensaje y la capacidad de leerlo, ilícitamente rompiendo el cifrado o, deduciendo la clave, descifrándolo. En los últimos cincuenta años el avance ha sido exponencial, como en muchas otras áreas de la humanidad, tanto por la mayor capacidad de cómputo como por el avance vertiginoso de las ciencias implicadas.
Podemos encontrar criptografía a nuestro alrededor constantemente. Usar la tarjeta del autobús para pagar el billete; pagar con nuestra tarjeta de crédito o usando el móvil; intercambiando mensajes secretos de amor utilizando nuestra aplicación de mensajería favorita; llevamos en nuestra cartera un dispositivo criptográfico extremadamente avanzado que sirve para demostrar nuestra identidad; nuestros ordenadores cifran la información de almacenamiento para que sólo nosotros tengamos acceso a ella. Abrimos la puerta del coche sólo con acercarnos a él gracias a la criptografía. Visitamos páginas web de forma anónima; operamos con nuestro banco; accedemos con nuestra tarjeta al edificio donde trabajamos. Saber que la criptografía está ahí nos da seguridad; falsa seguridad por un lado y de inquietud por otra ya que no entendemos bien cómo funciona y acaba siendo fe ciega.
Donde hay criptografía hay alguien que siente curiosidad
Donde hay criptografía hay alguien que siente curiosidad. Si deseamos mantener seguro un mensaje es porque hay adversarios potenciales que quieren conocer el mensaje. Cuando se diseña un sistema criptográfico, un criptosistema, hay que tener en cuenta cuántos recursos e incentivos tienen los adversarios, tanto sus recursos actuales como los futuros; asumir que conocen todos los detalles del mecanismo que estamos usando y determinar cuánta información pueden ver y modificar. Ningún criptosistema es seguro completamente. Algunos están diseñados exclusivamente con carácter disuasorio, otros están concebidos para detener ataques esponsorizados por países poderosos. La evaluación del riesgo de forma continua determinará la efectividad del sistema.
La seguridad, la funcionalidad y la usabilidad son los vértices de un triángulo del que sólo se puede elegir uno en el diseño de un sistema. En general, si queremos seguridad podremos elegir funcionalidad, pero no usabilidad. Si queremos usabilidad y funcionalidad perderemos seguridad.
En el caso simple de un mensaje, será seguro si es confidencial, íntegro, autenticado, no se puede repudiar y está disponible.
La confidencialidad se logra cuando sólo las partes interesadas pueden ver el mensaje en plano, el propósito fundamental de ocultar el mensaje. Es lo que más entendemos como privacidad. Dependiendo del nivel de confidencialidad que deseemos los mensajes podrán ir cifrados punto a punto o tendremos terceros de confianza para su gestión. Para que un mensaje sea ciertamente cifrado punto a punto sacrificaremos seriamente la usabilidad, por lo menos en el precario estado actual de la gestión de la identidad.
La integridad permite verificar que el mensaje no ha sido alterado por el camino, ya sea porque se ha modificado el contenido, se ha añadido información o se ha eliminado parte. Existen mecanismos para modificar los mensajes cifrados de forma que el receptor del mensaje no puede distinguir un mensaje bueno y otro manipulado. La integridad no sólo se refiere a la manipulación del mensaje sino a evitar que un mensaje anterior pueda ser enviado de nuevo creando, cuando menos, confusión; esto es un ataque por repetición. Si alguien envía un día el mensaje cifrado “Mañana quedamos a las 9:30 donde la última vez 😘” y el atacante lo captura y lo guarda, aún sin poder descifrarlo, podría más adelante, a su conveniencia, enviar el mismo mensaje y su receptor lo daría por bueno, quedando con la persona equivocada el día equivocado.
La autenticación hace que los participantes puedan confirmarse los unos a los otros. Es un aspecto muy importante y complejo. Si las identidades de las personas que participan en el intercambio de mensajes son verificables podré garantizar confidencialidad de forma usable, dejando aparte la usabilidad de la verificación de la identidad inicial y su mantenimiento. Si establezco unos buenos mecanismos de integridad estaré muy cerca un sistema de mensajería universal muy seguro y usable. A veces la identidad no es de personas sino de máquinas, pero la idea es la misma. En mensajería estamos aplicando una forma de autenticación puesto que la persona que nos está dando su número suele estar delante de nosotros físicamente y muchas veces se envía un “hola” en el momento para verificar el canal.
El no repudio impide que una de las partes pueda negar en el futuro que envió el mensaje. Da igual que lo borre. Este aspecto está muy relacionado con la autenticación; no serviría de mucho un documento firmado digitalmente si el que lo firma luego alega que no fue él. La posesión o control de un dispositivo de firma puede asegurar el no repudio. También está relacionado con la integridad; no podría garantizar el no repudio si alguien puede inyectar mensajes indistinguibles de los auténticos en cualquier momento.
La disponibilidad garantiza que los participantes puedan usar el sistema en todo momento, cuando lo necesiten. Cuando bloqueo un número de teléfono para no recibir más mensajes de ese número estoy usando una funcionalidad muy útil. Si un atacante bloquea el número sin que yo me dé cuenta estaré incomunicado sin saberlo, esperando eternamente un mensaje que nunca llegará. Si un sistema es saturado por mensajes hasta tal punto que no puede procesar más, el sistema deja de ser usable para otros usuarios legítimos creando un pequeño gran caos.
Existen otros aspectos de la seguridad que son también interesantes, aunque suelen ser derivaciones de los anteriores. La confidencialidad, integridad y autenticación forman los tres pilares de la seguridad.
Todos los mecanismos para hacer seguro un mensaje no sirven de mucho por sí solos. Un criptosistema sólo es una parte de un sistema de seguridad y no suele ser el objeto de ataques de forma directa salvo excepciones. En esta cadena, el eslabón más débil determina su fortaleza y suelen ser las personas, el factor humano e indirectamente la clave. Por muy fuerte y secreta que sea tu contraseña hay muchas técnicas baratas y rápidas para sonsacártela, ingeniería social cuando es elegante o tortura cuando no.
Un criptosistema debe ser seguro conociendo todo del sistema excepto la clave. Esto incluye que el algoritmo sea público evitando la seguridad por oscuridad, que pocas veces sobrevive. Además, ya es suficientemente difícil mantener secreta la clave como para tener que proteger el algoritmo. Por tanto, toda la seguridad recae sobre la clave.
La clave puede ser una simple contraseña u otros elementos mucho más sofisticados; en poco tiempo veremos cómo el papel de clave de la contraseña es interpretado por otros dispositivos seguros y usables.
Una buena clave depende de su entropía, lo aleatoria qué es, y de su longitud. Habitualmente las claves simétricas, no humanas, tienen 256 bits. Para poder entender cuántas claves distintas tendría que probar un atacante hasta dar por suerte con la clave buena, un ataque por fuerza bruta, tenemos que pensar que, técnicamente, la fortaleza de la clave es la raíz cuadrada del número de bits, por tanto 128 bits; y que 2128 son, más o menos, los átomos que tienen todos los granos de arena de la tierra. Recorrer todas las posibilidades implica un cambio de 1 bit cada vez que supone un consumo mínimo de energía. Sin embargo, la energía requerida para recorrer 2256 valores es mayor que la energía que podríamos obtener de una esfera de Dyson alrededor de una supernova… Por el contrario, un PIN de 4 dígitos son tan sólo 10.000 posibilidades. Por eso existen mecanismos de bloqueo de tiempo o permanentes por la introducción de un PIN incorrecto un número determinado de veces. Además, se utilizan técnicas de derivación de contraseña para aumentar la entropía de las contraseñas débiles.
En resumen, si lo que tienes que hablar con otra persona quieres que sea privado, es mejor que quedes con ella a pasear por el parque; cómo quedarás sin usar un mensaje previo es otro asunto.
¿Estás de acuerdo con todo lo que se dice en este artículo? ¡Conectamos en https://www.linkedin.com/in/davidcastanon/ y lo hablamos!