Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

LSH - это криптографическая хэш-функция, разработанная в 2014 году в Южной Корее для обеспечения целостности программных сред общего назначения, таких как ПК и интеллектуальные устройства . [1] LSH - это один из криптографических алгоритмов, утвержденных Корейской программой проверки криптографических модулей (KCMVP). И это национальный стандарт Южной Кореи (KS X 3262).

Спецификация [ править ]

Общая структура хэш-функции LSH показана на следующем рисунке.

Общая структура ЛШ

Хэш-функция LSH имеет широкую структуру Меркла-Дамгарда с заполнением одним нулем. Процесс хеширования сообщений LSH состоит из следующих трех этапов.

  1. Инициализация :
    • Заполнение заданной битовой строкой одним нулем.
    • Преобразование в блоки сообщения с массивом из 32 слов из сообщения с дополненной битовой строкой.
    • Инициализация цепочки переменной вектором инициализации.
  2. Сжатие :
    • Обновление переменных цепочки путем повторения функции сжатия с блоками сообщений.
  3. Доработка :
    • Генерация -битного хеш-значения из последней переменной цепочки.

Технические характеристики хэш-функции LSH следующие.

Инициализация [ править ]

Позвольте быть заданной битовой строкой сообщения. Данные дополняются нулями, т. Е. Бит «1» добавляется в конец , а биты «0» добавляются до тех пор, пока длина дополненного сообщения в битах не будет , где и является наименьшим целым числом не меньше .

Позвольте быть битовой строкой с одним нулями . Тогда рассматривается как -байтовый массив , где для всех . В -байт массив превращается в -Word массив следующим образом .

Из массива слов мы определяем блоки сообщений массива из 32 слов следующим образом.

Переменная цепочки массива из 16 слов инициализируется вектором инициализации .

Вектор инициализации выглядит следующим образом. В следующих таблицах все значения выражены в шестнадцатеричной форме.

Сжатие [ править ]

На этом этапе блоки сообщений массива из 32 слов , которые генерируются из сообщения на этапе инициализации, сжимаются путем повторения функций сжатия. Функция сжатия имеет два входа; -й 16 слов переменной цепочки и -й блок сообщений 32 слов . И он возвращает -ю цепочку из 16 слов . Здесь и далее, обозначает набор массивов всех слов для .

В функции сжатия используются следующие четыре функции:

  • Функция расширения сообщения
  • Функция добавления сообщений
  • Функция смешивания
  • Функция перестановки слов

Общая структура функции сжатия показана на следующем рисунке.

Функция сжатия LSH

В функции сжатия функция расширения сообщения генерирует вложенные сообщения массива из 16 слов из данного . Пусть будет временным массивом из 16 слов, установленным для -й переменной цепочки . -Й функция шага , имеющая два входа и обновление , то есть . Все пошаговые функции выполняются по порядку . Затем выполняется еще одна операция по , и -я переменная цепочки устанавливается в . Подробно процесс функции сжатия выглядит следующим образом.

Здесь функция -го шага выглядит следующим образом.

На следующем рисунке показана функция -го шага функции сжатия.

Функция -го шага

Функция расширения сообщения MsgExp [ править ]

Позвольте быть -м блоком сообщения массива из 32 слов. Функция расширения сообщения генерирует вложенные сообщения массива из 16 слов из блока сообщения . Первые два вложенных сообщения и определяются следующим образом.

Следующие суб-сообщения генерируются следующим образом.

Вот перестановка, определяемая следующим образом.

Функция добавления сообщений MsgAdd [ править ]

Для двух массивов из 16 слов и функция добавления сообщений определяется следующим образом.

Mix Function Mix [ править ]

Функция -й смеси обновляет массив 16 слов путем смешивания каждой пары из двух слов; и для . Для , функция микширования работает следующим образом.

Вот функция смешивания двух слов. Пусть и будут словами. Функция смешивания двух слов определяется следующим образом.

Функция смешивания двух слов показана на следующем рисунке.

