Что такое PGP шифрование?

«Что такое PGP шифрование?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PGP (Pretty Good Privacy) и его открытый аналог GPG (GNU Privacy Guard) — это криптографические системы, широко используемые в DevOps для обеспечения конфиденциальности, целостности и аутентичности данных. Они реализуют гибридное шифрование: симметричным ключом шифруются данные, а асимметричным — сам симметричный ключ.

Типичные сценарии использования в DevOps:

  1. Шифрование секретов и конфигураций: Защита файлов с паролями, API-ключами, TLS-сертификатами перед отправкой в репозиторий или на удаленный сервер.

    # Шифрование файла для конкретного получателя (по его публичному ключу)
    gpg --encrypt --recipient devops-team@company.com --output secrets.env.gpg secrets.env
    
    # В пайплайне CI/CD: расшифровка перед использованием
    gpg --quiet --batch --yes --decrypt --passphrase "$GPG_PASSPHRASE" --output secrets.env secrets.env.gpg
  2. Цифровая подпись релизов и артефактов: Гарантия, что собранный Docker-образ или пакет не был изменен после сборки.

    # Создание подписи для файла
    gpg --detach-sign --armor --output SHA256SUMS.gpg SHA256SUMS
    
    # Проверка подписи
    gpg --verify SHA256SUMS.gpg SHA256SUMS
  3. Подпись Git-коммитов и тегов: Подтверждение авторства кода.

    # Настройка Git
    git config --global user.signingkey YOUR_KEY_ID
    git config --global commit.gpgsign true
    
    # Создание подписанного тега
    git tag -s v1.2.3 -m "Release version 1.2.3"
  4. Защищенная передача данных между системами: Например, автоматическая отправка зашифрованных логов или метрик в центральное хранилище.

Базовый рабочий процесс с ключами:

# Генерация пары ключей (публичный/приватный)
gpg --full-generate-key
# Экспорт публичного ключа для коллег
# Экспорт приватного ключа (секретно!) для использования в CI/CD
# Импорт публичного ключа коллеги, чтобы шифровать для него
# Импорт приватного ключа в CI/CD систему через защищенную переменную окружения

Важность в DevOps: PGP/GPG — это стандартный, проверенный временем инструмент для встраивания криптографии в автоматизированные процессы, что является обязательным требованием для безопасного CI/CD и соответствия стандартам (например, SOC2, ISO27001).