
5 Лекция - Режимы использования блочных шифров
.pdf
РЕЖИМЫ ИСПОЛЬЗОВАНИЯ БЛОЧНЫХ ШИФРОВ
Согласно данному нами ранее определению блочного шифра, преобразования Е() и D(), определяющие алгоритмы зашифрования и расшифрования блочного шифра, позволяют обрабатывать блоки небольшой фиксированной длины n.
Для обработки данных произвольной длины необходимо реализовать процедуру, которая позволит зашифровать или расшифровать данные произвольной длины путем многократного применения преобразования Е() или преобразования D(). Такая процедура называется режимом шифрования блочного шифра. Все множество известных режимов шифрования можно разделить на четыре класса.
1.Поточные шифры, которые используют преобразование Е() для выработки шифрующей двоичной последовательности. Внутреннее состояние такого шифра описывается двоичным вектором w Vn , длина которого совпадает с длиной блока используемого блочного шифра. В общем виде функционирование такого поточного шифра может быть описано следующим образом.
Вначале внутреннее состояние шифра инициализируется при помощи некоторого значения Iv, для которого в отечественной литературе закрепилось название синхропосылка. Далее, на каждом такте работы поточного шифра происходит изменение внутреннего состояния w; и с помощью преобразования E k,w вырабатывается гамма, используемая для шифрования сообщения.
Такими поточными шифрами являются режимы гаммирования, гаммирования с обратной связью и различные варианты режима счетчика. В силу обратимости операции сложения по модулю два (гаммирования) для данных режимов шифрования алгоритмы зашифрования и расшифрования совпадают.
2. Режимы последовательного шифрования блоков, в которых результат преобразования последующего блока шифруемого сообщения зависит от преобразования предыдущего блока. Таким
1
образом, если в процессе зашифрования/расшифрования одного блока произойдет ошибка, то все последующие блоки также будут зашифрованы/расшифрованы ошибочно. Шифры с указанным свойством принято называть шифрами, размножающими ошибки.
К этой группе режимов шифрования можно отнести режим шифрования с зацеплением блоков (СВС).
3.Режимы шифрования блочных устройств, в которых шифрование каждого блока производится независимо от других блоков шифруемого сообщения. Это свойство позволяет реализовывать независимый доступ к различным частям сообщения, а также параллельное зашифрование/расшифрование сообщений, что существенно повышает скорость работы шифра. К подобным режимам можно отнести режим простой замены, режим счетчика, режимы GCM и XTS.
4.Режимы шифрования с возможностью аутентификации сообщений, в которых процедура зашифрования сообщения совмещается с процедурой вычисления кода аутентичности сообщения, то есть некоторой контрольной суммы, зависящей от секретного ключа. Данные режимы называют также режимами аутентифицирующего шифрования (на английском языке используется термин authenticated encryption). Мы будем рассматривать эти режимы
далее.
Внастоящее время разработано достаточно большое число режимов шифрования. Часть из них стандартизирована, например, национальным стандартом Российской Федерации ГОСТ Р 34.13-2015 (ранее стандартом ГОСТ 28147-89, ныне – межгосударственным стандартом ГОСТ 34.13 - 2018), стандартом ИСО/МЭК 10116 или изложена в качестве рекомендаций американского национального института стандартизации NIST SP 800-38А.
Вмежгосударственном стандарте ГОСТ 34.13-2018 приводится несколько режимов работы: режим простой замены, режим гаммирования, режим гаммирования с обратной связью по выходу, режим простой замены с зацеплением, режим гаммирования с обратной связью по шифртексту и режим выработки имитовставки.
Отличия перечисленных режимов, выраженные в разной степени сохранения статистических особенностей данных, восприимчивости к возникающим ошибкам при передаче данных, возможности распараллеливания алгоритма или проведения предварительных вычислений, позволяют в зависимости от рассматриваемой задачи осуществить выбор наиболее подходящего режима работы блочного шифра.
Далее мы опишем некоторые наиболее часто реализуемые на практике режимы шифрования применительно к произвольному блочному шифру, для которого определены преобразования зашифрования Е() и расшифрования
D().
2

