WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
SM4 (SMS4)
Опубликован 2006 г. (рассекречен)
Размер ключа 128 бит
Размер блока 128 бит
Число раундов 32
Тип Сеть Фейстеля

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

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

Слово и байт

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

это слово.

это байт.

Определения
Round Key Round Keys получаются из Cipher Key используя процедуру Key Expansion. Они применяются к State при шифровании и расшифровании
Cipher Key секретный, криптографический ключ, который используется Key Expansion процедурой, чтобы произвести набор ключей для раундов(Round Keys); может быть представлен как прямоугольный массив байтов, имеющий четыре строки и Nk колонок.
Key Expansion процедура используемая для генерации Round Keys из Cipher Key
S-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 числа в шестнадцатеричной записи.

_ 0 1 2 3 4 5 6 7 8 9 a b c d e f
0 d6 90 e9 fe cc e1 3d b7 16 b6 14 c2 28 fb 2c 05
1 2b 67 9a 76 2a be 04 c3 aa 44 13 26 49 86 06 99
2 9c 42 50 f4 91 ef 98 7a 33 54 0b 43 ed cf ac 62
3 e4 b3 1c a9 c9 08 e8 95 80 df 94 fa 75 8f 3f a6
4 47 07 a7 fc f3 73 17 ba 83 59 3c 19 e6 85 4f a8
5 68 6b 81 b2 71 64 da 8b f8 eb 0f 4b 70 56 9d 35
6 1e 24 0e 5e 63 58 d1 a2 25 22 7c 3b 01 21 78 87
7 d4 00 46 57 9f d3 27 52 4c 36 02 e7 a0 c4 c8 9e
8 ea bf 8a d2 40 c7 38 b5 a3 f7 f2 ce f9 61 15 a1
9 e0 ae 5d a4 9b 34 1a 55 ad 93 32 30 f5 8c b1 e3
a 1d f6 e2 2e 82 66 ca 60 c0 29 23 ab 0d 53 4e 6f
b d5 db 37 45 de fd 8e 2f 03 ff 6a 72 6d 6c 5b 51
c 8d 1b af 92 bb dd bc 7f 11 d9 5c 41 1f 10 5a d8
d 0a c1 31 88 a5 cd 7b bd 2d 74 d0 12 b8 e5 b4 b0
e 89 69 97 4a 0c 96 77 7e 65 b9 f1 09 c5 6e c6 84
f 18 f0 7d ec 3a dc 4d 20 79 ee 5f 3e d7 cb 39 48


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

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

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

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

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


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

Key expansion

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



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

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

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

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

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

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

Пример № 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

Примечания

  1. http://www.codeofchina.com/standard/GMT0002-2012.html GM/T 0002-2012 SM4 Block Cipher Algorithm (English)

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии