Combinación de sustitución (s-boxes) y permutación (p-boxes)
Fuerza bruta, análisis frecuencial y fortaleza de un algoritmo
El cifrado César forma parte de sistemas más complejos de cifrado y su estudio sirve para entender por qué los cifrados fallan.
Por ejemplo, clave
Si necesitas repasar la aritmética modular, consulta el glosario
Giramos la tabla. Fíjate: para
Fuerza bruta y algoritmos rotos
Ataque de fuerza bruta: probar todas las claves hasta que encontremos la "buena":
En el sistema César clásico... solo tenemos que probar 26 posibles claves
https://www.imperva.com/learn/application-security/brute-force-attack/
Descifrada una carta encriptada de las guerras carlistas escrita en Bizkaia
"...han llegado a Leqitio 6 trincaduras con pertrechos para ellos...."
https://www.elcorreo.com/culturas/descifra-carta-encriptada-20211108081121-nt.html
¿Cómo podemos proteger estos sistemas contra la fuerza bruta?
Posibles defensas contra la fuerza bruta:
Que el descifrado sea costoso tiene el problema de que también le costará al receptor, que descifra legítimamente. Actualmente no se recomienda esta estrategia
Estrategia actual: obligar al atacante a que tenga que probar muchas claves
Contraseñas: podemos aumentar el tamaño de clave aumentando tanto el número como el tipo de caracteres
Tipo | Ejemplo | # de claves diferentes | Tamaño en bits |
---|---|---|---|
PIN de 4 números | 3659 | 9999 | |
4 letras mayúsculas | CASA | 614656 | |
4 letras + especiales | Ca*4 | 33362176 | 25 bits |
5 letras + especiales | Ca*4S | 2535525376 | 32 bits |
41 letras + especiales | o18uIo=...9f89fdA!S | 256 bits | |
54 mayúsculas | KJASWE...SAJKSAJF | 256 bits | |
77 números | 923821321...12998 | 256 bits |
En criptografía solemos medir la longitud de una clave con la cantidad de bits que necesitamos para guardarla
Medir las claves en bits nos permite comparar "su fortaleza": mismo número de bits, misma seguridad
Igual que en la leyenda del ajedrez...
Cada vez que aumentamos un bit se dobla el número de claves posibles
Eso tiene un crecimiento exponencial: rápidamente llegamos a números enormes
Veremos que claves de 256 bits es el estándar actual para tamaño de clave
https://www.pragatiedible.com/the-legend-of-rice-and-chess-exponential-growth/
Si tenemos capacidad de diseñar/fabricar
Alquilando equipos en la nube por segundos, con un euro cada segundo podemos probar
Si estimamos que nuestro "secreto" vale 1000 €: nos hacen falta un sistema criptográfico que permita escoger entre
Nota que
Observa: aumentando el número de bits de la clave aumentamos exponencialmente el tiempo necesario para romper el sistema. Con 128 bits... necesitaríamos miles de años.
¿Qué algoritmo "es más seguro", DES, AES o RSA?
Para comparar la seguridad de los algoritmos usamos el concepto de fortaleza
En los algoritmos bien diseñados, su fortaleza depende solo del tamaño de la clave: claves más largas tienen una fortaleza mayor
La fortaleza o seguridad de un algoritmo es el tamaño en bits de su espacio de claves. Es decir, el número de claves diferentes posibles que se tienen que probar para romperlo por fuerza bruta. Normalmente se expresa en bits.
Ejemplos:
Los algoritmos actuales tienen fortalezas de 128 ó 256 bits, pero ya veremos esto con más detalles en sesiones posteriores
Hemos visto que el César original tiene como máximo 26 claves, aproximadamente
Podemos mejorarlo permitiendo cualquier mapeo aleatorio:
Ahora tenemos
Piensa: en 10 años la tecnología ha avanzado mucho: lo que ahora cuesta 100 años, ¡en 10 años podría ser automático!
Más sobre esto en el tema 3
¿Podemos encontrar un método más rápido que probar las claves una a una?
Hq fulswrjudild, ho fliudgr Fhvdu, wdpelhq frqrflgr frpr fliudgr sru
ghvsodcdplhqwr, frgljr gh Fhvdu r ghvsodcdplhqwr gh Fhvdu, hv xqd gh
odv whfqlfdv gh fliudgr pdv vlpsohv b pdv xvdgdv. Hv xq wlsr gh
fliudgr sru vxvwlwxflrq hq ho txh xqd ohwud hq ho whawr ruljlqdo hv
uhhpsodcdgd sru rwud ohwud
https://www.dcode.fr/caesar-cipher
Si el mensaje es suficientemente largo, podemos analizar la frecuencia de aparición de los carácteres
¡La estadística se mantiene igual (pero movida) después del cifrado César!
El cifrado César, incluso con mapeos aleatorios, lleva roto como mínimo desde el siglo IX, cuando Al-Kindi describió por primera vez el análisis de frecuencia contra el cifrado César
Es decir: no es necesario probar todas las claves ciegamente. Por ejemplo, podemos descartar todas aquellas que darían un texto con un número imposible de Z
Un algoritmo está roto desde el punto de vista criptográfico cuando se conoce un ataque más eficiente que la fuerza bruta.
Vigenère y Enigma
Johannes Trithemius en 1508, con el primer libro conocido dedicado a la criptografía, inició el sistema de cifrados polialfabéticos...
...al principio sin clave.
Cifrado polialfabético de Giovan Battista Bellaso en 1553, pero atribuido a Vigenère
Es decir: la primera letra se desplaza 23 posiciones, la segunda 8, la tercera 3, luego 23 otra vez, luego 8, luego 3...
Habitualmente se escriben las letras que cifran el texto "AAA":
Siendo
Ejemplo.
HOL AMU NDO
||| ||| |||
XID XID XID
||| ||| |||
EWO XUX KLR
"Le chiffre indéchiffrable" se utilizó desde el siglo XVI hasta bien entrado el siglo XX.
...aunque ya había expertos en romperlo en el siglo XIX.
Wr urutlsyrmjae, wl omxvsda Gwwsr, feefaez ggrgcuhg ggma gajjaps hsj dqwhpszmqaifta, gghaga hw Gwsmv g hwsbpsdsmuifxg dq Gwwsr, qw mrs dq psw leoragss pi umxrmhg qss emetdee c eek ueevek. Ee yf xapa hw gafdevs hod wmwlifyumgn qr wp iuq yfe defvs if ex xwblo avakanmp ww jeqqhpszmhs tgr axje defvs
Ahora el espacio de claves es (clave de 3 carácteres):
Se puede aumentar el espacio de claves indefinidamente con contraseñas más largas.
Para contraseñas de
Ejemplos :
Vulnerabilidad: la repetición de la clave, que además es de longitud adivinable y normalmente corta.
Si segmentamos el texto cifrado de acuerdo a la longitud de la contraseña, cada fragmento de texto mostrará las mismas estadísticas del idioma (cifrado César)...
Sólo hace falta adivinar la longitud de la "contraseña" (Hamming, Kasiski) o...
...como el espacio de longitudes será probablemente limitado, podemos probarlos uno por uno hasta que tenemos una estadística reconocible.
Vigenère está también roto. Su análisis es más laborioso que César, pero no es necesaria la fuerza bruta sobre todo el espacio de claves.
Un espacio de claves grande no es suficiente
No se debe cifrar dos trozos del mensaje con la misma clave
Información adicional: https://en.wikipedia.org/wiki/Cryptanalysis_of_the_Enigma
Protocolo alemán de uso:
Se rompió más "por mal protocolo" que porque el sistema fuese defectuoso
Una vez reducido el espacio de clave, identificados qué textos es probable que apareciesen y otros atajos...
...el cifrado del día se podía romper por fuerza bruta en 20 minutos, cada mañana, utilizando una batería de máquinas llamada "Bombe"
La "Bombe" fue una de las primeras máquinas de procesado binario.
El descifrado de Enigma fue una de las claves que permitió a los aliados ganar la Segunda Guerra Mundial
One-time-pad (cifrado Vernam)
Seguridad perfecta o incondicional: no se puede deducir ninguna propiedad del texto original en claro, incluso aunque el atacante tenga recursos infinitos (tiempo, dinero)
Communication Theory of Secrecy Systems, Claude E. Shannon, Bell System Technical Journal, vol.28-4, page 656--715, Oct. 1949.
Definición exacta:
Confidencialidad perfecta (perfect secrecy): un sistema es perfectamente seguro si y solo si para cualquier distribución de probabilidad sobre el espacio de mensajes en claro
Si tienes el texto cifrado "XHAJSJXXNFHFDOIOJUMNF" (21 caracteres):
Definición informal: un cifrado perfecto no puede descifrarse ni siquiera por fuerza bruta porque un atacante no puede distinguir el mensaje real de todos los posibles mensajes falsos
Imagina que unos atacantes acuerdan el siguiente mapeo, es decir, clave:
El castillo captura este mensaje: "Atacamos a las F"
¿El castillo tiene alguna forma de conocer a qué hora le atacarán?
Shanon (1949) demostró que para tener confidencialidad perfecta el sistema de cifrado tienen que cumplir obligatoriamente las siguientes características:
Problema: ¿cómo distribuimos estas claves tan largas?
El cifrado perfecto no se puede descifrar, pero la necesidad de claves largas limita su uso
Communication Theory of Secrecy Systems, Claude E. Shannon, Bell System Technical Journal, vol.28-4, page 656--715, Oct. 1949.
El cifrado de Vigenère sufría un problema similar al del César (aunque camuflado): manifestaba la estadística del mensaje en claro en el mensaje cifrado
Podemos evitar que se manifieste la estadística en el texto cifrado si utilizamos cada letra de la clave una sola vez
Msg: ELMENSAJEQUEQUEREMOSCIFRARPUEDESERCUALQUIERA
Key: LACLAVEDEBESERTANLARGACOMOELMENSAJEYSEREPITE
Cif: PLOPNNEMIRYWULXRRXOJIIHFMFTFQHRKEAGSSPHYXMKE
Vernam patentó el one-time-pad de una manera similar pero equivalente:
La longitud en bytes de
Las claves se guardaban en hojas de papel de un solo uso. Las dos partes tenían una colección de estas hojas y se destruía en cuanto se usaba.
La NSA tenía 86.000 one-time-pads solo para el año 1972.
Si lo necesitas, mira la operación XOR en el glosario
El teléfono rojo entre Washington y Moscú fue un teletipo que usaba cifrado de bloque de un solo uso
La clave
Además, el one-time-pad permitía trabajar de forma segura sin intercambiar ningún algoritmo secreto que diera ventaja técnica al enemigo
Ninguna. Ni siquiera por fuerza bruta: si pruebas claves, puedes "descifrar" el texto cifrado y conseguir cualquier mensaje que se te ocurra...
...mientras se cumplan las hipótesis de trabajo para la clave
Los humanos somos muy malos para distinguir qué es y qué no es aleatorio
El principal problema es que la longitud en bytes de
Para poder usar un one-time-pad, la clave se prepara por adelantado
Cuesta tanto enviar
Más ejemplos: https://www.cryptomuseum.com/covert/conceal/index.htm
La NSA selecciona un algoritmo de cifrado simétrico de IBM para comunicaciones de la administración: DES (Data Encryption Standard), que es "casi" perfecto.
Whitfield Diffie y Martin Hellman generan el primer algoritmo práctico de criptografía asimétrica, que permite distribuir fácilmente claves seguras.
Ejercicios opcionales pero muy recomendables:
¿Recordáis la máxima de Shanon y los principios de Kerckhoffs? "El adversario conoce el sistema". Es decir: los único que debe ser secreto (a parte del mensaje, claro) es la clave de cifrado/descifrado. Se tiene que asumir que el adversario conoce las funciones e() y d() Aún no estaban preocupados de identificar con quién estaban hablando: "si conoce la clave, será un interlocutor legítimo". Nota: ¿Cifrar o encriptar? En este curso llamaremos a la ciencia "criptogafía" y al acto "cifrado". Encontrarás gente que utiliza "encriptar" como sinónimo de "cifrar". La RAE ha aceptado recientemente el verbo "encriptar", pero la polémica sobre si usar o no ese verbo sigue abierta en nuestro sector.
Con "clásicos" queremos decir que se usaban desde tiempos del imperio egipcio, pasando por hebreos, griegos, romanos, edad media, edad moderna (incluidas las guerras mundiales)... es decir, desde que se inventó la escritura hasta ayer mismo. Estos dos métodos de cifrado se han utilizado durante miles de años, y nuestros algoritmos de cifrado simétrico actual aún los tienen como parte de sus pasos
Fíjate: - En el primer caso, las letras A y L siempre se cifran igual - En el segundo caso, las letras A y L se cifran diferente cada vez - En el tercer caso, son las mismas letras pero desordenadas El cifrado con XOR es un tipo de cifrado polialfabético
Recordad: la criptografía quiere mejorar la dispersión y la difusión del mensaje original. La transposición simple como la de la escítala ayuda en ambos casos. Prácticamente todos los algoritmos actuales de cifrado simétrico utilizan sistemas de transposición como uno de los pasos del cifrado. Imagen: https://upload.wikimedia.org/wikipedia/commons/5/51/Skytale.png
Desde tiempos de los romanos, el cifrado por excelencia hasta la década de los '70 ha sido algún tipo de cifrado por sustitución más o menos complejo. Los estudiaremos a continuación con más detalle en el resto de capítulos Imagen: https://upload.wikimedia.org/wikipedia/commons/2/2b/Caesar3.svg
Gracias a la ayuda de los computadores modernos podemos hacer redes complejas pero, en esencia, seguimos haciendo permutaciones y sustituciones
Es muy posible que César utilizase sistemas más complejos de cifrado que no conocemos: "There is even a rather ingeniously written treatise by the grammarian Probus concerning the secret meaning of letters in the composition of Caesar's epistles." — Aulus Gellius, Attic Nights 17.9.1–5 Imagen: https://upload.wikimedia.org/wikipedia/commons/8/8f/Gaius_Iulius_Caesar_%28Vatican_Museum%29.jpg
En las transparencias que siguen, asumimos que el alfabeto es el latino y solo hay 26 posibles letras
El descifrado césar sigue exactamente el mismo algoritmo que el cifrado, pero usando una clave diferente. Esto pasará a menudo: la función de cifrado (o al menos algunos de los pasos de la función de cifrado) es muy parecida a la función de descifrado. Esto es una enorme ventaja porque nos permite utilizar los mismos programas, o parte de los mismos, para cifrar y descifrar: - menos errores, al reutilizar código - si usamos hardware especializado, podemos reaprovecharlo en el envío y la recepción
Observación en el César clásico, de media, tenemos que probar solo 13 claves: ¡la mitad!
José Ramón Cuesta, archivero, investigador y escritor, que explica que el mensaje "está codificado mediante el sistema de sustitución simple o de letras emparejadas". Para poder interpretarlo hay que sustituir cada letra por su par. Cada vez que aparece una a hay que sustituirla por una eme, la be por una ene y la ce por una o. Y así de forma sucesiva. Es decir, es un César con k=12. Fíjate en algunas curiosidades típicas en el ámbito militar para simplificar el proceso de cifrado manual: "no tiene en cuenta la uve, sustituida por la be, que es representada por la ene. Tampoco consta la ka ni la eñe. La u sirve para representar tanto la i latina como la i griega." Estas simplificaciones de letras dependen de la lengua original. Fíjate también que para interpretar el texto necesitas información de contexto, porque son telegramas y no novelas. Estas características (letras de menos, jerga) ya no las estudia la criptografía moderna aunque sí que sean necesarias para interpretar correctamente un mensaje, y fueron importantes para descifrar textos en el pasado. Por ejemplo con la máquina enigma, como veremos más tarde. Además, la forma del papel sugiere que estaba oculto en algún sitio y tenía esa forma para que no fuese reconocible. Sí que hay un rama de la criptografía moderna que estudia cómo ocultar un mensaje: la esteganografía.
![bg left:50%](images/historia/voynich.jpg) Pero no siempre es posible saber si un mensaje se ha descifrado correctamente: - El [manuscrito Voynich](https://es.wikipedia.org/wiki/Manuscrito_Voynich) aún no ha sido descifrado. Suponiendo que use César, no se sabe en qué lengua está escrito originalmente. - Imagina que solo está cifrada la hora "atacamos a las X"... Si una clave descifra "a las 5" y otra "a las 7" ¿cómo validamos qué hora es correcta? <!-- El manuscrito Voynich podría ser una broma de textos sin sentido. Los expertos parecen hacer descartado que el manuscrito Voynich tenga un cifrado simple como el César. Aún así, han analizado los textos y han encontrado que siguen pautas estadísticas de un lenguaje real. El misterio sigue abierto. Imagen: https://upload.wikimedia.org/wikipedia/commons/9/93/Voynich_Manuscript_%2832%29.jpg
Estos no son exactamente sistemas de cifrado, pero nos sirven para explicar lo que es la fuerza bruta. ¿Cómo abrirías la cerradura de la puerta? ¿Cómo puede un ladrón utilizar una tarjeta de crédito robada? ¿Qué estrategias se usan en cada caso para proteger el sistema? Images: free for commercial use: - https://pixabay.com/photos/money-cards-business-credit-card-256319/ - https://pixabay.com/photos/lock-combination-security-safety-1929089/
Por supuesto, el atacante puede intentar usar una llave maestra, o robar el PIN con ingeniería social. Ese tipo de ataques o bien es "romper un algoritmo" o bien "usar canales laterales". No vamos a considerarlos por ahora, vamos a considerar que los sistemas se usan cómo se han diseñado
Fíjate en estos casos: - a mismo número de caracteres, mayores posibilidades (números...) aumenta el tamaño en bits - a mismo número de posibilidades, aumentar el número de caracter aumenta el tamaño en bits - una contraseña de 54 letras mayúsculas tiene el mismo número de bits que una contraseña de letras minúsculas, mayúscuas, números y caracteres especiales: misma seguridad
Estos cálculos están desactualizados y son más rápidos cada año. En cualquier caso sirven para hacernos una idea de lo rápido que pueden hacer fuerza bruta los ordenadores actuales
No recuerdo qué cifré aquí, ni con que clave, pero no parece difícil descubrirlo. - Hay letras solas, que en castellano solo pueden ser a, y, o. También e, u, pero es muy improbable. Cualquier otra letra será aún más improbable. Por eso la criptografía clásica en realidad nunca ha usado espacios: da mucha información al adversario - Haciendo análisis de frecuencias, la h aparece muchas veces: es muy probable que sea a ó e - Los dígrafos hv gh (varias veces...) podrían ser es, el, me, le ó se **La información de contexto nos ayuda a descifrar (espacios, lenguaje...)**. Eso también pasa en una web actual: ¿qué es lo que tiene un mensaje cifrado a un banco inmediatamente después de visitar una tienda?
## Transponer y sustituir Podemos añadir una transposición a la vez de una substitución: ![center](images/historia/marshrut.png) Podemos mapear cualquier letra a cualquier otra letra ``` ABCDEFGHIJKLMNOPQRSTUVWXYZ XZCTEROSIULKWNGYQFHDJVMAPB ``` Todo esto aumenta el espacio de claves, pero sigue siendo vulnerable a análisis de frecuencia. <!-- En vez de usar un movimiento en el alfabeto, podemos cambiar totalmente el alfabeto. Eso aumenta espectacularmente el espacio de claves, hasta el punto de que no es posible para un humano hacer fuerza bruta... ... pero no impide hacer análisis frecuencial. Cualquiera de estas propuestas está tan rota como el cifrado César. Imagen: https://i1.wp.com/nozdr.ru/_media/games/quest/for/cipher/marshrut.png
La primetra letra del mensaje se cifra con la primera columna, la segunda con la segunda... y así. ¡El texto ya no es analizable por frecuencias! Pero no comple la máxima de Shanon: el sistema es seguro solo mientras que la table se mantenga en secreto. La tabula recta abrió el camino de los cifrados polialfabéticos. Solo unos 20 años después, Battista Bellaso añadió una clave al sistema
Fíjate: el "tabula recta" es un Vigenère con una clave fija que se se puede cambiar $k=ABCD...WXYZ$
Images: https://people.duke.edu/~ng46/collections/crypto-disk-us-ww1-front.jp
clave: SESAME Ahora el análisis frecuencil es mucho más complejo... ¡pero podemos agrupar los textos en grupos de 6 y aplicar frecuencias a cada columna! ¿Por qué 6? No lo sabemos. Podemos probar, o buscar ciclos (que son comunes) y estimar la longitud de la clabe. En ejemplo, la w está muchas veces en grupos de palabras solos: ¿quizá es la E cifrada con una de esas S de la clave?
Entreguerras, guerra civil española, ejército alemán. En la guerra civil española, el bando sublevado utilizaba la versión comercial (que los ingleses sabían leer) Fijate: - Los rotores podían extraerse e intercambiar sus posiciones - Los rotores podían empezar en cualquier letra - El panel conectaba (o no) pares de letra entre sí. Al principio tenía 4 cables, luego aumentó a 6. El panel era exclusivo de la versión militar. La clave era: posición de los rotores, letras iniciales en los rotores, posición de los cables. Todo esto cambiaba cada día. Además, para evitar que todos los alemanes usasen cada día la misma clave en todos sus mensajes, había al inicio un pequeño paso adicional de anuncio de "clave de sesión".
https://res.cloudinary.com/practicaldev/image/fetch/s--2qwhwBZd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/maxime1992/my-dev.to/master/blog-posts/enigma-part-1/assets/enigma-schema.jpg El ejemplo de la derecha solo muestra la versión comercial sin el panel frontal de cables. Los aliados tenían copias de la versión comercial pero no la versión militar. No sabían, entre otros detalles, cómo estaban cableados los rotores por dentro. Además, la versión militar tenía 5 rotores disponibles, de los que cada día se usaban tres.
excepto la longitud... y el momento de enviarlo, ...y el número de mensajes La fotogradía no es la máquina patentada por Vernam, si la máquina de Lorentz, usada en la Segunda Guerra mundial por los alemanes para mensajes que necesitaban permanecer secretos mucho tiempo (comunicaciones dipomáticas, por ejemplo). La máquina de Lorentz era similar al a de Vernam: https://en.wikipedia.org/wiki/Lorenz_cipher
Desde que los matemáticos entraron en la criptografía, existe definiciones de todos los términos tan exactas y formales como incomprensibles para un profano Cosas que implica: - Lo que dijimos antes: dado un texto cifrado, no conocemos nada de su texto en claro - Dado un texto cifrado, el mensaje en claro podría ser cualquiera:
En realidad esto ya se sabía antes de que Vernan inventase su máquina. Pero el invento de Vernan permitió usar este tipo de cifrado, y además Shannon acabó formalizando la teoría matemática que empezó la criptografía moderna
Esos libritos naranjas son los libros de claves, y el gran problema de estas máquinas es cómo hacer llegar los libros de claves a cada espía
La criptografía actual empezó en 1976: se escogió un algoritmo de cifrado simétrico que es casi perfecto y además práctico, y se descubrió la criptogradía asimétrica que permitía publicar parte de la clave.