Поле Encryption: и PGP-шифрование
Что такое PGP и зачем это нужно?
Представьте, что отчет об уязвимости - это важное письмо. Отправить его по email - всё равно что отправить обычную открытку, которую по пути может прочитать кто угодно. PGP (Pretty Good Privacy) - это как положить письмо в сверхпрочный сейф, открыть который может только получатель своим уникальным ключом. В нашем случае, этим получателем являетесь вы
Использование PGP (или его бесплатной реализации GnuPG/GPG) для security.txt - это золотой стандарт безопасности. Он гарантирует, что детали уязвимости останутся строго между вами и исследователем до тех пор, пока вы не выпустите исправление
Шаг 1: Установка GnuPG (GPG)
Прежде чем создавать ключи, нужно установить необходимое ПО. Это делается один раз
💻 Linux (Debian/Ubuntu)
sudo apt update && sudo apt install gnupg
💻 Linux (Fedora/CentOS)
sudo dnf install gnupg2
🍎 macOS (через Homebrew)
Если у вас не установлен Homebrew, сначала установите его. Затем выполните команду:
brew install gnupg
❖ Windows
Для Windows существует пакет Gpg4win. Скачайте его с официального сайта и установите:
После установки вы сможете выполнять все команды в терминале cmd или PowerShell
Шаг 2: Создание вашей пары PGP-ключей 🔑
Теперь создадим вашу личную пару ключей: публичный (которым делятся со всеми) и приватный (который хранится в строжайшем секрете)
1. Откройте терминал (или cmd/PowerShell на Windows) и выполните команду:
gpg --full-generate-key
2. Программа задаст вам несколько вопросов. Следуйте рекомендациям:
-
Please select what kind of key you want:
Нажмите Enter, чтобы выбрать вариант по умолчанию:(1) RSA and RSA -
What keysize do you want?
Введите4096. Это самый надёжный размер ключа -
Please specify how long the key should be valid:
Укажите срок действия, например1y(1 год). Бессрочные ключи (0) - плохая практика. Ключ всегда можно продлить -
Real name:
Введите название вашей компании или проекта, например:Example Corp Security Team -
Email address:
Укажите ваш контактный email из поляContact:, например:security@example.com -
Comment:
Можно оставить пустым, нажав Enter
3. Проверьте данные и подтвердите, введя O (Okay)
4. Самый важный момент! Вас попросят ввести парольную фразу (passphrase) для защиты вашего приватного ключа. Придумайте очень сложный, длинный и уникальный пароль. Запишите его в надёжном менеджере паролей. Если вы его потеряете, вы навсегда потеряете доступ к зашифрованным сообщениям
После этого GPG сгенерирует ключи. Это может занять несколько секунд
Шаг 3: Экспорт публичного ключа для сайта
Теперь вам нужно получить текстовую версию вашего публичного ключа, чтобы разместить его на сайте и дать на него ссылку в security.txt
1. Выполните команду, подставив свой email:
gpg --export --armor "security@example.com" > security-pubkey.asc
2. Рядом с вами появится файл security-pubkey.asc. Загрузите его на ваш сайт
3. В поле Encryption: в генераторе укажите прямую ссылку на этот файл, например: https://example.com/security-pubkey.asc
Шаг 4: Как исследователь шифрует письмо 📩
Этот раздел описывает действия со стороны исследователя безопасности
- Скачать ваш публичный ключ. Исследователь заходит по ссылке из вашего
security.txtи сохраняет файлsecurity-pubkey.asc - Импортировать ключ. Он добавляет ваш ключ в свою локальную "связку ключей":
gpg --import security-pubkey.asc - Написать отчет. Он создает текстовый файл с отчетом, например
report.txt - Зашифровать отчет. Он выполняет команду, используя ваш email:
Ключgpg --encrypt --armor -r "security@example.com" report.txt--armorсоздает текстовый (ASCII) зашифрованный файл, а не бинарный
В результате он получит файл report.txt.asc, который будет выглядеть как набор случайных символов. Этот файл он и отправит вам на почту
Шаг 5: Как вам расшифровать полученное письмо 📤
Вы получили зашифрованный файл report.txt.asc. Вот как его прочитать:
1. Сохраните файл на свой компьютер
2. Выполните в терминале команду:
gpg --decrypt report.txt.asc
3. GPG попросит вас ввести парольную фразу - ту самую, которую вы создали на Шаге 2 для защиты вашего приватного ключа
4. Если пароль верный, GPG расшифрует сообщение и выведет его содержимое прямо в терминал
🧠 Важные тонкости и лучшие практики
- Сертификат отзыва. Сразу после создания ключа сгенерируйте сертификат отзыва:
Этот файл - ваша "аварийная кнопка". Если ваш приватный ключ будет украден или утерян, вы сможете с помощью этого сертификата публично объявить ваш ключ недействительным. Храните файлgpg --output revoke.asc --gen-revoke "security@example.com"revoke.ascв сверхнадёжном месте отдельно от ключа (например, на флешке в сейфе) - Резервное копирование. Обязательно сделайте резервную копию вашего приватного ключа и храните её в безопасном месте (например, в зашифрованном контейнере на внешнем диске)
gpg --export-secret-keys --armor "security@example.com" > private-key-backup.asc - Отпечаток ключа (Fingerprint). У каждого ключа есть уникальный длинный идентификатор. Чтобы его увидеть, выполните:
Иногда полезно сверять отпечатки, чтобы убедиться, что вы используете правильный ключgpg --fingerprint "security@example.com"