Лучшие вопросы
Таймлайн
Чат
Перспективы

SM4

алгоритм блочного шифрования Из Википедии, свободной энциклопедии

SM4
Remove ads

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

Краткие факты Опубликован, Размер ключа ...

Первоначально алгоритм назывался SMS4, однако в тексте стандарта GM/T 0002-2012 SM4 Block Cipher Algorithm от 21 марта 2012 года был официально переименован в SM4.[1]

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) для создания раундовых ключей.
  • При расшифровке используются те же ключи что и при шифровании, но в обратном порядке.
Remove ads

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

Суммиров вкратце
Перспектива

Слово и байт

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

это слово.

это байт.

Подробнее Round Key, Cipher Key ...

S-box

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

Ключи и ключевые параметры

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

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

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

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

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

Remove ads

Раундовая функция 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 числа в шестнадцатеричной записи.

Подробнее _, a ...


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

Шифрование и расшифрование

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

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

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


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

Remove ads

Key expansion

Раундовый ключ используемый для шифрования, получается из ключа шифрования MK.
Пусть : вывод следующий:
Во-первых,


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

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

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

00070e151c232a31383f464d545b6269
70777e858c939aa1a8afb6bdc4cbd2d9
e0e7eef5fc030a11181f262d343b4249
50575e656c737a81888f969da4abb2b9
c0c7ced5dce3eaf1f8ff060d141b2229
30373e454c535a61686f767d848b9299
a0a7aeb5bcc3cad1d8dfe6edf4fb0209
10171e252c333a41484f565d646b7279
Remove ads

Пример шифрования

Суммиров вкратце
Перспектива

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

Пример № 1. Шифрование один раз

plaintext:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
encrypting key:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10

и выходная информация в каждом раунде:

rk[ 0]=f12186f9X[ 4]=27fad345
rk[ 1]=41662b61X[ 5]=a18b4cb2
rk[ 2]=5a6ab19aX[ 6]=11c1e22a
rk[ 3]=7ba92077X[ 7]=cc13e2ee
rk[ 4]=367360f4X[ 8]=f87c5bd5
rk[ 5]=776a0c61X[ 9]=33220757
rk[ 6]=b6bb89b3X[ 10]=77f4c297
rk[ 7]=24763151X[ 11]=7a96f2eb
rk[ 8]=a520307cX[ 12]=27dac07f
rk[ 9]=b7584dbdX[ 13]=42dd0f19
rk[10]=c30753edX[14]=b8a5da02
rk[11]=7ee55b57X[15]=907127fa
rk[12]=6988608cX[16]=8b952b83
rk[13]=30d895b7X[17]=d42b7c59
rk[14]=44ba14afX[18]=2ffc5831
rk[15]=104495a1X[19]=f69e6888
rk[16]=d120b428X[20]=af2432c4
rk[17]=73b55fa3X[21]=ed1ec85e
rk[18]=cc874966X[22]=55a3ba22
rk[19]=92244439X[23]=124b18aa
rk[20]=e89e641fX[24]=6ae7725f
rk[21]=98ca015aX[25]=f4cba1f9
rk[22]=c7159060X[26]=1dcdfa10
rk[23]=99e1fd2eX[27]=2ff60603
rk[24]=b79bd80cX[28]=eff24fdc
rk[25]=1d2115b0X[29]=6fe46b75
rk[26]=0e228aebX[30]=893450ad
rk[27]=f1780c81X[31]=7b938f4c
rk[28]=428d3654X[32]=536e4246
rk[29]=62293496X[33]=86b3e94f
rk[30]=01cf72e5X[34]=d206965e
rk[31]=9124a012X[35]=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
Remove ads

Примечания

Ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads