SM3 (хеш-функция)

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

SM3 — криптографическая хэш-функция, являющаяся частью национального криптографического стандарта Китая. Она была опубликована Государственным управлением криптографии 17 декабря 2010 под названием «GM/T 0004-2012: криптографический хэш алгоритм SM3»[1][2]. SM3 в основном используется в электронных подписях, имитовставках и генераторах псевдослучайных чисел[3].

Определяющий стандарт

[править | править код]

Функция SM3 определена в стандарте «GM/T 0004-2012: криптографический хэш алгоритм SM3».

Приказом от 2016 года Национальное управление криптографии утвердило SM3 как один из отраслевых стандартов[1].

История создания

[править | править код]

SM3 — 256-битный хэш алгоритм. Он является модификацией SHA-2. Создательница алгоритма — Ван Сяоюнь[англ.], которая известна открытием новых способов атак для разных криптографических хэш-функций (MD5 и SHA-1). SM3 был опубликован в 2010 году. SM3 использует структуру Меркла — Дамгора[4].

Описание алгоритма

[править | править код]

Общее описание

[править | править код]
Графическое представление работы алгоритма SM3

Алгоритм принимает на вход сообщение длины . После процедуры пэддинга и нескольких итераций компрессии на выходе получится 256-битное значение хэш-функции.

Значения вектора инициализации

[править | править код]

Значения для инициализации следующие:

Булевы функции

[править | править код]


Перестановки

[править | править код]

Сообщение cосостоит из бит. Добавим бит 1 к концу сообщения, а также нулевых бит, где  — наименьшее неотрицательное число, удовлетворяющее соотношению . Затем к полученному сообщению необходимо добавить 64-битную строку, являющуюся двоичным представлением числа , изначальной длины сообщения. В результате будет получена строка , длина которой кратна 512.

Процедура повторения функции компрессии

[править | править код]

Сообщение , уже прошедшее пэддинг, разделяется на 512-битные блоки (в обозначениях , где ).

Далее алгоритм следующий:

Здесь  — функция компрессии,  — 256-битный вектор инициализации. Результат после итерации есть .

Расширение сообщения

[править | править код]

Блок сообщения расширяется до 132 слов , которые добавлены к компрессионной функции :

Делим блок на 16 слов.

Компрессионная функция

[править | править код]

Пусть  — 8 слов регистров,  — 4 промежуточные переменные. Вычислительная процедура следующая:















Значение хэш-функции

[править | править код]

Итого, . Отсюда окончательное значение хэш-функции [3].

Примеры работы алгоритма на разных сообщениях[3]

[править | править код]

Для входного сообщения «abc» (и его ASCII версии 616263 соответственно) значение хэш-функции равно:

66c7f0f4 62eeedd9 d1f2d46b dc10e4e2 4167c487 5cf2f7a2 297da02b 8f4ba8e0

Для входного сообщения с кодом длиной 512 бит:

61626364 61626364 61626364 61626364 61626364 61626364 61626364 61626364
61626364 61626364 61626364 61626364 61626364 61626364 61626364 61626364

Хэш-функция будет равна:

debe9ff9 2275b8a1 38604889 c18e5a4d 6fdb70e5 387e5765 293dcba3 9c0c5732

Аппаратная оптимизация и оценка эффективности

[править | править код]

Результаты сравнения эффективности алгоритма SM3, оригинального и 2 его оптимизаций, а также SHA-256 представлены в таблице ниже[5]. Эффективность оценивается для параметров, которые указаны в заглавии колонок.

Сравнение эффективности SM3 и его модификаций с алгоритмом SHA-256
Название алгоритма Девайс Slices Максимальная частота (MHz) Бит/цикл Пропускная способность (Mbps) Пропускная способность/slice
Стандартный SM3 Virtex-5 384 214 7.53 1611 4.20
C-SM3 Virtex-5 234 215 7.53 1619 6.92
T-SM3 Virtex-5 328 362 7.53 2726 8.31
SHA-256 Virtex-5 319 221 7.76 1714 5.37

Криптоанализ

[править | править код]

Не существует никаких формальных доказательств относительно качества этого алгоритма, тем не менее, не зарегистрировано успешных атак на SM3[3].

Криптоаналитические результаты для различных атак на алгоритм SM3 агрегированы в следующей таблице.

