- Защита электронной почты с помощью PGP
Защита электронной почты с помощью PGP
- Функции PGP.
- Генерирование ключей PGP.
- Формат сообщений PGP.
- Управление открытыми ключами PGP.
Функции PGP
Электронная почта – одно из часто используемых сетевых приложений, которое применяется на всех компьютерных платформах любой архитектуры.
Существует 2 основных средства защиты электронной почты:
· PGP;
· S/MIME.
Пакет PGP (Pretty Good Privacy – вполне надежная секретность) – программный продукт, позволяющий использовать современные надежные криптографические алгоритмы для защиты электронной почты и файлов.
Основные преимущества этого пакета, выделяющие его среди других аналогичных продуктов:
1. Открытость. Исходный текст PGP доступен в открытом виде. Любой эксперт может убедиться в эффективности реализации криптоалгоритмов.
Рекомендуемые материалы
2. Надежность. Используется современные криптографические алгоритмы: RSA, DSS, Диффи-Хеллмана, CAST-128, IDEA, 3DES с доступной длиной ключей.
3. Бесплатность. PGP и его исходные тексты доступны в Internet в разных версиях, выполненных для множества платформ: Win, UNIX, Macintosh и т.д. Кроме того, существует и коммерческая версия.
4. Поддержка как централизованной (через серверы ключей), так и децентрализованной системы распределения открытых ключей.
5. Удобный программный интерфейс для пользователя любого уровня подготовки.
История PGP начиналась в 1991, когда программист Филипп Циммерман, написал программу для защиты файлов и сообщений.
За это, кстати, Циммерман был подвергнут преследованиям. Его обвиняли в экспорте криптографических алгоритмов за пределы США (действовали ограничения) – программа быстро распространялась через Internet.
В итоге обвинение было снято. В 1996г. была образована компания Pretty Good Provacy, Inc. Продукт был экспортирован из США официальным, хотя и курьезным способом – исходный текст программы был опубликован в виде книги, а затем вывезен из США, отсканирован и скомпилирован.
PGP, если не рассматривать управление ключами, предоставляет 5 основных функций: аутентификация, конфиденциальность, сжатие, совместимость, сегментация.
1. Цифровая подпись (аутентификация)
Используемые алгоритмы: SHA-1, RSA или DSS.
Схема:
· Отправитель А создает сообщение;
· Отправитель А вычисляет хеш-код сообщения с помощью SHA-1 (160-битовый);
· Хеш-код шифруется с помощью RSA или DSS с использованием личного ключа отправителя;
· Подпись добавляется в начало сообщения;
· Сообщение может быть сжато с помощью ZIP.
2. Шифрование сообщения (конфиденциальность)
Используются CAST или IDEA или 3DES и RSA или Диффи-Хеллмана. Конфиденциальность обеспечивается шифрованием сообщений, предназначенных для хранения в виде файлов.
· Сообщение шифруется с помощью одного из методов традиционного шифрования (CAST-128, IDEA или 3DES) с одноразовым сеансовым ключом Ks, генерируемым отправителем;
· Сеансовый с помощью алгоритма Диффи-Хеллмана или RSA с использованием открытого ключа получателя и включается в начало сообщения.
Каждый ключ схемы традиционного шифрования применяется только один раз, т.е. для каждого сообщения генерируется новый ключ в виде случайного 128-битового числа.
Комбинация 2-х схем шифрования дает следующие преимущества:
· Алгоритм традиционного шифрования значительно быстрее, чем RSA или Диффи-Хеллмана;
· Использование шифрования с открытым ключом решает проблему распределения сеансовых ключей (не требуется использовать специальные протоколы обмена ключами.
Каждое сообщение является одиночным независимым событием со своим собственным ключом Ks.
Т.о. вся схема оказывается защищенной в той мере, в какой защищен алгоритм схемы шифрования с открытым ключом. Поэтому PGP предлагает пользователю выбор длины ключа от 768 до 3072 битов.
3. Конфиденциальность и аутентификация
· Отправитель сначала подписывает сообщение с помощью своего собственного личного ключа;
· Отправитель шифрует сообщение и подпись с помощью сеансового ключа;
· Отправитель шифрует сеансовый ключ с помощью открытого ключа получателя.
4. Сжатие (Z, Z-1)
В PGP используется сжатие сообщения по алгоритму ZIP.
1. для затруднения криптоанализа;
2. выравнивания статистических характеристик;
3. уменьшение объема данных.
По умолчанию PGP сжимает сообщение после создания подписи, но перед шифрованием.
1. Подпись до сжатия по следующей причине:
если подписать сжатый документ, то для верификации необходимо будет либо хранить сжатую версию сообщения, либо сжимать сообщение каждый раз когда требуется верификация.
2. Шифрование применяется после сжатия, чтобы усилить криптографическую защиту сообщения.
5. Совместимость на уровне электронной почты
При использовании PGP шифруется подпись или все сообщение (т.е. шифрование в любом случае).
Т.о. часть или все выходное сообщение представляет собой поток битов.
Однако многие системы электронной почты позволяют использовать только символы текста ASCII.
Чтобы удовлетворить этому ограничению, PGP обеспечивает преобразование 8-битового двоичного потока в поток печатаемых символов ASCII.
Для этого используется схема конвертирования radix-64. Каждая группа из 3-х байтов преобразуется в 4 символа ASCII, к которым присоединяется контрольная сумма (CRC), позволяющая обнаружить ошибки при передаче данных, (каждые 6 бит в ASCII – символ, 26 = 64).
Преобразовав, radix-64 увеличивает длину передаваемого сообщения на 33%, но вместе со сжатием сообщение уменьшается приблизительно на 1/3.
6. Сегментация и обратная связь сообщения
Средства электронной почты часто ограничивают максимальную длину сообщения (UUCP – 60кБ).
Любое более длинное сообщение должно быть разбито на сегменты меньшей длины, каждый из которых посылается отдельно.
Чтобы соответствовать такому ограничению, PGP автоматически разбивает слишком длинные сообщения на сегменты.
Сегментация проводится после выполнения всех других операций, включая radix-64.
На стороне получателя система PGP должна отбросить заголовок электронной почты и вновь собрать весь оригинальный блок сообщения перед выполнением остальных операций.
Генерирование ключей PGP
PGP использует 4 типа ключей:
· одноразовые сеансовые ключи;
· открытые ключи;
· личные ключи;
· парольные ключи схемы традиционного шифрования.
Следовательно, необходимы:
1. Средства генерирования случайных сеансовых ключей;
2. Возможность пользователю иметь несколько пар открытых/личных ключей (чтобы время от времени менять пару ключей; чтобы с разными группами пользователей взаимодействовать с помощью разных ключей). Следовательно, возникает необходимость в средствах, позволяющих идентифицировать конкретные ключи.
3. Каждый объект системы PGP должен поддерживать файл собственных пар открытых/личных ключей, а также открытых ключей корреспондентов (т.е. осуществлять управление открытыми ключами).
Что касается генерирования ключей, то в PGP используется сложная и мощная схема генерирования случайных и псевдослучайных чисел.
Случайные числа в PGP генерируются на основе 1) 8-битовых значений нажатых пользователем клавиш и 2) интервалов времени между нажатиями.
Истинно случайные числа используются в PGP в следующих целях:
· применяются при создании пар ключей RSA;
· обеспечивают начальные значения для генератора псевдослучайных чисел;
· обеспечивают дополнительный ввод текста в процессе генерирования псевдослучайных чисел.
Псевдослучайные числа генерируются с помощью алгоритма ANSI X12.17 с использованием CAST-128 и шифрования в режиме CFB (шифрованной обратной связи).
Псевдослучайные числа
· применяются при создании сеансовых ключей;
· служат для создания векторов инициализации (IV), используемых с сеансовыми ключами при шифровании в режиме CFB.
Идентификаторы ключей
Пользователь может иметь любое число пар личный/открытый ключ.
Чтобы получателю знать, какой из его открытых ключей использовался для шифрования данного сеансового ключа, с каждым открытым ключом связывается идентификатор. Идентификатор, связываемый с открытым ключом, размещается в младших 64 разрядах ключа, т.е. он равен:
IdKUa = KUa mod 264
Идентификатор требуется и для цифровой подписи.
Формат сообщения PGP
Рассмотрим более подробно формат передаваемого сообщения.
Сообщение складывается из 3-х компонентов:
· самого сообщения;
· цифровой подписи (необязательно);
· сеансового ключа (необязательно).
1. Компонент сообщения включает 1) фактические данные, предназначенные для хранения или передачи; 2) имя файла; 3) метку даты-времени, указывается время создания сообщения.
2. Компонент цифровой подписи включает:
· метку даты-времени, указывается время создания сообщения;
· профиль сообщения (160-битовый хеш-код, созданный с помощью SHA-1 и шифрованный с помощью личного ключа отправителя). Профиль вычисляется для данных + метка даты/время подписи. Это обеспечивает защиту от атак воспроизведения;
· ведущие два октета профиля сообщения (проводится сравнение этого поля с первыми 2-мя октетами дешифрованного профиля, чтобы получатель мог определить, тот ли ключ использовался для дешифрования профиля)
· идентификатор открытого ключа отправителя (идентифицирует пару открытый/личный ключ, используемые для шифрования/дешифрования профиля сообщения)
1) и 2) могут быть сжаты ZIP и зашифрованы с помощью сеансового ключа.
Бесплатная лекция: "3.1 Постановка задачи параметрической оптимизации" также доступна.
3. Компонент сеансового ключа включает:
· сеансовый ключ;
· идентификатор открытого ключа получателя, который использовался отправителем для шифрования данного сеансового ключа.
Весь блок переводится в формат radix 64.
Связки ключей
5.