Шифрование с открытым ключом

Простыми словами: как работает популярная схема шифрования email

Рассмотрим на простых примерах, как работает шифрование с открытым ключом. Допустим, наша героиня — назовем ее Аней — решила освоить это дело. Сегодня Аня может выбрать для шифрования одну из популярных компьютерных программ. Такие программы обеспечивают надежное, или, как иногда говорят, стойкое шифрование. Его нельзя «взломать» в сколь-нибудь разумное время, просто перебирая пароли, как нам иногда показывают в кино. 

Симметричное шифрование собственных файлов

Допустим, Аня решила защитить свои самые важные файлы так, чтобы посторонние лица не смогли прочесть содержимое. 

Подобно двери, для запирания которой нужен ключ, Аня использует фрагмент компьютерного кода как ключ для шифрования. Этот ключ дополнительно защищен паролем, который известен только Ане.

Симметричное шифрование

Если Ане понадобится расшифровать свой файл, она использует тот же ключ.

Расшифровка тем же ключом

Как видите, это обратные, симметричные операции. Поэтому такое шифрование порой называют симметричным.

Симметричное шифрование электронных сообщений

Если Аня захочет написать зашифрованное письмо своему другу Боре, она должна сначала передать ему копию ключа. Теперь Аня:

  • сочиняет письмо,
  • шифрует его с помощью ключа,
  • отправляет шифровку Боре.

Боря:

  • получает шифровку,
  • расшифровывает ее с помощью того же ключа,
  • читает письмо Ани.
Симметричное шифрование на расстоянии

Представим, что в планы друзей вмешивается злодей Захар, опытный специалист с широкими полномочиями. У него есть техническая возможность перехватывать все, что Аня и Боря посылают друг другу. Эксперты по безопасности называют такой вид атаки «человек-в-середине» (man-in-the-middle). Таким образом, Захар сначала перехватит (и скопирует) ключ, потом шифровку. Ничто не может помешать ему читать всю дальнейшую зашифрованную переписку.

Злоумышленник успешно перехватывает шифровку и читает текст

Таким образом, слабое место — передача ключа. Аня могла бы лично вручить ключ Боре, но что если друзья живут в разных городах и даже странах? А так чаще всего и бывает при общении по email.

Шифрование переписки с открытым ключом

Допустим, шифровальная программа позволяет Ане создать сразу пару ключей. Эти ключи уникальные и обладают особенностью: то, что зашифровано одним ключом, может быть расшифровано только парным ключом. У себя на компьютере Боря сгенерирует аналогичную, свою пару ключей.

Теперь Аня и Боря возьмут из пары по одному ключу и обменяются ими — например, отправят по email или даже открыто выложат на сайт. Мы будем называть эти ключи открытыми: открытый ключ Ани и открытый ключ Бори.

Парные ключи Аня и Боря оставят при себе. Каждый такой ключ будет защищен надежным паролем. Мы назовем эти ключи секретными.

Аня и Боря обмениваются ключами

Допустим, Аня хочет написать Боре зашифрованное письмо. Она:

  • сочиняет письмо,
  • шифрует его с помощью открытого ключа Бори,
  • отправляет шифровку Боре.

Боря:

  • получает шифровку,
  • расшифровывает ее с помощью своего секретного ключа (единственного ключа в мире, который это позволит),
  • читает письмо Ани.
Аня отправляет Боре шифрованное письмо

Если Боря хочет ответить, то свое сообщение для Ани он зашифрует открытым ключом Ани. Получив шифрованный ответ, Аня расшифрует его своим секретным ключом.

Боря отвечает Ане

А как же Захар? Он, конечно, перехватит открытые ключи Ани и Бори, а также все шифровки. Но никакой пользы эти данные Захару не принесут. Открытые ключи не годятся для расшифровки.

У Захара ничего не получится

Таким образом, всякий может быстро создать новую пару ключей, если прежняя потеряна или скомпрометирована, и отправить своему собеседнику новый открытый ключ. Личная встреча не понадобится.

Программы и приложения

Шифрование с открытым ключом в гражданской сфере получило широкое распространение в 90-е годы прошлого века благодаря усилиям американского программиста Фила Зиммермана и его единомышленников. Созданная Филом программа называлась PGP (Pretty Good Privacy). Энтузиасты разработали бесплатную программу с открытым кодом GnuPG. Сегодня многие программы используют стандарт OpenPGP и поэтому совместимы. Это значит, что письмо, зашифрованное одной программой, может быть расшифровано другой программой, которая поддерживает тот же стандарт.

Одной из наиболее простых реализаций шифрования email является Mailvelope. Это дополнение к браузеру (Google Chrome, Mozilla Firefox, Edge, Brave и др.) позволяет шифровать и расшифровывать электронные письма и файлы-вложения. Mailvelope предназначен для веб-почты. Неважно, какие почтовые провайдеры у вас и у вашего адресата. Вы можете использовать те адреса, к которым привыкли. Наиболее органично Mailvelope интегрируется с Google Mail. 

Если у вас смартфон на Android, можете попробовать «связку» K-9 Mail + OpenKeychain. OpenKeychain «отвечает» собственно за шифрование, а K-9 является почтовой программой. Оба приложения бесплатные и с открытым кодом.

Здесь вы можете посмотреть другие программы.