Криптографические алгоритмы
Существуют два принципиально различающихся подхода к построению шифров с секретным ключом, соответственно им можно выделить два типа шифров - блочные и потоковые шифры:
1. В блочных шифрах результат шифрования очередного блока зависит только от него самого и не зависит от других блоков шифруемого массива данных:
Из этого следует, что в результате шифрования двух одинаковых блоков открытого текста всегда получаются идентичные блоки шифротекста.
2. В поточных или потоковых шифрах результат зашифрования очередного блока зависит от него самого и, в общем случае, от всех предыдущих блоков массива данных:
Сюда же относится важный частный случай, когда результат зашифрования очередного блока зависит этого блока и от его номера.
Каким же условиям должен удовлетворять стойкий блочный шифр? Эти условия сформулировал К. Шеннон в ряде своих основополагающих работ по теории шифрования: такой шифр должен обладать свойствами перемешивания и рассеивания:
– рассеивание: это свойство шифра, при котором один символ (бит) исходного текста влияет на несколько символов (битов) шифротекста, оптимально - на все символы в пределах одного блока. Если данное условие выполняется, то при шифровании двух блоков данных с минимальными отличиями между ними должны получаться совершенно непохожие друг на друга блоки шифротекста. Точно такая же картина должна иметь место и для зависимости шифротекста от ключа - один символ (бит) ключа должен влиять на несколько символов (битов) шифротекста.
– перемешивание: это свойство шифра скрывать зависимости между символами исходного текста и шифротекста. Если шифр достаточно хорошо «перемешивает» биты исходного текста, то соответствующий шифротекст не содержит никаких статистических, и, тем более, функциональных закономерностей - опять же, для стороннего наблюдателя, обладающего лишь ограниченными вычислительными ресурсами.
Алгоритмы шифрования
1. Симметричные (с секретным, единым ключом, одноключевые, single-key).
1.1. Потоковые (шифрование потока данных):
– с одноразовым или бесконечным ключом (infinite-key cipher);
– с конечным ключом (система Вернама - Vernam);
– на основе генератора псевдослучайных чисел (ПСЧ).
1.2. Блочные (шифрование данных поблочно):
1.2.1. Шифры перестановки (permutation, P-блоки);
1.2.2. Шифры замены (подстановки, substitution, S-блоки):
– моноалфавитные (код Цезаря);
– полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma);
1.2.3. составные:
– Lucipher (фирма IBM, США);
– DES (Data Encryption Standard, США). Алгоритм блочного шифрования с перестановками и сложением по модулю два с ключом. Низкая криптостойкость допускает декодирование при криптоаналитическом исследовании.
– FEAL-1 (Fast Enciphering Algoritm, Япония). Предназначен для использования в факсах, модемах и телефонах.
– IDEA/IPES (International Data Encryption Algorithm). Алгоритм блочного шифрования. Применяются 52 субключа. Применяется операция умножения по модулю 216+1. Алгоритм криптоустойчив.
– ГОСТ 28147-89 (СССР). В 1993 г. в России изданы государственные стандарты под общим заголовком «Информационная технология. Криптографическая защита информации» («Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма»).
2. Асимметричные (с открытым ключом, public-key):
– Диффи-Хеллман DH (Diffie, Hellman);
– Райвест-Шамир-Адлeман RSA (Rivest, Shamir, Adleman);
В 1978 г. Рон Ривест (R. Rivest), Ади Шамир (A. Samir) и Леонард Адлеман (L. Adleman) создали первую криптосистему с открытым ключом для шифрования текста и цифровой подписи. Надежность обусловлена неразрешимостью задачи разложения большого натурального числа на простые множители. Современное методы позволяют решать эту задачу для чисел длиной только до 430 бит (поэтому ключ длиной в 512 бит считается надежным для защиты данных на срок до 10 лет, длиной в 1024 бита - безусловно надежным). Алгоритм RSA используется в банковских компьютерных сетях (обслуживание кредитных карточек).
– Эль-Гамаль ElGamal.
Данная система является альтернативой RSA и при равном значении ключа обеспечивает такую же криптостойкость. Метод Эль-Гамаля (El Gamal) основан на вычислении дискретного логарифма, при этом возводить число в степень легко, а восстановить аргумент по значению (то есть найти логарифм) трудно.
