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].
Описание алгоритма
[править |править код]Общее описание
[править |править код]
Алгоритм принимает на вход сообщение длины. После процедуры пэддинга и нескольких итераций компрессии на выходе получится 256-битное значение хэш-функции.
Значения вектора инициализации
[править |править код]Значения для инициализации следующие:
Константы
[править |править код]Булевы функции
[править |править код]Перестановки
[править |править код]Пэддинг
[править |править код]Сообщение сосостоит из бит. Добавим бит 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 6162636461626364 61626364 61626364 61626364 61626364 61626364 61626364 61626364
Хэш-функция будет равна:
debe9ff9 2275b8a1 38604889 c18e5a4d 6fdb70e5 387e5765 293dcba3 9c0c5732
Аппаратная оптимизация и оценка эффективности
[править |править код]Результаты сравнения эффективности алгоритма SM3, оригинального и 2 его оптимизаций, а такжеSHA-256 представлены в таблице ниже[5]. Эффективность оценивается для параметров, которые указаны в заглавии колонок.
| Название алгоритма | Девайс | 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 агрегированы в следующей таблице.
| Тип атаки | Число шагов | Сложность | Ссылка на исследование |
|---|---|---|---|
| Коллизионная атака | 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]. |
См. также
[править |править код]Примечания
[править |править код]- ↑12Announcement No.23 of the State Cryptography Administration (кит.). The Office of Security Commercial Code Administration (OSCCA) (21 марта 2012). Архивировано 14 августа 2016 года.
- ↑SM3 cryptographic hash algorithm (кит.). CNNIC (4 декабря 2013). Дата обращения: 27 октября 2020. Архивировано 19 сентября 2016 года.
- ↑12345The SM3 Cryptographic Hash Function (англ.). Internet Engineering Task Force (24 ноября 2017). Дата обращения: 27 октября 2020. Архивировано 4 октября 2020 года.
- ↑12SM3 Cryptographic Hash Algorithm (Chinese Standard) (22 февраля 2017). Дата обращения: 26 октября 2020. Архивировано 30 октября 2020 года.
- ↑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 года.]
- ↑12Mendel, F., Nad, T. and M. Schlaffer. Finding collisions for round-reduced SM3. — 2013. — [Архивировано 20 января 2022 года.]
- ↑12Zou, J., Wu, W., Wu, S., Su, B. and L. Dong. Preimage attacks on step-reduced SM3 hash function. — 2012. — [Архивировано 7 апреля 2019 года.]
- ↑1234Zou, G. and Y. Shen. Preimage and Pseudo-Collision Attacks on Step-Reduced SM3 Hash Function. — 2013.
- ↑12Kircanski, A., Wang, G., Shen, Y. and A. Youssef. Boomerang and slide-rotational analysis of the SM3 hash function. — 2013. — [Архивировано 23 мая 2022 года.]
- ↑12Bai, D., Yu, H., Wang, G. and X. Wang. Improved Boomerang Attacks on Round-Reduced SM3 and Keyed Permutation of BLAKE-256. — 2015. — [Архивировано 30 октября 2020 года.]
- ↑Hua Jiang, Gang Zhang, Jinpo Fan. Structure Analysis and Generation of X.509 Digital Certificate Based on National Secret. — 2019. — [Архивировано 13 февраля 2020 года.]
- ↑SCA Extensions For OpenPGP . Дата обращения: 16 ноября 2020. Архивировано 9 августа 2020 года.
- ↑IPSec VPN
- ↑China Financial Integrated Circuit (IC) Card Specifications
- ↑Ye Hu, Liji Wu, An Wang, Beibei Wang. Hardware Design and Implementation of SM3 Hash Algorithm for Financial IC Card. — 2014.
- ↑OpenSSL Documentation . Дата обращения: 16 ноября 2020. Архивировано 9 марта 2018 года.
- ↑12Hash Crypto Engine . Дата обращения: 16 ноября 2020. Архивировано 31 декабря 2020 года.