LSH es una función hash criptográfica diseñada en 2014 por Corea del Sur para garantizar la integridad en entornos de software de propósito general, como ordenadores personales y dispositivos inteligentes . [ 1 ] LSH es uno de los algoritmos criptográficos aprobados por el Programa Coreano de Validación de Módulos Criptográficos (KCMVP). Además, es el estándar nacional de Corea del Sur (KS X 3262).
Especificación
La estructura general de la función hash LSH se muestra en la siguiente figura.

La función hash LSH tiene la estructura Merkle-Damgård de tubería ancha con relleno de ceros. El proceso de hash de mensajes de LSH consta de las siguientes tres etapas.
- Inicialización :
- Relleno con ceros de un mensaje de cadena de bits dado.
- Conversión de la cadena de bits rellena a bloques de mensajes de matriz de 32 palabras.
- Inicialización de una variable de encadenamiento con el vector de inicialización.
- Compresión :
- Actualización de variables encadenadas mediante la iteración de una función de compresión con bloques de mensajes.
- Finalización :
- Generación de unValor hash de -bits de la variable de encadenamiento final.
Las especificaciones de la función hash LSH son las siguientes.
Inicialización
Dejarser un mensaje de cadena de bits dado. El dadose rellena con ceros, es decir, el bit '1' se agrega al final dey los bits '0' se agregan hasta que se alcanza una longitud de bits de un mensaje relleno., dóndeyes el entero más pequeño no menor que.
Dejarser el relleno de uno-cero-cadena de bits de. Entoncesse considera como unmatriz de bytes, dóndea pesar de. Elmatriz de bytesse convierte en unmatriz de palabrascomo sigue.
A partir de la matriz de palabras, definimos elbloques de mensajes de matriz de 32 palabrascomo sigue.
La variable de encadenamiento de matriz de 16 palabrasse inicializa con el vector de inicialización.
El vector de inicializaciónes el siguiente. En las siguientes tablas, todos los valores se expresan en forma hexadecimal.
Compresión
En esta etapa, elbloques de mensajes de matriz de 32 palabras, que se generan a partir de un mensajeEn la etapa de inicialización, se comprimen mediante la iteración de funciones de compresión. La función de compresióntiene dos entradas; laVariable de encadenamiento de 16 palabras -thy el-th bloque de mensaje de 32 palabras. Y devuelve elVariable de encadenamiento de 16 palabras -thAquí y posteriormente,denota el conjunto de todos-matrices de palabras para.
Las siguientes cuatro funciones se utilizan en una función de compresión:
- Función de expansión de mensajes
- Función de adición de mensajes
- Función mixta
- Función de permutación de palabras
La estructura general de la función de compresión se muestra en la siguiente figura.

En una función de compresión, la función de expansión de mensajesgeneraSubmensajes de matriz de 16 palabrasde dado. Dejarser una matriz temporal de 16 palabras establecida en el-ésima variable de encadenamiento. Elfunción de paso -ésimotener dos entradasyactualizaciones, es decir,Todas las funciones escalonadas se ejecutan en orden.Luego uno másoperación porse procede y el-ésima variable de encadenamientoestá configurado paraEl proceso de una función de compresión se describe en detalle a continuación.
Aquí elfunción de paso -ésimoes el siguiente.
La siguiente figura muestra lafunción de paso -ésimode una función de compresión.

Función de expansión de mensajes MsgExp
Dejarser el-th bloque de mensajes de matriz de 32 palabras. La función de expansión de mensajesgeneraSubmensajes de matriz de 16 palabrasde un bloque de mensajesLos dos primeros submensajesyse definen de la siguiente manera.
Los siguientes submensajesse generan de la siguiente manera.
Aquíes la permutación sobredefinido de la siguiente manera.
Función de adición de mensajes MsgAdd
Para dos matrices de 16 palabrasyla función de adición de mensajesse define de la siguiente manera.
Función de mezcla Mezcla
El-th función de mezclaactualiza la matriz de 16 palabrasmezclando cada par de palabras;ypara. Para, la función de mezclaProcede de la siguiente manera.
Aquíes una función de mezcla de dos palabras.yser palabras. La función de mezcla de dos palabrasse define de la siguiente manera.
La función de mezcla de dos palabrasSe muestra en la siguiente figura.

