Теория

Классификация алгоритмов шифрования

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. составные (таблица 1):

 Lucipher (фирма IBM, США);
 DES (Data Encryption Standard, США);
 FEAL-1 (Fast Enciphering Algoritm, Япония);
 IDEA/IPES (International Data Encryption Algorithm/
 Improved Proposed Encryption Standard, фирма Ascom-Tech AG, Швейцария);
 B-Crypt (фирма British Telecom, Великобритания);
 ГОСТ 28147-89 (СССР); * Skipjack (США).

2. Асимметричные (с открытым ключом, public-key):

 Диффи-Хеллман DH (Diffie, Hellman);
 Райвест-Шамир-Адлeман RSA (Rivest, Shamir, Adleman);
 Эль-Гамаль ElGamal.

Кроме того, есть разделение алгоритмов шифрования на собственно шифры (ciphers) и коды (codes). Шифры работают с отдельными битами, буквами, символами. Коды оперируют лингвистическими элементами (слоги, слова, фразы).

Криптография необходима для реализации, по крайней мере, трех сервисов безопасности:

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

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

Методы шифрования

Различают два основных метода шифрования: симметричный и асимметричный.

Симметричный метод шифрования

Рис. 1. Использование симметричного метода шифрования
Рис. 1. Использование симметричного метода шифрования

Один и тот же ключ (хранящийся в секрете) используется и для зашифрования, и для расшифрования данных. Разработаны весьма эффективные (быстрые и надежные) методы симметричного шифрования. Существует и национальный стандарт на подобные методы - ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования".

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

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

Ассимметричный метод шифрования

Рис. 2. Использование асимметричного метода шифрования
Рис. 2. Использование асимметричного метода шифрования

В асимметричных методах используются два ключа. Один из них, несекретный (он может публиковаться вместе с другими открытыми сведениями о пользователе), применяется для шифрования, другой (секретный, известный только получателю) - для расшифрования. Самым популярным из асимметричных является метод RSA (Райвест, Шамир, Адлеман), основанный на операциях с большими (скажем, 100-значными) простыми числами и их произведениями.

Проиллюстрируем использование асимметричного шифрования.

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

Рис.3 иллюстрирует эффективное шифрование, реализованное путем сочетания симметричного и асимметричного методов.

Рис.3 Эффективное шифрование сообщения
Рис.3 Эффективное шифрование сообщения

На рис.4 показано расшифрование эффективно зашифрованного сообщения.

Рис.4 Расшифрование эффективно зашифрованного сообщения
Рис.4 Расшифрование эффективно зашифрованного сообщения

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

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

Многие криптографические алгоритмы в качестве одного из параметров требуют псевдослучайное значение, в случае предсказуемости которого в алгоритме появляется уязвимость (подобное уязвимое место было обнаружено в некоторых вариантах Web-навигаторов). Генерация псевдослучайных последовательностей - важный аспект криптографии, на котором мы, однако, останавливаться не будем.