Что такое CBC?

Обзор

CBC (сокращение от цепочка блоков шифрования ) — это AES Advanced Encryption Standard режим блочного шифрования, который превосходит режим ECB в сокрытии шаблонов в открытом тексте. В режиме CBC это достигается с помощью операции XOR для первого блока открытого текста (B 1 ) с вектором инициализации ввод фиксированного размера, используемый для введения рандомизации перед его шифрованием. CBC также включает в себя цепочку блоков, поскольку каждый последующий блок открытого текста подвергается операции XOR с зашифрованным текстом предыдущего блока.

Если мы суммируем этот процесс в формуле, это будет выглядеть так:

C i = E K (B i ⊕ C i-1 ) , где E K обозначает алгоритм блочного шифрования с использованием ключа K , а C i-1 — это шифр, соответствующий B i-1 .

Примечание: в формуле выше, мы предполагаем, что C 0 является вектором инициализации.

Точно так же дешифрование с использованием CBC может быть выполнено с помощью:

B i = D K (C i ) ⊕ (C i-1 ) , где D K обозначает алгоритм дешифрования блока с использованием ключа K .

Тот же вектор инициализации (C 0 ) будет использоваться для дешифрования.

Преимущества и недостатки используя режим CBC

Наибольшее преимущество CBC перед ECB состоит в том, что в режиме CBC идентичные блоки не имеют одного и того же шифра. Это потому, что вектор инициализации добавляет случайный фактор к каждому блоку; следовательно, почему одни и те же блоки в разных позициях будут иметь разные шифры.

Хотя режим CBC более безопасен, его шифрование не терпимо к потерям блоков. Это связано с тем, что блоки зависят от своих предыдущих блоков для шифрования. Итак, если блок B i потерян, шифрование всех последующих блоков будет невозможно. Такое цепное поведение также означает, что шифрование блоков должно выполняться последовательно, а не параллельно. Однако эти недостатки не распространяются на расшифровку, которая может выполняться параллельно, если доступны все блоки зашифрованного текста и допускаются потери блоков.

Изображение до шифрования CBC
Изображение после шифрования CBC

Шифрование CBC с использованием OpenSSL

Набор инструментов OpenSSL предоставляет набор простых команд для шифрования с использованием режимов AES. Команда шаблона для шифрования 128-битного AES в режиме CBC:

  openssl enc -aes-128-cbc -e -in inputfile.txt -out cipher.bin -K00112233445566778889aabbccddeeff -iv  0102030405060708  

В приведенной выше команде мы введем имя файла, который хотим зашифровать, после флага -in , а также имя и формат выходного файла после флага -out . Шестнадцатеричное значение ключа шифрования должно быть указано после флага -K , а шестнадцатеричное значение вектор инициализации должен быть указан после флага -iv .

Оцените статью
nanomode.ru
Добавить комментарий