Las cantidades de rotación de bits,,utilizado ense muestran en la siguiente tabla.
Elconstante de matriz de 8 palabras -thutilizado enparase define de la siguiente manera. La constante de matriz inicial de 8 palabrasse define en la siguiente tabla. Para, elconstante -ésimaes generado porpara.
Función de permutación de palabras WordPerm
Dejarsea una matriz de 16 palabras. La función de permutación de palabrasse define de la siguiente manera.
Aquíes la permutación sobredefinido por la siguiente tabla.
Finalización
La función de finalizacióndevolucionesvalor hash de bitsde la variable de encadenamiento final. Cuandoes una variable de 8 palabras yes unVariable de byte, la función de finalizaciónrealiza el siguiente procedimiento.
Aquí,denota, la cadena de subbits de una palabrapara. Ydenota, la cadena de subbits de uncadena de bitspara.
Seguridad
LSH es seguro contra ataques conocidos a funciones hash hasta ahora. LSH es resistente a colisiones paray resistentes a la preimagen y a la segunda preimagen paraen el modelo de cifrado ideal, dondees un número de consultas para la estructura LSH. [ 1 ] LSH-256 es seguro contra todos los ataques de función hash existentes cuando el número de pasos es 13 o más, mientras que LSH-512 es seguro si el número de pasos es 14 o más. Tenga en cuenta que los pasos que funcionan como margen de seguridad son el 50% de la función de compresión. [ 1 ]
Actuación
LSH supera a SHA-2/3 en diversas plataformas de software. La siguiente tabla muestra el rendimiento de velocidad del hash de mensajes de 1 MB con LSH en varias plataformas.
- ↑ Intel Core i7-4770K a 3,5 GHz (Haswell), Ubuntu 12.04 de 64 bits, GCC 4.8.1 con “-m64 -mavx2 -O3”
- ↑ Intel Core i7-2600K a 3,40 GHz (Sandy Bridge), Ubuntu 12.04 de 64 bits, GCC 4.8.1 con “-m64 -msse4 -O3”
- ↑ Intel Core 2 Quad Q9550 a 2,83 GHz (Yorkfield), Windows 7 de 32 bits, Visual Studio 2012
- ↑ AMD FX-8350 a 4 GHz (Piledriver), Ubuntu 12.04 de 64 bits, GCC 4.8.1 con “-m64 -mxop -O3”
- ↑ Samsung Exynos 5250 ARM Cortex-A15 a 1,7 GHz de doble núcleo (Huins ACHRO 5250), Android 4.1.1
- ↑ Qualcomm Snapdragon 800 Krait 400 a 2,26 GHz de cuatro núcleos (LG G2), Android 4.4.2
- ↑ Qualcomm Snapdragon 800 Krait 400 a 2,3 GHz de cuatro núcleos (Samsung Galaxy S4), Android 4.2.2
- ↑ Qualcomm Snapdragon 400 Krait 300 a 1,7 GHz de doble núcleo (Samsung Galaxy S4 mini), Android 4.2.2
La siguiente tabla muestra la comparación en la plataforma basada en Haswell. LSH se mide en una plataforma de cuatro núcleos Intel Core i7-4770k a 3,5 GHz, y los demás se miden en una plataforma de cuatro núcleos Intel Core i5-4570S a 2,9 GHz.
La siguiente tabla se basa en mediciones realizadas en la plataforma de doble núcleo Samsung Exynos 5250 ARM Cortex-A15 a 1,7 GHz.
Vectores de prueba
Los vectores de prueba para LSH para cada longitud de digestión son los siguientes. Todos los valores se expresan en formato hexadecimal.
LSH-256-224("abc") = F7 C5 3B A4 03 4E 70 8E 74 FB A4 2E 55 99 7C A5 12 6B B7 62 36 88 F8 53 42 F7 37 32
LSH-256-256("abc") = 5F BF 36 5D AE A5 44 6A 70 53 C5 2B 57 40 4D 77 A0 7A 5F 48 A1 F7 C1 96 3A 08 98 BA 1B 71 47 41
LSH-512-224("abc") = D1 68 32 34 51 3E C5 69 83 94 57 1E AD 12 8A 8C D5 37 3E 97 66 1B A2 0D CF 89 E4 89
LSH-512-256("abc") = CD 89 23 10 53 26 02 33 2B 61 3F 1E C1 1A 69 62 FC A6 1E A0 9E CF FC D4 BC F7 58 58 D8 02 ED EC
LSH-512-384("abc") = 5F 34 4E FA A0 E4 3C CD 2E 5E 19 4D 60 39 79 4B 4F B4 31 F1 0F B4 B6 5F D4 5E 9D A4 EC DE 0F 27 B6 6E 8D BD FA 47 25 2E 0D 0B 74 1B FD 91 F9 FE
LSH-512-512("abc") = A3 D9 3C FE 60 CC 1A CA DD 3B D4 BE F0 A6 98 53 81 A3 96 C7 D4 9D 9F D1 77 79 56 97 C3 53 52 08 B5 C5 72 24 BE F2 10 84 D4 20 83 E9 5A 4B D8 EB 33 E8 69 81 2B 65 03 1C 42 88 19 A1 E7 CE 59 6D
Implementaciones
LSH es gratuito para cualquier uso, público o privado, comercial o no comercial. El código fuente para la distribución de LSH, implementado en C, Java y Python, se puede descargar desde la página web de activación de uso de criptografía de KISA. [ 2 ]
KCMVP
LSH es uno de los algoritmos criptográficos aprobados por el Programa Coreano de Validación de Módulos Criptográficos (KCMVP). [ 3 ]
Normalización
LSH está incluido en la siguiente norma.
- KS X 3262, Función hash LSH (en coreano) [ 4 ]
Referencias
- 1 2 3 4 5 6 Kim, Dong-Chan; Hong, Deukjo; Lee, Jung-Keun; Kim, Woo-Hwan; Kwon, Daesung (2015). "LSH: Una nueva familia de funciones hash rápidas y seguras" . Seguridad de la información y criptología - ICISC 2014. Notas de clase en ciencias de la computación. Vol. 8949. Springer International Publishing. págs. 286–313 . doi : 10.1007/978-3-319-15943-0_18 . ISBN 978-3-319-15943-0.
- ^ "KISA 암호이용활성화 - 암호알고리즘 소스코드" . semilla.kisa.or.kr .
- ↑ «KISA 암호이용활성화 - 개요» . semilla.kisa.or.kr .
- ↑ "Normas y certificaciones coreanas (en coreano)" .
- funciones hash criptográficas
- Algoritmos criptográficos