- •В. Н. Ярмолик, а. П. Занкович, с. С. Портянко элементы теории информации
- •Содержание
- •Криптоанализ методов простой подстановки
- •Задания
- •Потоковые криптосистемы
- •Примитивные многочлены
- •Задания
- •Варианты заданий
- •Роторные криптосистемы
- •Задания
- •Симметричные криптосистемы. Алгоритм idea
- •Значения ключей, используемых в алгоритме idea для дешифрования
- •Задания
- •Арифметика чисел большой разрядности
- •Алгоритм сложения
- •Алгоритм умножения
- •Деление
- •Задания
- •Асимметричные криптосистемы. Алгоритм rsa
- •Задания
- •Электронная цифровая подпись
- •Алгоритм безопасного хеширования sha-1
- •Алгоритм цифровой подписи rsa
- •Задания
- •Криптосистемы на основе эллиптических кривых
- •Алгоритм обмена ключами в эллиптической группе
- •Алгоритм эцп на основе эллиптических кривых (ecdsa)
- •Задания
- •Варианты заданий
- •Элементы теории информации
- •220013, Минск, п. Бровки, 6
Значения ключей, используемых в алгоритме idea для дешифрования
Итерация (раунд) |
Обозначение |
Эквивалентное обозначение |
1 |
U1, U2, U3, U4, U5, U6 |
Z49–1, –Z50, –Z51, Z52–1, Z47, Z48 |
2 |
U7, U8, U9, U10, U11,U12 |
Z43–1, –Z45, –Z44, Z46–1, Z41, Z42 |
3 |
U13,U14,U15,U16,U17,U18 |
Z37–1, –Z39, –Z38, Z40–1, Z35, Z36 |
4 |
U19,U20,U21,U22,U23,U24 |
Z31–1, –Z33, –Z32, Z34–1, Z29, Z30 |
5 |
U25,U26,U27,U28,U29,U30 |
Z25–1, –Z27, –Z26, Z28–1, Z23, Z24 |
6 |
U31,U32,U33,U34,U35,U36 |
Z19–1, –Z21, –Z20, Z22–1, Z17, Z18 |
7 |
U37,U38,U39,U40,U41,U42 |
Z13–1, –Z15, –Z14, Z16–1, Z11, Z12 |
8 |
U43,U44,U45,U46,U47,U48 |
Z7 –1, –Z9, –Z8, Z10–1, Z5, Z6 |
9 |
U49,U50,U51,U52 |
Z1–1, –Z2, –Z3, Z4–1 |
При этом выполняются следующие соотношения:
Zj–1Zj = 1 mod (216+1); (9)
–ZjZj = 0 mod 216. (10)
Таким образом, для ключа Zjзначение, обозначаемое как –Zj, является аддитивным инверсным по модулю 216, а значение, обозначаемое какZj–1 – мультипликативным инверсным по модулю 216+1.
Порядок использования итерационных ключей при шифровании показан на рис. 11.
Рис. 11. Порядок использования итерационных ключей алгоритма IDEA
При выполнении дешифрования раунды алгоритма выполняются в таком же порядке. На вход первого раунда подаётся четыре 16‑битных подблока 64‑битного блока шифротекста. Значения, полученные после выполнения выходного раунда, являются подблоками 64‑битного блока исходного текста. Отличие от процедуры шифрования заключается в том, что вместо ключей Z1...Z52используются ключиU1...U52.
Задания
Разработать программное средство, выполняющее шифрование по алгоритму IDEA заданного файла с произвольным содержимым. Ключ шифрования подаётся в виде бинарного файла длиной 16 байт.
Разработать программное средство, выполняющее дешифрование заданного файла, зашифрованного по алгоритму IDEA. Ключ шифрования подается в виде бинарного файла длиной 16 байт.
Арифметика чисел большой разрядности
Размерность обрабатываемых в вычислительных машинах чисел обычно ограничивается размерностью машинного слова. Типичная переменная целочисленного типа занимает в памяти машины 8, 16, 32 или 64 бит. Для многих криптографических алгоритмов требуются числа намного большего размера. Например, рекомендуемый размер открытого ключа для алгоритма RSA составляет 4 Кбит. Рассмотрим реализацию базовых арифметических операций над целыми числами большого размера. Для представления цифр больших чисел удобно использовать систему счисления с основанием b, равным 2m, гдеm– размер машинного слова. Это наиболее компактный способ представления больших чисел, позволяющий хранить все цифры в массиве слов-переменных.
Алгоритм сложения
Алгоритм сложения неотрицательных чисел достаточно прост: цифры числа складываются, начиная с младших разрядов к старшим. Если зафиксировано переполнение (т. е. при сложении получена цифра, большая максимально возможной в данной системе счисления), то происходит перенос значения в следующий разряд. Рассмотрим реализацию сложения неотрицательных n‑разрядных целых чисел (un‑1, …,u0)b и (vn‑1, …,v0)b по основаниюb. Следующий алгоритм формирует их сумму (wn,wn‑1, …, w0)b, причемwn{0, 1}:
ADD(u, v, n)
j := 0; k := 0;
while j < n
do wj := uj + vj + k
if wj ≥ b
then wj := wj – b
k := 1
else k := 0
j := j + 1
wn := k
return (wn, …, w0)
Заметим, что при работе этого алгоритма всегда выполняются соотношения uj +vj+k≤ (b– 1) + (b– 1) + 1 < 2b, так что размер результата суммирования не превышает log22b=b+ 1 разрядов. Приведенный алгоритм может использоваться и для сложения отрицательных чисел. Для этого следует использовать их представление в дополнительном коде.