Перед шифрованием открытый текст
Размер открытого текста может быть не кратен размеру блока шифрования. В этом случае для последнего блока применяют процедуру дополнения (удлинения) до стандартного размера. Процедура должна быть обратимой: после расшифрования последнего блока пакета лишние байты необходимо обнаружить и удалить. Некоторые способы дополнения:
После шифрования всех блоков открытого текста (блоков шифрования) получается набор блоков шифртекста
Существует несколько режимов работы блочных шифров: режим электронной кодовой книги, режим шифрования зацепленных блоков, режим обратной связи, режим шифрованной обратной связи, режим счётчика. Рассмотрим особенности каждого из этих режимов.
В стандарте ГОСТ 28147-89 данный режим называется режимом простой замены. [131]В режиме электронной кодовой книги (англ. Electronic Code Book, ECB, рис. 5.12) открытый текст в пакете разделён на блоки
В процессе шифрования каждому блоку
Если в открытом тексте есть одинаковые блоки, то в шифрованном тексте им также соответствуют одинаковые блоки. Это даёт дополнительную информацию для криптоаналитика, что является недостатком этого режима. Другой недостаток состоит в том, что криптоаналитик может подслушивать, перехватывать, переставлять, воспроизводить ранее записанные блоки, нарушая конфиденциальность и целостность информации. Поэтому при работе в режиме электронной кодовой книги нужно вводить аутентификацию сообщений.
Шифрование в режиме электронной кодовой книги не использует сцепление блоков и синхропосылку (вектор инициализации). Поэтому для данного режима применима атака на различение сообщений, так как два одинаковых блока или два одинаковых открытых текста шифруются идентично.
На рис. 5.13 приведён пример шифрования графического файла морской звезды в формате BMP, 24 бита цветности на пиксель (рис. 5.13a), блочным шифром AES с длиной ключа 128 бит в режиме электронной кодовой книги (рис. 5.13b). В начале зашифрованного файла был восстановлен стандартный заголовок формата BMP. Как видно, в зашифрованном файле изображение всё равно различимо.
BMP файл в данном случае содержит в самом начале стандартный заголовок (ширина, высота, количество цветов), и далее идёт массив 24-битовых значений цвета пикселей, взятых построчно сверху вниз. В массиве много последовательностей нулевых байтов, так как пиксели белого фона кодируются 3 нулевыми байтами. В AES размер блока равен 16 байтам, и, значит, каждые
Преимущества:
Недостатки:
Основным минусом режима является сохранение статистических особенностей открытого текста на уровне шифртекста (одинаковые блоки шифруются одинаково). Причём это поведение сохраняется и между сессиями, что позволяет злоумышленнику, используя информацию из сторонних каналов (например, зная о предпринятых действиях получателя сообщения), составить словарь между переданными блоками шифртекста и предполагаемыми – открытого текста. То есть злоумышленник может попытаться восстановить соответствующую кодовую книгу для данного ключа шифрования и потом восстанавливать сообщения по этой книге без знания ключа шифрования.
Когда говорят про восстановление после ошибок передачи, то рассматривают ситуацию, в которой один или несколько бит одного блока шифртекста поменяли
своё значение в процессе передачи по каналу связи между отправителем (тем, кто шифрует) и получателем (тем, кто расшифровывает). В режиме ECB изменение даже одного бита переданного блока шифртекста приведёт к тому, что весь блок открытого текста будет расшифрован неверно.
То есть вместо блока открытого текста получится 64 или 128 бит мусора (случайных бит). Однако все последующие блоки шифртекста, если они будут переданы без ошибок, будут корректно расшифрованы, так как ошибки при передаче одного блока в режиме ECB не влияют на остальные блоки. В других режимах это поведение может отличаться.
Данный режим (как и большая часть остальных рассмотренных режимов) обеспечивает только конфиденциальность передачи данных, но не целостность. В модели активного злоумышленника, если он предполагает о содержимом блоков открытого текста для части шифртекста, он может, например, манипулировать передаваемыми блоками, вставляя, удаляя или меняя блоки местами. Это приведёт к соответствующим изменениям в открытом тексте (и не приведёт к «мусору» после расшифровки). Такие изменения могут не быть замечены получателем и привести к таким действиям, которые ожидает злоумышленник, а не легальный отправитель.
Режим сцепления блоков шифртекста (англ. Cipher Block Chaining, CBC, рис. 5.14) был описан в патенте компании IBM 1976 года. [73] В этом режиме перед шифрованием текущего блока открытого текста предварительно производится его побитовое суммирование по модулю
где
Благодаря сцеплению, одинаковым блокам открытого текста соответствуют различные шифрованные блоки. Это затрудняет криптоаналитику статистический анализ потока шифрованных блоков.
На приёмной стороне расшифрование осуществляется по правилу:
Блок
В разных пакетах блоки
Однако случайный выбор векторов инициализации также имеет свои недостатки. Для выбора такого вектора необходим хороший генератор случайных чисел. Кроме того, каждый пакет удлиняется на один блок.
Для каждого сеанса передачи пакета нужны такие процедуры выбора
Обычно одноразовая метка состоит из номера сеанса и дополнительных данных, обеспечивающих уникальность. Например, при двустороннем обмене шифрованными сообщениями одноразовая метка может состоять из номера сеанса и индикатора направления передачи. Размер одноразовой метки должен быть равен размеру шифруемого блока. После определения одноразовой метки
Этот вектор используется в данном сеансе для шифрования открытого текста в режиме CBC. Заметим, что блок
Преимущества:
Недостатки:
Говоря о возможности восстановления после ошибок передачи, в режиме CBC при изменении одного бита блока шифртекста будет полностью некорректно расшифрован соответствующий блок отрытого текста, а также единственный бит следующего блока открытого текста. Однако последующие блоки затронуты не будут. Поэтому данный режим относят к самовосстанавливающимся.
Данный режим (как и большая часть остальных рассмотренных режимов) обеспечивает только конфиденциальность передачи данных, но не целостность. В модели активного злоумышленника, если последний предполагает о возможном содержимом первого блока открытого текста, а вектор инициализации передаётся в открытом виде по каналу связи, злоумышленник может подменить данные в векторе инициализации таким образом, чтобы сформировать нужное содержимое первого блока открытого текста. Такое изменение в режиме CBC не повлечёт других изменений и не приведёт к «мусору» в остальных блоках – будет затронут только первый блок открытого текста. Изменение может не быть замечено получателем и привести к таким действиям получателя, которые ожидает злоумышленник, а не легальный отправитель.
В предыдущих режимах входными блоками для функции шифрования были непосредственно блоки открытого текста. В режиме обратной связи по выходу (англ. Output Feedback, OFB, рис. 5.15) блоки открытого текста непосредственно на вход функции шифрования не поступают. Вместо этого функция шифрования генерирует псевдослучайный поток байтов (гамму), который суммируется побитово по модулю
Здесь входной блок
Как и в режиме CBC, вектор инициализации
Преимущества:
Недостатки:
Если рассматривать шифрование в режиме OFB как генератор псевдослучайной последовательности («гаммы»), то очевидно, что максимальный период генератора равен
), находим, что математическое ожидание числа блоков, по достижению которого вероятность «зациклиться» более
где
Для шифров «Кузнечик» и AES
Данная оценка показывает математическое ожидание числа блоков. Но в реальности зацикливание может произойти даже на первом блоке, если в результате шифрования вектора инициализации
Хорошим размером гаммы считается такой, который больше размера шифруемого сообщения. То есть гамма не должна повторяться в рамках одной передачи. Теоретически можно ввести процесс отслеживания повтора гаммы (что на выходе функции шифрования получилось значение, равное
Данный режим (как и большая часть остальных рассмотренных режимов) обеспечивает только конфиденциальность передачи данных, но не целостность. В модели активного злоумышленника, если последний может предположить о содержимом любой части открытого текста, злоумышленник может поменять отдельные биты шифртекста, что приведёт к предсказуемым (с точки зрения криптоаналитика) изменениям в расшифрованном тексте.
В режиме обратной связи по шифртексту (англ. Cipher FeedBack, CFB, рис. 5.16) ключ
У этого режима нет особых преимуществ по сравнению с другими режимами.
Режим счётчика (англ. Counter, CTR, рис. 5.17) был описан Диффи и Хеллманом в 1979 году. [31] Правило шифрования имеет вид, похожий на режим обратной связи по выходу (OFB), но позволяющий вести независимое (параллельное) шифрование и расшифрование блоков:
где
Правило расшифрования идентичное:
Преимущества:
Недостатки:
В отличии от режима OFB период генерируемой «гаммы» всегда одинаков и зависит только от количества бит в nonce. Так как после достижения максимального значения счётчика значение nonce не увеличивается на единицу, период «гаммы» равен:
Данный режим (как и большая часть остальных рассмотренных режимов) обеспечивает только конфиденциальность передачи данных, но не целостность. В модели активного злоумышленника, если последний может предположить о содержимом любой части открытого текста, злоумышленник может поменять отдельные биты шифртекста, что приведёт к предсказуемым (с точки зрения криптоаналитика) изменениям в расшифрованном тексте.
Режим выработки имитовставки (рис. 5.18, [131]) принципиально отличается от рассмотренных ранее режимов тем, что призван обеспечивать не конфиденциальность, а целостность. Результатом является блок данных фиксированного размера (в ГОСТ 28147-89 – до 32 бит), длина которого не зависит от длины исходного сообщения.
Входное сообщение как и ранее разбивается на блоки равной длины
В ГОСТ 28147-89 для режима выработки имитовставки функция шифрования использует 16 раундов вместо 32.
Как уже было сказано, данный режим обеспечивает только целостность информации. Причём саму информацию необходимо передавать, и, возможно, шифровать отдельно. Режим не обеспечивает возможности параллельных вычислений для разных блоков открытого текста.
Принципиальным недостатком является необходимость использовать секретный ключ как для выработки имитовставки, так и для её валидации (путём повторной выработки на принимающей стороне и сравнения с результатом). Позже мы рассмотрим функциональных электронных цифровых подписей, которые по своему назначению схожи с имитовставкой, но обеспечивают вариант более гибкого использования – без необходимости раскрытия ключа, используемого для генерации ЭЦП.
Режим счётчика с аутентификацией Галуа был предложен Девидом МакГрю и Джоном Виега в 2004 году (англ. Galois/Counter Mode, GCM, рис. 5.19, [70]). Данный режим обеспечивает одновременно конфиденциальность и целостность, при условии правильного использования.
Результатом работы режима, кроме набора шифроблоков, является тег аутентификации, который должен быть использован принимающей стороной для проверки целостности сообщения. Как и в режиме выработки имитовставки, генерация данного тега возможна только легальным пользователем – знающим секретный ключ, который был использован для шифрования данных.
«Верхняя» часть режима является режимом работы счётчика. В качестве первого значения берётся дополнение нулями вектора инициализации до размера обрабатываемого блока. Потом, как и в режиме CTR, правая часть увеличивается на 1 для каждого следующего блока. Значения счётчика шифруются на секретном ключе
Сам тег аутентификации вырабатывается следующим образом. На вход «подрежима» генерации тега сначала (опционально) подаются дополнительные данные (англ. additional authenticated data, AAD), которые не нужно шифровать в режиме GCM, но которым нужно обеспечить целостность. Например, это может быть заголовок передаваемого пакета данных. После того, как эти данные закончатся, на вход начнут подаваться блоки шифротекста
Формирование тега происходит через побитовое сложение результата предыдущего блока с новым блоком AAD или
Умножение на константу
Результат умножения самого последнего блока побитово складывается с первым блоком сформированной гаммы.
Данный режим обеспечивает и конфиденциальность, и целостность. Шифровать отдельные блоки можно параллельно, а вычисление тега аутентификации делается намного быстрее, чем шифрование. Однако любая ошибка передачи приведёт к вычислению некорректного тега аутентификации, а отличить изменение текста в результате ошибки передачи от вмешательства злоумышленника принципиально невозможно.