En esta entrada un reto de criptografía con relación a un método de cifrado irrompible, es decir, al secreto perfecto.
Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.
Reto 38: "Por favor, nO Te rePitas".
El otro día un amigo mío me dijo que había estado leyendo sobre el cifrado OTP (del inglés ‘one-time pad’) o libreta de un solo uso y me comentó que, por lo que había entendido, este método proporciona lo que se llama el secreto perfecto, es decir, el criptograma es indescifrable si no se conoce la clave de cifrado. Yo le contesté: Depende…; lo que pareció no sentarle muy bien y no continuó hablando sobre el tema. Algunos días después recibí un correo electrónico de mi amigo en el que me decía lo siguiente: “como eres 'muy listo', te envío los dos siguientes criptogramas cifrados con OTP a ver si eres capaz de: descifrarlos, obtener la clave y decirme cuál es la solución a este reto, y como estoy seguro de que no vas a poder resolver este desafío, te doy una pista: SECRETO PERFECTO".
Dificultad:
Tipo: Criptografía.
Recursos: - criptogramas.txt
******** 08/05/2020
Pista 1: En el cifrado OTP la clave (K) debe tener una longitud igual o superior al texto en claro a cifrar (M) y el criptograma (C) se obtiene realizando la siguiente operación ⊕ (XOR):
C = M ⊕ K
Para descifrar el criptograma (C) el receptor utilizaría la misma clave (K) para obtener el texto en claro (M), de la siguiente forma:
M = C ⊕ K
Por el correo que me envió mi amigo parece ser que, primero, efectivamente no le sentó muy bien mi comentario - ya que me dice: “como eres ‘muy listo’, …” :) - y, segundo, que no tiene muy claro por qué este método de cifrado se llama OTP (‘one-time pad’), porque si, como parece, ha utilizado la misma clave para cifrar ambos mensajes (“a ver si eres capaz de: descifrarlos, obtener la clave y …”) ha dejado abierta la puerta al criptoanálisis y, por tanto, de secreto perfecto nada de nada.
Es decir, en el caso de que se cometa el error de reutilizar la clave, un criptoanalista que se haga con dos criptogramas cifrados con la misma clave puede obtener los textos en claro correspondientes sin demasiados problemas utilizando la técnica ‘crib dragging’.
Pero, ¿cómo?. Si se utiliza la misma clave (K) para cifrar dos textos en claro (M1 y M2) resulta que:
- C1 = M1 ⊕ K
- C2 = M2 ⊕ K
Si hago XOR de ambos criptogramas (C1 y C2):
C1 ⊕ C2 = M1 ⊕ K ⊕ M2 ⊕ K = M1 ⊕ M2
Con lo que, con independencia de la clave utilizada (K), si voy deduciendo o infiriendo partes de uno u otro de los textos en claro (‘cribs’) iré obteniendo las partes correspondientes del otro mensaje en claro.
En resumen, como creo que mi amigo ha reutilizado la clave, para atacar este cifrado y descubrir los mensajes en claro correspondientes a ambos criptogramas se puede actuar de la siguiente manera:
1.- Realizar la operación ⊕ de los dos criptogramas.
2.- Intentar deducir parte de un palabra, una palabra completa o varias palabras que probablemente aparezca/n en uno de los dos textos en claro y codificar la parte inferida (‘crib’) como una cadena hexadecimal (los criptogramas dados están codificados en hexadecimal).
3.- Realizar la operación ⊕ de la ‘crib’ en hexadecimal a partir de la primera posición del resultado de la operación ⊕ realizada a los dos criptogramas.
3.1.- Si el resultado obtenido es un texto legible puedo pensar que, efectivamente, la ‘crib’ empleada aparece en uno de los textos en claro y que he obtenido la parte del texto en claro correspondiente a ésta en el otro texto en claro, e intento adivinar otra ‘crib’ repitiendo el punto 3.
3.2.- Si el resultado no es un texto legible, realizo una operación ⊕ de la ‘crib’ en hexadecimal a partir de la siguiente posición del resultado de la operación ⊕ realizada a los dos criptogramas.
Para llevar a cabo todo lo anterior te recomiendo que utilices la siguiente herramienta de ‘crib dragging’ interactiva.
******** __/__/____
Solución: Por publicar.
******** PRÓXIMO RETO
Reto 39: Por publicar
Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.
Reto 38: "Por favor, nO Te rePitas".
El otro día un amigo mío me dijo que había estado leyendo sobre el cifrado OTP (del inglés ‘one-time pad’) o libreta de un solo uso y me comentó que, por lo que había entendido, este método proporciona lo que se llama el secreto perfecto, es decir, el criptograma es indescifrable si no se conoce la clave de cifrado. Yo le contesté: Depende…; lo que pareció no sentarle muy bien y no continuó hablando sobre el tema. Algunos días después recibí un correo electrónico de mi amigo en el que me decía lo siguiente: “como eres 'muy listo', te envío los dos siguientes criptogramas cifrados con OTP a ver si eres capaz de: descifrarlos, obtener la clave y decirme cuál es la solución a este reto, y como estoy seguro de que no vas a poder resolver este desafío, te doy una pista: SECRETO PERFECTO".
Dificultad:
Tipo: Criptografía.
Recursos: - criptogramas.txt
******** 08/05/2020
Pista 1: En el cifrado OTP la clave (K) debe tener una longitud igual o superior al texto en claro a cifrar (M) y el criptograma (C) se obtiene realizando la siguiente operación ⊕ (XOR):
C = M ⊕ K
Para descifrar el criptograma (C) el receptor utilizaría la misma clave (K) para obtener el texto en claro (M), de la siguiente forma:
M = C ⊕ K
Por el correo que me envió mi amigo parece ser que, primero, efectivamente no le sentó muy bien mi comentario - ya que me dice: “como eres ‘muy listo’, …” :) - y, segundo, que no tiene muy claro por qué este método de cifrado se llama OTP (‘one-time pad’), porque si, como parece, ha utilizado la misma clave para cifrar ambos mensajes (“a ver si eres capaz de: descifrarlos, obtener la clave y …”) ha dejado abierta la puerta al criptoanálisis y, por tanto, de secreto perfecto nada de nada.
Es decir, en el caso de que se cometa el error de reutilizar la clave, un criptoanalista que se haga con dos criptogramas cifrados con la misma clave puede obtener los textos en claro correspondientes sin demasiados problemas utilizando la técnica ‘crib dragging’.
Pero, ¿cómo?. Si se utiliza la misma clave (K) para cifrar dos textos en claro (M1 y M2) resulta que:
- C1 = M1 ⊕ K
- C2 = M2 ⊕ K
Si hago XOR de ambos criptogramas (C1 y C2):
C1 ⊕ C2 = M1 ⊕ K ⊕ M2 ⊕ K = M1 ⊕ M2
Con lo que, con independencia de la clave utilizada (K), si voy deduciendo o infiriendo partes de uno u otro de los textos en claro (‘cribs’) iré obteniendo las partes correspondientes del otro mensaje en claro.
En resumen, como creo que mi amigo ha reutilizado la clave, para atacar este cifrado y descubrir los mensajes en claro correspondientes a ambos criptogramas se puede actuar de la siguiente manera:
1.- Realizar la operación ⊕ de los dos criptogramas.
2.- Intentar deducir parte de un palabra, una palabra completa o varias palabras que probablemente aparezca/n en uno de los dos textos en claro y codificar la parte inferida (‘crib’) como una cadena hexadecimal (los criptogramas dados están codificados en hexadecimal).
3.- Realizar la operación ⊕ de la ‘crib’ en hexadecimal a partir de la primera posición del resultado de la operación ⊕ realizada a los dos criptogramas.
3.1.- Si el resultado obtenido es un texto legible puedo pensar que, efectivamente, la ‘crib’ empleada aparece en uno de los textos en claro y que he obtenido la parte del texto en claro correspondiente a ésta en el otro texto en claro, e intento adivinar otra ‘crib’ repitiendo el punto 3.
3.2.- Si el resultado no es un texto legible, realizo una operación ⊕ de la ‘crib’ en hexadecimal a partir de la siguiente posición del resultado de la operación ⊕ realizada a los dos criptogramas.
Para llevar a cabo todo lo anterior te recomiendo que utilices la siguiente herramienta de ‘crib dragging’ interactiva.
******** __/__/____
Solución: Por publicar.
******** PRÓXIMO RETO
Reto 39: Por publicar