Сравнение · 5 мин. чтения
PGP vs Age — когда выбирать современный инструмент шифрования файлов
Age — более новый, компактный, целенаправленный инструмент шифрования файлов. PGP обладает бо́льшей экосистемой и встроенной подписью.
Age (произносится "ах-гай") был выпущен в 2019 году Филиппо Вальзордой. Он делает шифрование файлов — и только это. PGP делает это же, плюс ещё два десятка вещей. Вопрос в том, помогает ли дополнительная поверхность или вредит.
Что каждый из них делает#
Age делает шифрование файлов. Всё. Нет подписей, нет web of trust, нет keyserver, нет дат истечения, нет subkey, нет MIME, нет интеграции с почтой. Формат: X25519 + ChaCha20-Poly1305.
PGP делает шифрование файлов, шифрование сообщений, подписи, сертификацию ключей, отзыв, несколько алгоритмов, несколько типов ключей, истечение, subkey, поддержку смарт-карт, интеграцию с почтой и федеративный протокол обнаружения ключей. Это набор. Age — инструмент.
Криптография#
- Age — X25519 ECDH + ChaCha20-Poly1305 + HKDF. Один выбор алгоритма, современный, без устаревших режимов.
- PGP — RSA/ElGamal/ECDH + AES-128/192/256/IDEA/3DES/Camellia. Десятилетия устаревших опций.
- Оба криптографически надёжны при настройках по умолчанию. У Age меньше поверхность атаки из-за меньшего числа переключателей.
Идентичность и обнаружение#
Идентичности Age — короткие ASCII-строки: age1ql3z7hjy54... и AGE-SECRET-KEY-1.... Нет User ID, нет email, нет срока истечения, нет цепочки подписей.
PGP-ключи несут User ID, даты создания, истечения, подписи и могут быть найдены по email на keyserver. Метаданные дают возможность "зашифровать для [email protected] без предварительного запроса её ключа" — но делают ключи большими, а формат сложным.
Подпись#
PGP подписывает. Age — нет. Позиция Филиппо: подпись должна быть отдельным инструментом (signify, minisign, ssh-keygen -Y sign). Смешивание — это то, что сделало спецификацию PGP такой большой.
Если нужно проверить происхождение, PGP делает это в одной операции. С Age вы шифруете через Age, а подписываете через что-то другое.
Экосистема#
- PGP — каждый дистрибутив Linux, почтовые клиенты, подпись GitHub, подпись пакетов, десятилетия пользователей.
- Age — один Go-бинарник, Rust-порт (rage), хорошая упаковка, интеграция с sops. Растёт, но небольшая.
Рекомендация#
- Шифрование для известного технического получателя с установленным Age — Age.
- Шифрование для кого-то, с кем вы ещё не переписывались — PGP (опубликованный ключ, привязанный к email).
- Электронная почта — PGP. У Age нет почтового формата.
- Секреты в Git-конфиг-репозитории — Age через sops.
- Подпись — PGP, если нужен один инструмент для обоих задач, или Age + minisign.
Age — для "зашифровать это для человека, у которого у меня уже есть идентичность". PGP — для "зашифровать для кого-то, у кого есть только email, или подписать для доказательства происхождения". Не конкуренты; ответы на разные предложения.