Криптографическая хеш-функция
LSH это криптографическая хеш-функция разработан в 2014 году Южная Корея для обеспечения целостности программных сред общего назначения, таких как ПК и умные устройства.[1] LSH - один из криптографических алгоритмов, одобренных Корейской программой проверки криптографических модулей (KCMVP), и национальный стандарт Южной Кореи (KS X 3262).
Технические характеристики
Общая структура хэш-функции LSH показана на следующем рисунке.
Хеш-функция LSH имеет широкую структуру Меркла-Дамгарда с заполнением одним нулем. Процесс хеширования сообщений LSH состоит из следующих трех этапов.
- Инициализация:
- Заполнение заданной битовой строкой одним нулем.
- Преобразование в блоки сообщения с массивом из 32 слов из сообщения с дополненной битовой строкой.
- Инициализация цепочки переменной вектором инициализации.
- Сжатие:
- Обновление переменных цепочки путем повторения функции сжатия с блоками сообщений.
- Доработка:
- Генерация -битовое хеш-значение из последней переменной цепочки.
Технические характеристики хэш-функции LSH следующие.
Характеристики хэш-функции LSHАлгоритм | Размер дайджеста в битах () | Количество ступенчатых функций () | Цепочка переменного размера в битах | Размер блока сообщения в битах | Размер слова в битах () |
---|
ЛШ-256-224 | 224 | 26 | 512 | 1024 | 32 |
ЛШ-256-256 | 256 |
ЛШ-512-224 | 224 | 28 | 1024 | 2048 | 64 |
ЛШ-512-256 | 256 |
ЛШ-512-384 | 384 |
ЛШ-512-512 | 512 |
Инициализация
Позволять быть заданной строкой битов сообщения. дополняется нулями, т. е. бит «1» добавляется в конец , и бит «0» добавляется до тех пор, пока длина дополненного сообщения в битах не станет , куда и это наименьшее целое число не менее .
Позволять быть дополненным одним нулем -битовая строка .Потом рассматривается как -байтный массив , куда для всех . -байтный массив превращается в -word массив следующее.
Из массива слов , мы определяем Блоки сообщений массива из 32 слов следующее.
Переменная цепочки массива из 16 слов инициализируется вектором инициализации .
Вектор инициализации выглядит следующим образом. В следующих таблицах все значения выражены в шестнадцатеричной форме.
Вектор инициализации LSH-256-224 | | | | | | | |
---|
068608D3 | 62D8F7A7 | D76652AB | 4C600A43 | BDC40AA8 | 1ECA0B68 | DA1A89BE | 3147D354 |
| | | | | | | |
---|
707EB4F9 | F65B3862 | 6B0B2ABE | 56B8EC0A | CF237286 | EE0D1727 | 33636595 | 8BB8D05F |
Вектор инициализации LSH-256-256 | | | | | | | |
---|
46A10F1F | FDDCE486 | B41443A8 | 198E6B9D | 3304388D | B0F5A3C7 | B36061C4 | 7ADBD553 |
| | | | | | | |
---|
105D5378 | 2F74DE54 | 5C2F2D95 | F2553FBE | 8051357A | 138668C8 | 47AA4484 | E01AFB41 |
Вектор инициализации LSH-512-224 | | | |
---|
0C401E9FE8813A55 | 4A5F446268FD3D35 | FF13E452334F612A | F8227661037E354A |
| | | |
---|
A5F223723C9CA29D | 95D965A11AED3979 | 01E23835B9AB02CC | 52D49CBAD5B30616 |
| | | |
---|
9E5C2027773F4ED3 | 66A5C8801925B701 | 22BBC85B4C6779D9 | C13171A42C559C23 |
| | | |
---|
31E2B67D25BE3813 | D522C4DEED8E4D83 | A79F5509B43FBAFE | E00D2CD88B4B6C6A |
Вектор инициализации LSH-512-256 | | | |
---|
6DC57C33DF989423 | D8EA7F6E8342C199 | 76DF8356F8603AC4 | 40F1B44DE838223A |
| | | |
---|
39FFE7CFC31484CD | 39C4326CC5281548 | 8A2FF85A346045D8 | FF202AA46DBDD61E |
| | | |
---|
CF785B3CD5FCDB8B | 1F0323B64A8150BF | FF75D972F29EA355 | 2E567F30BF1CA9E1 |
| | | |
---|
B596875BF8FF6DBA | FCCA39B089EF4615 | ECFF4017D020B4B6 | 7E77384C772ED802 |
Вектор инициализации LSH-512-384 | | | |
---|
53156A66292808F6 | B2C4F362B204C2BC | B84B7213BFA05C4E | 976CEB7C1B299F73 |
| | | |
---|
DF0CC63C0570AE97 | DA4441BAA486CE3F | 6559F5D9B5F2ACC2 | 22DACF19B4B52A16 |
| | | |
---|
BBCDACEFDE80953A | C9891A2879725B3E | 7C9FE6330237E440 | A30BA550553F7431 |
| | | |
---|
BB08043FB34E3E30 | A0DEC48D54618EAD | 150317267464BC57 | 32D1501FDE63DC93 |
Вектор инициализации LSH-512-512 | | | |
---|
ADD50F3C7F07094E | E3F3CEE8F9418A4F | B527ECDE5B3D0AE9 | 2EF6DEC68076F501 |
| | | |
---|
8CB994CAE5ACA216 | FBB9EAE4BBA48CC7 | 650A526174725FEA | 1F9A61A73F8D8085 |
| | | |
---|
B6607378173B539B | 1BC99853B0C0B9ED | DF727FC19B182D47 | DBEF360CF893A457 |
| | | |
---|
4981F5E570147E80 | D00C4490CA7D3E30 | 5D73940C0E4AE1EC | 894085E2EDB2D819 |
Сжатие
На этом этапе Блоки сообщений массива из 32 слов , которые генерируются из сообщения на этапе инициализации сжимаются путем итерации функций сжатия. имеет два входа; в -я переменная цепочки из 16 слов и -й блок сообщения из 32 слов .И он возвращает -я переменная цепочки из 16 слов .Здесь и далее обозначает множество всех -слова для .
В функции сжатия используются следующие четыре функции:
- Функция расширения сообщения
- Функция добавления сообщений
- Функция смешивания
- Функция перестановки слов
Общая структура функции сжатия показана на следующем рисунке.
В функции сжатия функция расширения сообщения генерирует Под-сообщения массива из 16 слов из данного .Позволять быть временным массивом из 16 слов, установленным в -я переменная цепочки . -й шаг функции имея два входа и обновления , т.е. .Все пошаговые функции выполняются по порядку .Затем еще один операция продолжается, и -я переменная цепочки установлен на Подробно процесс функции сжатия выглядит следующим образом.
Здесь -й шаг функции как следует.
На следующем рисунке показан -й шаг функции функции сжатия.
В
-й шаг функции
Функция расширения сообщения MsgExp
Позволять быть -й блок сообщения массива из 32 слов. функция раскрытия сообщения генерирует Под-сообщения массива из 16 слов из блока сообщений .Первые два дополнительных сообщения и определяются следующим образом.
Следующие под-сообщения генерируются следующим образом.
-
Здесь это перестановка над определяется следующим образом.
Перестановка | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|
| 3 | 2 | 0 | 1 | 7 | 4 | 5 | 6 | 11 | 10 | 8 | 9 | 15 | 12 | 13 | 14 |
---|
Функция добавления сообщений MsgAdd
Для двух массивов по 16 слов и , функция добавления сообщения определяется следующим образом.
Функция смешивания Mix
В -я функция смешивания обновляет массив из 16 слов смешивая каждую пару из двух слов; и за .За , функция смешивания происходит следующим образом.
Здесь - функция смешивания двух слов. и быть словами. функция смешивания двух слов определяется следующим образом.
Функция смешивания двух слов показано на следующем рисунке.
Функция смешивания двух слов
Величина вращения долота , , используется в показаны в следующей таблице.
Величины вращения бит , , и | | | | | | | | | | | |
---|
32 | четное | 29 | 1 | 0 | 8 | 16 | 24 | 24 | 16 | 8 | 0 |
странный | 5 | 17 |
64 | четное | 23 | 59 | 0 | 16 | 32 | 48 | 8 | 24 | 40 | 56 |
странный | 7 | 3 |
В -я константа массива из 8 слов используется в за определяется следующим образом: исходная константа массива из 8 слов определяется в следующей таблице. , то -я константа генерируется за .
Начальная константа массива из 8 слов | | |
---|
| 917caf90 | 97884283c938982a |
---|
| 6c1b10a2 | ba1fca93533e2355 |
---|
| 6f352943 | c519a2e87aeb1c03 |
---|
| cf778243 | 9a0fc95462af17b1 |
---|
| 2ceb7472 | fc3dda8ab019a82b |
---|
| 29e96ff2 | 02825d079a895407 |
---|
| 8a9ba428 | 79f2d0a7ee06a6f7 |
---|
| 2eeb2642 | d76d15eed9fdf5fe |
---|
Функция перестановки слов WordPerm
Позволять быть массивом из 16 слов. функция перестановки слов определяется следующим образом.
Здесь это перестановка над определяется следующей таблицей.
Перестановка | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|
| 6 | 4 | 5 | 7 | 12 | 15 | 14 | 13 | 2 | 0 | 1 | 3 | 8 | 11 | 10 | 9 |
---|
Доработка
Функция финализации возвращается -битовое хеш-значение из последней переменной цепочки .Когда переменная из 8 слов и это -байтовая переменная, функция финализации выполняет следующую процедуру.
-
-
Здесь, обозначает , суббитовая строка слова за .И обозначает , суббитовая строка -битовая строка за .
Безопасность
LSH защищен от известных атак на хэш-функции до сих пор. LSH устойчив к коллизиям для и устойчивая к прообразу и устойчивая ко второму прообразу для в идеальной модели шифра, где - количество запросов к структуре LSH.[1]LSH-256 защищен от всех существующих атак на хэш-функции при количестве шагов 13 или более, в то время как LSH-512 защищен, если количество шагов равно 14 или более. Обратите внимание, что шаги, которые работают как запас прочности, составляют 50% функции сжатия.[1]
Спектакль
LSH превосходит SHA-2/3 на различных программных платформах. В следующей таблице показана скорость хеширования LSH-сообщений размером 1 МБ на нескольких платформах.
Скорость хеширования LSH-сообщений 1 МБ (циклов / байт)[1]Платформа | P1[а] | P2[b] | P3[c] | P4[d] | P5[e] | P6[f] | P7[грамм] | P8[час] |
---|
ЛШ-256- | 3.60 | 3.86 | 5.26 | 3.89 | 11.17 | 15.03 | 15.28 | 14.84 |
ЛШ-512- | 2.39 | 5.04 | 7.76 | 5.52 | 8.94 | 18.76 | 19.00 | 18.10 |
- ^ Intel Core i7-4770K @ 3,5 ГГц (Haswell), Ubuntu 12.04 64-бит, GCC 4.8.1 с «-m64 -mavx2 -O3»
- ^ Intel Core i7-2600K @ 3,40 ГГц (Sandy Bridge), Ubuntu 12.04 64-бит, GCC 4.8.1 с «-m64 -msse4 -O3»
- ^ Intel Core 2 Quad Q9550 @ 2,83 ГГц (Yorkfield), 32-разрядная версия Windows 7, Visual studio 2012
- ^ AMD FX-8350 @ 4 ГГц (Piledriver), Ubuntu 12.04 64-бит, GCC 4.8.1 с «-m64 -mxop -O3»
- ^ Samsung Exynos 5250 ARM Cortex-A15 @ 1,7 ГГц, двухъядерный (Huins ACHRO 5250), Android 4.1.1
- ^ Qualcomm Snapdragon 800 Krait 400 @ 2,26 ГГц, четырехъядерный (LG G2), Android 4.4.2
- ^ Qualcomm Snapdragon 800 Krait 400 @ 2,3 ГГц, четырехъядерный (Samsung Galaxy S4), Android 4.2.2
- ^ Qualcomm Snapdragon 400 Krait 300, двухъядерный процессор 1,7 ГГц (Samsung Galaxy S4 mini), Android 4.2.2
Следующая таблица представляет собой сравнение на платформе на базе Haswell, LSH измеряется на четырехъядерной платформе Intel Core i7-4770k @ 3,5 ГГц, а другие измеряются на платформе Intel Core i5-4570S @ 2,9 ГГц.
Тест скорости финалистов LSH, SHA-2 и SHA-3 на платформе на базе процессора Haswell (циклов / байт)[1]Алгоритм | Размер сообщения в байтах |
---|
длинный | 4,096 | 1,536 | 576 | 64 | 8 |
---|
ЛШ-256-256 | 3.60 | 3.71 | 3.90 | 4.08 | 8.19 | 65.37 |
Скейн-512-256 | 5.01 | 5.58 | 5.86 | 6.49 | 13.12 | 104.50 |
Блейк-256 | 6.61 | 7.63 | 7.87 | 9.05 | 16.58 | 72.50 |
Grøstl-256 | 9.48 | 10.68 | 12.18 | 13.71 | 37.94 | 227.50 |
Кечак-256 | 10.56 | 10.52 | 9.90 | 11.99 | 23.38 | 187.50 |
SHA-256 | 10.82 | 11.91 | 12.26 | 13.51 | 24.88 | 106.62 |
JH-256 | 14.70 | 15.50 | 15.94 | 17.06 | 31.94 | 257.00 |
ЛШ-512-512 | 2.39 | 2.54 | 2.79 | 3.31 | 10.81 | 85.62 |
Скейн-512-512 | 4.67 | 5.51 | 5.80 | 6.44 | 13.59 | 108.25 |
Блейк-512 | 4.96 | 6.17 | 6.82 | 7.38 | 14.81 | 116.50 |
SHA-512 | 7.65 | 8.24 | 8.69 | 9.03 | 17.22 | 138.25 |
Grøstl-512 | 12.78 | 15.44 | 17.30 | 17.99 | 51.72 | 417.38 |
JH-512 | 14.25 | 15.66 | 16.14 | 17.34 | 32.69 | 261.00 |
Кечак-512 | 16.36 | 17.86 | 18.46 | 20.35 | 21.56 | 171.88 |
Следующая таблица измерена на двухъядерной платформе Samsung Exynos 5250 ARM Cortex-A15 @ 1,7 ГГц.
Тест скорости финалистов LSH, SHA-2 и SHA-3 на платформе на базе процессора Exynos 5250 ARM Cortex-A15 (циклов / байт)[1]Алгоритм | Размер сообщения в байтах |
---|
длинный | 4,096 | 1,536 | 576 | 64 | 8 |
---|
ЛШ-256-256 | 11.17 | 11.53 | 12.16 | 12.63 | 22.42 | 192.68 |
Скейн-512-256 | 15.64 | 16.72 | 18.33 | 22.68 | 75.75 | 609.25 |
Блейк-256 | 17.94 | 19.11 | 20.88 | 25.44 | 83.94 | 542.38 |
SHA-256 | 19.91 | 21.14 | 23.03 | 28.13 | 90.89 | 578.50 |
JH-256 | 34.66 | 36.06 | 38.10 | 43.51 | 113.92 | 924.12 |
Кечак-256 | 36.03 | 38.01 | 40.54 | 48.13 | 125.00 | 1000.62 |
Grøstl-256 | 40.70 | 42.76 | 46.03 | 54.94 | 167.52 | 1020.62 |
ЛШ-512-512 | 8.94 | 9.56 | 10.55 | 12.28 | 38.82 | 307.98 |
Блейк-512 | 13.46 | 14.82 | 16.88 | 20.98 | 77.53 | 623.62 |
Скейн-512-512 | 15.61 | 16.73 | 18.35 | 22.56 | 75.59 | 612.88 |
JH-512 | 34.88 | 36.26 | 38.36 | 44.01 | 116.41 | 939.38 |
SHA-512 | 44.13 | 46.41 | 49.97 | 54.55 | 135.59 | 1088.38 |
Кечак-512 | 63.31 | 64.59 | 67.85 | 77.21 | 121.28 | 968.00 |
Grøstl-512 | 131.35 | 138.49 | 150.15 | 166.54 | 446.53 | 3518.00 |
Тестовые векторы
Тестовые векторы для LSH для каждой длины дайджеста следующие. Все значения выражены в шестнадцатеричной форме.
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 DC 1A AC 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
Реализации
LSH является бесплатным для любого публичного или частного, коммерческого или некоммерческого использования. Исходный код для распространения LSH, реализованный на языках C, Java и Python, можно загрузить с веб-страницы активации криптографии KISA.[2]
КЦМВП
LSH - один из криптографических алгоритмов, одобренных Корейской программой проверки криптографических модулей (KCMVP).[3]
Стандартизация
LSH включен в следующий стандарт.
- KS X 3262, Хеш-функция LSH (на корейском языке)[4]
Рекомендации