Научная литература
booksshare.net -> Добавить материал -> Криптография -> Венбо Мао -> "Современная криптография" -> 102

Современная криптография - Венбо Мао

Венбо Мао Современная криптография. Под редакцией Клюшиной Д.А. — М. : Издательский дом Вильямс, 2005. — 768 c.
ISBN 5-8459-0847-7
Скачать (прямая ссылка): sovremennaya_kriptografiya.djvu
Предыдущая << 1 .. 96 97 98 99 100 101 < 102 > 103 104 105 106 107 108 .. 311 >> Следующая

Эта функция применяется к каждой строке матрицы State. Если размер блока равен 128 бит, она осуществляет следующее преобразование.
«0,0 «1,0 «2,0
«0,1
«1.1
«2,1
50,2 «1,2
«0.3
\«3,0 «3,1
52,2 «2,3 53,2 «3,3)
^«0,0 «0,1 «0.2 «0,3^
«1,1 «1,2 «1,3 «1,0
«2,2 «2,3 «2,0 «2,1
\«3,3 «3,0 «3,1 «3,2/
(7.7.2) I
Эта операция представляет собой перестановочный шифр (см. раздел 7.4). Она переставляет элементы матрицы, не изменяя их значений: для элементов г-й строки (г = 0,1,2,3) перестановка сводится к циклическому сдвигу вправо на 4 — г позиций.
Поскольку перестановочный шифр переставляет только элементы строк, это преобразование является обратимым.
Глава 7. Шифрование — симметричные методы
271
7.7.2.3 Внутренняя функция MixColumns(S'tate)
Эта функция применяется к каждому столбцу матрицы State. В частности, для четырех столбцов матрицы, стоящей в правой части формулы (7.7.2), функция MixColumns(S'tate) выполняет четыре итерации. Рассмотрим эти итерации применительно к одному столбцу. Ее результатом также является столбец.
Во-первых, пусть вектор
м
Si
S2
W
является столбцом матрицы, стоящей в правой части формулы (7.7.2). Для простоты изложения не будем указывать номер столбца.
Этот столбец можно интерпретировать как полином третьей степени:
s{x) = S3X3 + S2X2 + SiX + SQ.
Заметим, что, поскольку коэффициенты s(x) — это байты, т.е. элементы поля F2s, функция s(x) представляет собой полином над полем F2s, т.е. не является элементом поля Rijndael.
Операция над столбцом s(x) сводится к умножению этого полинома на фиксированный полином третьей степени с(х) по модулю х4 + 1:
с(х) ¦ s(x) (mod х4 + 1), (7.7.3)
где полином с(х) имеет вид
с(х) = с3х3 + с2х2 + с\х + с0 = 'ОЗ'ж3 + '01'ж2 + '01'ж + '02'.
Коэффициенты полинома с(х) являются элементами поля F2s (представленными в шестнадцатеричном виде).
Следует отметить, что операция умножения (7.7.3) не является операцией в поле Rijndael, поскольку полиномы с(х) и s(x) не принадлежат полю Rijndael. Кроме того, так как полином х4 +1 представляет собой приводимый полином над полем F2(x4 + 1 = (х +1)4), умножение в формуле (7.7.3) не является операцией ни в одном поле (теорема 5.5 из раздела 5.4.2.2). Единственная причина, по которой это умножение должно выполняться по модулю полинома четвертой степени, заключается в том, что ее результатом должен быть полином третьей степени, т.е. для того, чтобы преобразование переводило столбец (полином третьей степени) в такой же столбец (полином третьей степени). Это преобразование можно считать полиалфавитой подстановкой (умножением) с известным ключом.
х/х
часть in. исновные методы криптографии
Читатели могут применить деление столбиков, описанное в примере 5.15, и самостоятельно убедиться, что в поле F2 выполняется следующее уравнение (учитывая, что вычитание в этом поле идентично сложению):
^(moda^ + l)
_ t(mod4)
Следовательно, в произведении (7.7.3) коэффициенты при степенях хг (при г = I = 0,1,2,3) представляют собой суммы произведений CjSfc по индексам, удовле-| творяюшимусловию j+k = z(mod4), где j, к = 0,1,2,3. Например, коэффициент! при степени х2 в этом произведении имеет следующий вид:
C2S0 + CiSl + CqS2 + C3S3.
Операции умножения и сложения в этом выражении считаются операциями в nonej F28. По этой причине легко проверить, что умножение полиномов в выражении! (7.7.3) можно выполнить следующим образом.
МЛ
d2 \d3J
/со ci
со
С2
С2
сз со
Cl
сЛ
С2
сз со/
Si S2
W
/'02' '01' '01'
у'ОЗ'
'03' '02' '01' '01'
'01' '03' '02' '01'
'01'\ '01' '03' '02'/
/*Л si
S2
\s3J
(7-7.4)
Заметим далее, что, поскольку полином с(х) является взаимно простым с полиномом ж4 +1 над полем F2, в поле F2[x], существует инверсия c(x)~l (mod х4 +1). Иначе говоря, матрица и преобразование (7.7.4) являются обратимыми.
7.7.2.4 Внутренняя функция AddRoundKey(S'tote, RoundKey)
Эта функция просто складывает (байт за байтом и бит за битом) элементы переменной RoundKey с элементами переменной State. Операция сложения трактуется как операция сложения в поле F2 (т.е., как побитовая операция XOR) и является обратимой, причем обратной к ней также является операция сложения.
Биты переменной RoundKey считаются упорядоченными по расписанию, т.е. биты ключей из разных раундов не совпадают друг с другом. Они вычисляются с помощью фиксированного (открытого) расписания ключей. Подробное устройство расписания ключей изложено в работе [219].
Итак, мы завершили описание внутренних функций шифра Rijndael и операции шифрования.
7.7.2.5 Операция расшифровки
Поскольку все четыре внутренние функции являются обратимыми, расшифровка сводится к выполнению шифрования в обратном порядке.
Глава 7. Шифрование — симметричные методы
273
AddRoundKey(S'?a?e, RoundKey)^1; MixColumns(S'tate)_1; ShiftRows(S'tate)-1; SubBytes(S'tate)-1.
Следует заметить, что в отличие от шифра Файстеля, в котором шифрование и расшифровка используют одну и ту же электронную схему или программу, шифр Rijndael должен применять разные электронные схемы и программы для шифрования и расшифровки соответственно.
Предыдущая << 1 .. 96 97 98 99 100 101 < 102 > 103 104 105 106 107 108 .. 311 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed