На сегодняшний день существует множество различных алгоритмов шифрования с разными принципами работы. В рамках этой статьи мы будем разбираться в режимах работы блочных шифров.
Для начала давайте разберемся с тем, что из себя представляют блочные шифры. Блочный шифр — это алгоритм шифрования, который принимает фиксированный размер входных данных, например, N бит, и затем создает зашифрованный текст из этих N бит. Если входные данные больше, чем эти N бит (в реальности это практически всегда так), их можно разделить на блоки из N бит. Для различных областей применения блочного шифра существует несколько режимов работы, о которых мы и поговорим далее.
Начнем с наиболее простого способа работы с блочными шифрами.
Электронная книга кодов
Электронная кодовая книга (ECB) является самым простым режимом блочного шифрования из‑за того, что осуществляется прямое шифрование каждого блока входного открытого текста, а выходные данные представляются в виде блоков зашифрованного шифротекста. Как правило, если размер сообщения превышает N бит, его можно разбить на несколько блоков и повторить процедуру.
На рисунке P1-Pn это исходный текст, k — ключ шифрования, C1-Cn — получившийся зашифрованный текст.
Как видно, результаты шифрования каждого блока никак не связаны не с предыдущим не последующим блоком. Таким образом, мы можем параллельно шифровать блоки битов, и это является наиболее быстрым способом шифрования.
Но отсутствие связи между блоками является существенным недостатком. Криптоаналитикам (то есть атакующим) легче обнаружить связи между открытым и зашифрованным текстом как раз благодаря отсутствию связи между блоками.
Цепочка блоков шифрования
Решить проблему слабости ECB призваны режимы, использующие цепочки блоков шифрования (CBC). В этом режиме шифрования предыдущий блок используется в качестве входных данных для следующей итерации шифрования после XOR с исходным блоком открытого текста.
Здесь принцип работы алгоритма становится уже более сложным. Каждый последующий блок получает на вход результаты работы предыдущего — зашифрованный блок. При выполнении первой итерации нам нечего подать на вход, так как мы еще ничего не зашифровали и для того, чтобы алгоритм мог начать работу мы используем вектор инициализации IV, который подаем на вход вместо зашифрованного текста из предыдущей итерации. В остальном все аналогично предыдущему режиму: P1-Pn — исходный текст, k — ключ, C1-Cn — зашифрованный текст.
Основными преимуществами CBC является высокая устойчивость к криптоанализу по сравнению с ECB и эффективная работа с блоками данных, превышающими N бит.
Недостатки этого режима заключаются в том, что мы не можем использовать параллельное шифрование, так как для каждой итерации требуется предыдущий шифрованный блок. И хотя мы усложнили жизнь криптоаналитикам противника с помощью псевдослучайного вектора инициализации и связности блоков, но если он собрал большое количество предыдущих зашифрованных блоков, он может на основании собранной статистики попытаться расшифровать следующий блок.
Режим обратной связи по шифру
Продолжим усложнять жизнь злоумышленнику. В режиме обратной связи по шифру, шифрованный текст передается в качестве обратной связи следующему блоку шифрования с некоторыми новыми спецификациями: сначала для первой итерации шифрования используется начальный вектор IV, а выходные биты делятся в виде набора битов s и b‑s. Левосторонние биты s выбираются вместе с битами открытого текста, к которым применяется операция XOR. Результат передается в качестве входных данных в регистр сдвига, содержащий биты b‑s для левой, биты s для правой части шифруемого текста, и процесс продолжается. Ниже показан процесс шифрования и дешифрования для одного и того же устройства, в обоих из которых используются алгоритмы шифрования.
Не совсем очевидная манипуляция с частями шифруемого текста еще больше усложняет работу криптоаналитикам, что является несомненным преимуществом данного алгоритма.
Недостатки CFB такие же, как и в режиме CBC. Шифрование не поддерживает ни потери блоков, ни одновременное шифрование нескольких блоков. Однако дешифрование может быть распараллелено и не допускать потерь.
Режим обратной связи на выходе
В режиме обратной связи с выводом (OFB) выполняется почти тот же процесс, что и в режиме обратной связи с шифрованием, за исключением того, что зашифрованный вывод передается в качестве обратной связи вместо фактического шифра, который является выводом типа XOR. В этом режиме обратной связи все биты блока передаются вместо выбранных s битов. Режим обратной связи на выходе блочного шифра обеспечивает высокую устойчивость к ошибкам передачи битов. Он также уменьшает зависимость или взаимосвязь шифра с открытым текстом.
В отличие от рассмотренного ранее режима CFB, в котором единичная ошибка даже с одним битом в блоке передается на все последующие блоки, здесь эта проблема решается за счет того, что мы не передаем на вход следующей итерации зашифрованный текст из предыдущей.
Режим счетчика
И еще один режим блочного шифрования — это режим счетчика. Основной проблемой представленных ранее режимов является относительно низкая скорость шифрования, из‑за невозможности распараллелить процесс шифрования. В этом режиме при каждой итерации значение, инициированное счетчиком, шифруется и передается в качестве входных данных в XOR открытым текстом для последующего шифрования. Режим CTR не зависит от использования обратной связи и, таким образом, может быть реализован параллельно.
Преимуществами использования счетчика является то, что для каждого блока используется разное значение счетчика и прямая связь между открытым и зашифрованным текстом исключается. Это означает, что один и тот же открытый текст может быть преобразован в другой зашифрованный текст. Параллельное выполнение шифрования возможно, поскольку выходные данные предыдущих этапов не связаны цепочкой, как в случае CBC.
Однако и у этого режима есть свой существенный недостаток. Для работы счетчика требуется синхронизация счетчика как на передатчике, так и на приемнике. В случае некорректной синхронизации, например, на плохом канале, это может стать серьезным недостатком. Восстановление открытого текста происходит с ошибкой при потере синхронизации.
Заключение
В этой статье мы рассмотрели основные режимы работы блочных шифров. Каждый из представленных режимов имеет свои достоинства и недостатки, позволяющие использовать нужный режим в зависимости от условий применения.
Напоследок расскажу о бесплатных уроках, которые пройдут у моих друзей из OTUS в рамках набора на курс «Криптографическая защита информации»:
14 мая: Криптографические протоколы — перечислим основные криптографические протоколы, их назначение и применение в различных системах и сферах. Обсудим основные методы обеспечения безопасности в сетевой коммуникации. Записаться на урок.
23 мая: Электронная подпись: безопасность и удобство — проясним тему машиночитаемых доверенностей; разберем простые и усиленные, неквалифицированные и квалифицированные ЭП. Рассмотрим примеры использования и практические советы по обеспечению надежности ЭП, инструменты создания. Записаться на урок.
Pokemon555
Спасибо за описание
4 режима это режимы, описанные в протоколе DES. В Российском стандарте ГОСТ Р 34.13 - 2015 выделено 6 режимов блочного шифрования.