Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шнайер - Прикладная криптография.doc
Скачиваний:
13
Добавлен:
01.05.2025
Размер:
10 Мб
Скачать
☆

9.12 Чередование

В большинстве режимов шифрование бита (или блока) зависит от шифрования предыдущих битов (или блоков). Часто это делает невозможным распараллелить шифрование. Например, рассмотрим аппаратное устройство, выполняющее шифрование в режиме CBC. Даже если блок содержит четыре микросхемы шифрования, работать может только одна. Следующей микросхеме для начала работы нужны результаты работы предыдущей.

Решением является чередование нескольких потоков шифрования. (Это не множественное шифрование, оно рассматривается в разделах 15.1 и 15.2). Вместо одной цепочки CBC используются четыре. Первый, пятый и, далее, каждый четвертый блок шифруются в режиме CBC с одним IV. Второй, шестой и, далее, каждый четвертый блок шифруются в режиме CBC с другим IV, так далее. Полный IV намного длиннее, чем без чередования.

Представьте себе шифрование четырех различных сообщений одним ключом с четырьмя различными IV. Все эти сообщения чередуются.

Этот прием также может быть использован для повышения общей скорости аппаратного шифрования. Если у вас есть три шифрующих микросхемы, каждая из которых способна шифровать со скоростью 33 Мбит/с, вы можете, чередуя их, шифровать 100 Мбит/с канал данных.

На Figure 9.16 показаны три параллельных потока, чередующихся в режиме CFB. Эта идея применима также к режимам CBC и OFBдля любого числа параллельных потоков. Только не забывайте, что для каждого потока нужен свой собственный IV. Не экономьте.

Рис. -16. Чередование трех шифрований CFB.

9.13 Блочные шифры против потоковых

Хотя блочные и потоковые шифры сильно отличаются, блочные шифры можно реализовать как потоковые, а потоковые шифры - как блочные. Лучшее определение различия я нашел у Рэньеры Рюппела (Ranier Rueppel) [1362.]:

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

В реальном мире блочные шифры кажутся более общими (т.е., их можно использоваться во всех четырех режимах), а потоковые шифры кажутся более легкими для математического анализа. Существует большое количество теоретических работ по проектированию и анализу потоковых фильтров - по некоторым причинам большинство из них выполнено в Европе. Они использовались военными всего мира с момента изобретения электроники. Но состояние дел меняется, недавно на тему проектирования блочных шифров была написана уйма теоретических работ. Возможно вскоре теория проектирования блочных фильтров станет такой же богатой, как и современная теория проектирования потоковых фильтров.

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

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