PGP Suite
Создайте пару ключей, зашифруйте сообщение, расшифруйте другое, подпишите текст так, чтобы любой мог доказать, что он от вас, проверьте присланную вам подпись и осмотрите ключ, прежде чем ему доверять, — пять задач, ради которых люди открывают GnuPG, без командной строки. Всё выполняется локально, в этой вкладке браузера: ваш приватный ключ и парольная фраза никогда не загружаются, не записываются в журнал и не покидают ваше устройство, потому что инструмент, который просит вставить приватный ключ на сервер, уже провалил свой единственный важный тест. Закройте вкладку — и ключи исчезнут вместе с ней: сохраните созданное, прежде чем уйти.
Создать пару ключей
Curve25519 — современный выбор по умолчанию: маленькие ключи, быстрые операции и тот же выбор, который нынешний GnuPG делает для новых ключей. Выбирайте RSA-4096, только когда инструменты другой стороны достаточно стары, чтобы он им требовался. Парольная фраза шифрует приватный ключ в состоянии покоя — задайте её, если будете хранить ключ где-либо.
Парольная фраза никогда не покидает эту вкладку. Если вы её зададите и забудете, приватный ключ восстановить нельзя — ни нам, ни кому-либо.
Зашифровать сообщение
Вставьте публичный ключ получателя и сообщение. Результат сможет открыть только соответствующий приватный ключ, поэтому шифротекст можно отправлять по каналам, которым вы не доверяете.
Расшифровать сообщение
Вставьте ваш приватный ключ, его парольную фразу и зашифрованное сообщение. Открытый текст появится здесь и нигде больше — он не сохраняется, поэтому скопируйте его, прежде чем закрыть вкладку.
Подпись и проверка
Открытая подпись сохраняет сообщение читаемым и позволяет любому, у кого есть ваш публичный ключ, доказать, что оно ваше и не изменено. Подписывайте слева своим приватным ключом; проверяйте справа подписанное сообщение публичным ключом подписавшего.
Осмотреть ключ
Прежде чем шифровать на ключ, который вам кто-то передал, посмотрите на него: кем он себя заявляет, какой алгоритм использует, когда создан, истекает ли, и отпечаток, который нужно сверить по другому каналу — по телефону, лично, любым способом, кроме того канала, что доставил ключ.
Работает на OpenPGP.js, используемом без изменений по GNU Lesser General Public License v3.0 или более поздней (LGPL-3.0-or-later). Полный исходный код доступен в репозитории OpenPGP.js.
Почему это живёт в вашем браузере, и чего оно не умеет
PGP пережил три десятилетия потому, что его модели доверия сервер не нужен: ключи создаёт их владелец, шифрование происходит на машине отправителя, а расшифровка — на машине получателя. Каждая веб-форма, ломающая эту форму, — загрузите ваш приватный ключ, мы расшифруем за вас — возвращает ровно того посредника, ради устранения которого PGP существует, поэтому этот набор построен наоборот: библиотека OpenPGP.js скачивается один раз как код, а затем ваши ключи, парольные фразы, открытые тексты и шифротексты обрабатываются этим кодом в вашей вкладке и никогда не передаются. Поэтому здесь также нет учётной записи и хранилища ключей. Ключ, созданный выше, существует только в текстовом поле, где появился, пока вы его не сохраните; честный порядок действий — скачать обе половины, держать приватный ключ в зашифрованном месте, опубликовать публичный ключ там, где вас ищут, и относиться к любой службе, предлагающей «безопасно хранить ваши ключи онлайн», как к угрозе, а не как к лекарству. Сопутствующее руководство шифрование PGP без командной строки проходит этот порядок от начала до конца, включая то, как сверить отпечаток перед первым сообщением.
Честные ограничения важны не меньше функций. Эта страница создаёт только открытые подписи — она не подписывает файлы отдельно и не шифрует файлы, потому что файловый инструмент тоже никогда не должен загружать свой ввод, а это заслуживает отдельной страницы, а не пристройки. Она не ведёт брелок ключей, не забирает ключи с серверов ключей и не проверяет отзывы: осматриваемый здесь ключ — это ключ как вставлен, а его отпечаток — та часть, которую нужно проверять в другом месте. И она не может спасти потерянную парольную фразу — восстановления нет, по замыслу. Вокруг набора соседние инструменты закрывают соседние задачи: сопоставитель сертификатов и ключей делает ту же проверку пары для сертификатов TLS, а генератор паролей создаёт сильную, уникальную парольную фразу, которой заслуживает ваш приватный ключ, — оба, как и эта страница, без того, чтобы что-либо покидало ваш браузер.
Частые вопросы
Действительно ли безопасно вставлять сюда мой приватный ключ?
На этой странице — да, и причина архитектурная, а не обещание. Страница не делает ни одного сетевого запроса при расшифровке или подписи: код OpenPGP.js выполняется во вкладке вашего браузера, ключ используется в памяти и никогда не передаётся, не сохраняется и не записывается в журнал. Вы можете убедиться сами: загрузите страницу, отключитесь от сети — и всё продолжит работать. Это иной вид инструмента, чем серверная форма «PGP онлайн», где ключ действительно едет на чужую машину: никогда не используйте такие с ключом, который имеет значение.
Curve25519 или RSA-4096 — что создавать?
Curve25519 для всего нового. Это значение по умолчанию в нынешних GnuPG и OpenPGP.js, ключи и подписи намного меньше, создание мгновенно вместо секунд охоты за простыми числами, и нет ловушек слабых параметров RSA. RSA-4096 здесь ради совместимости: очень старые почтовые плагины, унаследованные процессы с HSM и некоторые корпоративные инструменты до сих пор не читают ключи на эллиптических кривых. Если вы не уверены, нужен ли вам RSA, он вам не нужен.
Что будет, если я забуду парольную фразу приватного ключа?
Ключ потерян. Парольная фраза шифрует сам материал приватного ключа, поэтому без неё математику не выполнит никто — ни этот сайт (который её никогда не видел), ни OpenPGP.js, ни GnuPG. Эта окончательность и есть свойство безопасности, работающее как задумано. Создайте новую пару ключей, опубликуйте новый публичный ключ, а если потеря доступа будет болезненной, храните парольную фразу в менеджере паролей — созданную тем же классом локального инструмента, а не заученную до повторного использования.
Проверка говорит, что подпись не совпадает. Что это значит?
Это значит, что сообщение перед вами не является побитово тем сообщением, которое было подписано, — или что сам блок подписи был повреждён при передаче. Почтовые клиенты и чаты переформатируют строки, преобразуют тире и съедают trailing-пробелы, а открытая подпись покрывает точные байты, поэтому частая причина — искажение при транспортировке; намеренное изменение с кресла проверяющего выглядит в точности так же, в чём и состоит смысл подписи. Попросите сообщение вложением-файлом и, если содержимое важно, сверьте отпечатки по другому каналу.
Могу ли я использовать ключи, которые у меня уже есть, — из GnuPG, Mailvelope или с сервера ключей?
Да. Экспортируйте armored-блок (gpg --armor --export [email protected] для публичного ключа, --export-secret-keys для приватного) и вставьте его куда угодно на этой странице; инспектор читает и ключи, сделанные другим ПО OpenPGP, потому что формат — это стандарт, а не изобретение этого сайта. Обратное тоже верно: созданные здесь ключи чисто импортируются в GnuPG и любой совместимый клиент, так что ничто из сделанного здесь вас не запирает.