La criptografía insegura que deberías dejar de usarGonzalo Álvarez Marañón 12 noviembre, 2019 DES es inseguro, pero ¿y TripleDES? Sí, MD5 ya está roto, pero ¿qué pasa con SHA256? ¿Puedo seguir usando RSA con 2048 bits de clave o debería pasarme a ECC? ¿El modo de encadenamiento ECB es inseguro siempre, incluso con AES? ¿Son de fiar algoritmos nuevos con nombres molones como Salsa y ChaCha? La cuestión es: ¿qué algoritmos han quedado obsoletos con el paso del tiempo y habría que dejar de utilizar? Este artículo te ayudará a orientarte en esta espesa sopa criptográfica. Los dos motivos fundamentales por los que un algoritmo cae en desgracia Hay dos formas de atacar un algoritmo criptográfico: La bestia: se trata de probar todas las combinaciones posibles. Se lo denomina «ataque de fuerza bruta» o de «búsqueda exhaustiva». Para llevarlo a cabo solo hace falta potencia de cómputo. Con los años, a medida que la potencia aumenta, la longitud de la clave o del hash se va quedando corta. La sutil: se buscan debilidades matemáticas en el algoritmo en sí, independientemente de la longitud de sus claves o tamaños de bloque. Para llevarlo a cabo se requiere un profundo conocimiento del algoritmo y de las matemáticas implicadas. Este estudio recibe el nombre de «criptoanálisis». Con el paso del tiempo, los criptógrafos van encontrando debilidades en algunos algoritmos. Por lo tanto, debes evitar a toda costa los algoritmos débiles y también los algoritmos robustos con claves cortas. Además, deberás evitar usos inseguros de algoritmos robustos, como por ejemplo el encadenamiento de bloques AES en modo ECB, o RSA sin relleno. Quién es quién en criptografía La siguiente tabla recoge los algoritmos que deberías dejar de usar y por qué otros deberías reemplazarlos. * Pruebas de seguridad débiles, pueden seguir usándose, aunque sin garantías. Pero vayamos viendo los detalles poco a poco, para entender mejor las recomendaciones de la tabla anterior. Algoritmos de generación de números pseudoaleatorios La criptografía y la aleatoriedad forman una de esas parejas inseparables, como Ramón y Cajal o como Ortega y Gasset. En criptografía necesitas números aleatorios para generar claves secretas y públicas/privadas, vectores de inicialización, salts, nonces, identificadores de sesión, etc. Un generador pseudoaleatorio de números (GPAN) se considera criptográficamente seguro (GPANCS) si es imposible predecir el siguiente valor de una secuencia por muchos valores anteriores que se conozcan (en realidad, es mucho más complicado, pero dejémoslo ahí). Obviamente, para uso criptográfico, sólo se recomiendan algoritmos GPANCS. Los lenguajes de programación suelen venir equipados con una función rand() o random(), que genera secuencias pseudoaleatorias, que pasan muchas pruebas de aleatoriedad, pero que no son criptográficamente seguras. Dependiendo de su implementación, usarán Generadores Lineales Congruenciales o Mersenne twisters. Evita siempre utilizar estas funciones rand() o random() con fines criptográficos. Figura 1. Resultados de apariencia poco aleatoria del generador lineal congruencial para distintos parámetros de entrada. Algoritmos de hash Los algoritmos de hash producen un resumen de longitud fija a partir de una entrada de longitud arbitraria. Se utilizan para generar códigos de autenticación de mensajes (MAC) en servicios de integridad, para comprimir mensajes antes de su firma, para derivar claves a partir de contraseñas, para generar números pseudoaleatorios, para cifrar, y mucho más. Para considerarse criptográficamente seguras, las funciones de hash deben satisfacer al menos tres propiedades: Resistencia a la preimagen: dado un hash, es imposible encontrar un mensaje cualquiera que produzca el mismo hash.Resistencia a la segunda preimagen: dados un mensaje y su hash, es imposible encontrar otro mensaje que produzca el mismo hash. Resistencia a colisiones: es imposible encontrar dos mensajes cualesquiera que produzcan el mismo hash. Además, la longitud del hash debe ser suficientemente larga como para prevenir los ataques de fuerza bruta. Teniendo en cuenta la potencia de cómputo actual y el hipotético futuro post-cuántico, se recomiendan longitudes de hash de al menos 256 bits. Por otro lado, los ataques de extensión de longitud funcionan contra los algoritmos de hash basados en la construcción de Merkle–Damgård, comoMD5, SHA-1 y SHA-2, cuando se usan a modo de MAC. Se puede seguir utilizando la familia SHA-2, siempre que se trunquen las salidas a una longitud menor, como por ejemplo SHA-512/256. Algoritmos de cifrado simétrico o de clave secreta Los algoritmos de criptografía simétrica se utilizan fundamental para proteger la confidencialidad de la información. Emplean la misma clave secreta tanto para cifrar como para descifrar, esta clave debe tener una longitud mínima de 128 bits para considerarse segura hoy y en el futuro próximo. Pero hay un asunto más, los algoritmos de cifrado en bloque dividen la información a cifrar en bloques de una longitud determinada, por ejemplo, 256 bits. Cada bloque se va cifrando uno por uno, usando la misma función de cifrado con la misma clave. Esta forma de encadenar los bloques así sin más se conoce como ECB y resulta vulnerable ya que bloques idénticos darán como resultado bloques cifrados idénticos. Figura 2. La vulnerabilidad del modo de encadenamiento de bloques ECB: a la izquierda, la imagen original; a la derecha, la misma imagen cifrada en modo ECB (Imágenes de Wikipedia). Para evitarlo, se utilizan distintos modos de encadenamiento, los cuales no están exentos de problemas. Por ejemplo, el encadenamiento CBC es susceptible a un ataque de oráculo de relleno. La recomendación actual es utilizar AES-GCM. Algoritmos de cifrado asimétrico o de clave pública En cambio, la criptografía asimétrica utiliza una pareja de claves pública y privada para cifrar y descifrar. Su uso principal es la creación de firmas digitales y el establecimiento de claves de sesión. Los algoritmos más usados hoy en día tanto para cifrar como para firmar son RSA, basado en el problema de la factorización, y la criptografía de curva elíptica (ECC), basada en el problema del logaritmo discreto. En RSA es especialmente importante resaltar que nunca bajo ningún concepto debe utilizarse directamente en lo que se conoce como su versión «libro de texto», ya que sería susceptible a todo tipo de ataques: Al ser determinista, dado un cifrado, podría buscarse exhaustivamente el texto claro.Por el mismo motivo, es susceptible a ataques de reinyección.Sucumbe a los ataques de encuentro en el medio (a no confundir con ataques de hombre en el medio).Para mensajes cortos y exponente e pequeño, se pueden realizar ataques extrayendo la raíz e-ésima del cifrado, ataques de broadcast de Håstad, ataques de Coppersmith, ataques de Franklin-Reiter. Y eso por no mencionar los ataques contra implementaciones deficientes, como los ataques de temporización, los ataques de canal lateral o, ya puestos, el ataque de Bleichenbacher contra RSA PKCS#1 v1.5, tristemente de moda tras el reciente ataque ROBOT. En implementaciones reales en protocolos resulta necesario utilizar relleno y otros mecanismos de protección, como RSA-OAEP, así como claves equivalentes a una seguridad de algoritmo simétrico de al menos 128 bits. Para RSA, supone claves públicas de 3072 y para ECC, de 256 bits. Dependiendo del tipo de algoritmo, la longitud de clave requerida puede variar sustancialmente, como puede apreciarse en la siguiente tabla y en el gráfico que la acompaña. Se puede encontrar una exhaustiva recomendación de longitudes de clave en la página de BlueKrypt. Figura 3. Equivalencia entre las distintas longitudes de claves para AES, RSA y ECC (a partir de las recomendaciones del NIST de 2019 para gestión de claves). Algoritmos de firma digital La firma digital permite verificar que un mensaje no ha sido manipulado y además ha sido firmado por una persona determinada. Es más, el firmante no podrá echarse atrás y afirmar que no firmó el documento. Para firmar digitalmente se utiliza una combinación de hashes y criptografía asimétrica: el mensaje a firmar primero se resume mediante una función de hash, el cual se cifra por el signatario con su clave privada, operación que nadie más en el mundo puede realizar, ya que se supone que él es la única persona que conoce esta clave privada. En cambio, cualquiera que conozca su clave pública puede verificar esta firma. Al igual que al hablar de la criptografía asimétrica, en la firma se utilizan los mismos algoritmos RSA o ECC. Y también deben ser implementados cuidadosamente o se cometerán errores épicos. Se recurre por tanto a RSA-PSS y, aunque ECDSA se usa ampliamente, lo cierto es que no existen pruebas sólidas de su seguridad y sí algunos problemas menores. Como ves, la criptografía es extremadamente compleja. Ante la duda, déjate guiar por la tabla. Y si quieres profundizar en el tema, puedes leer el informe Algorithms, Key Size and Protocols Report (2018) publicado por la iniciativa europea ECRYPT-CSA, en el cual me he basado libremente para elaborar este artículo. ElevenPaths Radio – 1×11 Entrevista a Juan SantamaríaPresentamos los Digital Operation Centers, el lugar donde se integran todos los servicios digitales durante el SID2019
Telefónica Tech Boletín semanal de Ciberseguridad, 18 – 24 de marzo HinataBot: nueva botnet dedicada a ataques de DDoS El equipo de investigadores de Akamai ha publicado un informe en el que señala que han identificado una nueva botnet denominada HinataBot que dispondría...
Telefónica Tech Qué es el Esquema Nacional de Seguridad (ENS 2.0) La Ciberseguridad, la privacidad y la protección de los datos y de la información sensible son aspectos cada vez más importantes en la sociedad actual. Tanto para empresas y...
Nacho Palou 5G: cuatro casos de uso reales y prácticos El último informe “La Sociedad Digital en España 2022” [1] de Fundación Telefónica confirma la consolidación de los procesos de digitalización en la sociedad española. En este sentido, cabe...
Susana Alwasity Ciberseguridad: eventos “cisne negro” en un mundo conectado En la sociedad actual, la tecnología ha transformado la forma en que vivimos, trabajamos y nos relacionamos. Con el aumento del uso de dispositivos y redes conectados a internet,...
Telefónica Tech Boletín semanal de Ciberseguridad, 11 – 17 de marzo Nueva versión del troyano bancario Xenomorph Investigadores de ThreatFabric han detectado una nueva variante del troyano bancario para Android Xenomorph. Esta familia de malware fue detectada por primera vez en febrero...
Gonzalo Álvarez Marañón Matemáticas contra el cibercrimen: cómo detectar fraude, manipulaciones y ataques aplicando la Ley de Benford Cómo aplicar la ley de Benford para luchar contra el cibercrimen. La respuesta, en este post que utiliza las matemáticas para ayudar a la ciberseguridad.