MARTE | |
---|---|
Creador | Carolyn Barwick, Don Calderero |
Creado | 1998 _ |
publicado | 1998 _ |
Tamaño de clave | 128-448 bits |
Tamaño de bloque | 128 bits |
Número de rondas | 32 |
Tipo de | Red Feistel |
MARS es un cifrado candidato AES desarrollado por IBM , que creó DES en un momento . IBM dice que el algoritmo MARS se basa en los 25 años de experiencia criptoanalítica de la empresa y, junto con su alta fortaleza criptográfica, el cifrado permite una implementación eficiente incluso dentro de las limitaciones de las tarjetas inteligentes .
Don Coppersmith , uno de los autores del cifrado Lucifer ( DES ), conocido por una serie de artículos sobre criptología, participó en el desarrollo del cifrado : mejorando la estructura de las cajas S frente al criptoanálisis diferencial , el método rápido de multiplicación de matrices ( Algoritmo de Coppersmith-Winograd ), criptoanálisis RSA . Además de él, Carolyn Barwick , Edward D'Evignon , Rosario Genaro , Shai Halevi , Charanjit Jutla , Steven M. Matyas Jr. participaron en el desarrollo del algoritmo . , Luke O'Connor , Mohamed Perevyan , David Safford , Nevenko Zunich .
De acuerdo con las reglas de la competencia AES , los participantes podrían realizar cambios menores en sus algoritmos. Aprovechando esta regla, los autores de MARSa cambiaron el procedimiento de expansión de claves, lo que permitió reducir los requerimientos de no volátiles y RAM . A continuación se proporcionará una versión modificada del algoritmo.
Según los resultados de la competencia AES , MARS llegó a la final pero perdió ante Rijndael . Después del anuncio de los resultados (19 de mayo de 2000), el equipo de desarrollo formó su propia opinión sobre el concurso AES [1] , donde comentaron sobre las afirmaciones de su creación.
MARS ahora se distribuye en todo el mundo bajo una licencia libre de regalías .
MARS es un cifrado simétrico de bloques con una clave secreta. El tamaño del bloque para el cifrado es de 128 bits, el tamaño de la clave puede variar de 128 a 448 bits inclusive (múltiplos de 32 bits). Los creadores buscaron combinar la velocidad de codificación y la fuerza del cifrado en su algoritmo. El resultado es uno de los algoritmos más potentes de la competencia AES .
El algoritmo es único en el sentido de que utilizó casi todas las tecnologías existentes utilizadas en criptoalgoritmos, a saber:
El uso de doble barajado presenta una dificultad para el criptoanálisis , que algunos atribuyen a las desventajas del algoritmo. Al mismo tiempo, por el momento no existen ataques efectivos al algoritmo, aunque algunas claves pueden generar subclaves débiles.
Los autores del cifrado partieron de las siguientes suposiciones:
El cifrado MARS utilizó los siguientes métodos de cifrado:
La estructura del algoritmo MARS se puede describir de la siguiente manera:
En la primera fase, cada palabra de datos se superpone con una palabra clave y luego hay ocho rondas de mezcla según la red de Feistel del tercer tipo, junto con una mezcla adicional. En cada ronda, usamos una palabra de datos (llamada palabra fuente) para modificar otras tres palabras (llamadas palabras objetivo). Tratamos los cuatro bytes de la palabra original como índices en dos S-boxes, S 0 y S 1 , cada uno de los cuales consta de 256 palabras de 32 bits, y luego XOR o agregamos los datos de S-box correspondientes en otras tres palabras.
Si los cuatro bytes de la palabra original son b 0 , b 1 , b 2 , b 3 (donde b 0 es el primer byte y b 3 es el byte alto), entonces usamos b 0 , b 2 como índices en el bloque S 0 y bytes b 1 , b 3 , como índices en el S-box S 1 . Primero XOR S 0 a la primera palabra objetivo y luego agregue S 1 a la misma palabra. También agregamos S 0 a la segunda palabra objetivo y bloqueamos XOR-S 1 a la tercera palabra objetivo. Finalmente, rotamos la palabra original 24 bits a la derecha.
En la siguiente ronda, rotamos las cuatro palabras que tenemos: la primera palabra objetivo actual se convierte en la siguiente palabra fuente, la segunda palabra objetivo actual se convierte en la nueva primera palabra objetivo, la tercera palabra objetivo se convierte en la segunda palabra objetivo siguiente y la la palabra de origen actual se convierte en la tercera palabra de destino.
Además, después de cada una de las cuatro rondas, agregamos una de las palabras objetivo a la palabra original. Específicamente, después de las rondas primera y quinta, agregamos la tercera palabra objetivo nuevamente a la palabra original, y después de las rondas segunda y sexta, agregamos la primera palabra objetivo nuevamente a la palabra original. El motivo de estas operaciones de mezcla adicionales es eliminar algunos criptoataques diferenciales simples en la fase de mezcla para romper la simetría en la fase de mezcla y obtener un flujo rápido.
Pseudocódigo 1. // Primera superposición de una clave en los datos 2. 3. 4. // Luego 8 rondas de mezcla directa 5. // usa D[0] para modificar D[1]; D[2]; D[3] 6. // accede a 4 cajas S 7.8.9.10 ._ _ _ 11. // y gira la palabra original a la derecha 12 13. // también hacer operaciones de mezcla adicionales 14. 15. // añade D[3] a la palabra original 16. 17. // añade D[1] a la palabra original 18. // gira la matriz D[ ] 19.20 .El núcleo criptográfico de MARS es una red Feistel de tipo 3 que contiene 16 rondas. En cada ronda, usamos la función clave E, que es una combinación de multiplicaciones, rotaciones y llamadas de S-box. La función toma como entrada una palabra de datos, y devuelve tres palabras, con lo que posteriormente se realizará la operación de suma o XOR a otras tres palabras de datos. Además, la palabra fuente se gira 13 bits a la izquierda.
Para proporcionar una resistencia seria a los criptoataques, los tres valores de salida de la función E (O 1 , O 2 , O 3 ) se utilizan en las primeras ocho rondas y en las últimas ocho rondas en diferentes órdenes. En las primeras ocho rondas, agregamos O 1 y O 2 a la primera y segunda palabra objetivo, respectivamente, y XOR O 3 a la tercera palabra objetivo. Para las últimas ocho rondas, agregamos O 1 y O 2 a la tercera y segunda palabra objetivo, respectivamente, y XOR O 3 a la primera palabra objetivo.
Pseudocódigo 1. // Haz 16 rondas de encriptación usando la clave 2. 3. 4. 5. 6. // primeras 8 rondas de conversión directa 7. 8. 9. // luego 8 rondas de transformación inversa 10. 11. 12. 13. // gira la matriz D[ ] 14. 15. E-funciónLa función E toma una palabra de datos como entrada y usa dos palabras clave más, produciendo tres palabras como salida. En esta función, usamos tres variables temporales, denominadas L, M y R (para izquierda, centro y derecha).
Inicialmente, establecemos R en el valor de la palabra original desplazada 13 bits a la izquierda y establecemos M en la suma de las palabras originales y la primera palabra clave. Luego usamos los primeros nueve bits de M como índice de una de las 512 cajas S (que se obtiene combinando S 0 y S 1 mediante mezcla de fases) y almacenamos en L el valor de la caja S correspondiente.
Luego multiplicamos la segunda palabra clave por R, almacenando el valor en R. Luego rotamos R 5 posiciones a la izquierda (de modo que los 5 bits altos se conviertan en los 5 bits bajos de R después de la rotación). Luego usamos XOR R en L, y también observamos los cinco bits inferiores de R para determinar la cantidad de cambio (de 0 a 31), y giramos M hacia la izquierda en esa cantidad. Luego, rotamos R otras 5 posiciones hacia la izquierda y XOR L en L. Finalmente, nuevamente observamos los 5 bits menos significativos de R como la cantidad de rotación y rotamos L esa cantidad hacia la izquierda. Así, el resultado de la función E son 3 palabras (en orden): L, M, R.
Pseudocódigo 1. // usa 3 variables temporales L; METRO; R 2. //añadir la primera palabra clave 3. // multiplicar por la segunda palabra clave, que debe ser par 4. 5. // tomar S-caja 6. 7. // estos bits describen la cantidad de rotación posterior 8. // primera rotación por variable 9. 10. 11. 12. // estos bits describen la cantidad de rotación posterior 13. // segunda rotación variable catorce.La reproducción aleatoria hacia atrás es casi lo mismo que la reproducción aleatoria hacia adelante, excepto por el hecho de que los datos se procesan en orden inverso. Es decir, si combinamos la mezcla directa e inversa para que sus salidas y entradas se conecten en orden inverso (D[0] adelante y D[3] atrás, D[1] adelante y D[2] atrás), entonces no vería el resultado de la mezcla. Al igual que en la mezcla directa, aquí también usamos una palabra de origen y tres palabras de destino. Considere los primeros cuatro bytes de la palabra original: b 0 , b 1 , b 2 , b 3 . Usaremos b 0 , b 2 como índice de la caja S - S 1 y b 1 b 3 para S 0 . Hagamos XOR S 1 [b 0 ] en la primera palabra objetivo, restemos S 0 [b 3 ] de la segunda palabra, restemos S 1 [b 2 ] de la tercera palabra objetivo y luego XOR S 0 [b 1 ] también para la tercera palabra objetivo. Finalmente, rotamos la palabra original 24 lugares a la izquierda. Para la siguiente ronda, rotamos las palabras disponibles para que la primera palabra objetivo actual se convierta en la siguiente palabra fuente, la segunda palabra objetivo actual se convierta en la primera palabra objetivo, la tercera palabra objetivo actual se convierta en la segunda palabra objetivo y la palabra fuente actual se convierte en la tercera palabra objetivo. Además, antes de una de las cuatro rondas "especiales", restamos una de las palabras objetivo de la palabra fuente: antes de la cuarta y octava ronda, restamos la primera palabra objetivo; antes de la tercera y séptima ronda, restamos la tercera palabra objetivo de la palabra fuente.
Pseudocódigo 1. // Haz 8 rondas de retromezclado 2. 3. // operaciones de mezcla adicionales 4. 5. //restar D[3] de la palabra original 6. 7. // restamos D[1] de la palabra original 8. // se refieren a los cuatro elementos de S-boxes 9. 10. 11. 12. 13. // y gira la palabra original a la izquierda catorce. 15. // gira la matriz D[] 16. 17. 18. // Resta la palabra clave 19.20 .El proceso de decodificación es el inverso del proceso de codificación. El código de descifrado es similar (pero no idéntico) al código de cifrado.
Mezcla directa 1. // Superposición de clave inicial 2. 3. 4. // Luego haz 8 rondas de mezcla directa 5. 6. // gira la matriz D[] 7. 8. // y gira la palabra original a la derecha 9. 10. // accede a 4 elementos de S-boxes 11. 12. 13. 14. 15. // mezcla adicional 16. 17. // añade D[3] a la palabra original 18. 29. // añade D[1] a la palabra original veinte. Núcleo criptográfico 1. // Ejecuta 16 rondas usando la tecla de superposición 2. 3. // gira la matriz D[] 4. 5. 6. 7. 8. // últimas 8 rondas en orden directo 9. 10. 11. // primeras 8 rondas en orden inverso 12. 13. 14. 15.
Al crear un S-box S, sus elementos fueron generados por un generador pseudoaleatorio, después de lo cual se probaron varias propiedades lineales y diferenciales. Se generaron S-boxes pseudoaleatorios con los siguientes parámetros:
(dónde está la j-ésima palabra en la salida SHA-1 ) Aquí se considera que i es un entero sin signo de 32 bits, y c1, c2, c3 son algunas constantes. En la implementación de IBM: c1 = 0xb7e15162; c2 = 0x243f6a88 (que son la notación binaria de la parte fraccionaria de y respectivamente). c3 se cambió hasta que se encontraron cajas S con propiedades adecuadas. SHA-1 funciona en flujos de datos y usa little endian.
Propiedades de S-boxPropiedades diferenciales .
XOR | Sustracción |
---|---|
Propiedades lineales
el procedimiento de expansión de claves expande la matriz dada de claves k[], que consta de n palabras de 32 bits (donde n es un número entero de 4 a 14) en una matriz K[] de 40 elementos. La clave original no tiene que seguir ninguna estructura. Además, el procedimiento de expansión de clave garantiza las siguientes propiedades de la palabra clave utilizada en la multiplicación en el núcleo criptográfico del algoritmo:
Describamos el algoritmo de expansión clave.
El cifrado era candidato a AES , luego de algunos cambios menores durante la primera ronda de la competencia, relacionados con un cambio en el procedimiento de expansión clave, MARS pasó con éxito a la final.
En la final de la competencia, MARS tuvo una serie de deficiencias:
A pesar de todas estas deficiencias, la comisión de expertos destacó una de las principales ventajas de este algoritmo: su simetría. Según las deficiencias identificadas, MARS, como se esperaba, no se convirtió en el ganador de AES.
Después del anuncio de los resultados de la competencia AES, el equipo de MARS publicó su revisión de toda la competencia. Cuestionó los criterios de evaluación de la competencia. Creían que la principal característica del cifrado debía ser precisamente la fiabilidad y su resistencia (por ejemplo, a los ataques de fuerza bruta) y respondían a todas las afirmaciones del jurado sobre su algoritmo.
1. MARS no es adecuado para la implementación de hardware Entre las quejas sobre el cifrado se encuentran su difícil implementación de hardware, lo que podría generar la carga de Internet, así como la introducción de esquemas de gran tamaño.
Los desarrolladores afirman que su implementación es capaz de operar a una velocidad de 1,28 Gbps, lo cual es aceptable para Internet, y el costo de sus chips puede ser alto ($13 por un chip de 12 Gbps o $1 por uno de 1 Gbps), pero en su el precio caerá significativamente en el futuro.2. MARS no es adecuado para la implementación en dispositivos con poca memoria Para la implementación en tarjetas SMART, los algoritmos tienen solo 128 bytes de memoria. Para el procedimiento de expansión de claves, MARS requiere 512 bytes.
Los desarrolladores creen que no hay razón para implementar AES en un recurso de memoria baja tan vulnerable como las tarjetas inteligentes, ya que todos estos recursos se pueden convertir fácil y rápidamente en sistemas de clave pública.3. MARS no es adecuado para la implementación en FPGA MARS no es adecuado para la implementación en plataformas donde no se permite la rotación (dependiendo de factores externos).
Los desarrolladores señalan que este problema no es fatal, pero lleva un poco de tiempo adaptar el algoritmo a esta plataforma.4. La expansión de la llave MARS es una operación muy pesada
Los desarrolladores afirman que esta es una declaración ridícula. Afirman tener la proporción "ideal" entre memoria adicional por clave y rendimiento (25 bytes por clave)En conclusión, los desarrolladores dan su análisis de los algoritmos de los participantes de AES, según los resultados de los cuales MARS, junto con Serpent , fue el mejor candidato para el título de AES. [una]
Actualmente no hay ataques efectivos a este algoritmo. Aunque tiene varias debilidades [1] :
Criptosistemas simétricos | |
---|---|
Cifrados de flujo | |
Red Feistel | |
red SP | |
Otro |