Режим простой замены
Наиболее простым режимом блочного шифрования является режим простой замены (в англоязычной литературе используется термин The Electronic Codebook Mode, ECB). Пусть задан ключ шифрования k Vm ,
произвольное натуральное число l, кратное n, и открытый текст a - зашифровываемое сообщение, len(а) = l. Представим открытый текст а в виде последовательности из w блоков фиксированной длины n, то есть
a a1 ||...||aw,a1,...,aw Vn,len a l wn.
Под режимом простой замены мы будем подразумевать отображение ECB k,a :Vm Vl Vl , определенное равенством
ECB k,a ECB k,a1 ||...||ECB k,aw .
Схематично режим простой замены может быть представлен следующим образом
Легко видеть, что обратное преобразование - алгоритм расшифрования в режиме простой замены — определяется следующим образом. Пусть с =
ЕСВ(k,а) и c c1 ||...||cw , тогда
ECB 1 k,c D k,c1 ||...||D k,cw .
Поскольку при фиксированном ключе k Vm преобразование Е() реализует перестановку на множестве Vn, то в режиме простой замены одинаковые блоки открытого текста переходят в одинаковые блоки зашифрованного текста. Режим простой замены есть ни что иное, как шифр простой замены в алфавите мощности 2n, и к нему применимы все методы анализа, описанные ранее.
Учитывая этот факт, в стандарте ГОСТ 28147-89 в явном виде было указано: «Режим простой замены допускается использовать для зашифрования (расшифрования) ключей алгоритма шифрования, а также
3
перестановок, используемых в алгоритме шифрования ГОСТ 28147-89». Таким образом, использование режима простой замены допустимо только для шифрования ключевой информации.
Следует также отметить, что режим простой замены позволяет зашифровывать и расшифровывать только данные, длина которых кратна длине блока n. Для данных произвольной длины режим простой замены в ГОСТ 28147-89 был не определен. В стандарте ГОСТ 34.12-2018 вводятся три процедуры дополнения сообщения до длины, кратной n.
1. Первая процедура предписывает дополнять исходное сообщение до длины, кратной дайне блока n, нулями. Пусть, как и ранее, l — длина сообщения а. Пусть r l modn и r > 0,
a a1 ||...||aw,a1,...,aw 1 Vn,len aw r,
тогда дополненное сообщение будет иметь вид
a' a1 ||...||aw ', aw ' aw ||0...0, len aw ' n.
n r
Если выполнено равенство r = 0, то дополненное сообщение совпадает с исходным, то есть а' = а.
Отметим, что для однозначного восстановления исходного сообщения
аиз дополненного сообщения a' необходимо знать длину сообщения n.
2.Вторая процедура предписывает дополнять исходное сообщение единицей, а потом последовательностью нулей до длины, кратной n. Пусть r определено, как и в первой процедуре. Если r > 0, то исходное сообщение а дополняется следующим образом:
a' a1 ||...||aw ', aw ' aw ||1||0...0, len aw ' n
n r 1
Если выполнено равенство r = 0, то есть длина исходного сообщения кратна n, то сообщение а' имеет вид
a' a||1||0...0,
n 1
то есть его длина увеличивается на n бит.
Данная процедура обеспечивает однозначное восстановление исходного сообщения. При этом если длина исходного сообщения кратна n, то длина дополненного сообщения будет увеличена.
3. Третья процедура дополнения, предписываемая ГОСТ Р 34.13-2015, является комбинацией двух предыдущих и заключается в следующем. Если длина исходного сообщения кратна n, то а' = а. В противном случае применяется вторая процедура.
Втексте стандарта третья процедура рекомендуется для использования
врежиме выработки имитовставки, и не рекомендуется для использования в других режимах.
Режимы гаммирования
Ранее, в курсе криптографических протоколов, мы рассматривали шифры гаммирования. Режимы гаммирования для блочных шифров также
4

представляют собой поточные шифры и реализуют процедуры, в которых криптографическое преобразование одного блока данных используется для выработки гаммы — двоичной последовательности, применяемой для зашифрования/расшифрования информации.
Режим гаммирования с обратной связью по выходу
Мы начнем с режима гаммирования, который принято называть режимом гаммирования с обратной связью по выходу (Output Feedback Mode, OFB). Данный режим регламентируется рекомендациями американского национального института стандартизации NIST SP 800-38А (а точнее NIST Special Publication 800-38А. Recommendation for Block Cipher Modes of Operation. Methods and Techniques), а также стандартами ГОСТ 34.13-2018 и ISO 10116. Режим представляет собой рассмотренный нами ранее поточный шифр.
Пусть заданы ключ шифрования k Vm , инициализационный вектор (синхропосылка) Iv Vn и открытый текст а, представленный в виде последовательности из w блоков
a a1 ||...||aw,a1,...,aw 1 Vn,len a l.
При этом длина последнего блока аw может быть меньше n, то есть len(a) = l = (w-1)n + 1еn(aw).
Режим гаммирования с обратной связью но выходу представляет собой отображение
OFB k,Iv,a :Vm Vn Vl Vl ,
задаваемое равенством
OFB k,Iv,a c1 ||...||cw a1 1 ||...||aw w
где значение Iv Vn является синхропосылкой, используемой для начальной установки внутреннего состояния Vn поточного шифра. Блоки шифрованного текста с1...,сw определяются равенствами
0 E k,Iv ,
i i 1,
i E k, i ,
ci ai i i 1,w
Если последний блок открытого текста aw имеет длину, меньшую n, то для его шифрования используется len(aw) младших бит вектора γw. Схематично режим гаммирования с обратной связью по выходу может быть представлен следующим образом:
5

