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 0≤j≤157a879d8a,if 16≤j≤63

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

FFj={X⊕Y⊕Z,for 0≤j≤15(X∧Y)∨(Y∧Z)∨(X∧Z),if 16≤j≤63
GGj={X⊕Y⊕Z,for 0≤j≤15(X∧Y)∨(¬X∧Z),if 16≤j≤63

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

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

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

Пэддинг

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

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

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

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

FOR i=0 to n−1:

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

ENDFOR

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

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

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

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

FOR j=16 to j=67:

Wj←P1(Wj−16⊕Wj−9⊕(Wj−3<<<15))⊕(Wj−13<<<7)⊕Wj−6

ENDFOR

FOR j=0 to j=63:

Wj=Wj⊕Wj+4

ENDFOR

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

Пусть A, B, C, D, E, F, G, H — 8 слов регистров, SS1, SS2, TT1, TT2 — 4 промежуточные переменные. Вычислительная процедура следующая:

ABCDEFGH←V(i)
FOR j=0 to 63
SS1←((A<<<12)+E+(Tj<<<(j mod 32)))<<<7 SS2←SS1⊕(A<<<12)
TT1←FFj(A,B,C)+D+SS2+W'j
TT2←GGj(E,F,G)+H+SS1+W'j
D←C
C←B<<<9
B←A
A←TT1
H←G
G←F<<<19
F←E
E←P0(TT2)
ENDFOR
V(i+1)←ABCDEFGH⊕V(i)

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

Итого, ABCDEFGH←V(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].

См. также

Примечания

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

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