Результаты криптоаналитических атак на алгоритм SM3
Тип атаки Число шагов Сложность Ссылка на исследование
Коллизионная атака 20 2^117.1 [6]
Коллизия инициализации 24 2^249 [6]
Атака нахождения прообраза 28 2^241.5 [7]
Атака нахождения прообраза 30 2^249 [7]
Атака нахождения прообраза 29 2^245 [8]
Атака нахождения прообраза 30 2^251.1 [8]
Псевдоатака нахождения прообраза 31 2^245 [8]
Псевдоатака нахождения прообраза 32 2^251.1 [8]
Методом бумеранга 33 2^125 [9]
Методом бумеранга 35 2^117.1 [9]
Методом бумеранга 35 2^33.6 [10]
Методом бумеранга 37 2^192 [10]

Реализация и применение

[править | править код]

Алгоритм является открытым и, по утверждениям Китайского информационного интернет-центра, является аналогом SHA-256 в вопросах безопасности и эффективности[4].

Так как SM3 является единственной функцией, разрешенной для использования в Китае Национальным управлением криптографии, ее реализация в аппаратуре необходима для применения в китайском оборудовании[3].

Примеры прикладного применения SM3 указаны в таблице:

Область применения Детали
X.509 Существует реализация SM3 для создания электронной цифровой подписи сертификата[11]
PGP SM3 наряду с SM2 и SM4 реализован в расширении PGP для использования на территории Китая[12]
IPSec Реализация IPSec IKEv1 поддерживает SM3 [13]
Financial IC Card [14] Одним из методов обеспечивания безопасности банковских карт, основанных на чипах, является SM3 [15].
OpenSSL В криптографической библиотеке OpenSSL реализован алгоритм SM3[16]
Hash Crypto Engine BA413[17] BA413 является блоком для проектирования микросхем, который используется для задачи формирования ключа и применения цифровой подписи. Для применения на территории Китая в нем внедрен SM3[17].

Примечания

[править | править код]
  1. 1 2 Announcement No.23 of the State Cryptography Administration (кит.). The Office of Security Commercial Code Administration (OSCCA) (21 марта 2012). Архивировано 14 августа 2016 года.
  2. SM3 cryptographic hash algorithm (кит.). CNNIC (4 декабря 2013). Дата обращения: 27 октября 2020. Архивировано 19 сентября 2016 года.
  3. 1 2 3 4 5 The SM3 Cryptographic Hash Function (англ.). Internet Engineering Task Force (24 ноября 2017). Дата обращения: 27 октября 2020. Архивировано 4 октября 2020 года.
  4. 1 2 SM3 Cryptographic Hash Algorithm (Chinese Standard) (22 февраля 2017). Дата обращения: 26 октября 2020. Архивировано 30 октября 2020 года.
  5. Yuan Ma, Luning Xia, Jingqiang Lin, Jiwu Jing, Zongbin Liu, and Xingjie Yu. Hardware Performance Optimization and Evaluation of SM3 Hash Algorithm on FPGA. — 2012. Архивировано 20 января 2022 года.
  6. 1 2 Mendel, F., Nad, T. and M. Schlaffer. Finding collisions for round-reduced SM3. — 2013. Архивировано 20 января 2022 года.
  7. 1 2 Zou, J., Wu, W., Wu, S., Su, B. and L. Dong. Preimage attacks on step-reduced SM3 hash function. — 2012. Архивировано 7 апреля 2019 года.
  8. 1 2 3 4 Zou, G. and Y. Shen. Preimage and Pseudo-Collision Attacks on Step-Reduced SM3 Hash Function. — 2013.
  9. 1 2 Kircanski, A., Wang, G., Shen, Y. and A. Youssef. Boomerang and slide-rotational analysis of the SM3 hash function. — 2013. Архивировано 23 мая 2022 года.
  10. 1 2 Bai, D., Yu, H., Wang, G. and X. Wang. Improved Boomerang Attacks on Round-Reduced SM3 and Keyed Permutation of BLAKE-256. — 2015. Архивировано 30 октября 2020 года.
  11. Hua Jiang, Gang Zhang, Jinpo Fan. Structure Analysis and Generation of X.509 Digital Certificate Based on National Secret. — 2019. Архивировано 13 февраля 2020 года.
  12. SCA Extensions For OpenPGP. Дата обращения: 16 ноября 2020. Архивировано 9 августа 2020 года.
  13. IPSec VPN
  14. China Financial Integrated Circuit (IC) Card Specifications
  15. Ye Hu, Liji Wu, An Wang, Beibei Wang. Hardware Design and Implementation of SM3 Hash Algorithm for Financial IC Card. — 2014.
  16. OpenSSL Documentation. Дата обращения: 16 ноября 2020. Архивировано 9 марта 2018 года.
  17. 1 2 Hash Crypto Engine. Дата обращения: 16 ноября 2020. Архивировано 31 декабря 2020 года.