Известно, что двукратное шифрование одной и той же гаммой является потенциально опасным и может привести к дешифрованию сообщения. Для предотвращения подобной ситуации в режиме гаммирования используется синхропосылка Iv - при фиксированном ключе k каждому значению синхропосылки соответствует своя последовательность γ0, γ1,…
Используемое значение Iv не является секретным, должно передаваться или храниться вместе с зашифрованным текстом и использоваться для расшифрования сообщения.
В силу обратимости операции сложения по модулю два процедура расшифрования аналогична процедуре шифрования, то есть
OFB 1 k,Iv,a OFB k,Iv,c .
Следует заметить, что период используемой для шифрования последовательности γ0, γ1,… совпадает с периодом последовательности ω0, ω1,…, описывающей множество внутренних состояний поточного шифра. Поскольку величины ωi удовлетворяют равенствам
0 Iv, i E k, i 1 i 1,w,
то период последовательности ω0, ω1,… существенно зависит от начального значения Iv, значения ключа k Vm , свойств отображения Е() и не всегда может принимать максимально возможное значение. Более того, если при случайном выборе ключа k рассматривать отображение Е(k, а) как случайное, то период последовательности ω1, ω2,… в среднем будет равен 2n/2. Таким образом, шифрование в режиме гаммирования сообщений, для которых выполнено неравенство len(а) > 2n/2, является потенциально опасным.
Для предотвращения подобной ситуации в стандарте ГОСТ 28147-89 режим гаммирования определялся несколько иным способом, а именно:
6

0 |
E k,Iv , |
|
|
||
i |
f i 1 , |
|
|
||
i |
. |
|
|
||
E k, i , |
|
|
|||
ci ai i i |
|
|
|
|
|
1,w |
|
|
|||
В |
приведенных выше равенствах |
используется |
преобразование |
||
f :V64 V64 , позволяющее гарантировать |
достаточно |
большой период |
последовательности ω0, ω1,… внутренних состояний поточного шифра. Начальным значением служит результат зашифрования синхропосылки Iv, а
каждое следующее значение i,i 1,w, определяется |
при помощи |
преобразования f следующим образом.
Представим двоичный вектор i в виде конкатенации i i || i , гдеi, i V32 . Представим i и i в виде целых неотрицательных чисел, не превосходящих 232, определим константы
u1 = 16843009, u2 = 16843012
и зададим отображение f i 1 || i 1 i || i,i 1,w, равенствами
|
|
|
|
32 |
|
|
|
i |
i 1 u1 mod2 |
|
|
|
|||
|
|
u2 |
1 mod2 |
32 |
1 |
||
i |
i 1 |
|
Легко показать, что период последовательности α1, α 2,… |
равен 232, а |
|
период последовательности β1, β2,… равен 232 —1. |
Тогда |
период |
последовательности ω1, ω2,… равен 232(232-1). Именно эта величина является верхней границей числа блоков в сообщении, которое может быть зашифровано алгоритмом ГОСТ 28147-89 на одном ключе k в режиме гаммирования.
Схематично режим гаммирования алгоритма ГОСТ 28147-89 можно изобразить как на рисунке выше.
7

Режим гаммирования с обратной связью по шифртексту
Режим гаммирования с обратной связью по шифртексту (в англоязычной литературе используется термин The Cipher Feedback Mode, CFB) представляет собой поточный шифр, в котором функция изменения внутреннего состояния зависит от зашифрованного текста.
Пусть, как и ранее, задан ключ шифрования k Vm и открытый текст а, представленный в виде последовательности из w блоков,
a a1 ||...||aw,a1,...,aw 1 Vn,len a l.
При этом длина последнего блока aw может быть меньше n, то есть len(a) = l = (w-1)n + 1еn(aw).
Режим гаммирования с обратной связью но шифртексту представляет собой отображение
CFB k,Iv,a :Vm Vn Vl Vl ,
задаваемое равенством
CFB k,Iv,a c1 ||...||cw a1 1 ||...||aw w
где Iv Vn является синхропосылкой. Блоки шифрованного текста с1...,сw определяются равенствами
0 E k,Iv ,i E k, i ,
ci ai i,
i ci i 1,w
Если последний блок открытого текста aw имеет длину, меньшую n, то для его шифрования используется len(aw) младших бит вектора γw. Схематично мы можем изобразить режим гаммирования с обратной связью по шифртексту следующим образом.
8

