Что такое GPG
Эта статья ориентирована на начинающих - здесь не будет затрагиваться принцип работы GPG, алгоритмы, которые в нем используются и прочее.
Теория
Ситуация. Олег хочет отправить информацию Николаю, но между ними расстояние несколько тысяч километров и есть только незащищенный способ связи - публичный чат с большим количеством людей.
Можно подумать, что нужно использовать обычное симметричное шифрование (а-ля сейф с ключом) - но нет. Оно подразумевает передачу секретного (приватного) ключа получателю - что не подходит для нашего случая.
Для таких случаев изобрели асимметричное шифрование. В нем есть уже 2 ключа - приватный и публичный. Название второго говорит само за себя - его можно раздавать каждому встречному1. Почему? Публичный ключ - может только зашифровать информацию, но не расшифровать её. Приватный же, может и зашифровывать, и расшифровывать информацию.
На практике это можно представить так2: У участника A есть личный замок и ключ от него. Если участник А хочет получить секретную посылку от участника Б, то он публично передаёт ему свой замок. Участник Б защёлкивает замок на секретной посылке и отправляет её участнику А. Получив посылку, участник А открывает ключом замок и получает посылку.
GPG - свободная бесплатная программа для шифрования и подписывания файлов и текстовых сообщений, реализация OpenPGP, который в свою очередь “реализация” ассиметричного шифрования.
Итак, вернёмся к нашим баранам челам.
Алгоритм обмена зашифровки и обмена информацией с GPG:
- Олег просит Николая создать ключи
- Николай генерирует приватный и публичный ключи
- Николай отправляет публичный ключ Олегу
- Олег зашифровывает информацию публичным ключом олега
- Олег отправляет зашифрованную информацию олегу через публичный чат
- Николай расшифровывает информацию приватным ключом
Но тут появился глупый злоумышленник, не знающий как работает GPG, и он попытался расшифровать сообщение публичным ключом. Но у него ничего не получится - публичный ключ может только зашифровывать, но не расшифровывать.