El algoritmo de cifrado ligero (también conocido como LEA ) es un cifrado de bloques de 128 bits desarrollado por Corea del Sur en 2013 para proporcionar confidencialidad en entornos de alta velocidad como big data y computación en la nube , así como entornos ligeros como dispositivos IoT y dispositivos móviles. dispositivos . [1] LEA tiene tres longitudes de clave diferentes: 128, 192 y 256 bits. LEA cifra los datos entre 1,5 y 2 veces más rápido que AES , el cifrado de bloques más utilizado en varios entornos de software.
PASTO Función de ronda de cifrado LEA |
|
Deukjo Hong, Jung-Keun Lee, Dong-Chan Kim, Daesung Kwon, Kwon Ho Ryu, Dong-Geon Lee |
2013 |
|
128, 192 o 256 bits |
128 bits |
ARX (adición modular, rotación bit a bit y XOR bit a bit) |
24, 28 o 32 (según el tamaño de la clave) |
|
A partir de 2019, no se conoce ningún ataque exitoso contra LEA de asalto completo. |
LEA es uno de los algoritmos criptográficos aprobados por el Programa de validación de módulos criptográficos de Corea (KCMVP) y es el estándar nacional de la República de Corea (KS X 3246). LEA está incluida en la norma ISO / IEC 29192-2: 2019 (Seguridad de la información - Criptografía ligera - Parte 2: Cifrados en bloque).
El cifrado de bloque LEA que consta de operaciones ARX (adición modular: , Rotación bit a bit: , y XOR bit a bit ) para palabras de 32 bits procesa bloques de datos de 128 bits y tiene tres longitudes de clave diferentes: 128, 192 y 256 bits. LEA con una clave de 128 bits, LEA con una clave de 192 bits y LEA con una clave de 256 bits se denominan "LEA-128", "LEA-192" y "LEA-256", respectivamente. El número de rondas es 24 para LEA-128, 28 para LEA-192 y 32 para LEA-256.
Cifrado
Dejar ser un bloque de 128 bits de texto plano y ser un bloque de texto cifrado de 128 bits, donde y () son bloques de 32 bits. Dejar () ser claves redondas de 192 bits, donde () son bloques de 32 bits. Aquíes el número de rondas del algoritmo LEA. La operación de cifrado se describe a continuación:
- por a
Descifrado
La operación de descifrado es la siguiente:
- por Abajo a
Horario clave
El programa de claves de LEA admite claves de 128, 192 y 256 bits y genera claves redondas de 192 bits () para la parte de procesamiento de datos.
Programa clave para LEA-128
Dejar ser una clave de 128 bits, donde () son bloques de 32 bits. El cronograma clave para LEA-128 toma y cuatro constantes de 32 bits () como entradas y salidas veinticuatro teclas redondas de 192 bits (). La operación de programación clave para LEA-128 es la siguiente:
- por a
Horario clave para LEA-192
Dejar ser una clave de 192 bits, donde () son bloques de 32 bits. El programa clave para LEA-192 toma y seis constantes de 32 bits () como entradas y salidas veintiocho teclas redondas de 192 bits (). La operación de programación clave para LEA-192 es la siguiente:
- por a
Programa clave para LEA-256
Dejar ser una clave de 256 bits, donde () son bloques de 32 bits. El programa clave para LEA-192 toma y ocho constantes de 32 bits () como entradas y salidas treinta y dos teclas redondas de 192 bits (). La operación de programación clave para LEA-256 es la siguiente:
- por a
Valores constantes
Los ocho valores constantes de 32 bits () utilizados en el programa de claves se dan en la siguiente tabla.
Valores constantes utilizados en la programación de claves | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|
| 0xc3efe9db | 0x44626b02 | 0x79e27c8a | 0x78df30ec | 0x715ea49e | 0xc785da0a | 0xe04ef22a | 0xe5c40957 |
---|
A partir de 2019, no se conoce ningún ataque exitoso contra LEA de asalto completo. Como es típico de los cifrados de bloques iterados, se han atacado variantes de ronda reducida. Los mejores ataques publicados sobre LEA en el modelo de ataque estándar (CPA / CCA con clave desconocida) son los ataques boomerang y los ataques lineales diferenciales. El margen de seguridad para la relación de rondas totales es superior al 37% frente a varias técnicas criptoanalíticas existentes para cifrados en bloque.
Seguridad de LEA-128 (24 rondas) Tipo de ataque | Rondas atacadas |
---|
Diferencial [2] | 14 |
Diferencial truncado [2] | 14 |
Lineal [1] | 13 |
Correlación cero [1] | 10 |
Boomerang [1] | 15 |
Diferencial imposible [1] | 12 |
Integral [1] | 9 |
Diferencial lineal [1] | 15 |
Diferencial de clave relacionada [1] | 13 |
Márgenes de seguridad de LEA Cifrados de bloque | Rondas (Atacadas / Total) | Márgenes de seguridad |
---|
LEA-128 | 15/24 | 37,50% |
LEA-192 | 16/28 | 42,85% |
LEA-256 | 18/32 | 43,75% |
LEA tiene muy buen desempeño en un entorno de software de propósito general. En particular, es posible cifrar a una tasa de aproximadamente 1,5 a 2 veces en promedio, en comparación con AES, el cifrado de bloques más utilizado en varios entornos de software. Las tablas siguientes comparan el rendimiento de LEA y AES utilizando FELICS (Evaluación justa de sistemas criptográficos ligeros), [3] un marco de evaluación comparativa para la evaluación de implementaciones de software de primitivas criptográficas ligeras.
Escenario 1 de FELICS - Enc. + Dec. + KeySetup / Cifrado CBC de 128 bytes [4] (Código: bytes, RAM: bytes, Tiempo: ciclos) Plataforma | LEA-128 | LEA-192 | LEA-256 | AES-128 |
---|
AVR | Código | 1,684 | 2.010 | 2,150 | 3,010 |
RAM | 631 | 943 | 1.055 | 408 |
Hora | 61,020 | 80,954 | 92,194 | 58,248 |
MSP | Código | 1,130 | 1,384 | 1,468 | 2.684 |
RAM | 626 | 942 | 1.046 | 408 |
Hora | 47,339 | 56.540 | 64,001 | 86.506 |
BRAZO | Código | 472 | 536 | 674 | 3,050 |
RAM | 684 | 968 | 1.080 | 452 |
Hora | 17.417 | 20,640 | 24,293 | 83,868 |
Escenario 2 de FELICS - Enc. / Cifrado CTR de 128 bits [4] (Código: bytes, RAM: bytes, Tiempo: ciclos) Plataforma | LEA-128 | LEA-192 | LEA-256 | AES-128 |
---|
AVR | Código | 906 | 1.210 | 1,306 | 1.246 |
RAM | 80 | 80 | 80 | 81 |
Hora | 4.023 | 4.630 | 5.214 | 3.408 |
MSP | Código | 722 | 1.014 | 1,110 | 1,170 |
RAM | 78 | 78 | 78 | 80 |
Hora | 2.814 | 3,242 | 3.622 | 4.497 |
BRAZO | Código | 628 | 916 | 1.012 | 1.348 |
RAM | 92 | 100 | 100 | 124 |
Hora | 906 | 1,108 | 1.210 | 4.044 |
Los vectores de prueba para LEA para cada longitud de clave son los siguientes. [5] Todos los valores se expresan en forma hexadecimal.
- LEA-128
- Clave: 0f 1e 2d 3c 4b 5a 69 78 87 96 a5 b4 c3 d2 e1 f0
- Texto sin formato: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
- Texto cifrado: 9f c8 4e 35 28 c6 c6 18 55 32 c7 a7 04 64 8b fd
- LEA-192
- Clave: 0f 1e 2d 3c 4b 5a 69 78 87 96 a5 b4 c3 d2 e1 f0 f0 e1 d2 c3 b4 a5 96 87
- Texto sin formato: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
- Texto cifrado: 6f b9 5e 32 5a ad 1b 87 8c dc f5 35 76 74 c6 f2
- LEA-256
- Clave: 0f 1e 2d 3c 4b 5a 69 78 87 96 a5 b4 c3 d2 e1 f0 f0 e1 d2 c3 b4 a5 96 87 78 69 5a 4b 3c 2d 1e 0f
- Texto sin formato: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
- Texto cifrado: d6 51 af f6 47 b1 89 c1 3a 89 00 ca 27 f9 e1 97
LEA es gratuito para cualquier uso: público o privado, comercial o no comercial. El código fuente para la distribución de LEA implementado en C , Java y Python se puede descargar del sitio web de KISA. [6] Además, LEA está contenido en la biblioteca Crypto ++, una biblioteca gratuita de esquemas criptográficos de clase C ++ . [7]
LEA es uno de los algoritmos criptográficos aprobados por el Programa de validación de módulos criptográficos de Corea (KCMVP). [8]
LEA está incluida en los siguientes estándares.
- KS X 3246, cifrado en bloque de 128 bits LEA (en coreano) [5]
- ISO / IEC 29192-2: 2019, Seguridad de la información - Criptografía ligera - Parte 2: Cifrados en bloque [9]