Hoy veremos un par de aspectos relativos al cifrado afín. Recuerda que vimos su funcionamiento AQUÍ.
¿Qué ocurriría si un atacante consiguiera averiguar cómo se cifran dos letras? Por ejemplo, descubre que la A se cifra como H y la C, como E. En ese caso, ¡podría descifrar todos nuestros mensajes! Veamos por qué.
El atacante razonaría del siguiente modo: "Sé que la ecuación usada para cifrar cada letra, de forma individual, es y ≡ ax+k (mod 27), donde (a,k) es la clave que debo hallar. Tengo dos letras x1 y x2, que sé que se cifran como y1 e y2. Por lo tanto, tengo dos ecuaciones y1 ≡ ax1+k (mod 27), y2 ≡ ax2+k (mod 27). Si despejo k de la primera: k ≡ y1 - ax1 (mod 27). Y sustituyendo en la segunda: y2 ≡ ax2 + y1 - ax1 (mod 27). Despejando la incógnita: a ≡ (y2 - y1)*(x2 - x1)-1 (mod 27)". Así, siempre y cuando exista un inverso para x2 - x1, el atacante podrá encontrar los valores de a y k y descifrará todos nuestros mensajes.
Veamos un ejemplo. Nuestro cifrado afín usa como clave a=12, k=7. El atacante descubre que cuando x=0 (la letra A), y=7 (la letra H) y que cuando x=2 (la letra C), y=4 (la letra E). Sustituyendo en la ecuación de arriba: a ≡ (4 - 7)*(2 - 0)-1 (mod 27). Simplificando un poco: a ≡ 24*14 ≡ 12 (mod 27). Y con la otra ecuación: k ≡ 7 - 12*0 ≡ 7 (mod 27). Por lo tanto, deduce que la clave es a=12 y k=7.
Hemos visto que el cifrado afín no es muy seguro. ¿Y si ciframos nuestros textos mediante DOS cifrados afines? Después de haber cifrado con uno, aplicamos el otro. ¡Entonces seguro que es más difícil romperlo!
No exactamente. Vamos a demostrar que aplicar consecutivamente dos cifrados afines diferentes es equivalente a utilizar sólo uno, por lo que no se incrementa la seguridad.
Sean dos cifrados afines con claves (a1, k1) y (a2, k2). El resultado de aplicar el primero es y ≡ a1x + k1 (mod 27). Al aplicar el segundo a este valor de y, llegamos a z ≡ a2(a1x + k1) + k2 (mod 27). Si agrupamos un poco, z ≡ a2a1x + (a2k1 + k2) (mod 27). En otras palabras, éste es un cifrado afín de clave a=a2a1 y k=a2k1 + k2.
Es interesante estudiar situaciones parecidas a las que hemos visto para cualquier cifrado que tengamos entre manos. De este modo, nos podremos hacer una ligera idea de su seguridad. Normalmente, dejo de lado estas cuestiones para centrarme en aspectos más "estéticos" (mis cifrados favoritos no son nada seguros, por ejemplo). Pero, ya que hablamos de criptografía/criptoanálisis, y dado que la seguridad en este campo es clave, me ha parecido importante estudiar un par de derivaciones matemáticas sencillas al respecto.
No hay comentarios:
Publicar un comentario