Дипломная работа: Интегральная атака против блочного симметричного шифра Crypton
Рис.1.2 Байтовая подстановка g
1.3.2.2 Битовая перестановка p и байтовое перемещение t
Как линейные преобразования, CRYPTON использует последовательную перестановку бита и перемещения байта. Бит-перестановка смешивает каждый столбец байта в массиве 4×4 байта и байт-перемещение перемещает результирующие столбцы байт в строки байт.
Сначала определяем четыре вектора маскировки (M3, M2, M1, M0) для извлечения бит, используемых в как:
M0 = m3 || m2 || m1 || m0 = 0x3fcff3fc,
M1 = m0 || m3 || m2 || m1 = 0xfc3fcff3,
M2 = m1 || m0 || m3 || m2 = 0xf3fc3fcf,
M3 = m2 || m1 || m0 || m3 = 0xcff3fc3f, (1.3)
Где m0 = 0xfc, m1 = 0xf3, m2 = 0xcf, m3 = 0x3f. Чтобы сделать процес шифрования и расшифрования идентичными, используются два немного различных варианта перестановки; в нечетных раундах и e в четных раундах. Они определены следующим образом:
- байтовое перемещение o для нечетных раундов: B = o(A) определяется как:
B[0] ß (A[3] Ù M3) Å (A[2] Ù M2) Å (A[1] Ù M1) Å (A[0] Ù M0),
B[1] ß (A[3] Ù M0) Å (A[2] Ù M3) Å (A[1] Ù M2) Å (A[0] Ù M1),
B[2] ß (A[3] Ù M1) Å (A[2] Ù M0) Å (A[1] Ù M3) Å (A[0] Ù M2),
B[3] ß (A[3] Ù M2) Å (A[2] Ù M1) Å (A[1] Ù M0) Å (A[0] Ù M3). (1.4)
- Битовая перестановка e для четных раундов: B=e(A) определяется как:
B[0] ß (A[3] Ù M1) Å (A[2] Ù M0) Å (A[1] Ù M3) Å (A[0] Ù M2),
B[1] ß (A[3] Ù M2) Å (A[2] Ù M1) Å (A[1] Ù M0) Å (A[0] Ù M3),
B[2] ß (A[3] Ù M3) Å (A[2] Ù M2) Å (A[1] Ù M1) Å (A[0] Ù M0),
B[3] ß (A[3] Ù M0) Å (A[2] Ù M3) Å (A[1] Ù M2) Å (A[0] Ù M1). (1.5)
Битовая перестановка просто перестраивает массив 4×4 байта, перемещая байт из (i, j)-ой позиции в (j, i)-ую позицию (См. Рисунок 1.3 для B=
A[0] |
a03 |
a02 |
a01 |
a00 |
B[0] |
a30 |
a20 |
a10 |
a00 |
|||
A[1] |
a13 |
a12 |
a11 |
a10 |
| B[1] |
a31 |
a22 |
a11 |
a01 |
||
A[2] |
a23 |
a22 |
a21 |
a20 |
Þ |
B[2] |
a32 |
a22 |
a12 |
a02 |
||
A[3] |
a33 |
a32 |
a31 |
a30 |
B[3] |
a33 |
a23 |
a13 |
a03 |
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13