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

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:О 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].

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

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

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

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

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

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

  • V0(0)=7380166f
  • V1(0)=4914b2b9
  • V2(0)=172442d7
  • V3(0)=da8a0600
  • V4(0)=a96f30bc
  • V5(0)=163138aa
  • V6(0)=e38dee4d
  • V7(0)=b0fb0e4e

Константы

Tj={79cc4519,if 0j157a879d8a,if 16j63

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

FFj={XYZ,for 0j15(XY)(YZ)(XZ),if 16j63
GGj={XYZ,for 0j15(XY)(¬XZ),if 16j63

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

P0(X)=X(X<<<9)(X<<<17)

P1(X)=X(X<<<15)(X<<<23)

Пэддинг

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

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

Сообщение m, уже прошедшее пэддинг, разделяется на 512-битные блоки (в обозначениях m=B(0)B(1)B(n1), где n=l+k+65512).

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

FOR i=0 to n1:

V(i+1)=CF(V(i),B(i))

ENDFOR

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

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

Блок сообщения B(i) расширяется до 132 слов W0,W1W67,W'1W'63, которые добавлены к компрессионной функции CF:

Делим блок B(i) на 16 слов.

FOR j=16 to j=67:

WjP1(Wj16Wj9(Wj3<<<15))(Wj13<<<7)Wj6

ENDFOR

FOR j=0 to j=63:

Wj=WjWj+4

ENDFOR

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

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

ABCDEFGHV(i)
FOR j=0 to 63
SS1((A<<<12)+E+(Tj<<<(j mod 32)))<<<7 SS2SS1(A<<<12)
TT1FFj(A,B,C)+D+SS2+W'j
TT2GGj(E,F,G)+H+SS1+W'j
DC
CB<<<9
BA
ATT1
HG
GF<<<19
FE
EP0(TT2)
ENDFOR
V(i+1)ABCDEFGHV(i)

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

Итого, ABCDEFGHV(n). Отсюда окончательное значение хэш-функции y:=ABCDEFGH[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-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].

См. также

Примечания

Шаблон:Примечания

Шаблон:Изолированная статья