LSH - это криптографическая хэш-функция, разработанная в 2014 году в Южной Корее для обеспечения целостности программных сред общего назначения, таких как ПК и интеллектуальные устройства . [1] LSH - это один из криптографических алгоритмов, утвержденных Корейской программой проверки криптографических модулей (KCMVP). И это национальный стандарт Южной Кореи (KS X 3262).
Позвольте быть заданной битовой строкой сообщения. Данные дополняются нулями, т. Е. Бит «1» добавляется в конец , а биты «0» добавляются до тех пор, пока длина дополненного сообщения в битах не будет , где и является наименьшим целым числом не меньше .
Позвольте быть битовой строкой с одним нулями . Тогда рассматривается как -байтовый массив , где для всех . В -байт массив превращается в -Word массив следующим образом .
Из массива слов мы определяем блоки сообщений массива из 32 слов следующим образом.
Переменная цепочки массива из 16 слов инициализируется вектором инициализации .
Вектор инициализации выглядит следующим образом. В следующих таблицах все значения выражены в шестнадцатеричной форме.
На этом этапе блоки сообщений массива из 32 слов , которые генерируются из сообщения на этапе инициализации, сжимаются путем повторения функций сжатия. Функция сжатия имеет два входа; -й 16 слов переменной цепочки и -й блок сообщений 32 слов . И он возвращает -ю цепочку из 16 слов . Здесь и далее, обозначает набор массивов всех слов для .
В функции сжатия используются следующие четыре функции:
Функция расширения сообщения
Функция добавления сообщений
Функция смешивания
Функция перестановки слов
Общая структура функции сжатия показана на следующем рисунке.
Функция сжатия LSH
В функции сжатия функция расширения сообщения генерирует вложенные сообщения массива из 16 слов из данного . Пусть будет временным массивом из 16 слов, установленным для -й переменной цепочки . -Й функция шага , имеющая два входа и обновление , то есть . Все пошаговые функции выполняются по порядку . Затем выполняется еще одна операция по , и -я переменная цепочки устанавливается в . Подробно процесс функции сжатия выглядит следующим образом.
функция Функция сжатия
ввод: -й переменной цепочки и блок -м сообщение
Выход: -й переменной цепочки
процедура
для , чтобы сделать
конец для
возвращаться
Здесь функция -го шага выглядит следующим образом.
На следующем рисунке показана функция -го шага функции сжатия.
Позвольте быть -м блоком сообщения массива из 32 слов. Функция расширения сообщения генерирует вложенные сообщения массива из 16 слов из блока сообщения . Первые два вложенных сообщения и определяются следующим образом.
Следующие суб-сообщения генерируются следующим образом.
Функция -й смеси обновляет массив 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 слов определена в следующей таблице. For , -я константа создается for .
Функция финализации возвращает -битное хеш-значение из последней переменной цепочки . Когда это переменная из 8 слов и переменная размером в байты, функция завершения выполняет следующую процедуру.
Здесь обозначает строку суббитов слова для . И обозначает , суб-битовая строка из битовых строк для .
LSH до сих пор защищен от известных атак на хэш-функции. LSH устойчив к коллизиям, устойчив к прообразу и устойчив к второму прообразу для идеальной модели шифра, где есть ряд запросов для структуры LSH. [1]
LSH-256 защищен от всех существующих атак хеш-функции, когда количество шагов равно 13 или больше, тогда как LSH-512 защищен, если количество шагов равно 14 или больше. Обратите внимание, что шаги, которые работают как запас прочности, составляют 50% от функции сжатия. [1]
LSH превосходит SHA-2/3 на различных программных платформах. В следующей таблице показана скорость хеширования LSH-сообщений размером 1 МБ на нескольких платформах.
Скорость хеширования LSH-сообщений 1 МБ (циклов / байт) [1]
Следующая таблица представляет собой сравнение на платформе на базе Haswell, LSH измеряется на четырехъядерной платформе Intel Core i7-4770k @ 3,5 ГГц, а другие измеряются на платформе Intel Core i5-4570S @ 2,9 ГГц.
Тест скорости финалистов LSH, SHA-2 и SHA-3 на платформе на базе процессора Haswell (циклов / байт) [1]
Алгоритм
Размер сообщения в байтах
длинный
4096
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]
Алгоритм
Размер сообщения в байтах
длинный
4096
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-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 бесплатен для использования в общественных или частных, коммерческих или некоммерческих целях. Исходный код для распространения LSH, реализованного на C, Java и Python, можно загрузить с веб-страницы активации криптографии KISA. [2]
KCMVP [ править ]
LSH - это один из криптографических алгоритмов, одобренных Корейской программой проверки криптографических модулей (KCMVP). [3]
Стандартизация [ править ]
LSH включен в следующий стандарт.
KS X 3262, Хеш-функция LSH (на корейском языке) [4]
Ссылки [ править ]
^ a b c d e f Ким, Донг-Чан; Хонг, Деукджо; Ли, Юнг-Гын; Ким, Ву-Хван; Квон, Дэсон (2015). LSH: новое семейство функций Fast Secure Hash . Издательство Springer International. С. 286–313. ISBN 978-3-319-15943-0.
^ "KISA 암호 이용 활성화 - 암호 알고리즘 소스 코드" . seed.kisa.or.kr .
^ "KISA 암호 이용 활성화 - 개요" . seed.kisa.or.kr .
^ «Корейские стандарты и сертификаты (на корейском языке)» .
vтеКриптографические хеш-функции и коды аутентификации сообщений