La cifra afín es una sustitución simple. Es una versión de una sola dimensión de la Cifra Hill.
En aritmética modular, se considera que dos enteros relativos son congruentes modulo n si presentan la misma resta en la división euclidiana por n. Trabajar con modulo n significa trabajar con números enteros comprendidos en el intervalo [0; n-1] incluidos los limites
Sin saberlo a diario hacemos cálculos con modulo n. Imaginemos que sean las 21 horas ¿Qué hora tendremos dentro de 6 horas?, evidentemente serán las 3 y no las 27 horas. En términos matemáticos decimos que trabajamos en modulo 24 ya que todas las horas quedan comprendidas entre 0 y 23. ¿Cómo hemos obtenido el 3? Hemos sumado los dos números (21 + 6 = 27) y después hemos tomado el resto de la división por 24 (27 / 24 = 1 y me llevo 3)
La idea consiste en usar como función de cifrado una función afín del tipo y=ax+b en las que [a] y [b] son constantes, y en las que [x] e [y] son números correspondientes a las letras del alfabeto en base a esta tabla
Letra | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
Número | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Evidentemente para que la letra cifrada [y] sea también un número entre 0 y 25, trabajaremos modulo 26.
La verdadera formula será pues [y=(ax + b) (mod 26)]. Podemos observar que si [a]=1, volvemos a encontrar la cifra de Cesar donde [b] representa el desplazamiento.
El valor de [b] es un número entero comprendido entre 0 y 25. Un desfase de 26 es equivalente a un desfase de 0.
¡Cuidado!. No podemos utilizar cualquier valor ara [a]; [a] y 26 deben ser primos entre sí, lo que significa que no deben tener divisores comunes que no sean 1. Los valores posibles para [a] son pues 1, 3, 5, 7, 11, 15, 17, 19, 21, 23, y 25.
¿Por qué esta condición? Lo más sencillo es comprobar lo que ocurre se [a] toma un valor prohibido. Elijamos por ejemplo [a=2], y [b=0]. Si ciframos todas las letras del alfabeto
Texto claro | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
Texto cifrado | A | C | E | G | I | K | M | O | Q | S | U | W | Y | A | C | E | G | I | K | M | O | Q | S | U | W | Y |
Observamos que [a] y [n] se han convertido en [A], que [b] y [o] se han convertido en [C]. etc. El problema aparecerá en el momento de descifrar el documento.
Texto claro | h | o | l | a |
X | 7 | 14 | 11 | 0 |
Y | 15 | 0 | 25 | 4 |
Texto cifrado | P | A | Z | E |
y=ax+b; a=9 ; b=4 h - > y = 9 x 7 + 4 = 67 (mod 26) = 15 (La posición 15 del alfabeto definido anteriormente es la letra P) o - > y = 9 x 14 + 4 = 130 (mod 26) = 0 l - > y = 9 x 11 + 4 = 103 (mod 26) = 25 a - > y = 9 x 0 + 4 = 4 (mod 26) = 4
Recordemos en primer lugar el significado de un inverso: el inverso de un número [n], generalmente escrito [n-1], siendo [n].[n-1]=1. Por ejemplo [1/2] es el inverso de [2], ya que [2] . [1/2] =1 Calcular el inverso modulo [n], resulta un poco más difícil. El inverso modulo n de [b] es el numero entero [b-1] de tal modo que [b].[b-1](mod n) = 1. Por ejemplo, 7 es el inverso del modulo 9 de 4 ya que 4x7 (mod 9) = 28 (mod 9) = 1.
Ejemplo Busquemos la inversa de 15 modulo 26
Proceso a seguir
15 x 1 (mod 26)= 15. Como el resultado no es 1 el [1] no es la respuesta y seguimos buscando
15 x 3 (mod 26)= 45 (mod 26)= 19. Como el resultado no es 1 el [3] no es la respuesta y seguimos buscando
15 x 5 (mod 26)= 75 (mod 26)= 23. Como el resultado no es 1 el [5] no es la respuesta y seguimos buscando
15 x 7 (mod 26)= 105 (mod 26)= 1. Como el resultado SI es 1 el [7] es el inverso que andamos buscando
Para no tener que volver a calcular cada vez las inversas modulo 26 podemos construir la siguiente tabla:
Los valores de a que no aparecen en la tabla no tienen inverso modulo 26
a | 1 | 3 | 5 | 7 | 9 | 11 | 15 | 17 | 19 | 21 | 23 | 25 |
a-1 | 1 | 9 | 21 | 15 | 3 | 19 | 7 | 23 | 11 | 5 | 17 | 25 |
El algoritmo de Euclides extendido permite calcular la inversa de [b] modulo [n] cuando existe.
El signo [:=] significa que la variable de la izquierda toma el valor de la variable de la derecha. Por ejemplo si [a=2], [b] valdrá también dos después de la instrucción b:=a
no := n bo := b to := 0 t := 1 q := Número entero inmediatamente inferior o igual a no / bo r := no - q • bo Mientras que r > 0 hacer Principio temp := to - q • t si temp >= 0 entonces temp := temp mod n, si no temp := n - ((-temp) mod n) to := t t := temp no := bo bo := r q := Número entero inmediatamente inferior o igual a no / bo r := no - q • bo fin si bo <> 1 entonces b no tiene un inverso modulo n, si no b-1 mod n = t
Es preciso invertir (mod 26) la formula de cifrado con el fin de expresar [x] en función de [y]
Y=ax + b, ecuación para cifrado. Restemos b
Y – b = ax. Para eliminar a, debemos multiplicarlo por su inversa ya que [a-1] . [a]=1
[a-1](y-b)=x
La ecuación de descifrado es pues x= [a-1](y-b) (mod 26). Si el paréntesis (y-b) resulta negativo basta con añadir 26 antes de multiplicarlo por [a-1]
Ejemplo de descifrado
Descifremos el mensaje que hemos calculado anteriormente. Como [a=9], [a-1]=3. La formula de descifrado es pues x=3(y-4) (mod 26)
Texto cifrado | P | A | Z | E |
y | 15 | 0 | 25 | 4 |
x | 7 | 14 | 11 | 0 |
Texto claro | h | o | l | a |
x= a-1(y-b); a=9 ; a-1=3; b=4 La formula de descifrado es pues x=3(y-4) (mod 26) P - > x = 3 x (15 - 4) = 3 x 11 = 33 (mod 26) = 7 (La posición 7 del alfabeto definido anteriormente es la letra [h]) A - > x = 3 x ( 0 - 4) = 3 x (-4) = -12 (mod 26) = 14 Z - > x = 3 x (25 - 4) = 3 x 21 = 63 (mod 26) = 11 E - > x = 3 x ( 4 - 4) = 3 x 0 = 0 (mod 26) = 0
El cálculo para [A] (y = 0) es un poco articular , dado que 0-4=-4 <0.
Añadimos 26 antes de multiplicar por 3.
El cálculo nos da 3(0-4+26) (mod 26) = 63 (mod 26)= 11.
Podemos utilizar el análisis de frecuencias o efectuar una búsqueda exhaustiva de claves.
Observa que en este ejemplo unicamentehay 15 x 26 = 312 claves posibles.
© 1997 - - La Güeb de Joaquín | |||||
Joaquín Medina Serrano
|
|||||
|
Codificación | |
Fecha de creación | |
Última actualización | |