Шифрование почты: что реально защищено
«У нас вся почта шифруется» — фраза, которая звучит убедительно и почти всегда означает совсем не то, что человек имеет в виду. Обычно она значит «у нас настроен TLS между серверами», а не «содержимое письма недоступно никому, кроме отправителя и получателя». Разница между этими двумя утверждениями — это разница между реальной защитой в дороге и иллюзией защиты от всех. Разберём по фактам, что именно шифрует каждый вид шифрования почты и где заканчивается его зона ответственности.
Содержание
- Два разных шифрования, которые смешивают в кучу
- TLS: шифрует канал между конкретными серверами, не письмо целиком
- Что происходит с письмом внутри сервера — открытым текстом
- Сквозное шифрование: PGP/GPG и S/MIME — вот что реально скрыто от посредников
- Метаданные не прячутся даже при сквозном шифровании
- Что с этим делать на практике: два разных уровня ожиданий
Два разных шифрования, которые смешивают в кучу
Когда говорят «зашифрованная почта», обычно имеют в виду одну из двух совершенно разных вещей, и путаница между ними — источник почти всех завышенных ожиданий.
Первое — это шифрование соединения между почтовыми серверами: TLS (в почте чаще всего в виде STARTTLS поверх SMTP, реже implicit TLS/SMTPS на порту 465). Это транспортный уровень: защищается канал связи, а не сам объект, который по нему передаётся.
Второе — это шифрование содержимого письма: PGP/GPG или S/MIME. Здесь шифруется само тело письма (иногда и вложения) ещё до отправки, и расшифровать его может только обладатель приватного ключа получателя — независимо от того, сколько серверов письмо прошло по дороге.
Это не конкурирующие технологии и не взаимозаменяемые опции «выберите один вариант». Они решают разные задачи и обычно работают (или не работают) одновременно, независимо друг от друга. Именно поэтому у вас может быть идеально настроенный TLS и при этом ноль защиты содержимого письма от промежуточного сервера — или наоборот, PGP-шифрованное письмо, у которого тема и адреса видны любому по пути.
TLS: шифрует канал между конкретными серверами, не письмо целиком
STARTTLS в SMTP работает так: сервер А устанавливает соединение с сервером Б, они договариваются перейти на шифрованный канал (handshake — отдельная большая тема, там же согласуются алгоритмы и проверяются сертификаты), и дальше весь трафик этого конкретного TCP-соединения идёт зашифрованным. Если вам интересны детали самого рукопожатия — это разобрано отдельно в статье про TLS-рукопожатие и что происходит до первого байта.
Что это реально даёт: сетевой перехват на этом конкретном участке (провайдер, узел Wi-Fi, транзитный роутер, кто-то с доступом к каналу связи между А и Б) видит только зашифрованный трафик. Прочитать содержимое письма, просто снифферя сеть между этими двумя серверами, нельзя.
Проверить, что STARTTLS вообще предлагается сервером, можно вручную:
openssl s_client -starttls smtp -connect mail.example.com:25 -crlf
В ответе ищите строку 250-STARTTLS в списке возможностей сервера (EHLO-ответ) и убедитесь, что после STARTTLS соединение действительно переходит в TLS (появляется информация о сертификате, а не обрыв). Для порта 587 (submission, обычно между вашим почтовым клиентом и вашим сервером) команда аналогичная, только -connect mail.example.com:587.
Важный нюанс: STARTTLS в классической реализации — это oportunistic TLS. Если по какой-то причине рукопожатие не удалось (несовместимые версии протокола, проблема с сертификатом, активный MITM, который просто вырезает команду STARTTLS из ответа — атака известна как STARTTLS stripping), многие сервера по умолчанию откатятся на обычную незашифрованную передачу, просто чтобы письмо всё-таки дошло. Современные защиты вроде MTA-STS и DANE как раз призваны закрыть эту дыру, заставляя сервер требовать TLS и падать, а не откатываться, — но они настроены далеко не везде, и надеяться, что оба сервера в цепочке их поддерживают, не стоит.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать VPSЧто происходит с письмом внутри сервера — открытым текстом
Вот здесь начинается главное расхождение с бытовым представлением о «зашифрованной почте».
Путь письма от вас до получателя — это обычно не одно соединение, а цепочка: ваш почтовый клиент → ваш исходящий сервер (submission) → возможно, релей или спам-фильтр → сервер получателя (может быть несколько MX с балансировкой) → почтовый ящик получателя. TLS, если настроен, шифрует каждый отдельный отрезок этой цепочки. Но на каждом узле письмо в какой-то момент оказывается расшифрованным — потому что серверу физически необходимо прочитать заголовки (From, To, Subject, маршрутизацию), применить спам-фильтры, антивирусные проверки, правила пересылки, записать письмо в очередь или в файл на диске (mbox, Maildir) — а всё это невозможно сделать, не имея доступа к открытому содержимому.
Отсюда прямое следствие: администратор любого промежуточного сервера — вашего собственного почтового сервера, релея вашего провайдера, сервера получателя, любого MX по пути — технически может прочитать содержимое письма. Не потому что TLS плохо настроен, а потому что TLS вообще не про это. TLS защищает от постороннего в сети между двумя серверами, а не от того, кто управляет одним из этих серверов.
Это ровно та же логика, что и с шифрованием диска на сервере: технология защищает от одной конкретной угрозы (кражи физического носителя), но не от всех остальных — подробнее разобрано в статье про то, что реально защищает шифрование дисков. С почтовым TLS то же самое: он закрывает конкретную дыру (перехват в сети), а не превращает письмо в неприкосновенное содержимое на всём пути.
Если вы держите собственный почтовый сервер (например, через iRedMail или Mailcow — этому посвящены отдельные статьи по установке), это стоит держать в голове буквально: письма ваших пользователей физически лежат на диске вашего VPS в читаемом виде, пока получатель их не заберёт. TLS между вашим сервером и сервером получателя защищает канал, но не файл на диске.
Сквозное шифрование: PGP/GPG и S/MIME — вот что реально скрыто от посредников
Сквозное (end-to-end) шифрование содержимого решает именно ту проблему, которую TLS не решает: оно шифрует тело письма до того, как оно уходит с устройства отправителя, ключом, который есть только у получателя. Промежуточные серверы видят только зашифрованный блок данных — прочитать его не может ни ваш почтовый сервер, ни релей провайдера, ни сервер получателя, ни кто-либо ещё, кроме владельца приватного ключа.
Два основных подхода:
- PGP/GPG — асимметричное шифрование, где отправитель шифрует письмо публичным ключом получателя, а расшифровать может только приватный ключ получателя. Не завязан на конкретного провайдера почты, ключи можно хранить где угодно, публиковать через keyserver или обмениваться вручную.
- S/MIME — похожая идея, но ключи выдаются через сертификаты X.509, обычно через корпоративный или коммерческий удостоверяющий центр. Чаще встречается в корпоративной среде, где уже есть инфраструктура сертификатов.
Принципиальное отличие от TLS — это не автоматическая, прозрачная технология. TLS между серверами обычно включается один раз в конфигурации и дальше работает без участия пользователей на каждый конкретный разговор. PGP и S/MIME требуют, чтобы:
- У отправителя был настроен собственный ключ (сгенерирован, при желании подписан).
- У получателя тоже был ключ, а отправитель имел его публичную часть заранее.
- Оба пользователя реально включили шифрование в почтовом клиенте для конкретного письма (плагин, встроенная поддержка, ручная команда
gpg --encrypt).
Если получатель не пользуется PGP или у вас нет его публичного ключа — зашифровать письмо для него сквозным шифрованием просто нельзя, оно уйдёт как обычное. Это не флажок «включить шифрование для всей переписки», а договорённость с конкретным собеседником.
Пример шифрования файла публичным ключом получателя из командной строки:
gpg --encrypt --recipient ivan@example.com --armor message.txt
Результат — файл в текстовом ASCII-armor формате, который можно вставить в тело письма или приложить; расшифровать его сможет только владелец приватного ключа ivan@example.com.
Метаданные не прячутся даже при сквозном шифровании
Вот нюанс, который обычно упускают даже те, кто в целом понимает разницу между TLS и PGP: сквозное шифрование защищает содержимое, но не факт и контекст переписки.
Заголовки конверта письма — кто отправитель, кто получатель, через какие сервера письмо прошло (цепочка Received:), когда оно было отправлено, размер письма, а в классической реализации PGP/MIME зачастую и тема письма (Subject) — остаются видны на каждом промежуточном сервере в открытом виде. Это неизбежное следствие того, как устроена маршрутизация почты: серверу нужно прочитать «кому доставить», иначе он просто не сможет доставить письмо.
Это значит, что даже при идеально настроенном PGP администратор почтового сервера (ваш собственный или сервера получателя) не может прочитать, что написано в письме, но прекрасно видит: кто кому писал, как часто, в какое время суток, какого объёма были письма и какая у них была тема (если она не защищена отдельно). Для многих реальных угроз — юридического давления, корпоративного надзора, анализа связей — этого метаданного зачастую достаточно, даже без единого прочитанного слова из тела письма.
Отдельные схемы (некоторые реализации PGP/MIME, протокол шифрования темы в отдельных клиентах) пытаются скрыть и тему письма, но это не универсальная гарантия — зависит от конкретного клиента и договорённости с получателем, и рассчитывать на это по умолчанию не стоит.
Что с этим делать на практике: два разных уровня ожиданий
Полезно развести два сценария и не пытаться решить их одним и тем же инструментом.
Обычная повседневная деловая переписка. Здесь реалистичная и достаточная цель — убедиться, что TLS транспортного уровня работает корректно на вашем домене: STARTTLS отвечает, сертификат валиден и не просрочен, в идеале настроены MTA-STS и/или DANE, чтобы TLS не откатывался на обычную передачу при сбое рукопожатия. Это закрывает самую массовую и дешёвую для атакующего угрозу — пассивный перехват трафика в сети. Не нужно требовать от каждого сотрудника генерировать PGP-ключи ради письма про перенос созвона.
Действительно чувствительное содержимое — юридические документы, финансовые детали, персональные данные, которые не должны быть доступны даже вашему собственному почтовому администратору или администратору сервера получателя. Здесь TLS в принципе не решает задачу, сколько бы вы его ни настраивали: нужно сквозное шифрование содержимого, договорённость с конкретным получателем об обмене ключами и настроенный на обеих сторонах клиент. Это дополнительная работа и обычно разовая настройка на каждого нового собеседника — но только она даёт гарантию, о которой люди на самом деле думают, когда говорят «зашифрованная почта».
Сравнение по фактам:
| Что защищено | TLS между серверами | PGP/GPG или S/MIME |
|---|---|---|
| Содержимое письма в сети между серверами | Да | Да (дополнительно к TLS) |
| Содержимое письма на диске промежуточного сервера | Нет | Да |
| От администратора вашего почтового сервера | Нет | Да |
| От администратора сервера получателя | Нет | Да |
| Метаданные (кто, кому, когда) | Нет (видны всегда) | Обычно нет |
| Тема письма | Нет | Зависит от схемы, не гарантированно |
| Работает автоматически без действий получателя | Обычно да, между поддерживающими серверами | Нет, требует ключа и настройки у получателя |
Если вы переносите почту на собственный сервер (например, при переходе с Gmail на свой почтовый сервер), первый практический шаг — проверить именно TLS-конфигурацию нового сервера тем же openssl s_client, а не полагаться на то, что «раз это HTTPS-панель управления, значит и почта защищена» — это тот же порядок ошибки, что разобран в статье про миф «HTTPS значит сайт безопасный»: один защищённый канал не означает защищённость всего остального.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать VPSНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Если провайдер почты пишет «шифрование end-to-end», можно ли ему верить на слово?
Стоит уточнить конкретику: шифруется ли содержимое ключом, к которому у провайдера нет доступа, или речь о TLS между серверами и «шифровании на диске» (encryption at rest), которое сам провайдер расшифровывает для показа писем в веб-интерфейсе. Второе — это не сквозное шифрование в том смысле, о котором идёт речь в этой статье, хотя маркетингово оба варианта иногда называют одинаково.
Защищает ли PGP от того, что получатель перешлёт расшифрованное письмо кому-то ещё?
Нет. Сквозное шифрование защищает канал доставки и хранение по пути, но после расшифровки на устройстве получателя содержимое — это просто текст, который получатель может скопировать, переслать или сфотографировать экран. Криптография не решает проблему доверия к получателю.
Нужно ли шифровать письма PGP, если я и так использую VPN или защищённое подключение к почтовому серверу?
Это разные уровни. VPN и TLS к серверу защищают ваш сетевой канал до момента, пока письмо не попадёт на сервер (свой или чужой), а дальше оно всё равно хранится и обрабатывается в открытом виде, если не зашифровано сквозным способом. VPN не заменяет и не отменяет необходимость PGP для содержимого, которое должно быть скрыто и от администратора почтового сервера.
Можно ли настроить PGP так, чтобы это работало прозрачно, как TLS, без участия получателя?
Нет — в этом и есть принципиальное отличие технологии. Расшифровать письмо может только владелец приватного ключа, а значит получатель обязан иметь этот ключ и клиент, который умеет его применять. Автоматизировать можно процесс шифрования на своей стороне (скрипты, интеграции), но не устранить необходимость ключа у получателя.
Если и отправитель, и сервер, и получатель в одной корпоративной сети — метаданные всё равно видны?
Да, если только внутренняя почтовая система не построена специально для их сокрытия (что редкость). Заголовки маршрутизации, отправитель, получатель и время формируются на уровне протокола SMTP и не зависят от того, находятся ли все участники в одной организации.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →