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. Создательница алгоритма — Шаблон:Iw, которая известна открытием новых способов атак для разных криптографических хэш-функций (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,0 1,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 3,0 3,1 3,2 3,3 3,4 Шаблон:Cite web
- ↑ 4,0 4,1 Шаблон:Cite web
- ↑ Шаблон:Книга
- ↑ 6,0 6,1 Шаблон:Книга
- ↑ 7,0 7,1 Шаблон:Книга
- ↑ 8,0 8,1 8,2 8,3 Шаблон:Книга
- ↑ 9,0 9,1 Шаблон:Книга
- ↑ 10,0 10,1 Шаблон:Книга
- ↑ Шаблон:Книга
- ↑ Шаблон:Cite web
- ↑ IPSec VPN
- ↑ China Financial Integrated Circuit (IC) Card Specifications
- ↑ Шаблон:Книга
- ↑ Шаблон:Cite web
- ↑ 17,0 17,1 Шаблон:Cite web