В чем разница между потоковыми и блочными шифрами?
Шифр — это набор математических правил или алгоритмов, используемых для преобразования читаемого текста или открытого текста в нечитаемый текст или зашифрованный текст. Принципиальная разница между потоковыми и блочными шифрами заключается в том, что поточные шифры работают с потоками текста, по одному биту или по одному байту за раз, а блочные шифры работают с блоками текста.
Поточный шифр
Основная идея потокового шифра состоит в том, чтобы разделить текст на небольшие блоки длиной в один бит или один байт и закодировать каждый блок в зависимости от множества предыдущих блоков. Потоковые шифры используют разные ключи шифрования — значение, которое должно быть передано в алгоритм — для каждого бита или байта, поэтому один и тот же бит или байт создает разный зашифрованный текст при каждом шифровании. Некоторые потоковые шифры используют генератор ключевого потока, который создает случайный или почти случайный поток битов. Шифр выполняет логическую операцию, известную как исключающее ИЛИ, между битами в ключевом потоке и битами в открытом тексте для создания зашифрованного текста.
Блочный шифр
Основная идея блочного шифра состоит в том, чтобы разделить текст на относительно большие блоки, обычно длиной 64 или 128 бит, и кодировать каждый блок отдельно. Один и тот же ключ шифрования используется для каждого блока, и именно ключ шифрования определяет порядок, в котором выполняются подстановка, транспортировка и другие математические функции для каждого блока. Сильные алгоритмы означают, что реконструировать шифр или определить, какие функции выполнялись в каждом блоке и в каком порядке, практически невозможно.
Распространение и путаница
Блочные шифры используют методы, известные как путаница и диффузия, для шифрования открытого текста в зашифрованный текст. Идея путаницы состоит в том, чтобы сделать связь между ключом шифрования и зашифрованным текстом как можно более сложной. В идеале каждый символ в ключе шифрования должен влиять на каждый символ в зашифрованном тексте. Напротив, диффузия распределяет влияние каждого символа открытого текста на несколько символов зашифрованного текста, делая шифр менее уязвимым для статистических атак.
Плюсы и минусы
Тот факт, что потоковые шифры шифруют и расшифровывают данные побитно, означает, что они особенно хорошо подходят для аппаратных приложений реального времени, таких как аудио- и видеоприложения. Потоковые шифры слабее и менее эффективны, чем блочные, когда речь идет о программных приложениях, и реже используются в этой сфере. Блочные шифры проще реализовать в программном обеспечении, поскольку они шифруют данные в блоках той длины, которая уже используется программным обеспечением. Ключ шифрования часто имеет ту же длину, что и размер блока.