SM4 — алгоритм блочного шифрования используемый в Китае как национальный стандарт для беспроводных локальных сетей (WLAN Authentication and Privacy Infrastructure (WAPI)).

Первоначально алгоритм назывался SMS4, однако в тексте стандарта GM/T 0002-2012 SM4 Block Cipher Algorithm от 21 марта 2012 года был официально переименован в SM4.http://www.codeofchina.com/standard/GMT0002-2012.html GM/T 0002-2012 SM4 Block Cipher Algorithm (English)

SM4 был предложен как шифр используемый в стандарте IEEE 802.11i, но был быстро заменён ISO. Одной из причин этого была оппозиция WAPI fast-track продвигаемая IEEE.

Алгоритм SM4 был разработан профессором Лю Шу-ваном (LU Shu-wang(???)). Алгоритм был рассекречен в январе 2006. Несколько характеристик SM4: Размер блока составляет 128 бит. Используется 8 — битный S-box Размер ключа 128 бит. Используются только операции типа XOR, кругового сдвига и приложения S-Box Выполняется 32 раунда для обработки одного блока Каждый раунд обновляет четверть (32 бита) внутреннего состояния. Используется не линейное составление ключа (key schedule) для создания раундовых ключей. При расшифровке используются те же ключи что и при шифровании, но в обратном порядке.

Термины и определения

Слово и байт Множество определено как вектор из e бит.

это слово.

это байт. + ОпределенияRound KeyRound Keys получаются из Cipher Key используя процедуру Key Expansion. Они применяются к State при шифровании и расшифрованииCipher Keyсекретный, криптографический ключ, который используется Key Expansion процедурой, чтобы произвести набор ключей для раундов(Round Keys); может быть представлен как прямоугольный массив байтов, имеющий четыре строки и Nk колонок.Key Expansionпроцедура используемая для генерации Round Keys из Cipher KeyS-boxнелинейная таблица замен, использующаяся в нескольких трансформациях замены байт и в процедуре Key Expansion для взаимнооднозначной замены значения байта. Предварительно рассчитанный S-box можно увидеть ниже.

S-box S-box фиксируется 8 — битами на входе и 8 — битами на выходе, записывается как Sbox().

Ключи и ключевые параметры Длина шифрованного ключа составляет 128-бит, и представлена как , в каждой содержится слово.

Раундовый ключ представлен как . Он создаётся ключом шифрования.

это система параметров.

фиксированный параметр.

и это слова, используемые для расширения алгоритма.

Раундовая функция F SM4 использует нелинейную структуру подстановки, за раз шифруется 32 бита. Это так называемая однораундовая замена. Для наглядного примера рассмотрим однораундовую подстановку: Представим 128-битный входной блок как четыре 32-битных элемента

, с , тогда имеет вид:

Смешанная подстановка Т это подстановка которая создаёт 32 бита из 32 бит Эта подстановка обратима, и содержит в себе нелинейную подстановку, τ, и линейную подстановку L, то есть

Нелинейная подстановка τ обрабатывает параллельно четыре S-box. Пусть 32-битным входным словом будет , где каждая это 8-битный символ. Пусть 32-битным выходным словом будет ), имеет вид

= (Sbox(), Sbox(), Sbox(), Sbox())

Линейная подстановка L , 32-битное слово нелинейной подстановки будет выводить слово линейной подстановки L. Пусть будет 32-битным выходным словом создаваемым L. Тогда

S box Все Sbox числа в шестнадцатеричной записи. _0123456789abcdef0d690e9fecce13db716b614c228fb2c0512b679a762abe04c3aa4413264986069929c4250f491ef987a33540b43edcfac623e4b31ca9c908e89580df94fa758f3fa644707a7fcf37317ba83593c19e6854fa85686b81b27164da8bf8eb0f4b70569d3561e240e5e6358d1a225227c3b012178877d40046579fd327524c3602e7a0c4c89e8eabf8ad240c738b5a3f7f2cef96115a19e0ae5da49b341a55ad933230f58cb1e3a1df6e22e8266ca60c02923ab0d534e6fbd5db3745defd8e2f03ff6a726d6c5b51c8d1baf92bbddbc7f11d95c411f105ad8d0ac13188a5cd7bbd2d74d012b8e5b4b0e8969974a0c96777e65b9f109c56ec684f18f07dec3adc4d2079ee5f3ed7cb3948