Функция смешивания двух слов

Суммы вращения бит , , используемые в приведены в следующей таблице.

-Й 8-слово константа массива используется в течение определяется следующим образом . Исходная константа массива из 8 слов определена в следующей таблице. For , -я константа создается for .

Функция перестановки слов WordPerm [ править ]

Позвольте быть массивом из 16 слов. Функция перестановки слов определяется следующим образом.

Вот перестановка, определенная в следующей таблице.

Завершение [ править ]

Функция финализации возвращает -битное хеш-значение из последней переменной цепочки . Когда это переменная из 8 слов и переменная размером в байты, функция завершения выполняет следующую процедуру.

Здесь обозначает строку суббитов слова для . И обозначает , суб-битовая строка из битовых строк для .

Безопасность [ править ]

LSH до сих пор защищен от известных атак на хэш-функции. LSH устойчив к коллизиям, устойчив к прообразу и устойчив к второму прообразу для идеальной модели шифра, где есть ряд запросов для структуры LSH. [1] LSH-256 защищен от всех существующих атак хеш-функции, когда количество шагов равно 13 или больше, тогда как LSH-512 защищен, если количество шагов равно 14 или больше. Обратите внимание, что шаги, которые работают как запас прочности, составляют 50% от функции сжатия. [1]

Производительность [ править ]

LSH превосходит SHA-2/3 на различных программных платформах. В следующей таблице показана скорость хеширования LSH-сообщений размером 1 МБ на нескольких платформах.

  1. ^ Intel Core i7-4770K @ 3,5 ГГц (Haswell), Ubuntu 12.04 64-бит, GCC 4.8.1 с «-m64 -mavx2 -O3»
  2. ^ Intel Core i7-2600K @ 3,40 ГГц (Sandy Bridge), Ubuntu 12.04 64-бит, GCC 4.8.1 с «-m64 -msse4 -O3»
  3. ^ Intel Core 2 Quad Q9550 @ 2,83 ГГц (Yorkfield), 32-разрядная версия Windows 7, Visual Studio 2012
  4. ^ AMD FX-8350 @ 4 ГГц (Piledriver), Ubuntu 12.04 64-бит, GCC 4.8.1 с «-m64 -mxop -O3»
  5. ^ Samsung Exynos 5250 ARM Cortex-A15 @ 1,7 ГГц, двухъядерный (Huins ACHRO 5250), Android 4.1.1
  6. ^ Qualcomm Snapdragon 800 Krait 400, четырехъядерный процессор 2,26 ГГц (LG G2), Android 4.4.2
  7. ^ Qualcomm Snapdragon 800 Krait 400 @ 2,3 ГГц, четырехъядерный (Samsung Galaxy S4), Android 4.2.2
  8. ^ 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 ГГц.

Следующая таблица измерена на двухъядерной платформе Samsung Exynos 5250 ARM Cortex-A15 @ 1,7 ГГц.

Тестовые векторы [ править ]

Тестовые векторы для 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]

KCMVP [ править ]

LSH - это один из криптографических алгоритмов, одобренных Корейской программой проверки криптографических модулей (KCMVP). [3]

Стандартизация [ править ]

LSH включен в следующий стандарт.

  • KS X 3262, Хеш-функция LSH (на корейском языке) [4]

Ссылки [ править ]

  1. ^ a b c d e f Ким, Донг-Чан; Хонг, Деукджо; Ли, Юнг-Гын; Ким, Ву-Хван; Квон, Дэсон (2015). LSH: новое семейство функций Fast Secure Hash . Издательство Springer International. С. 286–313. ISBN 978-3-319-15943-0.
  2. ^ "KISA 암호 이용 활성화 - 암호 알고리즘 소스 코드" . seed.kisa.or.kr .
  3. ^ "KISA 암호 이용 활성화 - 개요" . seed.kisa.or.kr .
  4. ^ «Корейские стандарты и сертификаты (на корейском языке)» .