Структура сертификата
Перечень обязательных и необязательных полей, которые могут присутствовать в сертификате, определяется стандартом на его формат (например, X.509). Как правило, сертификат включает в себя следующие поля:
-
имя владельца сертификата (имя пользователя, которому принадлежит сертификат)
-
один или несколько открытых ключей владельца сертификата
-
имя удостоверяющего центра
-
серийный номер сертификата, присвоенный удостоверяющим центром
-
срок действия сертификата (дата начала действия и дата окончания действия)
-
информация об использованных криптографических алгоритмах
-
электронная цифровая подпись, сгенерированная с использованием секретного ключа удостоверяющего центра (подписывается результат хэширования всей информации, хранящейся в сертификате)
Российские стандарты
В России действуют свои криптографические стандарты. Использование их совместно с сертификатами описано в RFC4491: Using GOST with PKIX
Обзор алгоритмов PGP
Таблица 1. Сравнение основных параметров итеративных блочных шифров в реализации PGP.
Алгоритм |
Ключ |
Блок |
Примечания |
Triple-DES |
168 бит |
64 бит |
Сеть Файстеля; имеет пространство слабых и полуслабых ключей; быстр; устойчив к криптоанализу; сравнительно низкая стойкость ключа к лобовой атаке (112 бит); проверенная 20 годами надёжность; в разработке участвовало АНБ. |
AES (Rijndael) |
256 бит |
128 бит |
Уникальный, но простой дизайн (операции с таблицами массивов данных), облегчающий анализ на наличие брешей; принят в качестве гос. стандарта США после открытого конкурса; в сравнении с высокой стойкостью очень быстр; относительно нов. |
CAST |
128 бит |
64 бит |
Сеть Файстеля (DES-подобный дизайн); не имеет слабых ключей; быстр; устойчив к криптоанализу; существует уже 10 лет. |
IDEA |
128 бит |
64 бит |
Основан на уникальной концепции (смешение операций разных алгебраических групп); имеет пространство слабых ключей; послужной список в 13 лет; не все работы по криптоанализу были опубликованы. |
Twofish |
256 бит |
128 бит |
Сеть Файстеля; один из финалистов конкурса AES; быстрое шифрование, медленная установка ключа; сложный дизайн, затрудняющий формальный анализ; имеет большой запас прочности. |
Blowfish |
max 448 бит |
64 бит |
Сеть Файстеля; простой дизайн; быстрое шифрование, медленная установка ключа; имеет небольшое пространство слабых ключей; имеет высокий запас прочности. |
Хэш-функции
Аналогично блочному шифру, односторонняя хэш-функция – это сложный математический алгоритм, изменяющий информацию до неузнаваемости, но, в отличие от шифров, её действие по определению необратимо. Алгоритм хэш-функции принимает на входе информацию произвольной длины, называемую прообразом, и генерирует из неё строку фиксированной длины на выходе, называемую хэш-значением, дайджестом сообщения или свёрткой, из которой невозможно вычислить исходный открытый текст. Хэш-функции не используют ключей. Главная же особенность криптографически стойких односторонних хэш-функций заключается в устойчивости к коллизиям, т.е. к невозможности в приемлемые сроки создать два различных сообщения-прообраза, генерирующих идентичные хэш-значения. Как и в случае с шифровальными ключами, длина свёртки, как правило, определяет степень устойчивости хэш-функции к коллизиям и время, необходимое на перебор всех возможных вариантов для создания двух сообщений с однаковой свёрткой. Но есть нюансы, которые будут описаны ниже.
Хэш-функции используются в PGP для генерирования цифровых подписей и и для защиты симметричных и закрытыйх асимметричных ключей шифрования.
Таблица 2. Сравнение основных параметров односторонних хэш-функций в реализации PGP.
Алгоритм |
Свёртка |
Примечания |
MD5 |
128 бит |
Быстра; большая часть документации по разработке была опубликована; относительно короткая свёртка; проведён ряд успешных криптоаналитических атак, серьёзно ослабивших алгоритм. |
SHA-1 |
160 бит |
Медлительна; принята в качестве гос. стандарта США; большая часть документации по разработке закрыта; разработчиком является АНБ; факты успешных криптоатак неизвестны. |
Асимметричные алгоритмы
Центром PGP, ради которого и создавалась программа, являются криптосистемы с открытым ключом. Назначение их в том же, что и у блочных шифров – сделать информацию непонятной всякому постороннему. Основное отличие состоит в использовании для операций зашифрования / расшифрования двух разных, но взаимосвязных ключей однонаправленного действия, каждый из которых может зашифровать информацию, но расшифровать её может только другой. Благодаря этой особенности некоторые алгоритмы с открытым ключом совместно с хэш-функцией могут применяться и для другой цели: для выработки имитовставки (электронной цифровой подписи), подтверждающей авторство информации. Асимметричные алгоритмы основаны на ряде математических проблем (т.н. NP-полных задач), на которых и базируется их стойкость.
В PGP асимметричные алгоритмы применяются а) для генерации ЭЦП и б) для зашифрования симметричных сеансовых ключей.
RSA
RSA – криптографическая система с открытым ключом, обеспечивающая оба механизма защиты: шифрование и цифровую подпись. Криптосистема RSA была разработана в 1977 году и названа в честь авторов: Рональда Ривеста, Ади Шамира и Леонарда Адельмана. В PGP алгоритм RSA также используется для шифрования и генерации ЭЦП.
Эльгамаль
Схема Эльгамаля реализована в PGP исключительно для целей шифрования (хотя потенциально может применяться для создания цифровых подписей). В терминологии PGP она называется Diffie-Hellman (алгоритм Диффи-Хеллмана), что было необходимо вследствие определённых юридических нюансов. Cхема Эльгамаля основана на трудной задаче вычисления дискретных логарифмов в конечном поле в сравнении с лёгкостью возведения в степень в том же самом поле.
Для генерации пары ключей сначала выбирается простое число p и два случайных числа, g и x; оба эти числа должны быть меньше p. Затем вычисляется: y = gx mod p
Открытым ключом становятся y, g и p. И g, и p можно сделать общими для группы пользователей (именно это и делает опция Faster key generation в настройках PGP). Закрытым ключом является x. Теперь, чтобы зашифровать сообщение m, сначала выбирается случайное k, взаимно простое с p–1. Затем вычисляются: a = gk mod p ; b = yk m * mod p
Пара a и b является шифртекстом, что увеличивает исходное сообщение в два раза. Для расшифрования вычисляется: m = b/ax mod p
DSA
В августе 1991 года Digital Signature Algorithm в паре с хэш-функцией SHA1 был избран NIST США для использования в рамках Стандарта цифровой подписи DSS. В PGP он используется для генерации ЭЦП.
Таблица 3. Сравнение основных параметров криптосистем с открытм ключом в реализации PGP.
Алгоритм |
Ключ |
Назначение |
Примечания |
RSA |
До 4096 бит |
Шифрование и подпись |
Основан на трудной задаче факторизации больших чисел; NP-полнота задачи не доказана и не опровергнута; один из первых асимметричных алгоритмов. |
ElGamal |
До 4096 бит |
Только шифрование |
Основан на трудной задаче вычисления дискретных логарифмов в конечном поле; в PGP используется только для шифрования; позволяет быстро генерировать ключи без снижения стойкости. |
DSA |
До 1024 бит |
Только подписание |
Основан на трудной задаче вычисления дискретных логарифмов в конечном поле; используется только для подписания; длина ключа ограничена 1024 битами; принят в качестве гос. стандарта США; применяется для секретных и несекретных коммуникаций; разработчиком является АНБ. |
Прочие алгоритмы
Кроме непосредственно алгоритмов шифрования в PGP используются и некоторые другие, например, пороговая схема Блейкли-Шамира для разделения ключа и гамма-генератор (генератор ПСЧ) для создания случайных симметричных ключей шифрования. Первый использует простую математику, не имеющую никаких слабых мест. Второй соответствует проверенному стандарту ANSI X9.17 и работает со столь большим объёмом энтропийных данных, что у взломщика нет никакой возможности предсказать любой из предыдущих или последующих сеансовых ключей.
Парадокс "дней рождений" и стойкость PGP
Как отмечалось в описании хэш-функций, кроме корреляции между длиной свёртки и устойчивостью алгоритма к коллизиям существует один важный нюанс. Он проистекает из так называемого парадокса дней рождений, часто используемого в математической статистике. Ответьте, сколько человек должно собраться в одной комнате, чтобы с вероятностью более 1/2 хотя бы у одного из них был бы общий с вами день рождения? Ответ – 253. А сколько людей должно собраться, чтобы с той же вероятностью хотя бы у двоих из них был общий день рождения? Ответ поразителен – 23, поскольку, если в комнате находятся 23 человека, они образуют 253 различные пары.
Этот же принцип применяется для поиска коллизий хэш-функций. При использовании MD5, чтобы изготовить поддельное сообщение, производящее дайджест заданного, нужно перебрать максимум 2128 вариантов. Но чтобы изготовить два сообщения, производящих одно хэш-значение, нужно перебрать максимум 264 вариантов, что вполне реально. Добавляя слово "максимум" я подразумеваю, что исходя из теории вероятности искомый результат с 50-процентным успехом будет найден уже после проверки 263 вариантов при поиске пары с идентичным хэш-значением. Проблема всей современной криптографии – это отсутствие нижней границы стойкости; длина ключа задаёт лишь общий объём пространства ключей, но всегда есть вероятность ткнув пальцем в небо угадать решение. Вот почему настоятельно рекомендуется перейти к новым версиям PGP использующим SHA1 как основной алгоритм односторонней хэш-функции.
Но всё же нельзя упускать из виду и другие факторы. По закону Мура вычислительная мощность ЭВМ при равных затратах увеличивается в два раза каждые полтора года и на порядок за пять лет. Вспомните свой домашний компьютер ещё пару лет назад, чтобы оценить справедливость этой закономерности. Уже сегодня реально взломать 512-битовый асимметричный ключ на распределённой системе, если вовлечь в работу достаточно простаивающего процессорного времени. 1024 бита, не говоря о большем, пока остаются недосягаемы (вспомните, что каждый дополнительный бит ключа увеличивает время подбора в два раза), но технологии факторизации постоянно оптимизируются и модернизируются. Разложение чисел на множители является одной из наиболее динамично развивающихся областей прикладной математики. И хотя строительство квантового криптоанализатора пока существует только в голубых мечтах криптологов, никто не может достоверно сказать, когда будут устранены все стоящие на пути этих планов преграды.