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

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

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

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

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

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