Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Отчёт
по лабораторной работе № 4
по криптографии
Кишинёв 2022
Алгоритм DES (Data Encryption Standard)- алгоритм для симметричного шифрования, разработанный
фирмой IBM является наиболее широко используемым алгоритмом шифрования в мире. Размер
блока для DES равен 64 битам. В основе алгоритма лежит сеть Фейстеля с 16 циклами (раундами)
и ключом, имеющим длину 56 бит. Алгоритм использует комбинацию нелинейных (S-блоки) и
линейных (перестановки E, IP, IP-1) преобразований.
m = The Data Encryption Standard (DES) specifies two FIPS approved cryptographic algorithms as
required by FIPS 140-1. When used in conjunction with American National Standards Institute (ANSI)
X9.52 standard, this publication provides a complete description of the mathematical algorithms for
encrypting (enciphering) and decrypting (deciphering) binary coded information.
K = 133457799BBCDFF1
Затем разделим этот ключ на левую и правую половины, C0 и D0, где каждая
половина имеет 28 бит.
Число Количество
Раундов сдвигов Влево
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1
//Чтобы выполнить сдвиг влево, перемещаем каждый бит на одно место влево, за
исключением первого бита, который циклически перемещается до конца блока.
Ln = Rn-1
Rn = Ln-1 + f(Rn-1,Kn)
Для n = 1 мы имеем
R1 = L0 + f(R0,K1)
Чтобы вычислить f, мы сначала расширяем каждый блок Rn-1 с 32 бит до 48 бит. Это
делается с помощью таблицы выбора, которая повторяет некоторые биты в Rn-1 .
K1 + E(Rn-1).
//Далее мы делаем что-то странное с каждой группой из шести битов: мы используем их в качестве
адресов в таблицах, называемых "S boxes". Каждая группа из шести битов даст нам адрес в другом
поле S. По этому адресу будет располагаться 4-разрядное число. Это 4-разрядное число заменит
исходные 6 бит. Конечным результатом является то, что восемь групп по 6 битов преобразуются в
восемь групп по 4 бита (4-разрядные выходные данные из блоков S), всего 32 бита.
Kn + E(Rn-1) =B1B2B3B4B5B6B7B8
где каждый Bi представляет собой группу из шести битов.
Теперь мы вычисляем:
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8)
S1
Номер столбца
ряд. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
//для входного блока B = 000110 первый бит равен "0", и последний бит "0" дает 00 в качестве
строки. Это строка 0. Средние четыре бита - это "0011". Это двоичный эквивалент десятичного числа
3, поэтому столбец имеет номер столбца 3. В строке 0 в столбце 3 отображается 1. Это определяет
выходной сигнал; 1 - двоичный 0001, так что выходной сигнал равен 0001. Следовательно, S1 = 0001
f = P(S1(B1)S2(B2)...S8(B8))
мы получаем:
R1 = L0 + f(R0 , K1 )
R1L1
Примечание: наш открытый текст имел длину ровно 64 бита. Но большинство сообщений не будут
точно кратны 64 битам
(то есть точному кратному 16 шестнадцатеричным числам). Например, возьмем сообщение "Ваши
губы более гладкие, чем вазелин". Длина этого открытого текстового сообщения составляет 38 байт (
76 шестнадцатеричных цифр). Таким образом, это сообщение должно быть дополнено несколькими
дополнительными байтами в конце для шифрования. Как только зашифрованное сообщение
расшифровано, эти дополнительные байты отбрасываются.