Учиться · 8 мин. чтения
Как работает PGP — объяснение простыми словами
PGP сочетает асимметричное и симметричное шифрование, позволяя отправлять личные сообщения без совместного использования секрета. Вот что на самом деле происходит под капотом.
PGP — Pretty Good Privacy — это протокол шифрования, позволяющий двум людям обмениваться личными сообщениями, не встречаясь заранее для обмена паролем. С 1991 года он остаётся основой шифрования электронной почты и лежит в основе большей части того, что делает этот сайт.
Под приятным названием скрывается умелое сочетание двух различных видов криптографии. Каждый из них решает проблему, с которой другой справиться не может, и PGP объединяет их в единый рабочий процесс.
Две половины: асимметричная и симметричная
Симметричное шифрование (представьте AES) работает быстро и использует единый общий ключ — тот же ключ, что запирает и отпирает сообщение. Проблема: обе стороны уже должны иметь этот ключ. Если вы можете выслать его по почте, злоумышленник может его перехватить.
Асимметричное шифрование (RSA, ECC) использует пару ключей: открытый ключ, который может иметь кто угодно, и закрытый ключ, которым владеете только вы. Любой может зашифровать что-либо вашим открытым ключом, но расшифровать может лишь тот, у кого есть закрытый. Проблема: это медленно и ограничивается небольшими данными.
Как PGP их объединяет
- Вы генерируете свежий случайный «сеансовый ключ» — одноразовый AES-ключ специально для этого сообщения.
- Вы шифруете само тело сообщения сеансовым ключом (быстро, симметрично).
- Вы шифруете сеансовый ключ открытым PGP-ключом получателя (медленно, но нагрузка невелика).
- Вы объединяете оба шифртекста и отправляете.
На другом конце получатель использует свой закрытый ключ для разблокировки сеансового ключа, а затем — сеансовый ключ для разблокировки сообщения. Сеансовый ключ уничтожается. Каждое новое сообщение получает новый сеансовый ключ.
Подпись — зеркальное отражение
Подпись — это та же идея наоборот. Вы хешируете своё сообщение (SHA-256 или сильнее) и шифруете хеш своим закрытым ключом. Любой, у кого есть ваш открытый ключ, может расшифровать хеш и убедиться, что он совпадает, — что доказывает (а) неизменность сообщения и (б) то, что оно было подписано владельцем вашего закрытого ключа.
Почему это трудно взломать
Взломать PGP означает либо угадать закрытый ключ получателя (вычислительно нереально для RSA-3072+ или любой современной кривой ECC), либо найти уязвимость в базовых алгоритмах. Десятилетия публичного анализа RSA, AES и Curve25519 не выявили таких уязвимостей.
Реалистичные атаки направлены не на математику — они направлены на пользователя. Слабая парольная фраза в файле закрытого ключа, скомпрометированный компьютер, социальная инженерия, вынуждающая вас зашифровать данные на неверный ключ. PGP делает канал приватным; всё остальное зависит от вас.
С чего начать
Создайте пару ключей в инструменте «Генерация ключей», поделитесь открытым ключом с теми, кто хочет вам писать, и храните закрытый ключ на устройстве, которым управляете только вы. Это всё, что нужно для начала.