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-битное значение хэш-функции.
Значения вектора инициализации
[править | править код]Значения для инициализации следующие:
Константы
[править | править код]
Булевы функции
[править | править код]
Перестановки
[править | править код]
Пэддинг
[править | править код]Сообщение 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]. Эффективность оценивается для параметров, которые указаны в заглавии колонок.
Название алгоритма | Девайс | 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]. |
См. также
[править | править код]Примечания
[править | править код]- ↑ 1 2 Announcement 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 года.
- ↑ 1 2 3 4 5 The SM3 Cryptographic Hash Function (англ.). Internet Engineering Task Force (24 ноября 2017). Дата обращения: 27 октября 2020. Архивировано 4 октября 2020 года.
- ↑ 1 2 SM3 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 года.
- ↑ 1 2 Mendel, F., Nad, T. and M. Schlaffer. Finding collisions for round-reduced SM3. — 2013. Архивировано 20 января 2022 года.
- ↑ 1 2 Zou, J., Wu, W., Wu, S., Su, B. and L. Dong. Preimage attacks on step-reduced SM3 hash function. — 2012. Архивировано 7 апреля 2019 года.
- ↑ 1 2 3 4 Zou, G. and Y. Shen. Preimage and Pseudo-Collision Attacks on Step-Reduced SM3 Hash Function. — 2013.
- ↑ 1 2 Kircanski, A., Wang, G., Shen, Y. and A. Youssef. Boomerang and slide-rotational analysis of the SM3 hash function. — 2013. Архивировано 23 мая 2022 года.
- ↑ 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 года.
- ↑ 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 года.
- ↑ 1 2 Hash Crypto Engine . Дата обращения: 16 ноября 2020. Архивировано 31 декабря 2020 года.
На эту статью не ссылаются другие статьи Википедии. |