Задание данного раздела предусматривает зашифрование открытого сообщения с присоединенной к нему цифровой подписью в одном из предлагаемых ниже режимов 1-14.1. Режим электронной кодовой книги – ЕСВ (Electronic Code Book). В ГОСТ 28147-89 этот режим называется режимом простой замены. Режим ЕСВ – простейший режим шифрования. Все блоки открытого текста шифруются независимо друг от друга. Уравнения зашифрования и расшифрования имеют вид (см. рис. 1):
(а) Зашифрование
(б) Расшифрование Рис.1. Режим электронной кодовой книги ЕСВ 2. Режим сцепления блоков шифртекста – СВС (Cipher Block Chaining). Уравнения зашифрования и расшифрования имеют вид (см. рис.2): Ci:= Ek(Pi Å Ci-1), Pi:= Dk(Ci) Å Ci-1, Здесь С0 – блок, значение которого известно как отправителю, так и получателю сообщения. Блок С0 называют вектором инициализации (iv – initial vector, русский термин – синхропосылка). Рекомендуется для каждого сообщения выбирать уникальный вектор инициализации (используя, например, метку времени) и передавать его получателю в зашифрованном виде. (a) Зашифрование (б) Расшифрование Рис.2. Режим сцепления блоков шифртекста СВС
3. Режим обратной связи по шифртексту – CFB (Cipher Feed Back). В ГОСТ 28147-89 аналогичный режим называется режимом гаммирования с обратной связью. Уравнения зашифрования и расшифрования имеют вид (см. рис.3): Ci:= Pi Å Ek(Ci-1), Pi:= Ci Å Ek(Ci-1), Значение С0 задается при помощи вектора инициализации и передается получателю в открытом виде. Рис.3. Режим обратной связи по шифртексту CFB
4. Режим обратной связи по выходу – OFB (Output Feed Back). Уравнения зашифрования и расшифрования имеют вид (см. рис.4а): Сi:= Pi Å gI, Pi:= Ci Å gI, Последовательность g1, g2, …, называемая гаммой шифра, вырабатывается по правилу: gi:= Ek(gi-1), Значение g0, задаваемое вектором инициализации (синхропосылкой), должно быть уникальным для каждого сообщения, но сохранять его в тайне не обязательно. 5. Режим счетчика – Counter. В ГОСТ 28147-89 ему соответствует режим гаммирования. Уравнения зашифрования и расшифрования имеют вид (см. рис.4б): Сi:= PiÅgi, Pi:= CiÅgi, Гамма шифра g1, g2,… вырабатывается по правилу: gi = Ek(si), где si – некоторая последовательность чисел, определяемая формулой si=si-1+1 либо каким-либо другим способом.
(а) (б) Рис.4. (а) Зашифрование в режиме OFB; (б) зашифрование в режиме счетчика (ГПК – генератор псевдослучайных кодов). Расшифрование осуществляется аналогично
6. Режим сцепления блоков открытого текста – РВС (Plaintext Block Chaining) – является обратным к режиму СВС. Уравнения зашифрования и расшифрования имеют вид (см. рис.5): Сi:= Ek(Pi)Å Pi-1, ; Pi:= Dk(CiÅ Pi-1), Значение Р0 задается вектором инициализации (синхропосылкой). (a) Зашифрование (б) Расшифрование Рис.5. Режим сцепления блоков открытого текста РВС
7. Режим обратной связи по открытому тексту – PFB (Plaintext Feed Back) – является обратным к режиму CFB. Уравнения зашифрования и расшифрования имеют вид (см. рис.6): Сi:= PiÅEk(Pi-1), Pi:= CiÅEk(Pi-1), Значение Р0 задается вектором инициализации (синхропосылкой).
Рис.6. Режим обратной связи по открытому тексту PFB
8. Режим усиленного сцепления блоков шифртекста – модификация режима СВС. Уравнения зашифрования и расшифрования имеют вид Сi:= Pi-1 Å Ek(Pi Å Ci-1), Pi:= Ci-1 Å Dk(Ci Å Pi-1), Значения С0 и Р0 задаются векторами инициализации (синхропосылками).
(a) Зашифрование (б) Расшифрование Рис.7. Режим усиленного сцепления блоков шифртекста
9. Режим сцепления блоков шифртекста с распространением ошибки – РСВС (Propagating Cipher Block Chaining), как и предыдущий режим, является модификацией режима СВС. Уравнения зашифрования и зашифрования имеют вид (см. рис.8): Ci:= Ek(Pi Å Pi-1ÅCi-1), Pi:= Dk(Ci)Å Ci-1ÅPi-1, Значение С0 Å Р0 задается вектором инициализации.
(а) Зашифрование (б) Расшифрование Рис.8. Режим сцепления блоков шифртекста с распространением ошибки РСВС
10. Режим нелинейной обратной связи по выходу – OFBNLF (Output Feed Back with Nonlinear Function) – смешанный вариант режимов OFB и ECB, где ключ изменяется в каждом блоке. Уравнения зашифрования и расшифрования имеют вид (см. рис.9): Ci:=Eki(Pi), ki=Ek(ki-1), Pi:=Dki(Ci), ki=Ek(ki-1), Значение k0 задается вектором инициализации (синхропосылкой).
(а) Зашифрование (б) Расшифрование Рис.9. Режим нелинейной обратной связи по выходу OFBNLF
11. Режим счетчика с нелинейной функцией – CNLF (Counter with Nonlinear Function). Уравнения зашифрования и расшифрования имеют вид (см. рис.10): Ci:=Eki(Pi), ki=Ek(si), Pi:=Dki(Ci), ki=Ek(si), Последовательность s1, s2, … вырабатывается, например, по правилу si=si-1+1 либо каким-нибудь другим способом (например, с использованием ГПК – генератора псевдослучайных кодов), исходя из начального значения s0, заданного вектором инициализации (синхропосылкой).
(а) Зашифрование (б) Расшифрование Рис.10. Режим счетчика с нелинейной функцией CNLF
12. Режим сцепления блоков – ВС (Block Chaining mode). Уравнения зашифрования и расшифрования имеют вид (см. рис.11): Сi:=Ek(Pi Å Fi), Pi:=Dk(Ci) Å Fi, Значение F1 задается вектором инициализации, а Fi=Fi-1Å Ci-1 при .
(а) Зашифрование (б) Расшифрование Рис.11. Режим сцепления блоков ВС mode
13. Режим заимствования шифрованного текста – CTS (Cipher Text Stealing) – модификация режима СВС, допускающая обработку текста любой длины и генерирующая шифртекст точно такой же длины. Пусть Р=Р1Р2…Рm-1Pm – открытый текст, разбитый на блоки Рi, 1£i£m, где Рm – неполный блок, имеющий длину q битов вместо положенной длины n битов для полного блока, q<n. Шифртекст С=С1 С2 … Сm-1 Cm, где Cm – неполный блок длины q, получается по схеме (см. рис.12): 1) первые m-2 блоков Рi шифруются с помощью стандартной техники СВС: Сi:=Ek(PiÅCi-1), 2) шифруется побитовая сумма блоков Рm-1 и Cm-2: X:=Ek(Pm-1ÅCm-2); в блоке Х выбираются первые q битов, которые образуют неполный блок Сm; 3) блок Рm дополняется нулями до полного блока и суммируется с блоком Х; результат шифруется, что дает блок Сm-1: Cm-1:=Ek((Pm || 0) Å X). Расшифрование выполняется по схеме: 1) Pi:=Dk(Ci)ÅCi-1, 2) X:=Dk(Cm-1)Å(Cm||0); 3) Pm образуют первые битов блока ; 4) Pm-1:=Dk(Cm||X′)Å Cm-2, где X′ - блок, образованный последними битами блока .
(а) Зашифрование (б) Расшифрование Рис.12. Режим CTS (зашифрование и расшифрование двух последних блоков; начальные блоки шифруются в режим СВС) 14. Вероятностное шифрование. Основным недостатком режима СВС является тот факт, что одинаковые блоки шифруются одинаково. Чтобы устранить этот недостаток и повысить стойкость шифрования, можно использовать вероятностное шифрование, суть которого заключается в подмешивании случайных данных к шифруемому сообщению. Пусть обозначает некоторую функцию шифрования t-битового блока данных под управлением ключа К, – обратную функцию, R – r-битовый случайный (псевдослучайный) блок, генерируемый датчиком случайных чисел ДСЧ, Р – s‑битовый блок шифруемых данных, С – (r+s)‑битовый блок шифртекста, результат зашифрования блока Р, (R,P)ºR||P – конкатенацию блоков R и Р. Некоторые варианты вероятностного шифрования представлены на рис.13 и 14. В первом варианте блок P следующим образом преобразуется в блок C шифртекста: Т:= (Р); С:= (R||T). Расшифрование выполняется по схеме: (R,T):= (C); P:= (T). Во втором варианте блок R разбивается на два блока: r1‑битовый R1 и r2‑битовый R2, а блок P следующим образом преобразуется в блок C шифртекста: T:= (R2||P); C:= (R1||T). Расшифрование выполняется по схеме: (R1,T):= (C); (R2,P):= (T).
Еще один вариант представлен на рис.15.
Рис.15. Объединение нескольких блочных алгоритмов
К недостаткам предложенных режимов вероятностного шифрования относится увеличение размера шифртекста по сравнению с открытым текстом.
|