MÉTODO PARA ENCRIPTAR DATOS MEDIANTE OPERACIONES EN MATRICES
Sector Técnico:
La presente invención se relaciona con comunicación electrónica utilizando métodos criptográficos y aparatos que los utilicen en los que una secuencia de datos dada, por ejemplo un texto inteligible, es transformada en una secuencia ininteligible de datos mediante la trasposición de los datos o grupos de datos o mediante su reemplazo por otros, de acuerdo a un sistema predeterminado, en base al reordenamiento de series, secuencias o sucesiones numéricas. En particular, se trata de un algoritmo de cifrado por bloques, con claves simétricas y cuya robustez para soportar intentos de descifrar dicha clave no está basada en la longitud de las claves.
Aplicación Industrial:
Esto es aplicable a la protección de mensajería digital y de transacciones electrónicas de diversa naturaleza intercambiados entre corresponsales humanos o entre dispositivos de comunicación digital, computadores, u otros equipos o dispositivos conectados a través de Internet.
Técnica anterior:
Todos los sistemas criptográficos basan su mecanismo de conciliación en dos operaciones aplicadas en forma independiente o en forma combinada: la “trasposición” (o “reordenamiento”) de los caracteres de un “mensaje base” (información que se desea transmitir a un corresponsal destinatario y que en la actualidad puede tomar la forma de cualquier mensaje digital o analógico); y la “sustitución” (reemplazo) de los “caracteres” del “mensaje base”. El efecto logrado, es el “cifrado” (ocultamiento) del “mensaje base” a todos aquellos que desconozcan las operaciones de trasposición y sustitución aplicadas; y que desconozcan el orden en el que fueron aplicadas dichas operaciones, para transformar el “mensaje base” en el “mensaje cifrado”.
Si el “mensaje base” se fragmenta en bloques de caracteres que serán cifrados mediante un método, se habla de “cifrado por bloques”. Gracias a la capacidad de cálculo y a la velocidad de los computadores, la alternativa es cifrar cada dato o carácter del mensaje base, en cuyo caso se habla de “criptografía por flujo”. Si la clave requerida para descifrar el mensaje es la misma con la que se efectuó el cifrado, se habla de un sistema criptográfico “simétrico”. Si se requiere de claves diferentes para el cifrado y descifrado, se habla de un sistema criptográfico “asimétrico”.
Actualmente, hay varios sistemas de estos dos tipos que están siendo utilizados habitualmente, para la transmisión de: transacciones comerciales; mensajes de correo electrónico; archivos de diverso contenido digital o analógico; y transmisión vía internet de un sin número de paquetes de información de carácter “sensible” o de naturaleza “ordinaria”. Entre estos sistemas, se cuenta por ejemplo:
RSA: ha utilizado el algoritmo simétrico RC5 (diseñado en 1994), que usa bloques de tamaño 32, 64 o 128 bits (siendo 64 bits lo sugerido), con longitudes de clave de hasta 1024 bits (siendo 128 bits lo sugerido, con lo que el espacio de dominio de claves llega a 2^128 = 3,40 x 10^38); y entre 18 y 20 rondas de cifrado (siendo 12 rondas lo sugerido).
Entre 1991 y 2007, RSA Security ofreció -como poseedor de la patente-, recompensas a quienes pudieran “romper” las claves de hasta 2048 bits, por lo que desde 2003 se recomienda el uso de claves de 1024 bits (lo que equivale a 128 caracteres), con lo que el espacio de dominio de claves en cada ronda sube a ( 2^1024 ) = 1,79 x 10a308. Entre los resultados recientes, en diciembre de 2019, se dio a conocer un ataque exitoso a una clave de 795 bits.
AES: Utiliza sólo bloques de 128 bits; con claves de 128 bits (y 10 rondas de cifrado); 192 bits (y 12 rondas de cifrado); y, 256 bits (y 14 rondas de cifrado), para espacios de dominio de claves por ronda de 2^128 ( = 3,40 x 10^38 ); 2^192 ( = 6,27 x 10^57); y 2^256 ( = 1,15 x 10^77 ), respectivamente.
TWOFISH: El algoritmo trabaja con bloques de 128 bits, 12 rondas de cifrado y tamaños de clave de 128, 192 y 256 bits (con lo que el espacio de dominio de claves máximo por ronda es de ( 2^256 ) = 1,15 x 10^77 ).
IDEA: Utiliza bloques de 64 bits y una clave de 128 bits con la que se genera, mediante rotaciones y fragmentaciones sucesivas, 52 claves de 16 bits (lo que equivale a un espacio de dominio de claves de ( 2^16 )^52 = 2,86 x 10^250 ).
DES: creado en 1975, opera con bloques de 64 bits, 16 rondas de cifrado y claves de 56 bits de longitud, se lograba un espacio de dominio de claves por ronda de ( 2^56 = 7.2 x 10^16 ) combinaciones. Fue reemplazado en 1999 por 3DES, el que utiliza 3 claves de 56 bits (con lo cual el espacio de dominio de claves por ronda sube a ( 2^56 )^3 = 3,74 x 10^50).
En la actualidad, se sigue aumentando el tamaño de las claves pues ya en 2012 había disponible un servicio gratuito online capaz de descifrar claves DES de 56 bits en un máximo de 26 horas
[ https://crrck sh ].
Áreas de Mejora:
La mayoría de los actuales sistemas basan su “robustez” en la longitud de las claves de cifrado. Se entiende por “robustez”, la capacidad para resistir “ataques de fuerza bruta”; es decir, la capacidad para resistir intentos de “adivinar” la clave probando todas las opciones posibles según la extensión y los tipos de caracteres que la componen. De este modo, mientras más caracteres contengan las claves, mayor es la “robustez” del sistema.
Por ejemplo, en AES-128, las claves de 128 bits de longitud (lo que equivale a 16 caracteres) generan ( 2^128 ) opciones de claves; mientras que para AES-192, las claves de 192 bits de longitud (lo que equivale a 24 caracteres) generan ( 2^192 ) opciones de claves; y, para AES- 256, las claves de 256 bits de longitud (lo que equivale a 32 caracteres) generan ( 2^256 ) opciones de claves. Dado el desarrollo alcanzado por los fabricantes de computadores, esta característica se ha transformado en una debilidad de los sistemas criptográficos pues, con densidades de integración que ya alcanzaban los ( 5 x 10^10 ) en 2018, la potencia de dichos computadores hace que las claves de 128 bits e incluso las de 192 bits se vuelvan “inseguras”, hasta para aplicaciones “no sensibles”.
Por otra parte, puesto que la generación de claves de “gran tamaño” plantea una dificultad práctica para garantizar la diversidad (aleatoriedad) de las claves a generar, y para el manejo y difusión a las partes interesadas, el uso de claves de mayor tamaño crea otra debilidad en los
actuales sistemas. Ello ya que obliga a establecer algún mecanismo de administración de claves que incluya generadores “realmente” aleatorios, lo que (además) dificultará al usuario el “recordar” las claves generadas (1024 bits equivalen a 128 caracteres alfanuméricos o de otro tipo).
Asimismo, algunos de los actuales sistemas, basan su mecanismo de “cifrado” en la baja complejidad de las operaciones de trasposición y de sustitución, lo que obliga a contrarrestar dicho efecto, mediante la aplicación de varias “rondas de cifrado”; es decir, repitiendo (entre 10 y 16 veces) los pasos requeridos para el cifrado, lo que puede considerarse un inconveniente adicional, ya que ello afecta también al proceso de descifrado.
Novedad de la Invención:
En cuanto a aspectos de otras patentes similares a la presente invención, el uso de secuencias numéricas para efectuar un proceso de cifrado/descifrado es mencionado en la patente US 7.995.748-B2 “Method and Apparatus for providing encryption/decryption using two sequences of numbers”, publicada con fecha 2011/08/09. Sin embargo, dicho sistema restringe el tipo de las secuencias numéricas a un subconjunto de las que es posible utilizar en la presente invención.
En efecto, dicha patente basa el método propuesto en matrices de tamaño (8x8), ya que utiliza Soluciones al “Problema del Caballo” (que consiste en recorrer, mediante el movimiento del Caballo de Ajedrez, todo el tablero de (8x8) casillas, sin pasar dos veces por la misma casilla), y cuyas soluciones se estiman en ( 1,06 x 10^14 ) [Ref : “Some enumerations of Clases of Knight’s Tours” por G. P. Jelliss en su website “Knight’s Tours Notes” [ www.mavhematics.com./t/8a.html ], mientras que la cantidad de secuencias que es posible generar mediante el método aquí presentado para una matriz de (8x8) es de 64! ( Factorial de 64 = 1,26 x 10^89 ), lo que es una cifra muy superior a la anterior.
El uso de Soluciones al “Problema del Caballo” como secuencia numérica también aparece mencionado en el método de cifrado descrito en la Solicitud de Patente US 2016/379.527, publicada sin aprobación con fecha 2016/12/29 (por haber sido abandonada), en la que se proponía una forma diferente a la anterior, de utilizar las soluciones para el proceso de cifrado.
En ambos casos, aunque aún no se cuenta con todo el repertorio de las poco más de ( 10^14 ) soluciones, en 1862 el abad Francés Philippe Jolivald publicó más de 413.000 soluciones al “Problema del Caballo”, con lo que un “ataque de fuerza bruta” (mediante un algoritmo automático), podría verse bastante facilitado.
La presente invención, no utiliza las Soluciones al “Problema del Caballo” para ninguna de las etapas del método de encriptación. Asimismo, el uso que se le da en la presente invención a las secuencias, series y sucesiones numéricas que se utiliza, no guarda relación con el empleado en las dos patentes mencionadas. Por lo demás, la presente invención considera el uso de ordenamientos numéricos de los cuales, las secuencias son sólo un caso particular de las muchas que sería posible utilizar.
Resumen de la Invención:
De acuerdo a la invención, se resuelve el tema de la aleatoriedad necesaria para la generación de las claves, ya que las claves del método presentado no son aleatorias, sino que se obtienen al codificar las acciones realizadas en cada una de las etapas en las que ellas se deben aplicar.
De acuerdo a la invención, también se resuelve la debilidad de los sistemas actuales, respecto de lograr la robustez del método mediante el tamaño de la clave (de 1.024 bits o superiores), puesto que ésta se logra mediante la diversidad de operaciones realizadas en el proceso de cifrado, combinada con la amplitud de opciones disponibles para cada una de ellas. De hecho, las claves a utilizar (para la realización preferente) no son mayores a 320 bits (40 caracteres alfanuméricos o de otro tipo), a pesar de lo cual la robustez del método no se ve afectada.
De acuerdo a la invención, lo anterior también resuelve la debilidad planteada por la necesidad de administrar claves de gran tamaño, ya que las claves son “diseñadas” y “codificadas” de acuerdo al efecto deseado a través de las operaciones involucradas; o bien, son seleccionadas a partir de un repertorio de claves ya generadas. De este modo, aunque las claves se seleccionen (en forma aleatoria o secuencial) desde un repositorio digital, éstas no son generadas en forma aleatoria.
De acuerdo a la invención se agrega la posibilidad de aumentar la robustez del método efectuando diversos cambios en algunos de los parámetros de los cuales depende la cantidad de
opciones a explorar en un “ataque de fuerza bruta” (mediante un algoritmo automático), la cual es comparable a RSA-1024 ( 2^1024 = 1,79 x 10^308). Entre ellos, cabe destacar:
* Aumentar el tamaño del ordenamiento numérico a utilizar. Por ejemplo, en el caso de un conjunto de 64 números, la cantidad de ordenamientos diferentes es de 64! ( Factorial de 64 = 1,26 x 10^89 ). Por otra parte, si se aumenta a un conjunto de 128 números, la cantidad de ordenamientos diferentes sube a 128! ( Factorial de 128 = 3,85 x 10^215 );
* Aumentar la cantidad de ordenamientos numéricos a utilizar: Por ejemplo, al utilizar dos conjuntos de de 64 números cada uno, la cantidad de opciones para las formas diferentes de ordenar dichos números sube a 64! x 64! (Factorial de 64 x Factorial de 64; es decir, 1,61 x 10^178), pero si se utiliza dos conjuntos de 128 números, sube a 128! x 128! ( Factorial de 128 x Factorial de 128; es decir, 1,48 x 10^431 );
* Aumentar la cantidad de “alfabetos de sustitución” a utilizar: Por ejemplo, en el caso de un alfabeto de 26 caracteres, la cantidad de alfabetos diferentes que se puede generar es de 26! ( Factorial de 26 = 4,03 x 10^26 ). Pero si utilizamos dos alfabetos, sube a (26!)^2 (Factorial de 26 elevado a la 2a. potencia; es decir, 1,62 x 10^53 );
* Aumentar el tamaño del alfabeto de sustitución a utilizar: Por ejemplo, si aumentamos la cantidad de caracteres al doble (sin repetir caracteres, por ejemplo diferenciando mayúsculas y minúsculas; o agregando caracteres especiales o vocales tildadas), la cantidad de alfabetos diferentes será de 52! ( Factorial de 52 = 8,06 x 10^67 );
* De este modo, si sólo combináramos el efecto de usar un ordenamiento numérico de 128 números y cuatro “alfabetos de sustitución” de 26 caracteres, ya tendríamos una robustez superior a la de RSA-1024, pues la cantidad de opciones sería de ( 128! x (26!)^4) es decir, ( 1,02 x 10^322 ).
Finalmente, de acuerdo a la invención y a lo señalado en el párrafo anterior, se atenúa el inconveniente de tener que aplicar varias “rondas” de cifrado para mejorar la robustez del método (aunque el hacerlo siga siendo una de las formas de mejorar dicha robustez), pues ello redunda en la facilidad de aplicación del cifrado y descifrado, sin que eso signifique una disminución en la cantidad de opciones que sería necesario explorar, en un “ataque de fuerza bruta” (mediante un algoritmo automático).
Descripción de una forma de realizar la invención:
El método presentado permite cifrar y descifrar una secuencia de datos (“mensaje base”) codificados en forma digital o analógica, mediante el desarrollo de una etapa previa y la aplicación de tres (3) procesos en los que se realiza la trasposición y sustitución de los datos, con lo que se logra hacerla ininteligible (“mensaje cifrado”) a un tercero que desconozca el método utilizado para el cifrado. Para efectos de descripción, asumiremos que la secuencia de datos está compuesta por “caracteres alfanuméricos”, aunque como se plantea en las reivindicaciones adjuntas, su composición puede ser bastante más amplia y variada.
Etapa Previa: Definiciones y pasos previos
• Definir un “mensaje base” a cifrar;
• Definir cuatro operaciones para el reordenamiento del “mensaje base”;
• Escoger un “tamaño de bloque” (de 64, 128 o 256 caracteres) a utilizar en el cifrado;
• Escoger un “tamaño de matriz” para contener el “mensaje base”, según el “tamaño de bloque” definido: (16x4) para bloques de 64 caracteres; (16x8) para bloques de 128 caracteres; y (16x16) para bloques de 256 caracteres;
• Definir un conjunto de números a utilizar en el proceso de cifrado, del mismo tamaño del “tamaño de bloque”. El “conjunto numérico” a utilizar para este ejemplo, está compuesto de números consecutivos desde “1” hasta el tamaño de bloque escogido (64, 128 o 256);
• Definir cuatro operaciones para el reordenamiento del “conjunto numérico”;
• Definir un “alfabeto de sustitución” (alfabético, de 26 caracteres);
• Definir las claves CK 1 , CK2 y CK3 con las que un corresponsal despachador podrá generar un “mensaje cifrado” y un corresponsal destinatario podrá descifrar dicho “mensaje cifrado”;
• Trascribir el “alfabeto de sustitución” a una matriz [A0] de tamaño (26x1) en que “26” es la cantidad de caracteres del alfabeto;
• Fragmentar el “mensaje base”, de acuerdo al “tamaño de bloque” escogido;
• Trascribir el “mensaje base” a múltiples matrices [Al] La cantidad de matrices a utilizar dependerá del cuociente entre la cantidad de caracteres del “mensaje base” y el “tamaño del bloque”;
• Trascribir el “conjunto numérico” a una matriz [Bl] de las mismas dimensiones que la matriz [Al]
Proceso 1: Reordenamiento del “mensaje base” [Al] generando el “mensaje intermedio” [A2]
• Operación 1 : trasponer las filas de las matrices [Al], en base a lo indicado en la clave CK1;
• Operación 2: trasponer las columnas de las matrices [Al], en base a lo indicado en la clave CK1;
• Definir los paralelógramos concéntricos en las matrices [Al];
• Operación 3 : giro de los caracteres de cada paral el ógramo, en base a lo indicado en la clave CK1;
• Operación 4: reflexión de las matrices [Al], en base a lo indicado en la clave CK1;
• Al aplicar las cuatro operaciones antes descritas, se obtiene las matrices [A2] del “mensaje intermedio”.
Proceso 2: Reordenamiento del “conjunto numérico” [Bl] generando el “nuevo ordenamiento numérico” [B2]
• Operación 1 : trasponer las filas de las matrices [B 1], en base a lo indicado en la clave CK2;
• Operación 2: trasponer las columnas de las matrices [B 1], en base a lo indicado en la clave CK2;
• Definir los paralelógramos concéntricos de las matrices [Bl];
• Operación 3 : giro de los caracteres de cada paral el ógramo, en base a lo indicado en la clave CK2;
• Operación 4: reflexión de las matrices [Bl], en base a lo indicado en la clave CK2;
• Al aplicar las cuatro operaciones antes descritas, se obtiene las matrices [B2] del “nuevo ordenamiento numérico”.
Proceso 3: Cifrado del “mensaje intermedio” [A2] generando el “mensaje cifrado” [Cl]
• Efectuar la sustitución de los caracteres del “mensaje intermedio”, en base a lo indicado en la clave CK3 de cómo utilizar el “alfabeto de sustitución” con el “nuevo ordenamiento numérico” para generar el “mensaje cifrado” [Cl];
• Trasmitir al corresponsal destinatario y mediante un canal no protegido, el “mensaje cifrado” y el “conjunto numérico” original;
Trasmitir al corresponsal destinatario y mediante un canal protegido y previamente acordado entre las partes, las claves CK1, CK2 y CK3; y el “alfabeto de sustitución”.
Breve Descripción de las Figuras:
El invento se explica en mayor detalle haciendo referencia a las ilustraciones en las que se describe un ejemplo de implementación en matrices de (5x4) y algunas de sus respectivas variantes, las que son provistas sólo con fines explicativos y no con propósitos de limitación alguna en cuanto a su implementación y uso, o respecto de lo definido en las reivindicaciones adjuntas:
Figura 1: Ejemplo de Aplicación
La matriz [Al] (101 en la Figura), muestra un ejemplo genérico de “mensaje base”. Las Matrices [Ala], [Alb], [Ale] y [A2] (102 a 106 en la Figura) muestran un ejemplo de cómo las operaciones elementales descritas en la clave CK1, son aplicadas para reordenar el “mensaje Base” inicial y transformarlo en la matriz [A2], con un “mensaje intermedio” (106 en la Figura);
La matriz [Bl] (201 en la Figura) muestra un ejemplo genérico de "conjunto numérico”. Las matrices [Bla], [Blb], [Ble] y [B2] (202 a 206 en la Figura) muestran un ejemplo de cómo las operaciones elementales descritas en la clave CK2, son aplicadas para reordenar el “conjunto numérico” inicial y transformarlo en la matriz [B2], con un “nuevo ordenamiento numérico” (206 en la Figura);
La matriz [Cl] (303 en la Figura) muestra un ejemplo de cómo el “mensaje intermedio” de la matriz [A2] (302 en la Figura) es transformado en un “mensaje cifrado” utilizando el “nuevo ordenamiento numérico” [B2] (301 en la Figura), aplicando la “función de sustitución” descrita en la clave CK3;
Las mismas matrices de la Figura 1 ya mencionadas, ilustran - al ser revisadas en orden inverso, la operación de descifrado del mensaje de la matriz [Cl] (303 en la Figura) y obtención del “mensaje base” mostrado en la matriz [Al] (101 en la Figura).
Figura 2: Componentes de cada matriz, en relación posicional con el “conjunto numérico”, con el “nuevo ordenamiento numérico” y con el “alfabeto de sustitución”.
Las 6 matrices de la Figura, muestran en detalle para el ejemplo descrito en la Figura anterior, los caracteres componentes de cada matriz (402, 403, 405, 407, 409 y 411 en la Figura), los números de secuencia del alfabeto (401) y las coordenadas de los caracteres componentes de dichas matrices (404, 406, 408, 410 y 412 en la Figura), para cada posición del “nuevo ordenamiento numérico” (409 y 410 en la Figura): las matrices [A1] y [A2], muestran el “mensaje base” original (403 y 404 en la Figura) y el “mensaje intermedio” (405 y 406 en la Figura); las matrices [Bl] y [B2], muestran el “conjunto numérico” inicial (407 y 408 en la Figura) y el “nuevo ordenamiento numérico” (409 y 410 en la Figura); finalmente, la matriz [C1], muestra el “mensaje cifrado” (411 en la Figura).
Descripción Detallada de las Figuras:
Ejemplo: Figura 1 - Aplicación del Método descrito en la Invención.
Proceso de Cifrado:
En esta Figura se muestra un ejemplo completamente desarrollado aplicando todos los pasos para el cifrado. Dicho ejemplo, ha sido desarrollado utilizando una matriz de tamaño (5x4) para cifrar un mensaje de 20 caracteres de extensión, que se habrá de enviar a un corresponsal destinatario, para lo cual se requiere desarrollar los pasos (procesos) que se describe a continuación: (1) → (2) → (3)
1) Generar un “Mensaje Intermedio”:
(101) “Mensaje Base” original (Secreto):
Sabiendo que para cifrar el Mensaje “Base” de tamaño (5x4) se requiere crear un “Mensaje Intermedio” con la clave “CK1 = 4231ACBED-04V”, en la Figura 1 se puede ver en detalle cada paso del proceso de generación del “Mensaje Intermedio”:
(102) Trasposición de las filas de la matriz [Al]:
Con los 4 primeros caracteres (“4231”) de la clave CK1, se traspone verticalmente las filas de la matriz [A1], siguiendo lo indicado en la clave, alternando (en este caso) su posición relativa desde “4321” a “4231” con lo que se genera la matriz [Ala] que se muestra en la Figura 1. De este modo, la fila “4” de [Al] se mantiene en la 4a posición (extremo superior de [Ala]); la fila “3” de [A1] se traslada desde la 2a de [A1] a la 3a fila de [Ala] (contando desde el extremo
inferior); la fila “2” de [Al] se traslada desde la 3a de [Al] a la 2a fila de [Ala]; y la fila “1” de [Al], se mantiene en la primera posición (extremo inferior de [Ala]);
(103) Trasposición de las columnas de la matriz [Ala]:
Con los siguientes 5 caracteres (“ACBED”) de la clave CK1, se traspone horizontalmente las columnas de la matriz [Ala], siguiendo lo indicado en la clave, alternando su posición relativa desde “ABCDE” a “ACBED” con lo que se genera la matriz [Alb] que se muestra en la Figura 1
De este modo, la columna “A” de la matriz [Ala] se mantiene en la Ia columna (extremo izquierdo) de la matriz [Alb]; la columna “B” se traslada desde la 2a de [Ala] a la 3a columna de [Alb]; la columna “C” se traslada desde la 3a de [Ala] a la 2a columna de [Alb]; la columna “D” se traslada desde la 4a de [Ala] a la 5a columna de la matriz (extremo derecho de [Alb]); y, la columna Έ” se traslada desde la 5a de [Ala] a la 4a columna de [Alb], (Ver Figural);
(104) Definición de Paralelógramos Concéntricos en [Alb] (previo al Giro):
Para facilitar la ejecución de la trasposición de los paral el ogramos concéntricos de la matriz [Ale] del paso siguiente, se muestra la distribución de las posiciones del “mensaje base” con las filas y columnas ya traspuestas en la matriz [Alb], antes de efectuar el giro definido en la clave CK1;
(105) Trasposición de los Paralelógramos Concéntricos de la matriz [Ale]:
Con los siguientes 3 caracteres (“-04”) de la clave CK1, se traspone el contenido de las casillas de los rectángulos concéntricos mostrados en la matriz [Ale] “sin giro” (104 en la Figura 1), moviendo dicho contenido en 4 posiciones en sentido anti-horario (el sentido del giro “antihorario” es indicado por el signo negativo “-”).
De este modo, (por ejemplo) los caracteres “t-s-s” de la fila superior del rectángulo concéntrico interior de la matriz 104, pasan a ocupar las coordenadas (d, 3) - (d, 2) - (c, 2) de la matriz [Ale] “con giro” (105 en la Figura 1) en dicho rectángulo; mientras que (por ejemplo) los caracteres “h-l-o” de la matriz 104 (en la Figura 1) en las coordenadas (a, 4) - (b, 4) - (c, 4), pasan a ocupar las coordenadas (b, 1) - (a, 1) - (a, 2) en el rectángulo concéntrico exterior de la matriz [Ale] “con giro” (105 en la Figura 1);
(106) Trasposición de la matriz [Ale] mediante un proceso de reflexión, con lo que se obtiene la matriz [A2]:
Con el último carácter (“V”) de la clave CK1, se refleja en forma “Vertical” la matriz generada en el proceso (105), para generar la matriz [A2], que es la matriz del “Mensaje Intermedio” (106 de la Figura 1); de este modo, ya que se está efectuando una “reflexión vertical”, se produce una nueva trasposición de las filas de la matriz, haciendo que: la 4a fila (extremo superior de [Ale]), quede en la Ia posición (extremo inferior de [A2]); la 3a fila de [Ale] quede en la 2a posición de [A2]; y así sucesivamente, hasta haber desplazado todas las filas de la matriz [Ale] para formar [A2] (ver Fig. 1);
Estructura y Tamaño de la Clave CK1 :
Como se pudo apreciar, la estructura y el tamaño de la clave CK1 están definidos por:
CK1 = “Reordenamiento de (N) Filas” + “Reordenamiento de (M) Columnas”
+ “Sentido de Giro (“+/-”) + “Desplazamiento del Giro (G)”
+ “Tipo de reflexión” (“H”= Horizontal; “V” = Vertical; “D” = Diagonal
Derecha; “T’= Diagonal Izquierda”) = “N” caracteres + “M” caracteres + 1 carácter + 2 dígitos + 1 carácter.
En el caso del ejemplo, el tamaño de la clave es de = 4 + 5 + 1 + 2 + 1 = 13 caracteres = 104 bits.
2) Generar un “nuevo ordenamiento numérico” (matriz [B2]):
(201) Definición del “conjunto numérico” [B 1 ] :
Suponiendo que se ha generado (o seleccionado desde un repositorio) un “conjunto numérico” (matriz [B 1]) y utilizando la clave “CK2 = 3142BDAEC+03H”, en la Fig. 1 se puede ver en detalle cada paso del proceso de generación del “nuevo ordenamiento numérico”, el que incluye las etapas siguientes:
(202) Trasposición de las filas de la matriz [Bla]:
Con los 4 primeros caracteres (“3142”) de la clave CK2, se traspone verticalmente las filas de la matriz [Bl], siguiendo lo indicado en la clave, alterando su posición relativa desde “4321” a “3142” con lo que se genera la matriz [Bla] que se muestra en la Figura 1.
De este modo, la fila “4” se traslada desde la Ia (extremo inferior de la matriz [Bl]) a la 3a fila de la matriz [Bla]; la fila “3” se traslada desde la 2a fila de [Bl], a la Ia fila de la matriz [Bla]; la fila “2” se traslada desde la 3a fila de [Bl], a la cuarta fila de la matriz [Bla]; y, la fila “1” se traslada desde la 4a fila de [Bl], a la 3a fila de la matriz [Bla] (Ver Figura 1);
(203) Trasposición de las columnas de la matriz [Blb]:
Con los siguientes 5 caracteres (“BDAEC”) de la clave CK2, se traspone horizontalmente las columnas de la matriz [Bla], siguiendo lo indicado en la clave alterando su posición relativa desde “ABCDE” a “BDAEC” con lo que se genera la matriz [Blb],
De este modo, la columna “A” se traslada desde la Ia columna (extremo izquierdo) de [Bla] a la 3a columna de la matriz [Blb]; la columna “B” se traslada desde la 2a de [Bla] a la Ia columna de la matriz [Blb]; la columna “C” se traslada desde la 3a de [Bla] a la 5a columna de la matriz[Blb]; la.columna “D” se traslada desde la 4a de [Bla] ala 2a columna de la matriz [Blb]; y, la columna Έ” se traslada desde la 5a de [Bla] a la 4a columna de la matriz [Blb], (Ver Figura 1);
(204) Definición de Paralelógramos Concéntricos en [Ble] (previo al Giro):
Para facilitar la ejecución de la trasposición de los paral el ogramos concéntricos de la matriz [Ble] del paso siguiente, se muestra la distribución de las posiciones del “conjunto numérico” con las filas y columnas ya transpuestas en la matriz [Blb] “sin giro”, antes de efectuar el giro definido en la clave CK2;
(205) Trasposición de los paralelógramos concéntricos de la matriz [Ble] (con Giro):
Con los 3 caracteres (“+03”) siguientes de la clave CK2, se traspone el contenido de las casillas de los rectángulos concéntricos, mostrados en la matriz [Blb], moviendo dicho contenido en 3 posiciones en sentido horario (giro positivo es indicado por el signo “+”).
De este modo, (por ej.) los números “14-1-19” de la fila superior del rectángulo interior de la matriz [Ble] “antes del giro”, pasan a ocupar la fila inferior de dicho rectángulo, como “19—1— 14”; mientras que (por ej.) el número “6” de la fila superior del rectángulo externo de la matriz [Ble] “antes del giro” (junto con todos los demás números en ese rectángulo concéntrico), se desplaza tres posiciones a la derecha (ver matriz [Ble] en Figura 1);
(206) Trasposición de la matriz [Ble] mediante un proceso de reflexión, con lo que se obtiene la matriz [B2]:
Con el último carácter (“H”) de la clave CK2, se refleja en forma “Horizontal” la matriz [Ble] generada en el paso anterior, para generar la matriz [B2] que es la matriz del “nuevo ordenamiento numérico”; de este modo, ya que se está efectuando una “reflexión horizontal”, se produce una nueva trasposición de las columnas de la matriz, haciendo que: la Ia columna (extremo izquierdo), quede en la 5a posición; la segunda columna quede en la cuarta posición; y así sucesivamente, hasta haber desplazado todas las columnas de la matriz (ver Figura. 1);
Estructura y Tamaño de la Clave CK2:
Como se pudo apreciar, la estructura y el tamaño de la clave CK2 y de la clave CK1 están definidos por los mismos elementos:
CK2 = “Reordenamiento de (N) Filas” + “Reordenamiento de (M) Columnas”
+ “Sentido de Giro (“+/-”) + “Desplazamiento del Giro (G)” + “Tipo de reflexión” (“H”= Horizontal; “V” = Vertical; “D” = Diagonal Derecha; “T’= Diagonal Izquierda”) = “N” caracteres + “M” caracteres + 1 carácter + 2 dígitos + 1 carácter. En el caso del ejemplo, el tamaño de la clave es de = 4 + 5 + 1 + 2 + 1 = 13 caracteres = 104 bits.
3) Generar un Mensaje Cifrado:
Tomando el “nuevo ordenamiento numérico” (301: matriz [B2]) y el “Mensaje Intermedio” (302: matriz [A2]), para generar el “Mensaje Cifrado” (303: matriz [Cl]) con la clave CK3 = “OIA":
(301) “Nuevo ordenamiento numérico”:
Incluido sólo a título de referencia visual (la misma del proceso 206).
(302) Mensaje Intermedio:
Incluido sólo a título de referencia visual (la misma del proceso 106).
(303) Mensaje Cifrado:
Con los 3 caracteres (“OIA”) de la clave CK3, se efectúa el Cifrado del mensaje, substituyendo el texto del “Mensaje intermedio”, adelantando los caracteres, en la cantidad de posiciones indicadas en el “nuevo ordenamiento numérico”, generando de esta forma la matriz [Cl]
leyendo el ordenamiento desde la posición (“01”) y recorrí éndoloen forma ascendente (sentido del recorrido indicado por “A” de “Ascendente”), según se define en la clave. En la Figura 1, se puede ver en detalle cada paso del proceso de cifrado del mensaje.
De este modo, (por ej.) la posición “01” del “nuevo ordenamiento numérico” (que está en las coordenadas (c, 2) de la matriz [B2]) indica que el carácter “m” que está en las coordenadas (c, 2) de la matriz [A2], se debe substituir en las coordenadas (c, 2) de la matriz [Cl], por el carácter que está 1 posición adelante (“OIA”). El carácter siguiente a la letra “m” del alfabeto de sustitución es la letra “n”. Por consiguiente, en las coordenadas (c, 2) de la matriz [Cl], se substituye el carácter “m” del “mensaje intermedio”, por el carácter “n” en el mensaje cifrado;
Para la posición “02” del “nuevo ordenamiento numperico” (de coordenadas (a, 4) en la matriz [B2]) se substituye el carácter “1” (de las coordenadas (a, 4) de la matriz [A2]) por el carácter “n” (que está a dos posiciones siguientes en el alfabeto) de sustitución y se incorpora en las coordenadas (a, 4) de la matriz [Cl];
Para la posición “03” del nuevo ordenamiento numérico” (coordenadas (e, 4) de la matriz [B2]), el carácter del “mensaje intermedio” es el separador de palabras “*”, el que - como ya dijimos, no se sustituirá por lo que en las coordenadas (e, 4) de la matriz [Cl] aparece también el
Con la posición “04”(coordenadas (d, 4) de [B2]), el carácter “c” de la matriz [A2], se sustituye en las coordenadas (d, 4) de la matriz [Cl] por el carácter “g” pues en el alfabeto de sustitución la letra “g” está 4 posiciones más adelante que la letra “c” ; y así sucesivamente, hasta sustituir todos los caracteres del “mensaje intermedio”, con lo que se termina el cifrado y la obtención de la matriz [Cl]
Como es de suponer, cuando el número de posición del nuevo ordenamiento numérico” supere la cantidad de caracteres del alfabeto utilizado para las sustituciones, se debe continuar la cuenta nuevamente a partir del primer carácter de dicho alfabeto, si el recorrido es ascendente; o a partir del último carácter del alfabeto, si el recorrido es descendente.
Estructura y Tamaño de la Clave CK3:
Como se pudo apreciar, la estructura y el tamaño de la clave CK3 están definidos por:
CK3 = “Posición de Inicio de la Sustitución”
+ “Sentido de recorrido (A = Ascendente / D = Descendente)”
En el caso del ejemplo, el tamaño de la clave es de = 2 dígitos + 1 carácter = 3 caracteres = 24 bits.
Figura 2: Componentes de cada matriz, en relación posicional con el “conjunto numérico” inicial, con el “nuevo ordenamiento numérico” y con el “alfabeto de sustitución”.
En la Figura 2 se muestra el detalle del contenido de cada una de las 6 matrices del ejemplo desarrollado en la Figura 1, para cada posición del “alfabeto de sustitución” [A0]; del “mensaje base” [Al]; del “mensaje intermedio” [A2]; del “conjunto numérico” [Bl]; del “nuevo ordenamiento numérico” [B2]; y del “mensaje cifrado” [Cl]
Matriz [A0]: Alfabeto de Substitución.
(401): Posiciones “1” a “26” de los caracteres del “alfabeto de sustitución”;
(402): Texto del alfabeto con la distribución de caracteres más simple que se puede utilizar para la sustitución, al cifrar el “mensaje intermedio”;
Matriz [Al]: Mensaje Base
(403): Texto original del “mensaje base” para el ejemplo desarrollado;
(404): Coordenadas de cada carácter del “mensaje base” en la matriz [Al];
Matriz [A2]: Mensaje Intermedio
(405): Texto traspuesto del “mensaje intermedio” para el ejemplo;
(406): Coordenadas de cada carácter del “mensaje intermedio”, en la matriz [A2];
Matriz [Bl]: “Conjunto numérico” inicial
(407): Posiciones “1” a “20” del Conjunto numérico” inicial utilizado en el ejemplo;
(408): Coordenadas de cada posición del “Conjunto numérico” inicial, en la matriz [Bl];
Matriz [B2]: “Nuevo ordenamiento numérico”
(409): Posiciones “1” a “20” del “nuevo ordenamiento numérico” generado en el ejemplo;
(410): Coordenadas de cada posición del “nuevo ordenamiento numérico”, en la matriz [B2];
Matriz [Cl]:
(411): Texto del “mensaje cifrado” generado en el ejemplo;
(412): Coordenadas de cada carácter del “mensaje cifrado”, en la matriz [Cl];
Proceso de Descifrado:
En la Figura 1, el detalle descrito para explicar el ejemplo del cifrado, también se puede utilizar para explicar todos los pasos necesarios para el proceso del descifrado. Suponiendo que el corresponsal ha enviado el mensaje cifrado al destinatario; que éste lo ha recibido (a través de un canal no protegido) junto con el conjunto numérico público; y que también ha recibido las respectivas claves (a través de un canal protegido previamente acordado), a continuación se describe los pasos del proceso del descifrado (cuya numeración mantiene la indicada en el proceso de cifrado, a fin de mostrar la secuencia seguida y para hacer evidente que al “descifrar”, se revierte el efecto del “cifrado”):
(la → Id) → (3) → (2d → 2a)
2 Generar el “Nuevo Ordenamiento Numérico” (matriz [B2]):
Con el “conjunto numérico” original (matriz [Bl]) y utilizando la clave “CK2 = 3142BDAEC+03H” recibidas por el corresponsal destinatario desde el corresponsal despachador, se puede comenzar el proceso de generación del “nuevo ordenamiento numérico” a efectuar por parte del destinatario, proceso que incluye las operaciones siguientes: la) Trasposición de las filas de la matriz [Bl], con lo que se genera la matriz [Bla] que se muestra en la Figura 1;
Lb) Trasposición de las columnas de la matriz [Bla], con lo que se genera la matriz [Blb] que se muestra en la Figura 1; le) Trasposición de los paralelogramos concéntricos de la matriz [Blb] “antes del giro”, con lo que se genera la matriz [Ble] que se muestra en la Figura 1;
Id) Reflexión “Horizontal” de la matriz [Ble], con lo que se genera la matriz [B2] que se muestra en la Figura 1;
3) Recuperar el “Mensaje Intermedio” a partir del “Mensaje Cifrado”:
Tomando el Mensaje Cifrado [C1] y la clave CK3 = “OIA" recibidos desde el corresponsal, en la Figura 1 se puede ver en detalle el proceso de recuperación del “mensaje intermedio” mediante la reversión de las operaciones de sustitución efectuadas utilizando la clave CK3 para generar la matriz [A2]:
Ya que en el proceso de cifrado del mensaje, lo que se hizo fue sustituir cada carácter del “mensaje intermedio” utilizando las posiciones del “nuevo ordenamiento numérico” para “adelantar” los caracteres, la cantidad de caracteres indicada por la posición del ordenamiento en la que se está efectuando la sustitución, para recuperar el “Mensaje Intermedio”, bastará con “atrasar” los caracteres del mensaje cifrado, la cantidad de caracteres indicada por la posición del ordenamiento para la que se está efectuando la sustitución;
De este modo, para la posición “01” del mensaje cifrado (letra “n” en las coordenadas (c, 2) de la matriz [Cl]), habrá que “atrasar” la letra “n” en 1 posición; es decir en las coordenadas (c, 2) de la matriz [A2], corresponde que haya una “m” (que es la letra anterior a la “n”, en el alfabeto de sustitución);
Para la posición “02” del mensaje cifrado (letra “n” en las coordenadas (a, 4) de la matriz [Cl]), habrá que “atrasar” la letra “n” en 2 posiciones; es decir en las coordenadas (a, 4) de la matriz [A2], corresponde que haya una letra “1” (que es la letra dos posiciones anteriores a la “n”, en el alfabeto de sustitución);
En la posición “03” del mensaje cifrado (coordenadas (e, 4) de la matriz [Cl]), no hay cambio pues se trata del carácter “*” utilizado como separador de caracteres, por lo que en las coordenadas (e, 4) de la matriz [A2] corresponde que vaya el mismo carácter;
Y así sucesivamente, hasta haber recorrido todas las posiciones de la matriz [Cl]
Finalmente, cabe señalar que - a menos que las vocales tildadas se incluyan en el alfabeto de sustitución, al “recuperar” el “Mensaje Intermedio” a partir del “mensaje cifrado”, dichas vocales no quedarán reflejadas en forma tildada el “mensaje intermedio”.
2) Recuperar el “Mensaje Base” a partir del “Mensaje Intermedio”:
Tomando el “Mensaje Intermedio” (matriz [A2] obtenida en el proceso anterior) y la clave “CK1 = 4231ACBED-04V" recibida desde el corresponsal despachador, en la Figura 1 se puede ver en detalle el proceso de recuperación del “mensaje base” original mediante la reversión de las operaciones de trasposición efectuadas utilizando la clave CK1 para generar la matriz [Al] Esto requiere revertir los efectos de las operaciones realizadas, lo que significa - en este caso, aplicar en el sentido inverso al que se utilizaron, las 4 formas diferentes de trasponer el mensaje base original (y “secreto”), las cuales están descritas en la clave CK1.
2d) Revertir la Reflexión aplicada, para obtener la matriz [Ale]:
Ya que la clave indica “reflexión vertical” (“V” = posición #13 de la clave CK1) corresponde a una trasposición de las filas de la matriz [A2], la matriz [Ale] se obtiene trasladando la 4a fila (fila superior) de la matriz [A2], a la posición de la Ia fila (fila extrema inferior); y así sucesivamente, hasta mover las 4 filas.
2c) Revertir el Giro de los rectángulos concéntricos, para obtener la matriz [Alb]:
Ya que el giro que se aplicó fue “-04” (trasponer los caracteres 4 posiciones en sentido levógiro), para revertir el efecto, será necesario aplicar el giro contrario “+04”; es decir, trasponer los caracteres de los rectángulos concéntricos de la matriz [A2], 4 posiciones en sentido dextrógiro, con lo que se obtendrá la matriz [Alb]
De este modo (por ejemplo), los caracteres “o-m-t” (de la fila superior del rectángulo concéntrico interior) ubicadas en las coordenadas (b, 3) - (c, 3) - (d, 3) de la matriz [Ale], después de revertir el giro quedan ubicadas en las coordenadas (c, 2) - (b, 2) - (b, 3) de la matriz [Alb] Del mismo modo (por ejemplo), los caracteres “a-a-o-y-?” de la primera línea del rectángulo concéntrico exterior, después de revertir el giro cambian sus coordenadas desde (a, 4) - (b, 4) - (c, 4) - (d, 4) - (e, 4) en la matriz [Ale], hasta (e, 4) - (e, 3) - (e, 2) - (e, 1) - (d, 1) en la matriz [Alb]
2b) Revertir la Trasposición de Columnas, para obtener la matriz [Ala]:
Ya que la trasposición de columnas fue transformar las columnas “ABCDE” de [Ala] en las columnas “ACBED” de [Alb], para recuperar la matriz [Ala], basta con efectuar el proceso inverso a la matriz [Alb] De este modo, la Ia columna (extremo izquierdo) de la matriz [Alb] no se mueve pues no fue traspuesta, con lo que en la matriz [Ala] queda en la misma posición. La 2a columna de la matriz [Alb] debe quedar en la 3a columna (de izquierda a derecha) de la matriz [Ala]; y así sucesivamente, de acuerdo a lo indicado en la conversión de las columnas desde “ACBED” a “ABCDE”, para obtener la matriz [Ala] (Ver Figura 1).
2a) Revertir la Trasposición de Filas, para obtener la matriz [Al]:
Ya que la trasposición de filas (leídas desde el extremo superior al inferior) fue transformar las filas “4321” de la matriz [Al] en las filas “4231” de la matriz [Ala], para recuperar la matriz [Al] (que contendrá el “Mensaje Base” original), basta con efectuar el proceso de trasposición inverso a la matriz [Ala] De este modo, la 4a fila (extremo superior) de la matriz [Ala] no se
mueve pues no fue traspuesta, con lo que en la matriz [Al] queda en la misma posición. La 3a fila de la matriz [Ala] debe quedar en la 2a fila (desde el extremo superior) en la matriz [Al]; y así sucesivamente, de acuerdo a lo indicado en la conversión de las filas desde “4231” a “4321”, para obtener la matriz [Al] (Ver Figura 1).
Cálculo de la Robustez del Método, según el ejemplo explicado: a) Generación del “mensaje intermedio”:
La matriz escogida es de tamaño [5x4] con lo que la cantidad de filas (M) es “5” y la cantidad de columnas (N) es “4”. Se definió un “mensaje base” con 20 caracteres de longitud (MxN). Las operaciones definidas para reordenar el “mensaje base” son: a.l) Trasposición de las columnas: (Nai = 120 opciones).
Para trasponer las columnas, hay M! (Factorial de M) formas de hacerlo. En el ejemplo,
5! = 120. a.2) Trasposición de las filas: (Na2 = 24 opciones).
Para trasponer las filas hay N! (Factorial de M) formas diferentes de hacerlo. En el ejemplo, 4! = 24. a.3) Giro de los paralelógramos concéntricos: (Na3 = 336 opciones).
Para girar el contenido de los paralelógramos concéntricos, hay Na3 formas diferentes de hacerlo, incluyendo ( 2^(N/2) ) opciones considerando los giros “positivos” (en el sentido de los punteros del reloj) o “negativos” (en contra de los punteros del reloj) para cada uno de los (N/2) paralelógramos concéntricos (considerando sólo la componente entera para dicho cuociente, pues si “N” es impar habrá un paralelógramo central de tamaño ( M x 1 ) que no se gira). La expresión para la cantidad de opciones será:
Na3 ={ P 2 x [ (M + N ) - 2 x ( 2n + 1 ) ]} x ( 2^( N \ 2 ) ), para índices de la productoria desde n = 0 a k.
Con ( n = k ) tal que ( N - 2k = 2 ), para valores pares de N; y,
Na3 ={ P 2 c [ (M + N ) -2 c ( 2h + 1 ) ]} c [ M-2(k+l) ] x ( 2^(N \ 2 )+l ), y los mismos índices.
Con ( n = k ) tal que ( N - (2k+l) = 2), para valores impares de N; y (N\2) = parte entera del cuociente.
Nótese que el factor [ M - 2(k+l) ] da cuenta de la cantidad de opciones para los “giros” cíclicos de un paral el ógramo central, de tamaño (Mxl) que se presentará en las matrices con N impar.
En el ejemplo, para M = 5 y N = 4, se tiene que k = 1 :
Na23 = {2 x [(5+4) - 2 x (2x0+1)]} x (2 x [(5+4) - 2 x (2x1 + 1)]} x ( 2^2 )
= ({ 14 } x { 6 } x 4 ) = 336. a.4) Reflexión de la matriz: (Na4 = 4 opciones).
Para reflejar la matriz, hay 4 formas diferentes de hacerlo: horizontal, vertical, diagonal izquierda y diagonal derecha. Nótese que en el caso de las reflexiones diagonales, en realidad se trata de una reflexión y un giro combinados, por lo que la matriz [MxN] quedaría como [NxM], lo que haría necesario seguir usando matrices [NxM] en la aplicación del método. a.5) Orden de aplicación de los 4 pasos: (Na5 = 24 opciones).
Adicionalmente, el orden en el que se aplique los 4 pasos anteriores genera otras 4! opciones, con lo que la cantidad de opciones (Na) para la etapa de reordenamiento del mensaje base sería de:
Opciones del proceso (a):
Na = Nal X Na2 X Na3 X Na4 X Na5
= ( M! x N! x [ { P 2 x [ (M + N ) - 2 x ( 2n + 1 ) ]} x 2^( N/2 ) ] x 4 x 4! )
Na = ( 5! x 4! x [({14} x {6}) x 2^2] x 4 x 4! ) = ( 120 x 24 x [ ( 84 ) x 4 ] x 4 x 24 )
= 92.897.280 = ( 9,28 x 10^7 )
Para índices de la productoria entre n=0 y k.
Si la extensión (cantidad de caracteres) del “mensaje base” requiriera de la definición de más de una matriz de tamaño (MxN), y para cada nueva matriz se cambiad “conjunto numérico”, el “alfabeto de sustitución” y las claves utilizadas para el reordenamiento y el cifrado, la cantidad de opciones Na calculada se incrementa en la misma cantidad, pero con un efecto multiplicador.
b) Generacióndel “nuevo ordenamiento numérico”:
La matriz escogida es de tamaño [5x4] con lo que la cantidad de números del “conjunto numérico” es 20, por lo que hay 20! ( Factorial de 20 = 2,43 x 10^18 ) formas diferentes de crear la serie. Si se decidiera utilizar más deun “conjunto numérico”, cada nuevo ordenamiento aportará otras (MxN)! (Factorial de MxN) opciones, que se multiplican con las anteriores.
Las operaciones definidas para reordenar el “conjunto numérico” son: b.0) Definición del “conjunto numérico” (Nbo = 20! opciones) b.l) Trasposición de las columnas: (Nbi = 120 opciones). b.2) Trasposición de las filas: (Nb2 = 24 opciones). b.3) Giro de los paralelógramos concéntricos: (Nb3 = 336 opciones). b.4) Reflexión de la matriz: (Nb4 = 4 opciones). b.5) Orden de aplicación de los 4 pasos: (Nb5 = 24 opciones).
Opciones del proceso (b): Nb = Nbo x Nbi x Nb2 x Nb3 x Nb4 x Nb5
Nb = (MxN)! x ( M! x N! x { P 2 x [ (M + N ) - 2 x ( 2n + 1 ) ] } x 2^( N/2 ) x 4 x 4! ), para índices de la productoria entre n = 0 y k.
Para el ejemplo:
Nb = 20! x ( 5! x 4! x ({14x6} x 4 ) x 4 x 4! )
= ( 2,43 x 10^18 ) x ( 120 x 24 x 336 x 4 x 24 ) = ( 2,26 x 10^26 )
Nb = ( 2,26 x 10^26 ) c) Cifrado del “mensaje intermedio”:
Para el cifrado, es necesario definir (o seleccionar) un “alfabeto de sustitución”. Si el alfabeto contiene P caracteres, hay P! (Factorial de P) formas diferentes de reordenar dicho alfabeto. En el ejemplo, se utiliza un alfabeto de 26 caracteres, por lo que habrá 26! (Factorial de 26 = 4,03 x 10^26) formas diferentes de reordenar el alfabeto. Si se decidiera utilizar más de un alfabeto de sustitución, cada nuevo alfabeto aportará otras P! (Factorial de P) opciones, que se multiplican con las anteriores.
En el cifrado, se utiliza también el “nuevo ordenamiento numérico” para lo que hay (MxN)! (Factorial de MxN) formas diferentes de crear un nuevo ordenamiento, por lo que si se decidiera utilizar más de un “conjunto numérico” (en caso de que el “mensaje base” se hubiera
fragmentado en más de un bloque), cada nuevo ordenamiento aportará otras (MxN)! (Factorial de MxN) opciones, que se multiplican con las demás opciones del cifrado. Cabe señalar que si se utiliza el mismo “conjunto numérico” creado en el proceso (b), la cantidad de opciones aportada por éste, ya fue considerada en dicho proceso.
Las operaciones definidas para cifrar el “mensaje intermedio” son: c.0) Definir el “alfabeto de sustitución”: (Nco = 26! opciones) c.l) Escoger la casilla inicial: (Nc1 = 26 opciones).
Para el cifrado del mensaje intermedio, es necesario decidir a partir de qué posición del mensaje se comenzará a efectuar la sustitución de caracteres. En un mensaje de (MxN) caracteres, hay (MxN) formas diferentes de escoger la casilla inicial. En el ejemplo, esto significa 26 opciones diferentes. c.2) Escoger un sentido de recorrido: (NC2 = 2 opciones).
Para el cifrado del mensaje intermedio, también es necesario decidir en qué sentido (horario / anti-horario) se recorrerá el “mensaje intermedio” para efectuar la sustitución de caracteres. Esto aporta con 2 opciones más. c.3) En caso de utilizar un nuevo “conjunto numérico”: (NC3 = 20! opciones)
No aplica para el ejemplo descrito.
Opciones del proceso (c) sin cambio de conjunto numérico:
Nc = Nco X Nc1 X Nc2 = P! X (MxN) x 2
Nc = 26! x ( 5 x 4 ) x 2 = ( 4,03 x 10^26 ) x 20 x 2 = ( 1,61 x 10^28 )
Con todo, las opciones del método serán: P (Ni) = Na x Nb x Nc
P (Ni) = [(MxN)!] x [ M! x N! x ( { P 2 x [ (M + N ) - 2 x ( 2n + 1 ) ] } x 2^( N/2 ) ) x 4 x 4!
]^2 x [P! x (MxN) x 2], para índices de la productoria entre n = 0 y k.
En el ejemplo:
P (Ni) = Na X Nb X Nc = ( 9,28 x 10^7 ) x ( 2,26 x 10^26 ) x ( 1,61 x 10^28 )
= ( 3,38 x 10^62 )
En base al ejemplo descrito y a lo señalado respecto de la “Técnica Anterior”, parece razonable escoger un tamaño de matriz [MxN] de [16x4], de [16x8] o de [16x16]; esto es equivalente a decir que los bloques debieran ser de 64, 128 o 256 caracteres (512, 1024 o 2048 bits). Puesto que la robustez del método así lo permite, bastaría con un solo “ conjunto numérico”, un solo “alfabeto de sustitución” de “P” caracteres (26 o más) y una sola “ronda de encriptado” para bloques de 2048 bits; 2 rondas, para bloques de 1024; y tres rondas, para bloques de 512 bits.
Con alfabetos de 26 caracteres, la cantidad de opciones a explorar (en un ataque de fuerza bruta) sería: a) Para bloques de 512 bits con un “conjunto numérico”, un “alfabeto de sustitución” y tres “rondas de encriptado” (es decir, utilizando tres tríos de claves CK1, CK2 y CK3):
P (Ni) = {[(16x4)!] x [(16! x 4! x ( 36 x 28 ) x (2^2) x 4) x 4!]^2 x [26! x (16x4) x 2]}^3 P (Ni) = {[ 1,26 x 10^89 ] x [1,94 x 10^20 ]^2 x [ 5,16 x 10^28 ]}^3 = ( 1,51 x 10^475 ) b) Para bloques de 1024 bits con un “conjunto numérico”, un “alfabeto de sustitución” y dos “rondas de encriptado” (es decir, utilizando dos tríos de claves CK1, CK2 y CK3):
P (Ni) = {[(16x8)!] x [(16! x 8! x ( 44 x 36 x 28 x 20 ) x (2^4) x 4) x 4!]^2 x [26! x (16x8) x 2]}^2
= {[ 3,85 x 10^215 ] x [ 1,14 x 10^27 ]^2 x [ 1,03 x 10^29 ]}^2 = ( 2,76 x 10^597 ) c) Para bloques de 2048 bits, un “conjunto numérico”, un “alfabeto de sustitución” y una “ronda de cifrado” (es decir, usando un solo trío de claves Ckl, Ck2 y Ck3):
P (Ni) = [(16x16)!] x [(16! x 16! x ( 60 x 52 x 44 x 36 x 28 x 20 x 12 x 4 ) x (2^8) x 4) x 4!]^2 x [26! x (16x16) x 2]
= [ 8,57 x 10^506 ] x [ 1,42 x 10^42 ]^2 x [ 2,06 x 10^29 ]
= ( 3,61 x 10^620 )
Otras formas de aumentar la Robustez del método:
Se logrará aportar un efecto multiplicador sobre la cantidad de opciones generadas por el método (y que sería necesario explorar, en caso de un “ataque de fuerza bruta” -mediante un algoritmo automático), si:
• Se aumenta la cantidad de bloques en los que se fragmente el “mensaje base” (si la cantidad de caracteres del “mensaje base” así lo requiere, al aplicar el método);
• Se aumenta la cantidad de “operaciones” utilizadas en el reordenamiento del mensaje base”;
• Se aumenta la cantidad de “operaciones” utilizadas en el reordenamiento del “ conjunto numérico”;
• Se aumenta la cantidad de veces que se aplica el reordenamiento del “mensaje base”;
• Se aumenta la cantidad de veces que se aplica el reordenamiento del “conjunto numérico”;
• Se aumenta la cantidad de “operaciones de sustitución” aplicadas en un mismo proceso de cifrado;
• Se aumenta la cantidad de “conjuntos numéricos” utilizados en un mismo proceso de cifrado;
• Se aumenta la cantidad de “alfabetos de sustitución” utilizados en un mismo proceso de cifrado;
• Se combina algunas (o todas) las formas relacionadas con el paso de cifrado, en un mismo proceso de cifrado;
• Se aumenta la cantidad de procesos de cifrado (sustitución de caracteres en el “mensaje intermedio”).
Cabe hacer notar que todas las formas antes mencionadas, deben quedar codificadas en las claves CK1, CK2 y CK3, incluyendo el orden en el que se decida aplicar los elementos del método que se agregue.
Estructura y Tamaño de las Claves para la “realización preferente”: a) Para Bloques de 512 bits:
Tamaño CK1 = Tamaño de CK2 (pues ambas claves tienen la misma estructura)
Tamaño CK2 = 4 dígitos (reordenamiento de las filas: números del 1 a 4)
+ 16 Caracteres (reordenamiento de las columnas: letras de la “A” a la “P”)
+ “Sentido del Giro” ( + / - )
+ “Desplazamiento del Giro” ( “G” posiciones tal que: 0 < G < 64 )
+ “Tipo de Reflexión” (V = Vertical; H = Horizontal; I = Diag. Izquierda;
D = Diagonal Derecha )
+ “Código del Conjunto Numérico”
( por ej., con 3 caracteres = 26^3 códigos para conjuntos numéricos diferentes = 17.576 códigos).
= 4 dígitos + 16 caracteres + 1 carácter (signo) + 2 dígitos + 1 carácter + 3 caracteres = 27 caracteres = 216 bits.
Tamaño CK3 = “Posición de Inicio de la Sustitución” ( “n” tal que tal que: 1 < n < 64 )
+ “Sentido de recorrido (A = Ascendente / D = Descendente)”
= 2 dígitos + 1 carácter = 3 caracteres = 24 bits. b) Para Bloques de 1024 bits:
Tamaño CK1 = Tamaño de CK2 (pues ambas claves tienen la misma estructura)
Tamaño CK2 = 8 dígitos (reordenamiento de las filas: números del 1 a 8)
+ 16 Caracteres (reordenamiento de las columnas: letras de la “A” a la “P”)
+ “Sentido del Giro” ( + / - )
+ “Desplazamiento del Giro” ( “G” posiciones tal que: 0 < G < 128 )
+ “Tipo de Reflexión” (V = Vertical; H = Horizontal; I = Diag. Izquierda;
D = Diagonal Derecha )
+ “Código de la Serie Numérica”
( por ej., con 3 caracteres = 26^3 códigos para conjuntos numéricos diferentes = 17.576 códigos).
= 8 dígitos + 16 caracteres + 1 carácter (signo) + 3 dígitos + 1 carácter + 3 caracteres = 32 caracteres = 256 bits.
Tamaño CK3 = “Posición de Inicio de la Sustitución” ( “n” tal que tal que: 1 < n < 128 ) + “Sentido de recorrido (A = Ascendente / D = Descendente)”
= 3 dígitos + 1 carácter = 4 caracteres = 32 bits. c) Para Bloques de 2048 bits:
Tamaño CK1 = Tamaño CK2 = 16 dígitos (nuevas filas)
+ 16 Caracteres (nuevas columnas) + “Sentido del Giro” ( + / - )
+ “Desplazamiento del Giro” ( “G” posiciones tal que: 0 < G < 256 )
+ “Tipo de Reflexión” (V = Vertical; H = Horizontal; I = Diag. Izquierda;
D = Diagonal Derecha ) + “Código del conjunto numérico”
= 16 dígitos + 16 caracteres + 1 carácter (signo) + 3 dígitos + 1 carácter + 3 caracteres = 40 caracteres = 320 bits.
Tamaño CK3 = “Posición de Inicio de la Sustitución” ( “n” tal que tal que: 1 < n < 256 ) + “Sentido de recorrido (A = Ascendente / D = Descendente)”
= 3 dígitos + 1 carácter = 4 caracteres = 32 bits.
Cabe hacer notar que cuando se menciona un “código de conjunto numérico” en las definiciones anteriores, estamos suponiendo que éstos permiten identificar los elementos de un repositorio de “conjuntos numéricos” definido previamente al efecto y conocido por las partes corresponsales.
Del mismo modo, se puede contar con repositorios para los alfabetos de sustitución; para las operaciones de reordenamiento; para las funciones de sustitución; o, incluso, para las claves a utilizar.