сравнение SSH и PGP
Наглядное сравнение SSH и PGP систем и их использование
SSH и PGP ключи — это два столпа современной кибербезопасности, но они решают совершенно разные задачи. Их часто путают, потому что оба используют асимметричную криптографию (пары из открытого и закрытого ключей).
Проще всего запомнить так:
- SSH-ключи — это пропуск. Их основная задача — аутентификация (доказательство того, что вы имеете право доступа к чему-либо).
- PGP-ключи — это универсальный инструмент. Их задачи — шифрование (чтобы не могли прочитать), подпись (чтобы могли проверить авторство и целостность) и иногда аутентификация.
Сравнительная таблица: SSH vs PGP ключи
Критерий | SSH-ключи (Secure Shell) | PGP-ключи (Pretty Good Privacy) |
---|---|---|
Основное назначение | Аутентификация и установка безопасного канала. Предоставление доступа к чему-либо (серверу, Git-репозиторию, etc.) без пароля. | Шифрование, подпись, аутентификация. Защита конфиденциальности и целостности данных (почты, файлов, ПО). |
Главная задача | Доказать серверу, что вы — это вы. | 1. Зашифровать данные для конкретного получателя. 2. Подписать данные, чтобы подтвердить авторство. 3. Зашифровать данные (например, файлы). |
Типичное применение | Вход на удаленные серверы (Linux), безопасная передача файлов (SCP, SFTP), работа с Git (GitHub, GitLab). | Шифрование электронной почты, подписание коммитов в Git, проверка целостности скачанного ПО (например, дистрибутивов Linux), шифрование файлов. |
Формат и структура | Относительно простой. Чаще всего это пары файлов: id_rsa (закрытый) и id_rsa.pub (открытый). Используют алгоритмы вроде RSA, Ed25519. |
Сложная и богатая структура. Ключ содержит много метаданных: имя, email, даты создания/истечения, возможности ключа (может ли он шифровать, подписывать), отпечаток (fingerprint), а также может состоять из подключей. |
Доверие (Trust Model) | Простое и централизованное. Вы вручную копируете свой открытый ключ на нужный сервер (в файл ~/.ssh/authorized_keys ). Сервер доверяет тому, у кого есть соответствующий закрытый ключ. |
Децентрализованное (Веб доверия - Web of Trust). Вы можете подписывать ключи других людей, подтверждая, что доверяете их подлинности. Цепочка таких подписей создает сеть доверия. |
Идентификация | Понимается сервером. Обычно привязана к пользователю на конкретном сервере. | Привязана к человеку (через имя и email в ключе). |
Отзыв ключа | Удаление открытого ключа из файла authorized_keys на сервере. |
Создание и широкое распространение сертификата отзыва (Revocation Certificate), который объявляет ключ недействительным. |
Наглядные схемы работы
1. Схема работы SSH-ключа для доступа к серверу
flowchart TD subgraph User [Пользователь на своем компьютере] A[Запрос подключения к серверу] --> B[SSH-клиент предъявляет<br>свой Открытый ключ] A --> C[Сервер отправляет<br>«Вызов» случайными данными] C --> D[SSH-клиент подписывает «Вызов»<br>своим Закрытым ключом] D --> E[Отправляет подпись серверу] end subgraph Server [Удаленный сервер] B --> F[Сервер проверяет<br>есть ли присланный Открытый ключ<br>в файле authorized_keys] E --> G[Сервер проверяет подпись<br>«Вызова» с помощью<br>найденного Открытого ключа] G -- Подпись верна --> H[✅ Аутентификация успешна<br>Доступ разрешен] G -- Подпись неверна --> I[❌ Доступ запрещен] end
2. Схема работы PGP-ключа для подписи данных
flowchart TD subgraph Sender [Отправитель Подписывает данные] A[Исходные данные] --> B[Создает их хэш отпечаток] B --> C[Подписывает хэш<br>своим Закрытым PGP-ключом] C --> D[Цифровая подпись] A --> E[Объединяет исходные данные<br>и подпись для отправки] D --> E end subgraph Receiver [Получатель Проверяет подпись] E --> F[Разделяет полученное<br>на данные и подпись] F --> G[Вычисляет хэш<br>от полученных данных] F --> H[Расшифровывает подпись<br>Открытым PGP-ключом отправителя<br>и получает оригинальный хэш] G --> I{Сравнивает хэши} H --> I I -- Совпали --> J[✅ Подпись верна<br>Данные подлинны и не изменены] I -- Не совпали --> K[❌ Подпись неверна!<br>Данные отклонены] end
Ключевые выводы и аналогия
Представьте себе большую охраняемую территорию:
- SSH-ключ — это пропускная карта, которую вы прикладываете к турникету. Турникет (сервер) проверяет, есть ли номер вашей карты в базе разрешенных номеров. Если есть — вас пускают. Задача решена.
- PGP-ключ — это ваша печать и набор секретных кодов.
- Шифрование: Вы можете положить документ в шкатулку и запереть ее на кодовый замок, который откроется только кодом конкретного получателя.
- Подпись: Вы можете запечатать документ сургучной печатью. Любой, у кого есть оттиск вашей печати (ваш открытый ключ), может убедиться, что документ распечатали вы и его не вскрывали.
Можно ли использовать PGP-ключ для SSH?
Технически да, это возможно через дополнительные надстройки (например, gpg-agent
может работать как ssh-agent
). Это позволяет использовать один главный PGP-ключ для множества задач (почта, подпись кода, доступ к серверам). Но «из коробки» эти системы не совместимы.