RSS подписка

Краткий обзор алгоритмов PGP

PGP – один из самых популярных криптографических комплексов на данный момент. Это вполне объяснимо, так как он использует лучшие из существующих алгоритмов шифрования. В статье я постарался рассмотреть все алгоритмы используемые в оригинальной версии PGP.

В процессах шифрования PGP использует три основных типа алгоритмов: алгоритмы криптосистем с открытым ключом (RSA, DSA, Эльгамаль), алгоритмы односторонних хэш-функций (SHA1, MD5) и итеративные блочные шифры (AES, CAST, 3DES, IDEA, Blowfish, Twofish).
Практически все вышеуказанные алгоритмы уже не раз подвергались детальному криптоанализу, поэтому их защите можно доверять. Я постарался сравнить все входящие в комплекс алгоритмы. Конечно , они разделены по группам, так как сравнивать блочный алгоритм и хэш-функцию – бессмысленно.

Блочные алгоритмы.

Блочный шифр (симметричный алгоритм) используется в PGP для зашифрования открытого текста случайным сеансовым ключом.

Triple-DES 168 бит ключ/64 бит блок
Сеть Файстеля; имеет пространство слабых и полуслабых ключей; быстр; устойчив к криптоанализу; сравнительно низкая стойкость ключа к лобовой атаке (112 бит); проверенная 20 годами надёжность; в разработке участвовало АНБ.

AES (Rijndael) 256 бит/256 бит
Уникальный, но простой дизайн (операции с таблицами массивов данных), облегчающий анализ на наличие брешей; принят в качестве гос. стандарта США после открытого конкурса; в сравнении с высокой стойкостью очень быстр; относительно нов.

CAST 128 бит/64 бит
Сеть Файстеля (DES-подобный дизайн); не имеет слабых ключей; быстр; совершенно устойчив к криптоанализу; существует уже 10 лет.

IDEA 128 бит/64 бит
Основан на уникальной концепции (смешение операций разных алгебраических групп); имеет пространство слабых ключей; послужной список в 13 лет; не все работы по криптоанализу были опубликованы.

Twofish 256 бит/128 бит
Сеть Файстеля; один из финалистов конкурса AES; медлителен; сложный дизайн, затрудняющий формальный анализ; имеет большой запас прочности.

Blowfish 128 бит/64 бит
Сеть Файстеля; простой дизайн; медлителен; имеет небольшое пространство слабых ключей; имеет высокий запас прочности.

Хэш-функция

Хэш-функции используются в PGP для генерирования цифровых подписей и и для защиты симметричных и закрытыйх асимметричных ключей шифрования.

MD5 128 бит
Быстра; большая часть документации по разработке была опубликована; относительно короткая свёртка; проведён ряд успешных криптоаналитических атак, серьёзно ослабивших алгоритм.

SHA-1 160 бит
Медлительна; принята в качестве гос. стандарта США; большая часть документации по разработке закрыта; разработчиком является АНБ; факты успешных криптоатак неизвестны.

Алгоритм MD5 является одним из самых совершенных на данный момент. Лучшего метода взлома, чем перебор (метод дней рождения) пока нет (если не считать возможности более быстрого взлома при определенных обстоятельствах).

Ассиметричные алгоритмы

В PGP асимметричные алгоритмы применяются а) для генерации ЭЦП и б) для зашифрования симметричных сеансовых ключей

RSA До 4096 бит ключ
Шифрование / подписание Основан на трудной задаче факторизации больших чисел; NP-полнота задачи не доказана и не опровергнута; один из первых асимметричных алгоритмов.

ElGamal До 4096 бит
Только шифрование Основан на трудной задаче вычисления дискретных логарифмов в конечном поле; в PGP используется только для шифрования; позволяет быстро генерировать ключи без снижения стойкости.

DSA До 1024 бит
Только подписание Основан на трудной задаче вычисления дискретных логарифмов в конечном поле; используется только для подписания; длина ключа ограничена 1024 битами; принят в качестве гос. стандарта США; применяется для секретных и несекретных коммуникаций; разработчиком является АНБ.

Что получаем в итоге: программный комплекс вполне способен обеспечить требуемую безопасность, но не забывайте о человеческом факторе, порой пароль получают методом «пояльника».

Добавить комментарий







XHTML: Вы можете использовать следующие тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>