Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.
Следует учитывать, что данный режим шифрования обладает ограниченной криптостойкостью.
Другой режим шифрования называется режимом гаммирования.
Открытые данные, разбитые на 64-разрядные блоки T(i) (i=1,2,...,m) (m определяется объемом шифруемых данных), зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит, т.е.
Гш = (Г(1),Г(2),....,Г(m)).
Уравнение шифрования данных в режиме гаммирования может быть представлено в следующем виде:
Ш(i) =(f(Y(i) , f(Z(i)) ^ T(i)=Г(i) ^ T(i)
В этом уравнении Ш(i) обозначает 64-разрядный блок зашифрованного текста, f - функцию шифрования в режиме простой замены (аргументами этой функции являются два 32-разрядных числа). C1 и C2 - константы, заданные в ГОСТ 28147-89. Величины Y(i) и Z(i) определяются итерационно по мере формирования гаммы следующим образом:
(Z(0), Y(0)) = f(S), где S - 64-разрядная двоичная последовательность
Y(i) =Y(i-1) [+] C1, Z(i) = Z(i-1) {+} C2, i=1, 2, ..., m.
64-разрядная последовательность, называемая синхропосылкой, не является секретным элементом шифра, но ее наличие необходимо как на передающей стороне, так и на приемной.
Режим гаммирования с обратной связью очень похож на режим гаммирования. Как и в режиме гаммирования открытые данные, разбитые на 64-разрядные блоки T(i), зашифровываются путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит:
Гш=(Г(1), Г(2), ..., Г(m)).
Уравнение шифрования данных в режиме гаммирования с обратной связью выглядят следующим образом:
Ш(1) = f(S) ^ T(1) = Г(1) ^ T(1),
Ш(i) = f(Ш(i-1)) ^ T(i) = Г(i)^T(i), i=2, 3, ..., m.
В ГОСТ 28147-89 определяется процесс выработки имитовставки, который единообразен для всех режимов шифрования. Имитовставка - это блок из р бит (имитовставка Ир), который вырабатывается либо перед шифрованием всего сообщения либо параллельно с шифрованием по блокам. Параметр р выбирается в соответствии с необходимым уровнем имитозащищенности.
Для получения имитовставки открытые данные представляются также в виде блоков по 64 бит. Первый блок открытых данных Т(1) подвергается преобразованию, соответствующему первым 16 циклам алгоритма режима простой замены. В качестве ключа используется тот же ключ, что и для шифрования данных. Полученное 64-разрядное число суммируется побитно с открытым блоком Т(2) и сумма вновь подвергается 16 циклам шифрования для режима простой замены. Данная процедура повторятся для всехблоков сообщения. Из полученного 64-разрядного числа выбирается отрезок Ир длиной р бит.
Имитовставка передается по каналу связи после зашифрованных данных. На приемной стороне аналогичным образом из принятого сообщения выделяется имитовставка и сравнивается с полученной. В случае несовпадения имитовставок сообщение считается ложным.
КОНСТАНТЫ C1=1538417 341, C2=2591989193
СИНХРОПОСЫЛКА S=134987665736005221
ТАБЛИЦА ПОДСТАНОВОК Kij
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
K(1) | 1 | 0 | 0 | 1 | 5 | 9 | 8 | 4 | 6 | 5 | 2 | 3 | 13 | 12 | 7 | 4 |
K(2) | 0 | 3 | 8 | 1 | 11 | 13 | 6 | 10 | 2 | 15 | 7 | 4 | 14 | 5 | 12 | 9 |
K(3) | 4 | 7 | 13 | 5 | 0 | 3 | 12 | 1 | 9 | 8 | 10 | 14 | 6 | 2 | 11 | 15 |
K(4) | 10 | 15 | 2 | 12 | 9 | 14 | 7 | 6 | 8 | 4 | 0 | 13 | 3 | 11 | 5 | 1 |
K(5) | 6 | 1 | 4 | 10 | 2 | 12 | 0 | 15 | 8 | 13 | 3 | 11 | 5 | 9 | 14 | 7 |
K(6) | 8 | 11 | 7 | 14 | 15 | 5 | 12 | 2 | 0 | 9 | 10 | 1 | 6 | 13 | 3 | 4 |
K(7) | 11 | 5 | 9 | 4 | 3 | 1 | 15 | 8 | 7 | 2 | 14 | 0 | 13 | 12 | 10 | 6 |
K(8) | 4 | 13 | 15 | 5 | 0 | 3 | 12 | 7 | 10 | 11 | 8 | 9 | 6 | 1 | 14 | 2 |
Шифр IDEA (International Data Encryption Algorithm) был разработан Лэй и Мэсси из ETH в Цюрихе. Этот шифр, наряду с RSA, применяется в популярной компьютерной криптосистеме PGP (Pretty Good Privacy).
IDEA представляет собой блочный шифр, использующий 128 битный ключ, для преобразования открытых 64 битных текстовых блоков.
Графическая схема алгоритма IDEA
64 битный текстовый блок подвергается в ходе шифрования следующим процедурам:
· A^B - побитовое сложение по модулю 2;
если A+B=>2, то A^B=А+B-2
если A+B<2 , то A^B<А+B, где A и B 1-битные числа.
· A(+)B - сложение по модулю 216;
если A+B=>216, то A(+)B=A+B-216
если A+B<216 , то A(+)B=A+В, где A и B 16-битные числа.
· A(*)B - умножение по модулю 216+1;
если A* B=>216+1, то A(*)B=A*B-216-1
если A* B<216+1 , то A(*)B=A*B, где A и B 16-битные числа.
Процесс шифрования представляет собой цикл из восьми шагов:
На первом шаге:
p1 (*) s1 --> d1 p2 (+) s2 --> d2 p3 (+) s3 --> d3 p4 (*) s4 --> d4
d1 ^ d3 --> d5 d2 ^ d4 --> d6
d5 (*) s5 --> d7 d6 (+) d7 --> d8 d8 (*) s6 --> d9 d7 (+) d9 --> d10
d1 ^ d9 --> d11 d3 ^ d9 --> d12 d2 ^ d10 --> d13 d4 ^ d10 --> d14
p1, p2, p3, p4 – четыре 16 битных блока, на которые разбиваются один блок исходного текста
s1, s2, s3, s4, s5, s6 – шесть 16 битных подключей.
На следующем шаге в качестве p1, p2, p3, p4 используют d11, d13, d12, d14 и новые шесть подключей. Полученные четыре последние 16 битных блока и есть зашифрованный текст. Процесс дешифрования осуществляется аналогично.
Шифрование и дешифрование отличаются только подключами. Первые восемь подключей определяются с помощью 128 битного ключа, который разделяется на восемь частей. Новые восемь подключей определяются следующим образом: начальный ключ смещается на 25 бит, и разделяется на восемь частей.
Подключи для дешифрования определяются таблицей:
1 шаг s49* s50# s51# s52* s47 s48
2 шаг s43* s45# s44# s46* s41 s42
3 шаг s37* s39# s38# s39* s35 s36
4 шаг s31* s33# s32# s34* s29 s30
5 шаг s25* s27# s26# s28* s23 s24
6 шаг s19* s21# s20# s22* s17 s18
7 шаг s13* s15# s14# s16* s11 s12
8 шаг s7* s9# s8# s10* s5 s6
Последнее преобразование s1* s2# s3# s4*
sXX* = мультипликативная инверсия sXX по модулю 216+1
sXX# = аддитивная инверсия sXX по модулю 216
Как бы ни были сложны и надежны криптографические системы - их слабое место при практической реализации - проблема распределения ключей. Для того чтобы был возможен обмен конфиденциальной информацией между двумя субъектами ИС, ключ должен быть сгенерирован одним из них, а затем, в конфиденциальном порядке, передан другому. Т.е. в общем случае для передачи ключа опять же требуется использование какой-то криптосистемы.
Для решения этой проблемы на основе результатов, полученных классической и современной алгеброй, были предложены системы с открытым ключом.
Суть их состоит в том, что каждым адресатом ИС генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым, а другой закрытым. Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне.
Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщение возможно только с использованием закрытого ключа, который известен только самому адресату.
Асимметричные криптографические системы используют так называемые необратимые или односторонние функции, которые обладают следующим свойством: при заданном значении x относительно просто вычислить значение f(x), однако если y=f(x), то нет простого пути для вычисления значения x.
Алгоритмы шифрования с открытым ключом получили широкое распространение в современных информационных системах. Так, алгоритм RSA стал мировым стандартом де-факто для открытых систем.
Алгоритмы криптосистем с открытым ключом можно использовать в 3 назначениях.
1. Как самостоятельные средства защиты передаваемых и хранимых данных.
2. Как средства для распределения ключей.
3. Средства аутентификации пользователей.
Алгоритмы криптосистем с открытым ключом более трудоемки, чем традиционные криптосистемы, поэтому использование их в качестве самостоятельных средств защиты нерационально.
Поэтому на практике рационально с помощью криптосистем с открытым ключом распределять ключи, объем которых как информации незначителен. А потом с помощью обычных алгоритмов осуществлять обмен большими информационными потоками.