martes, 28 de junio de 2011

Parte 1 (cifrado de Hill) completada

La parte 1 (cifrado de texto claro usando el criptosistema de Hill) ya está completada.

Captura de pantalla: Cifrado de Hill

En esta imagen podemos ver como el programa ha cifrado el texto claro "ATACAREMOSALASVEINTETREINTAYOCHOUTC", que claramente se interpreta como "Atacaremos a las 20:38 (hora UTC)". El texto cifrado que se ha obtenido es "FVVHZQMCAJPGZVMPDUGXGNMUSVVKMYJOSSVG". Enviaremos este texto a nuestro receptor para que lo descifre siguiendo las reglas adecuadas.

Si hemos sido muy meticulosos con la imagen de arriba hemos podido advertir que el texto claro está formado por 35 caracteres, mientras que el texto cifrado contiene 36 caracteres. Si se supone que en el criptosistema de Hill el texto claro debe tener el mismo tamaño que el texto cifrado, ¿cómo se explica que en este caso ambos textos difieran su tamaño en un carácter? Esto ocurre sólo en algunos casos. En la próxima entrada, cuando analicemos el descifrado también explicaremos el motivo por el cual el tamaño del texto cifrado es mayor que el del texto claro. Olvidemos esta "anomalía" por ahora (entrecomillo anomalía porque lejos de serlo, ocurre con bastante frecuencia) .

¿Qué procedimiento se sigue para cifrar en el criptosistema de Hill? Veámoslo paso a paso:
  1. Primero traducimos el texto claro en su equivalente numérico teniendo en cuenta que el carácter A corresponde al número 0, el B al 1, el C al 2, etc.
  2. Una vez obtenido el texto claro numérico tomamos sus primeros n números, donde n es la dimensión de la matriz clave privada K (número de filas o columnas de la matriz), es decir, el tamaño del bloque a cifrar. 
  3. Los n números obtenidos del paso anterior conforman los elementos de una matriz P de una única columna y n filas. Los elementos se colocan de forma ordenada en la matriz P.
  4. Se realiza el producto de la matriz clave privada K por la matriz P, obteniéndose una nueva matriz C de una única columna y n filas.
  5. Se traduce cada elemento numérico de la matriz C en su carácter equivalente teniendo en cuenta que el número 0 corresponde al carácter A, el 1 al B, el 2 al C, etc.
  6. Los caracteres obtenidos en el paso anterior corresponden al texto cifrado. Si queda texto claro por cifrar volvemos al paso 2 para volver a iterar con los siguientes n números del texto claro.
Lo veremos más claro con un simple ejemplo. Cifraremos el texto "HOLA" con una matriz clave privada formada por los elementos 4, 9, 13 y 18. NOTA: Recuérdese que estamos trabajando con aritmética modular 26.
    Matriz K
  1. El equivalente numérico del texto claro "HOLA" es 7, 14, 11 y 0. 
  2. ITERACIÓN 1. La dimensión de la matriz clave privada es 2, por tanto n = 2 en este ejemplo. Tomamos los 2 primeros números del texto claro numérico. Estos 2 números son 7 y 14.
  3. La matriz P que se obtiene del paso anterior está formada por los elementos 7 y 14. Estos elementos se colocan formando una única columna y 2 filas.
  4. Realizamos el producto K por P, obteniéndose C.
  5. Iteración 1
  6. Los elementos 24 y 5 que conforman la matriz C corresponden a los caracteres "Y" y "F".
  7. Por tanto se ha obtenido el texto cifrado "YF". Como queda texto claro por cifrar (11 y 0) volvemos al paso 2.
  1. ITERACIÓN 2. Tomamos los 2 siguientes números del texto claro numérico. Estos 2 números son 11 y 0.
  2. La matriz P que se obtiene del paso anterior está formada por los elementos 11 y 0. Estos elementos se colocan formando una única columna y 2 filas.
  3. Realizamos el producto K por P, obteniéndose C.
  4. Iteración 2
  5. Los elementos 18 y 13 que conforman la matriz C corresponden a los caracteres "S" y "N".
  6. Por tanto se ha obtenido el texto cifrado "SN". Como no queda texto claro por cifrar terminamos.
Al cifrar el texto claro "HOLA" con la matriz clave privada K se ha obtenido el texto cifrado "YFSN".
    Una restricción para que el criptosistema de Hill funcione es que la matriz clave privada tenga matriz inversa asociada. Esto, en aritmética modular, quiere decir que:
    • El determinante de la matriz clave privada tiene que ser distinto de cero. En nuestro ejemplo el determinante de la matriz inversa es 7, es decir, distinto de cero.
    • El máximo común divisor entre el determinante de la matriz clave privada y 26 (aritmética modular con la que trabajamos) tiene que ser igual a 1. Esto quiere decir que el determinante de la matriz clave privada debe ser coprimo con todos los factores de 26 (que son 2 y 13). Como ya hemos dicho, en nuestro ejemplo el determinante es 7. Sabemos que mcd(7,26) = 1 (lo que es equivalente a afirmar que 7 y 2 son coprimos, y que 7 y 13 también son coprimos) .
    La clave que tomamos en nuestro ejemplo cumple esta restricción y por tanto tiene matriz inversa asociada. Esta restricción realmente afecta al descifrado y no al cifrado como veremos más adelante. Pero si no podemos descifrar, ¿de qué nos sirve cifrar?...

    No hay comentarios: