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.
******** 09/05/2020
Pista 2: Por lo dicho en el enunciado queda claro que la primera 'crib' a utilizar es la pista que me da mi amigo: "SECRETO PERFECTO", e introduciendo ésta en la herramienta indicada en la pista anterior nos da lo siguiente:
Es decir, se puede concluir que dicha 'crib', "SECRETO PERFECTO", aparece en uno de los textos en claro y que la cadena "IMPOSIBILIDAD DE" figura en las mismas posiciones del otro texto en claro:
Y, para ir ampliando lo que conocemos de ambos textos en claro, podemos ir adivinando más partes de palabras, palabras completas y/o varias palabras que probablemente aparezca/n en uno de los dos textos en claro.
Como parece que ambos textos en claro se refieren al cifrado OTP, te recomiendo que vayas probando con: "CIFRAR", "TEXTO CLARO", "CRIPTOGRAMA", y otras palabras relacionadas que se te ocurran.
******** 11/05/2020
Pista 3: Y, finalmente, a medida que se vayan descifrando los dos criptogramas o una vez descifrados completamente ambos se puede ir obteniendo la clave de cifrado parcial o totalmente, respectivamente, sin más que que realizar la operación ⊕ entre la parte hallada de un texto en claro y la misma parte del criptograma correspondiente.
******** 11/05/2020
Solución.
******** PRÓXIMO RETO
Reto 39: "Geheim!".
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.
******** 09/05/2020
Pista 2: Por lo dicho en el enunciado queda claro que la primera 'crib' a utilizar es la pista que me da mi amigo: "SECRETO PERFECTO", e introduciendo ésta en la herramienta indicada en la pista anterior nos da lo siguiente:
Es decir, se puede concluir que dicha 'crib', "SECRETO PERFECTO", aparece en uno de los textos en claro y que la cadena "IMPOSIBILIDAD DE" figura en las mismas posiciones del otro texto en claro:
Y, para ir ampliando lo que conocemos de ambos textos en claro, podemos ir adivinando más partes de palabras, palabras completas y/o varias palabras que probablemente aparezca/n en uno de los dos textos en claro.
Como parece que ambos textos en claro se refieren al cifrado OTP, te recomiendo que vayas probando con: "CIFRAR", "TEXTO CLARO", "CRIPTOGRAMA", y otras palabras relacionadas que se te ocurran.
******** 11/05/2020
Pista 3: Y, finalmente, a medida que se vayan descifrando los dos criptogramas o una vez descifrados completamente ambos se puede ir obteniendo la clave de cifrado parcial o totalmente, respectivamente, sin más que que realizar la operación ⊕ entre la parte hallada de un texto en claro y la misma parte del criptograma correspondiente.
******** 11/05/2020
Solución.
******** PRÓXIMO RETO
Reto 39: "Geheim!".
Comentarios
Publicar un comentario