Блочные шифры и потоковые шифры - PullRequest
9 голосов
/ 12 апреля 2011

Я понимаю, что блочные шифры более популярны в программном обеспечении, чем потоковые шифры, которые обычно основаны на аппаратном обеспечении. Однако почему ключ не может быть повторно использован в потоковых шифрах? Это из-за шаблонов, которые могут сформироваться?

Ответы [ 3 ]

31 голосов
/ 12 апреля 2011

A потоковый шифр - это система шифрования, которая работает с заданной последовательностью входных битов. Большинство потоковых шифров работают, генерируя из ключа длинную последовательность битов случайного вида, которые затем объединяются (поразрядным XOR) с данными для шифрования. Это (грубая) эмуляция одноразовой площадки .

A блочный шифр - это общий криптографический элемент, который работает над «блоками», которые представляют собой последовательности битов фиксированной длины (например, 128 битов для AES ). Блочный шифр - это перестановка блоков; ключ выбирает, о какой перестановке мы говорим. Один только блочный шифр не может обработать произвольное длинное сообщение; блочный шифр и данные должны использоваться в сложной конструкции, называемой режимом работы (также часто называемым «режимом сцепления»).

Существует режим цепочки для блочных шифров, называемый «CTR» как «режим счетчика»: в этом режиме блочный шифр используется для шифрования последовательных значений счетчика (счетчик, имеющий размер блока). Полученные зашифрованные блоки затем объединяются, что приводит к произвольно длинной последовательности битов, которая зависит только от ключа. Тогда достаточно XOR той последовательности с данными для шифрования. Другими словами, режим CTR превращает блочный шифр в потоковый шифр. Другим популярным режимом цепочки является CBC, который не подходит для модели потокового шифра.

В случае потоковых шифров следует избегать любой ценой повторного использования одной и той же зависимой от ключа последовательности битов для двух отдельных сообщений; это дало бы печально известную «двойную площадку», которую можно легко сломать (используя избыточность в двух зашифрованных сообщениях). С блочным шифром в режиме CTR это приводит к повторному использованию тех же значений счетчика. Вот почему режим CTR требует случайного начального значения (IV), которое является значением счетчика, с которого вы начинаете шифрование. Выбирая новый случайный IV с достаточно большими блоками, вы с очень высокой вероятностью избегаете любого наложения последовательностей значений счетчиков, которые вы используете.

Концепция IV не является специфичной для блочных шифров; некоторые потоковые шифры также используют IV (например, тот, что находится в портфеле eSTREAM ). Когда потоковый шифр имеет IV, повторное использование ключа не представляет проблемы - при условии, что вы используете надлежащий IV (то есть IV, сгенерированный с помощью криптографически сильного ГСЧ во всем пространстве возможного IV с одинаковой вероятностью). Однако некоторые другие потоковые шифры не имеют IV, в частности широко используемый RC4 . Повторное использование одного и того же ключа означало бы повторное использование одной и той же последовательности генерируемых битов, и это плохо.

Обратите внимание, что для некоторых режимов цепочки, отличных от CTR, также требуется IV, который должен быть уникальным для каждого сообщения, зашифрованного данным ключом. Блочные шифры не уменьшают необходимость в этом.

1 голос
/ 01 июня 2018

потому что при повторном использовании ключа в потоковом шифре общей функцией потокового шифра является шифрование = (открытый текст + ключ)% 2, а по модулю 2 считается xor
, поэтому повторное использование ключа для функции шифрования приведет к тому, что текст шифра будет повторять егоself после некоторой длины
, поэтому случайные генераторы используются для создания ключа каждый раз в операции шифрования, такие как LFSR, для создания случайного ключа каждый раз
также используется одна временная панель

1 голос
/ 09 июля 2012

Блочный шифр: Блочный шифр подобен шифрованию сообщения блоком за блоком. Затем, после шифрования сообщения, он разбивает блок на блок.

Потоковый шифр: Потоковый шифр похож на побитовое шифрование исходного сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...