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]

Пример 1

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

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

Пример 2

Для входного сообщения с кодом длиной 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-53842147.5316114.20
C-SM3 Virtex-52342157.5316196.92
T-SM3 Virtex-53283627.5327268.31
SHA-256 Virtex-53192217.7617145.37

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

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

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

Результаты криптоаналитических атак на алгоритм SM3
Тип атакиЧисло шаговСложностьСсылка на исследование
Коллизионная атака202^117.1[6]
Коллизия инициализации242^249[6]
Атака нахождения прообраза282^241.5[7]
Атака нахождения прообраза302^249[7]
Атака нахождения прообраза292^245[8]
Атака нахождения прообраза302^251.1[8]
Псевдоатака нахождения прообраза312^245[8]
Псевдоатака нахождения прообраза322^251.1[8]
Методом бумеранга332^125[9]
Методом бумеранга352^117.1[9]
Методом бумеранга352^33.6[10]
Методом бумеранга372^192[10]

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

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

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

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

Область применения Детали
X.509Существует реализация SM3 для создания электронной цифровой подписи сертификата[11]
PGPSM3 наряду с 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 года.