Например, если на входе Sbox принимает значение «ef», тогда найдя строку «e» и столбец «f», получаем Sbox(«ef») = «84».

Шифрование и расшифрование Пусть обратной подстановкой будет:

Пусть текст, который подается на входе будет , на выходе зашифрованный текст будет , и ключ шифрования будет

Тогда шифрование будет происходить следующим образом:

Алгоритм шифрования и расшифрования имеют одну и ту же структуру, за исключением того что порядок, в котором используются раундовые ключи обратный.

Порядок ключа при шифровании:

Порядок ключа при расшифровании:

Key expansion Раундовый ключ используемый для шифрования, получается из ключа шифрования MK.

Пусть : вывод следующий:

Во-первых,

Тогда для :

Записи: (1) подстановка использует ту же что и при шифровании, за исключением линейной подстановки L, она заменена на :

(2) Система параметров , приведена в шестнадцатеричной записи

(3) Параметр константа получается: Пусть тогда 32 константы в шестнадцатеричной записи представлены ниже: 00070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef5fc030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8ff060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf4fb020910171e252c333a41484f565d646b7279

Пример шифрования Ниже представлен пример шифрования. Мы используем его для проверки правильности шифрования. Числа проверяются в шестнадцатеричной записи.

Пример № 1. Шифрование один раз plaintext:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10encrypting key:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 и выходная информация в каждом раунде:

rk[ 0]=f12186f9X[ 4]=27fad345rk[ 1]=41662b61X[ 5]=a18b4cb2rk[ 2]=5a6ab19aX[ 6]=11c1e22ark[ 3]=7ba92077X[ 7]=cc13e2eerk[ 4]=367360f4X[ 8]=f87c5bd5rk[ 5]=776a0c61X[ 9]=33220757rk[ 6]=b6bb89b3X[ 10]=77f4c297rk[ 7] = 24763151 X[ 11] = 7a96f2ebrk[ 8] = a520307c X[ 12] = 27dac07frk[ 9] = b7584dbd X[ 13] = 42dd0f19rk = c30753ed X = b8a5da02rk = 7ee55b57 X = 907127fark = 6988608c X = 8b952b83rk = 30d895b7 X = d42b7c59rk = 44ba14af X = 2ffc5831rk = 104495a1 X = f69e6888rk = d120b428 X = af2432c4rk = 73b55fa3 X = ed1ec85erk = cc874966 X = 55a3ba22rk = 92244439 X = 124b18aark = e89e641f X = 6ae7725frk = 98ca015a X = f4cba1f9rk = c7159060 X = 1dcdfa10rk = 99e1fd2e X = 2ff60603rk = b79bd80c X = eff24fdcrk = 1d2115b0 X = 6fe46b75rk = 0e228aeb X = 893450adrk = f1780c81 X = 7b938f4crk = 428d3654 X = 536e4246rk = 62293496 X = 86b3e94frk = 01cf72e5 X = d206965erk = 9124a012 X = 681edf34 Шифр текст: 68 1e df 34 d2 06 96 5e 86 b3 e9 4f 53 6e 42 46

Пример № 2: Использование ключа шифрования такого же как и текст для шифрования 1.000.000 раз Текст: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10Ключ шифрования: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10Шифрованный текст: 59 52 98 c7 c6 fd 27 1f 04 02 f8 04 c3 3d 3f 66

Примечания

Ссылки Chinese document describing the SMS4 cipher English translation of the Chinese document Linear and Differential Cryptanalysis of Reduced SMS4 Block Cipher Example of SMS4 implemented as a Spreadsheet Page of Prof. LU Shu-wang(???) in Chinese Example of SMS4 implemented in ANSI C

Категория:Блочные шифры