- •5. Криптографическая защита передаваемых данных с помощью программной системы pgp Введение
- •5.1.Стандарт OpenPgp
- •5.2.Система открытого распределения ключей
- •5.3.Электронная цифровая подпись
- •5.4. Цифровая подпись Эль-Гамаля
- •5.5. Состав системы pgp 8.0
- •5.6. Генерация асимметричных ключей
- •5.7.Порядок генерации ключей в системе pgp
- •5.9.Передача открытого ключа файлом
- •5.10. Пересылка открытого ключа по электронной почте
- •Внимание: данную услугу системы необходимо проигнорировать, данный флажок не устанавливать! 5.8.Обмен открытыми ключами
- •5.11.Обмен открытыми ключами через сервер ключей
- •5.12.Модель заверения и проверки подлинности открытых ключей
- •5.13. Формирование цифровой подписи
- •5.14. Добавление и изменение владельцев асимметричных ключей
- •5.15. Отзыв и удаление ключей, а также наложение запрета на их использование
- •5.16. Защита файлов ключей
- •5.17. Криптографическая защита файлов и сообщений
- •5.18. Шифрование или одновременно шифрование и подписывание файлов
- •5.19. Подписывание файлов
- •5.20. Расшифровывание файлов и проверка их цифровых подписей
- •5.21. Криптографическая защита сообщений электронной почты
- •Шифрование и подписывание отправляемых сообщений через буфер обмена
- •Дешифровывание и проверка подписи полученных сообщений через буфер обмена
- •5.22.Отправка и получение защищенного файла вместе с почтовым сообщением
- •5.23. Гарантированное удаление файлов
5.1.Стандарт OpenPgp
Спецификации стандарта OpenPGP предписывают механизм Iterated-salted String-to-Key, и именно он реализован в последних версиях программы.
Стандарт OpenPGP основан на ключевой фразе, которая дополняется специальной случайной последовательностью (salt) для усложнения атак "по словарю" и получения уникального ключа даже при одинаковых ключевых фразах. Из результирующей строки последовательно вычисляется несколько 160-битовых хэш-значений, что создаёт цикл задержки, повышающий ресурсоёмкость атаки. Конечный результат конвертируется в симметричный ключ, которым зашифровывается асимметричный закрытый ключ при помощи предпочтительного алгоритма шифрования (Preferred Algorithm), определяемый в настройках PGP.
Если это 128-битовый алгоритм (IDEA, CAST, AES-128), все лишние биты от 160 битов хэш – значения отбрасываются, а оставшиеся используются как ключ. Если это 256-битовый алгоритм (AES-256, Twofish), то вычисляется второе хэш – значение ключевой фразы, дополненной одним шестнадцатеричным октетом 00h. Оба хэш – значения конкатенируются, все биты сверх 256 отбрасываются, а оставшиеся 256 бит используются как ключ. Для алгоритмов AES-196 и 168-битового TripleDES используется аналогичный метод.
Подобный механизм применяется и для симметричного шифрования в PGP (Conventional Encryption), только вместо закрытого ключа шифруется симметричный сеансовый ключ, которым зашифрованы данные.
Такой подход не приводит к снижению стойкости шифрования до длины выхода хэш – алгоритма и гарантирует, что если взломщик не знает вашей ключевой фразы, у него не будет никакой возможности воспользоваться закрытым ключом. Единственное, что остаётся злоумышленнику, это попытаться подобрать ключевую фразу или взломать ключ "в люб", т.е. полным перебором всего пространства ключей, что технически невыполнимо. Надёжность защиты закрытого ключа всецело опирается на качество выбранной ключевой фразы, вот почему критически важно, чтобы она была достаточно сложна.
5.2.Система открытого распределения ключей
В 1976 г. Диффи и Хеллман опубликовали статью, которая ознаменовала собой рождение двухключевой криптографии и привела к сильному росту числа открытых исследований в области криптографии. В данной статье авторы показали возможность построения практически стойких секретных систем, которые не требуют передачи секретного ключа.
Диффи и Хеллман ввели понятие односторонней функции с потайным ходом (с лазейкой). Под односторонней функцией f понимается функция f(x), которая легко вычислима для любого значения аргумента x из области определения, однако для данного у из области ее значений вычислительно сложно нахождение значения аргумента x, для которого f(x) = у. Применение таких функций для защиты входа в вычислительную систему путем одностороннего преобразования паролей было известно. Но как применить одностороннюю функцию в криптографических системах, когда даже законный получатель не сможет выполнить дешифрования? Для шифрования была предложена односторонняя функция с потайным ходом (секретом). Под односторонней функцией с потайным ходом понимается семейство обратимых функций fz с параметром z, такого, что для данного z можно найти алгоритмы Еz и Dz, позволяющие легко вычислить значение f (x) для всех х из области определения, однако практически для всех значений параметра z и практически для всех значений у из области значений fz нахождение fz-1{y} вычислительно неосуществимо даже при известном Еz.
В качестве односторонней функции Диффи и Хеллман предложили функцию дискретного возведения в степень
F(x) = x (mod p),
где x – целое число, l x р - 1; р - k – битовое простое число.
Причем выбирается такое число < р, степени которого по модулю р представляют собой упорядоченное множество чисел {1, 2,..., p- 1}, являющееся некоторой перестановкой чисел {1, 2, ... ,р - 1}. Такое число называется первообразным корнем по модулю р.
Даже для очень больших модулей р (например, при k = 1024 бит) для данного х легко вычислить значение этой функции. Процедура вычисления функции F(x) называется дискретным возведением в степень. Для выполнения этой процедуры достаточно выполнение около 2log2 p операций умножения k - битовых чисел (или log2p умножений и log2p делений 2k - битовых чисел на k - битовые). Процедура дискретного возведения в степень основана на предварительном вычислении значений (по модулю р) 1,2,4,8,...,u , где u=2k -1.
Обратной к функции дискретного возведения
в степень является функция f
- 1 (у), которая ставит в соответствие
заданному значению у такое
значение x, для которого
выполняется условие
x = у (mod
р). Задача нахождения такого х
называется задачей дискретного
логарифмирования (нахождения дискретных
логарифмов). Сложность вычисления
дискретных логарифмов увеличивается,
когда число р - 1 содержит один большой
простой множитель, например, когда оно
представимо в виде р - 1 = 2р', где
р' – простое число. При этом условии
трудоемкость задачи нахождения
дискретного логарифма равна примерно
умножений по модулю р. Решение такой
задачи является вычислительно
неосуществимым при больших значениях
k (например, при k
512), а следовательно при указанных
условиях, накладываемых на выбор чисел
р и ,
функция дискретного возведения в степень
является односторонней.
Системой (методом) открытого распространения ключей Диффи-Хеллмана называется следующий способ использования дискретного возведения в степень для формирования общего секретного ключа для двух пользователей. Выбирается большое простое число р и соответствующий ему первообразный корень < р. Для обеспечения стойкости рассматриваемой системы открытого шифрования на число р накладывается следующее условие: разложение числа р - 1 на множители должно содержать по крайней мере один большой простой множитель, а размер числа р должен быть не менее 512 бит.
Механизм распределения секретных ключей по открытому каналу состоит в следующем. Каждый абонент выбирает случайный секретный ключ х и вырабатывает открытый ключ у, соответствующий выбранному секретному ключу, в соответствии с формулой
y = x (mod p)
Все абоненты размещают свои открытые ключи в общедоступном справочнике. Данный справочник должен быть заверен специально созданным доверительным центром, чтобы исключить возможные нападения путем подмены открытых ключей или навязывания ложных открытых ключей.
Если два абонента А и В хотят установить секретную связь, то они поступают следующим образом. Абонент А берет из справочника открытый ключ абонента В и, используя свой секретный ключ, вычисляет общий секретный ключ:
,
где для абонентов А и В открытые ключи обозначаются как уA и уB , а соответствующие секретные ключи – xA и xB . Общий секретный ключ КAB нет необходимости передавать по сети связи, поскольку абонент В по известному из справочника открытому ключу абонента А аналогичным способом вычисляет значение
Общий секретный ключ может использоваться абонентами для шифрования сеансовых секретных ключей, а последние – для шифрования сообщений с использованием симметричных методов шифрования.
В одноключевых криптосистемах существуют две принципиальные проблемы:
распределение секретных ключей по защищённому каналу;
аутентификация секретного ключа.
Под аутентификацией понимается проведение процедуры, которая позволяет удостовериться получателю, что секретный ключ принадлежит законному отправителю (например, центру распределения ключей). Система открытого распределения ключей решает первую проблему, т.е. она позволяет обойтись без защищенного канала для распределения секретных ключей. Однако она не устраняет необходимость аутентификаций.