Так же как и в режиме гаммирования с обратной связью по выходу, в режиме гаммирования с обратной связью по шифртексту начальное состояние поточного шифра инициализируется значением синхропосылки Iv. При этом функция изменения внутреннего состояния зависит от шифруемого сообщения и может быть записана в виде
i ai E k, i 1 i 1,w.
В силу обратимости операции сложения по модулю два процедура расшифрования в режиме гаммирования с обратной связью аналогична процедуре шифрования, то есть
CFB 1 k,Iv,a CFB k,Iv,c .
Режим счетчика
Режим счетчика (в англоязычной литературе используется термин The Counter Mode, CTR), так же как и изложенные выше режимы гаммирования, является поточным шифром, использующим для шифрования сообщений операцию сложения по модулю два.
Данный режим включен в рекомендации американского национального института стандартизации NIST SP 800-38A, а также в стандарт ГОСТ 34.132018 и может рассматриваться как некоторое неформальное обобщение описанных нами ранее режимов гаммирования.
Пусть, как и ранее, задан ключ шифрования k Vm , синхропосылка Iv Vn и открытый текст а, представленный в виде последовательности из w блоков,
a a1 ||...||aw,a1,...,aw 1 Vn,len a l.
При этом длина последнего блока aw может быть меньше n, то есть len(a) = l = (w-1)n + 1еn(aw).
Режим счетчика представляет собой отображение
CTR k,Iv,a :Vm Vn Vl Vl ,
задаваемое равенством
CTR k,Iv,a c1 ||...||cw a1 1 ||...||aw w .
Блоки шифрованного текста с1...,сw определяются равенствами
i E k, i ,
ci ai i |
i 1,w |
где ω1..., ω w есть последовательность внутренних состояний поточного шифра. Если последний блок открытого текста aw имеет длину, меньшую n, то для его шифрования используется len(aw) младших бит вектора γw..
Рекомендации NIST SP 800-38A предоставляют пользователю режима счетчика возможность самостоятельно определять способ генерации последовательности
Для тех, кто не может самостоятельно определить способ генерации последовательности ω1, ω2,… в рекомендациях NIST, а также в ГОСТ 34.132018 предлагается следующая простая последовательность действий.
9

Величина ω0 полагается равной Iv и представляется в виде целого неотрицательного числа в интервале [0,2n - 1]. Тогда
i i 1 1 mod2n i 1,w.
Таким образом, значения ω1, ω2,… образуют последовательность идущих подряд целых чисел, начальное значение которых определяется значением синхропосылки Iv. Поскольку нарушителю известно данное значение, то он может легко вычислить все элементы последовательности ω1, ω2,… и использовать данные значения при попытках компрометации шифруемого сообщения.
Другим недостатком данного способа генерации последовательности внутренних состояний шифра является их регулярность - каждое последующее значение отличается от предыдущего ровно на один бит. Один из возможных способов избавиться от указанных недостатков заключается в следующем.
Рассмотрим поле GF(2n), порожденное неприводимым над {0,1} многочленом g(х) степени n.
При n = 128 может быть использован, например, многочлен g(х) = х128 + +х7 + х2 + х + 1, а при n = 64 - многочлен g(х) = х64 + х4 + х3 + х + 1. Также
зафиксируем α = х — примитивный элемент поля GF(2n).
Определим начальное значение ω0 равенством ω0 = Е(k, Iv) и будем вычислять последовательность внутренних состояний при помощи равенств
i i 1 0 i
Отметим, что для эффективного вычисления следующего элемента последовательности могут быть использованы дополнительные соотношения.
Другой способ избавления от регулярности значений ω1..., ω w был предложен в ГОСТ 28147-89. Режим гаммирования ГОСТ 28147-89 есть не что иное, как режим счетчика с заданным законом инициализации начального состояния ω0 и законом преобразования внутреннего состояния шифра.
Предложите свой собственный способ преобразования внутренних состояний поточного шифра, реализуемого режимом счетчика так, чтобы период последовательности этих состояний был равен 2rn при r = 1,2,....
Режим простой замены с зацеплением
Режим простой замены с зацеплением (в англоязычной литературе используется термин The Cipher Block Chaining Mode, СВС)
регламентируется рекомендациями американского института стандартизации
NIST SP 800-38А, а также ГОСТ Р 34.13-2015.
Данный режим шифрования не является шифром гаммирования и представляет собой процедуру преобразования блоков открытого текста, в которой каждый блок шифрованного текста зависит от предыдущих блоков.
10