martes, 19 de mayo de 2020

Cifrado: afín

Espero que le hayas echado un ojo al post sobre aritmética modular, porque hoy aplicaremos algunos de esos conceptos para explicar el cifrado afín.

El cifrado afín es una generalización del César. Recordemos que para este último desplazábamos cada letra un número fijo en el alfabeto. Expresado de otra manera, el cifrado César se correspondería con:

y ≡ x+k (mod 27)

Siendo x el valor de la letra del texto plano, y la letra cifrada y k la clave. La operación se realiza bajo módulo 27. Si fuera en inglés, sin la Ñ, sería un 26. Para descifrar:

x ≡ y-k (mod 27)

¿Qué ocurriría si, además de sumar una constante, efectuáramos un producto? El número de posibles claves aumentaría y sería un poco más difícil romper el mensaje (aunque seguiría siendo lo suficientemente sencillo para hacerse por alguien con papel y lápiz). La expresión de cifrado resultaría:

y ≡ ax+k (mod 27)

Ahora la clave es un par de números (a,k).

Como vemos, el César es un caso particular, cuando a=1. Curiosamente, el cifrado Atbash también queda generalizado por el afín, cuando a=-1 ≡ 26 y k=0.

Para descrifrar, simplemente tenemos que despejar la x en la expresión de arriba:

x ≡ a-1(y-k) (mod 27)

¿Ves algún problema en esta expresión? Cuando hablamos de aritmética modular, vimos que no siempre existe el inverso de un número. Por lo tanto, tendríamos que tener en cuenta esto a la hora de elegir un valor para a. Sólo existe inverso cuando el número y el módulo son primos relativos. ¿Cuáles son los posibles a que podríamos escoger? Cualquier número entre 1 y 26 que no sea múltiplo de 3: 1,2,4,5,7,8,10,11,13,14,16,17,19,20,22,23,25,26.

Por ejemplo, cuando a=11, a-1=5, ya que 11*5 = 55 ≡ 1 (mod 27).

Si quisiéramos usar el alfabeto inglés, sin la Ñ, los posibles valores de a serían: 1,3,5,7,9,11,15,17,19,21,23,25. Es decir, los que no son ni múltiplos de 2 ni de 13.

Veamos un ejemplo completo. Vamos a cifrar HOLA con la clave (8,5) con el alfabeto con Ñ. Escrito en números, nuestro mensaje es 7-15-11-0 (empezamos desde A=0). Multiplicando cada número por 8 y sumándole 5: 61-125-93-5. Por último, simplificamos el resultado módulo 27: 7-17-12-5. Y, devolvemos los números a letras: HQMF.

Para descifrar, el proceso sería similar. Empezaríamos calculando el inverso de 8 módulo 27, que es 17 (8*17 = 136 ≡ 1 (mod 27)). Así, tendremos que restar 5 y multiplicar el resultado por 17. HQMF en números es 7-17-12-5, que se convierte en 34-204-119-0. Por último, simplificamos módulo 27: 7-15-11-0, que corresponde al texto plano original HOLA.

Si te apetece jugar un poco con este cifrado, puedes usar la herramienta de abajo, que he programado en JavaScript. Escribe el texto con el quieras trabajar, marca la casilla para cifrar o desmárcala para descifrar y haz click en el botón.

TEXTO
CLAVE a=   k=   CIFRAR



¿Puedes resolver el siguiente criptograma? El valor de k utilizado es 11 y el de a, lo tendrás que descubrir tú mismo.

LJXVXZLZ

En ESTE OTRO POST, puedes leer más acerca del cifrado afín y su seguridad.


No hay comentarios:

Publicar un comentario