PRÀCTICA II: ENCRIPTACIÓN MATEMÀTIQUES II
Núria Espinoza 2015
Pràctica II: Encriptación
Part 1 : criptografia de clau privada
1.1 detalleu en l'informe breument com funcionen els mètodes de clau privada cèsar i vigénere i dieu per quina raó no els escolliríeu per comunicar informació confidencial al fòrum. (1 punt) El cifrado César, creado por Julio César para enviar mensajes privados a sus generales, consistía en escribir un mensaje encriptado carácter a carácter, cambiando cada uno por el que estuviera k unidades a la derecha en el alfabeto. César lo utilizaba con k=3, por lo que por ejemplo si queremos enviar el mensaje m= NO, enviaremos c= PR
1
Este tipo de cifrado requería que las dos personas, receptor y emisor, supieran cuál es la clave k previamente, lo cual ya limita hasta cierto punto la comunicación, ya que no siempre es esto posible. Por otro lado, es altamente inseguro ya que se puede desencriptar muy fácilmente y por eso no lo usaría para comunicar información confidencial en el foro. Para desencriptarlo sólo disponemos de 27 posibilidades, por lo que si no conocemos k previamente sólo tendremos que intentar descifrarlo probando k desde 1 a 27 utilizando una función como E(x)=x+k, intentando descrifrar el texto si vemos que tiene partes sencillas de descifrar porque son siempre iguales (como una carta) o con herramientas online tipo: http://nosolomates.es/?page_id=760 Por ejemplo, para descifrar el enunciado del ejercicio, no he tardado más de 2 minutos en descifrarlo. Por tanto, es altamente inseguro para transmitir información confidencial en un foro público.
“El cifrado César y otros cifrados de sustitución monoalfabeto” Consultado el 12/10/2015 [http://www.dma.fi.upm.es/java/matematicadiscreta/aritmeticamodular/cesar.html] 1
1
Pràctica II: Encriptación
A diferencia del método César, que es un método de cifrado monoalfabético, el método Vigènere es de cifrado polialfabético. El cifrado Vigènere se construye utilizando cifrados César en diferentes partes del mensaje. Aunque aparentemente es más complejo y durante años se consideró irrompible, es muy débil para los estándares actuales. Una vez tenemos nuestro mensaje a encriptar m = HOLANURIA, elegimos una palabra clave que repetimos hasta que tenga la misma longitud que el bloque m, k= LEMON (y que determinará las claves k César para encriptar) L
E
M
O
N
L
E
M
O
H
O
L
A
N
U
R
I
A
Gracias a la tabula recta2 Vigènere, encriptamos utilizando la intersección entre la fila de la letra de la palabra clave k y la columna de la letra del mensaje m y obtenemos el mensaje encriptado c C= SSXAAFVUA Este método de cifrado tiene varios handicaps, entre ellos el que también requiere que el receptor del mensaje conozca la palabra clave y la tabula recta utilizada para descifrarlo. También en que es relativamente sencillo encontrar patrones si la palabra clave es corta. 3 Este método se puede considerar irrompible si la tabula recta es única y con una palabra clave k aleatoria e igual de larga que el mensaje a enviar que se utilice cada vez que se envíe un mensaje. Para enviar mensajes offline entre dos personas que sean las únicas conocedoras de los datos necesarios para desencriptar el código, es irrompible. Sin embargo, para enviar mensajes privados en un espacio público como un foro no es recomendable, ya que existen actualmente herramientas online que pueden desencriptarlo fácilmente, como: http://sharkysoft.com/vigenere/
Wikipedia. “Tabula recta” Consultado el 12/10/2015 [https://en.wikipedia.org/wiki/Tabula_recta] 3 WikiHow. “Cómo codificar y decodificar utilizando la cifra de Vigènere” Consultado el 12/10/2015 [http://es.wikihow.com/codificar-y-decodificar-utilizando-la-cifra-deVigen%C3%A8re] 2
2
Pràctica II: Encriptación
1.2 expliqueu com heu fet per a desxifrar aquesta pàgina. heu fet servir el criptoànalisi o un atac estadístic ? raoneu la vostra resposta. (1 punt) Para descrifar la página lo primero que he hecho ha sido observar las partes que se podían repetir, por ejemplo la puntuación. Considerando que en la primera pregunta la puntuación se repite como “wbua” pero en las siguientes preguntas tiene otra encriptación, había que suponer que lo más lógico era que cada pregunta tuviera una encriptación diferente. Sabemos por experiencia previa que “(1 wbua)” significará “(1 punt)”, por lo que esto ya nos da la solución, ahora sólo queda encontrar la clave utilizada. Llevándolo a la tabla César, podemos extraer que la clave César en esta pregunta es k=7 restando 7 posiciones para cada letra en la tabla de alfabeto cifrado siguiente: WBUA
m = k7(WBUA) = PUNT Una vez obtenida la clave, he accedido a la herramienta online http://nosolomates.es/?page_id=760 y he descifrado el resto de la pregunta:
3
Pràctica II: Encriptación
Con los demás ejercicios he seguido el mismo procedimiento, obteniendo para cada caso: Ejercicio 2 k= 13 Ejercicio 3 k= 23 Este método utilizado es criptoanálisis, y no un ataque estadístico. Esto es debido a que no he realizado un análisis exhaustivo de las frecuencias de aparición de los caracteres en la pregunta. Al ser un cifrado César, no es necesario un análisis de ese tipo. La probabilidad que la palabra encriptada repetida “wbua” fuera “punt” era tan alta (100%) que la búsqueda de la clave ha sido extremadamente sencilla y no ha hecho falta hacer pruebas con otras claves posibles.
4
Pràctica II: Encriptación
part 2+part 3: steganografia + clau pública i privada, xifratge de missatges. Paso a paso el proceso ha sido el siguiente: Contactar con un compañero para realizar el ejercicio, en este caso Borja Marín. Calcular mis claves pública y privada siguiendo tanto los apuntes de la asignatura como el procedimiento explicado en otras páginas4: He escogido dos números primos relativamente pequeños: P= 967 Q= 811 N= p*q = 784237 He calculado m= (p – 1) * (q – 1) = 782460 Gracias a aplicaciones RSA5 he podido encontrar los números e y d que no tienen ningún factor común con m, es decir, que es primo respecto a él. En este caso: e = 63821 y d= 353021 Tras hacer pequeñas pruebas de cifrado y descifrado, vemos que es correcto: Como ejemplo, voy a cifrar y descifrar “HOLA” basándome en la tabla ASCII6. Su forma numérica según la tabla es: 072079 076065 (añadimos 0 y lo dividimos para que no sea mayor que N). Cifrado7: 72079^63821 mod 784237 = 56411 76065^63821 mod 784237 = 295294 Descifrado: 56411^353021 mod 784237 = 72079 295294^353021 mod 784237 = 76065 Por tanto es correcto. Mi clave pública entonces es (63821, 784237) y mi clave privada es (353021, 784237). Kriptópolis: “Entender RSA (I)” (2012) [http://www.kriptopolis.com/entender-rsa] Consultado el 21/10/2015 5 RSA calculator (2010) [https://www.cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/RSAWorksheetv4d.html] Consultado el 24/10/2015 6 ASCII Code equivalents [https://www.cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/ASCII.html] Consultado el 24/10/2015 7 Wolfram Alpha [http://www.wolframalpha.com/] Consultado el 24/10/2015 4
5
Pràctica II: Encriptación
Publico mi clave pública en el foro para que mi compañero pueda realizar su encriptación:
Mi compañero publica su clave pública en el foro:
Con esa información, procedo a encriptar los mensajes ayudándome de la RSA calculator8, la Calculadora RSA9 y la tabla de carácteres ASCII utilizada en el ejemplo: Por ejemplo: Si mi mensaje es Lorem Ipsum, comenzaré usando la tabla para ver que cada letra le corresponde una clave numérica. En este caos, la L inicial sería 076. Usando la Calculadora RSA, vemos que encriptada con la clave pública de Borja se convierte en 27978.
RSA calculator (2010) [https://www.cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/RSAWorksheetv4d.html] Consultado el 24/10/2015 8
9
Calculadora RSA [http://jesusperezdehita.com/RSAcalculator/] Consultado el 06/11/2015
6
Pràctica II: Encriptación
Procedo a encriptar mis textos: Mensaje incluído en la fotografía: Lorem ipsum Versión numérica (según la tabla ASCII): 076 111 114 101 109 032 105 112 115 117 109 Encriptado: 27978 7489 25882 23714 29582 25591 486 16947 37908 34765 29582
Contraseña de la fotografía: Acceso Versión numérica (según la tabla ASCII): 065 099 099 101 115 111 Encriptado: 2800 99 99 23714 37908 7489
Nombre de la fotografía: Foto Versión numérica (según la tabla ASCII): 070 111 116 111 Encriptado: 3637 7489 31193 7489 Fotografía escogida al azar para “esconder” el texto:
A través de la herramienta indicada en el enunciado10, ciframos fotografía y mensaje, y le añadimos la contraseña que hemos encriptado previamente, Acceso:
10
Pixelator.io: Secure data in pictures [https://pixelator.io/] Consultado el 07/11/2015
7
Pràctica II: Encriptación
Resultado:
A continuación le dejo un mensaje en el foro a mi compañero con estos datos.
Mi compañero postea una foto y su clave de acceso:
8
Pràctica II: Encriptación
La imagen es la siguiente:
Respondo a mi compañero mediante el foro conforme lo he recibido.
9
Pràctica II: Encriptación
Accedo a la miniaplicación RSA11 para desencriptar su clave de acceso y el nombre de la fotografía:
Utilizando mi clave privada d= 353021, n=784237 y cada bloque del mensaje cifrado que me ha pasado, voy descifrando letra a letra y obtenemos que: Mensaje
149823 630616 536858 677069
cifrado: Mensaje
097
108
097
114
109
097
032
l
a
r
m
a
(espai)
en clave numérica: Descifrado a con tabla ASCII12:
Vemos que se han utilizado 0 y el símbolo espacio para poder dividir los bloques numéricos según el tamaño de n. Ya tenemos la clave: alarma. Ahora desencriptamos el nombre de la fotografía de la misma manera: Mensaje
105109
097116
103101
105
109
097
116
103
101
i
m
a
t
g
e
cifrado: Mensaje en clave numérica: Descifrado con tabla ASCII:
Calculadora RSA [http://jesusperezdehita.com/RSAcalculator/] Consultado el 06/11/2015 ASCII Code equivalents [https://www.cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/ASCII.html] Consultado el 07/11/2015 11 12
10
Pràctica II: Encriptación
Ya tenemos también el nombre de la imagen, que aunque no sea necesario para el proceso en sí de desencriptación, nos sirve para comprobar la efectividad del proceso. Con la imagen y la contraseña, accedemos a https://pixelator.io/decoder/ y obtenemos el txt “escondido” en la imagen, con el siguiente mensaje:
331471 239820 674915 256155 587520 640161 Usando una vez más la miniaplicación RSA13 y el proceso explicado en el punto 13, desciframos cada bloque numérico y obtenemos lo siguiente: Mensaje
331471
239820
674915
256155 587520
640161
077111
108116
032098
111110
105097
lt
(espai)b on
cifrado: Mensaje
032100
en clave numérica: Descifrado Mo
(espai)d ia
con tabla ASCII: Por lo que el mensaje cifrado dentro de la imagen es: Molt bon dia Por tanto, ¡hemos podido descifrar su comunicación con éxito!
13
Calculadora RSA [http://jesusperezdehita.com/RSAcalculator/] Consultado el 06/11/2015
11