Как это работает

Архитектура, обнаружение спама и то, как фильтр со временем становится умнее

Архитектура: транспорт IMAP → локальное хранилище → анализ

GravesMail использует IMAP-сервер вашего почтового провайдера исключительно как транспортный уровень. Я никогда не читаю сообщения из IMAP, чтобы показать их, — это было бы медленно и ненадёжно. Вместо этого происходит вот что:

  1. Загрузка из IMAP — сообщения скачиваются с сервера провайдера по зашифрованному соединению.
  2. Размещение в DMZ — новые сообщения попадают в локальную промежуточную область (SQLite) до того, как вы их увидите.
  3. 7-уровневый анализ безопасности — каждое сообщение и вложение проходит на вашем компьютере через все семь уровней защиты, включая сканирование YARA на вредоносное ПО.
  4. Фильтрация по быстрым правилам — сообщения, подходящие под ваши личные быстрые правила, автоматически раскладываются по вашему правилу: откладываются в ловушку для спама на проверку, перемещаются или удаляются.
  5. Перенос во «Входящие», «Спам» или «Вредоносное ПО» — чистые сообщения попадают во «Входящие». Спам уходит в «Спам». Сообщения с обнаруженным вредоносным ПО уходят в отдельную папку «Вредоносное ПО», а опасные вложения из них извлекаются и удерживаются.
  6. Удаление с сервера (необязательно) — если вы включили параметр «Удалить с сервера», сообщение удаляется у провайдера.

SQLite — единственный источник истины. Всё, что вы видите в интерфейсе, берётся из вашей локальной базы данных, а не из IMAP.

Двухэтапная синхронизация больших почтовых ящиков

Когда вы впервые подключаете учётную запись — особенно с тысячами сообщений, — GravesMail действует в два этапа:

Этап 1 (быстрый старт): сначала загружаются 500 самых новых сообщений из каждой папки, обычно меньше чем за минуту. Читать и работать можно сразу.

Этап 2 (фоновая синхронизация): остальные сообщения незаметно загружаются в фоне. Индикатор хода выполнения в строке состояния показывает процент завершения и примерное оставшееся время. Синхронизацию можно в любой момент приостановить, возобновить или остановить. Если закрыть приложение, ход синхронизации сохранится.

Семь уровней защиты

Каждое входящее сообщение и его вложения проходят через семь независимых уровней защиты. Каждый уровень ищет проблему своего рода и принимает решение сам. Если хотя бы один уровень поднимает тревогу, сообщение считается спамом — нет ни усреднения, ни общей оценки, которую нужно набрать. Одной тревоги достаточно. Это модель «7-уровневое OR».

🌐

1. Проверка домена

Существует ли домен отправителя и есть ли у него настоящие почтовые серверы? Не относится ли окончание его адреса (домен верхнего уровня, например .shop, .top, .click или .xyz) к тем, которыми часто злоупотребляют спамеры?

🧠

2. Байесовский фильтр

Выученная оценка того, насколько слова сообщения похожи на спам. Фильтр поставляется уже обученным, а затем учится у вас: каждое «Отметить спамом» или «Отметить не спамом» делает его умнее.

🔒

3. Аутентификация заголовков

SPF, DKIM и DMARC — стандартные проверки, подтверждающие, что отправитель тот, за кого себя выдаёт.

🔍

4. Эвристическая оценка

41 детектор по признакам в содержимом и заголовках: замаскированные слова (H0ME, S4LE), формулировки мошенничества с предоплатой и «наследством», поддельные заголовки, аномалии дат и страна происхождения отправителя.

📊

5. Репутация

Ваши списки безопасных и заблокированных отправителей, история отправителей и отслеживание кампаний по нескольким сообщениям — оно ловит спамера, который постоянно меняет домены отправителя, но использует тот же исходный сервер, тот же хост с полезной нагрузкой или ту же ссылку для отписки.

🛡

6. ВПО: АВ системы

В Windows вложения передаются установленному у вас антивирусу (Windows Defender, Norton, Bitdefender, Kaspersky и другим) через интерфейс AMSI. Этот уровень недоступен в macOS, Linux и на мобильных устройствах — и на этих платформах он прямо так и сообщает, а не выдаёт результат «чисто», которого на самом деле не получал.

🧬

7. ВПО: YARA

Проверяет байты вложений и тела сообщений по тысячам сигнатур вредоносного ПО, собранных сообществом, из репозитория Neo23x0/signature-base. Обнаруживает трояны, программы-вымогатели, средства удалённого доступа (RAT), вредоносные макросы Office, эксплойты PDF и фишинговые документы. Работает на всех платформах, включая мобильные, и встроен в приложение для работы без сети.

Честные отчёты — без ложной уверенности

Откройте «Свойства» любого сообщения, чтобы увидеть разбивку по уровням: какую оценку выставил каждый уровень, при каком пороге он поднимает тревогу и его состояние — «Тревога», «Чисто» или «Недоступно». Если сканер не смог отработать, GravesMail сообщает «Недоступно». Это никогда не показывается как «Чисто». Антивирус, который не запустился, а потом всё равно сообщил, что всё чисто, — худший вид средства защиты, потому что вы доверяете вердикту, который на самом деле не выносился.

Экран «Движок безопасности» («Инструменты» → «Движок безопасности», на мобильных устройствах — «Настройки» → «Движок безопасности») позволяет настроить каждый из семи уровней по отдельности с помощью ползунка чувствительности от 0 до 100%: 0% отключает уровень, 100% — максимальная чувствительность. Единого общего регулятора нет; уровни настраиваются по отдельности. На том же экране показаны текущий статус сканера ВПО, редактор политики по странам и доступный только для чтения перечень всех детекторов с указанием веса каждого.

Геолокация без запросов

Эвристический уровень учитывает, откуда пришло сообщение. Это определяется исключительно локально. GravesMail поставляется со встроенной таблицей соответствия диапазонов IP-адресов странам и обращается к ней на вашем устройстве — без DNS-запросов, без вызовов внешних API и без сторонних сервисов на этом пути. Метаданные ваших сообщений никогда не покидают устройство ради геолокации.

Что означает результат, решаете вы. На экране «Движок безопасности» страны можно отметить как «Безопасные» (без дополнительного признака спама) или как «Угроза» (сильный признак). Оба списка изначально пусты, так что обычная международная почта никак не штрафуется, пока вы сами не выберете политику.

Данные геолокации по IP — DB-IP (db-ip.com), по лицензии CC BY 4.0.

Блокировка внешних изображений и удаление пикселей отслеживания

В письмо, которое вы получаете, отправитель может встроить внешние изображения, загружаемые с его серверов. Когда изображение загружается, отправитель узнаёт ваш IP-адрес, сам факт открытия письма, время открытия и то, на каком устройстве вы его открыли.

GravesMail по умолчанию блокирует внешние изображения. Отдельно он обнаруживает и удаляет невидимые пиксели отслеживания (изображения 1×1, нужные только для отслеживания прочтения). Это независимые параметры: можно загружать изображения, не загружая трекеры, и наоборот.

Сквозное шифрование (OpenPGP)

GravesMail поддерживает OpenPGP — открытый совместимый стандарт сквозного шифрования и подписи электронной почты. Вы можете обмениваться личной почтой с любым, кто использует PGP, в любой почтовой системе (Proton Mail, Thunderbird, gpg и других), а не только с другими пользователями GravesMail. Это настоящий PGP/MIME, а не диалект GravesMail.

Ключи

Создайте ключ в менеджере ключей PGP: рекомендуется Ed25519/Curve25519, а для совместимости со старыми программами PGP доступен RSA-4096. Экспортируйте свой открытый ключ, чтобы вам могли писать, и импортируйте чужие, чтобы писать их владельцам. После импорта GravesMail показывает отпечаток ключа; сверьте его с владельцем по другому каналу — по телефону или лично — и отметьте ключ как проверенный. Непроверенный ключ всё равно работает, но остаётся с пометкой «не проверен», потому что эта пометка означает ровно одно: вы ещё не убедились, что этот ключ действительно принадлежит этому человеку.

Ключи определяются по отпечатку, а не по адресу электронной почты. Два ключа на один адрес — это нормально: старый и новый или RSA и Ed25519 рядом, — поэтому каждое действие выполняется с тем ключом, который вы выбрали, а не с первым, случайно совпавшим по адресу.

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

Сделайте резервную копию секретного ключа — это действительно важно

Если вы потеряете секретный ключ, каждое сообщение, когда-либо зашифрованное для него, станет безвозвратно недоступным. Ни я, ни кто-либо другой его не восстановит. Командой «Создать копию секретного ключа» сохраните защищённый паролем файл резервной копии в надёжном месте и запомните пароль. «Восстановить секретный ключ» возвращает его на новом или переустановленном устройстве и подтверждает, какой ключ восстановлен, показывая его идентификатор и отпечаток. Удаление собственного секретного ключа необратимо, поэтому GravesMail усиливает предупреждение и требует подтверждения.

Отправка и чтение

В окне создания сообщения есть элемент «Защита» с тремя режимами: «Подписать», «Зашифровать» и «Подписать + зашифровать» (рекомендуется для личной почты). По умолчанию он выключен, так что обычная почта не меняется. Полученная зашифрованная почта расшифровывается автоматически и отмечается закрытым замком 🔒; у подписанной почты показывается статус подписи, а о недействительной подписи сообщается заметно, а не вполголоса. Сообщение, зашифрованное для ключа, которого на этом устройстве нет, прямо об этом говорит, а не показывает пустое тело.

Когда вы отправляете зашифрованную почту, GravesMail шифрует её ещё и для вашего собственного ключа, чтобы копия в папке «Отправленные» оставалась для вас читаемой. Без этого вы не смогли бы расшифровать собственную сохранённую копию. Это включено всегда.

Правило без исключений

Если вы выбрали шифрование, а у получателя нет пригодного ключа, отправка блокируется. GravesMail останавливается и спрашивает: отменить или явно выбрать отправку без шифрования — это осознанное второе действие с перечислением получателей, которые окажутся под угрозой; оно никогда не выбрано по умолчанию и никогда не выполняется автоматически. Нет ни одного пути в коде, при котором выбор шифрования незаметно привёл бы к отправке открытым текстом. Это обеспечивается в самом движке, а не только в интерфейсе, и покрыто автоматическим тестом.

Что PGP защищает, а что нет

PGP шифрует тело сообщения и вложения. Он не скрывает тему, поля «Кому», «От» и «Копия» и то, когда сообщение отправлено, — они передаются в открытом виде. Это ограничение есть у любой системы PGP/MIME, включая Proton; это не недостаток GravesMail, но знать о нём нужно до того, как вы на него положитесь.

PGP защищает вашу почту в пути — от перехвата и от вашего почтового провайдера. Это не средство противодействия криминалистическому анализу: после расшифровки почта кэшируется в локальной зашифрованной базе данных GravesMail, чтобы вы могли искать по ней и читать её без сети.

Ещё два ограничения, сказанные прямо: GravesMail не выполняет автоматический поиск ключей на серверах ключей или через WKD и не имеет сети доверия — вы сами импортируете ключи и сами проверяете отпечатки; это осознанный выбор, чтобы не доверять сетевому сервису в вопросе о том, кто есть кто. А сообщения с встроенной открытой подписью (clearsign) показываются как читаемый текст без проверки подписи: GravesMail отображает их, а не заявляет о подписи, которую на самом деле не проверял.

Совместимость

PGP в GravesMail проверен в обоих направлениях с GnuPG — эталонной реализацией OpenPGP — на ключах, созданных GravesMail, и для Ed25519, и для RSA-4096: GravesMail шифрует, а gpg расшифровывает; gpg шифрует, а GravesMail расшифровывает; подписи проверяются в обе стороны. Это набор автоматических тестов, а не разовая ручная проверка.

Proton Mail тоже подтверждён — вручную, а не автоматическим тестом. Настоящая зашифрованная почта отправлялась и читалась в обоих направлениях между GravesMail и действующим аккаунтом Proton. Эти же проверки попутно выявили три реальных дефекта, которые были исправлены: строгая проверка ключей в Proton отклоняла ключи Ed25519 от GravesMail, ошибка со сроком действия ключа и вложения, молча пропадавшие из зашифрованной почты при расшифровке. Все три исправлены, и совместимость с Proton работает в обоих направлениях.

Thunderbird я именно на PGP не проверял, поэтому утверждать здесь ничего не буду. Это стандартный клиент OpenPGP, и он должен работать, но «должен» — не то же самое, что «проверено», а я предпочитаю говорить вам о том, что действительно проверено.

Почта, защищённая паролем (ключ не нужен)

PGP — правильный инструмент, когда ваш корреспондент тоже использует PGP. Когда нет — а большинство людей его не используют, — воспользуйтесь описанной ниже защитой паролем.

Иногда нужно отправить что-то личное человеку, у которого нет ни ключей шифрования, ни специальных программ, — только обычный почтовый ящик. Параметр GravesMail «Защитить паролем (ключ не нужен)» запечатывает ваше сообщение и все вложения в настоящий стандартный ZIP с шифрованием AES-256, который получатель открывает бесплатной обычной программой на любой платформе.

Используется отраслевой стандартный формат WinZip AES-256 (AE-2) — то же стойкое шифрование, которое уже понимают 7-Zip, Keka и мобильные приложения-архиваторы. Это не контейнер, понятный только GravesMail, и не слабый, поддающийся взлому «ZipCrypto», который применяли старые программы ZIP. Совместимость подтверждена на настоящих стандартных архиваторах, а формат шифрования AE-2 в архиве закреплён автоматическим тестом, — так что отправляется действительно стандартный файл, а не нечто, что лишь выглядит работающим между двумя копиями одного приложения.

На деле отправляется одно вложение — protected-message.zip. Ваше настоящее сообщение и все вложения зашифрованы внутри него; в видимом теле письма — только инструкция простыми словами, как его открыть. Имена вложений внутри архива заменены нейтральными заглушками, а настоящие имена хранятся в зашифрованном манифесте, который появляется, когда получатель вводит пароль, — так что имена файлов тоже не утекают.

При отправке GravesMail просит задать надёжный пароль (не меньше 12 символов, с прописными и строчными буквами, двумя цифрами и двумя специальными символами) — со списком требований, который обновляется по мере ввода, и полем подтверждения, чтобы опечатка не лишила получателя доступа. После этого пароль показывается один раз, с кнопкой «Копировать», и GravesMail напоминает передать его по другому каналу — по телефону, в SMS или в чате. GravesMail никогда не предлагает отправить пароль по почте, нигде его не хранит и никуда не передаёт. Полученные защищённые сообщения GravesMail тоже умеет открывать — прямо на месте, на любой платформе.

Честно о том, что это защищает

Вся защита — это пароль: выберите хороший и передайте его по другому каналу, не тем же письмом. Нет ни срока действия, ни «самоуничтожения»: без сервера их нельзя обеспечить, а GravesMail построен с приоритетом локального хранения, поэтому я их и не обещаю. ZIP шифрует содержимое файлов, а не структуру архива, так что перехвативший сообщение всё же увидит, сколько файлов внутри, их примерные размеры и отметки времени, — но не имена и не содержимое. А тема письма, поля «Кому» и «От» и время отправки по-прежнему передаются в открытом виде, как и в любом письме.

Быстрые правила: ваша личная сортировка почты

Быстрые правила позволяют создавать правила сортировки в один щелчок для конкретных отправителей, доменов или шаблонов темы. У каждого правила своя кнопка на панели инструментов. Когда вы применяете правило к сообщению, отправитель автоматически добавляется в список совпадений этого правила — чем больше вы им пользуетесь, тем умнее оно становится.

Правило может отправить подходящую почту в ловушку для спама, чтобы отложить её на проверку, переместить в папку, удалить или автоматически удалить через заданное число дней. Правила можно настроить на автоматическое применение при синхронизации, чтобы подходящие сообщения вообще не попадали во «Входящие», а целые папки можно за секунды просканировать, чтобы разом выловить старую почту. Всё, что поймало правило, можно в любой момент просмотреть, восстановить или окончательно удалить.

Ваши правила имеют приоритет над спам-фильтром. Сообщение, подошедшее под одно из ваших правил, раскладывается по вашему правилу раньше, чем спам-фильтр успеет его перенаправить, — так что отправитель, для которого вы написали правило, не попадёт в «Спам» по ошибке. Фильтр всё равно работает и оценивает сообщение, и его вердикт виден в «Свойствах»; он просто не отменяет ваше правило. Единственное исключение — вредоносное ПО: проверка на вредоносное ПО всегда побеждает, поэтому правило никогда не доставит опасное вложение во «Входящие».

Список «Сегодняшний улов» показывает всё, что поймали все ваши правила за скользящий промежуток времени (от 1 до 96 часов на компьютере, по умолчанию 24). У каждого списка для проверки — «Правила», «Сегодняшний улов» и «Спам» — своё поле поиска.

Откройте пойманное сообщение — первой вкладкой будет «Безопасный просмотр»: сообщение показано так, как выглядело бы в области чтения, но скрипты обезврежены, пиксели отслеживания заблокированы, а удалённые изображения загружаются только для доверенных отправителей. Там есть кнопки «Ответить», «Ответить всем» и «Переслать», так что на пойманное сообщение можно ответить, не восстанавливая его сначала во «Входящие»: сообщение остаётся на месте, а ваш ответ уходит как обычное сообщение.

Удержанные вложения

Когда YARA или ваш системный антивирус обнаруживает во вложении вредоносное ПО, GravesMail автоматически делает следующее:

  • Сообщение откладывается — перемещается в отдельную папку «Вредоносное ПО», не в «Спам».
  • Вложение извлекается — опасный файл удаляется из сообщения. Тело сообщения сохраняется, чтобы вы видели, кто его отправил.
  • Данные сохраняются — байты вложения хранятся локально. В окне «Удержанные вложения» можно просмотреть каждый удержанный элемент, узнать, почему он был удержан, сохранить его на диск, если вы ему доверяете, или удалить навсегда. Удержанные элементы хранятся, пока вы не примете решение; они никогда не пропадают незаметно.
  • Полное объяснение — в свойствах сообщения точно указано, какое правило YARA или какой антивирусный движок сработал, какой файл был затронут и какое действие выполнено.

Кроме того, в любой момент можно щёлкнуть любое вложение правой кнопкой мыши и выбрать «Сканировать на ВПО», чтобы запустить проверку по требованию. Правила YARA можно обновлять вручную в настройках или автоматически по еженедельному расписанию.

Автоматические зашифрованные резервные копии

GravesMail автоматически создаёт зашифрованные резервные копии всего вашего профиля — не только почтовой базы данных, но и контактов, календаря, правил, списков безопасных и заблокированных отправителей, настроенных порогов, репутации отправителей, обученного спам-фильтра, связки ключей PGP и сохранённых учётных данных. (Файлы, которые поставляются с приложением и заменяются при обновлении, например таблица географического поиска и базовая модель спама, намеренно не включаются.)

  • Полные резервные копии — полная копия профиля, зашифрованная AES-256
  • Разностные резервные копии — только то, что изменилось с момента последней полной копии; при восстановлении из такой копии программа автоматически проходит по цепочке назад
  • Снимки перед операцией — перед любой разрушающей операцией (сканирование быстрыми правилами, очистка, очистка корзины)

Расписание задаётся в менеджере резервных копий: либо интервал (выключено, ежедневно, еженедельно или произвольное число часов, с полной копией каждые N дней), либо недельная сетка, где для каждого дня выбрано «Нет», «Полная» или «Разностная». Сроки хранения полных, разностных копий и снимков настраиваются, и единственная копия никогда не удаляется.

Как шифруются эти резервные копии

Собственные резервные копии GravesMail, создаваемые по расписанию и вручную, запечатываются мастер-ключом резервного копирования, который приложение создаёт само и которым само управляет. Сам ключ никогда не записывается на диск в открытом виде — хранятся только его обёрнутые копии, и обёрнут он двумя способами:

  • Защищённое хранилище ключей вашего устройства — поэтому обычные резервные копии создаются незаметно, без запроса пароля, всегда.
  • Ваша фраза восстановления — она разворачивает тот же ключ на любом компьютере, без участия хранилища ключей.

Именно вторая обёртка делает эти резервные копии независимыми от устройства. В более ранних версиях автоматические резервные копии были привязаны к одному физическому компьютеру; теперь их можно восстановить не только там, где они были созданы.

Фразу восстановления вы задаёте один раз — при создании первой резервной копии. Она обязательна, пропустить этот шаг нельзя: резервная копия не будет завершена, пока фраза не задана, — именно для того, чтобы у вас никогда не оказалось резервных копий, которые невозможно восстановить. После этого резервные копии создаются без дополнительных запросов. Изменить фразу можно в любое время в менеджере резервных копий; после изменения все существующие резервные копии по-прежнему можно восстановить.

Храните фразу восстановления в надёжном месте

Это единственный способ восстановить эти резервные копии на новом или сброшенном устройстве, и я не могу восстановить её за вас — так задумано. Нет ни ссылки для сброса, ни служебной лазейки для поддержки, потому что любая из них стала бы входом для кого-то, кроме вас. Если вы забудете фразу и потеряете устройство, эти резервные копии открыть не удастся. Храните её в надёжном месте.

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

Журнал удалений и восстановление

Каждое удалённое сообщение записывается в локальный журнал удалений вместе с полным текстом. Удалённые сообщения можно просматривать, искать и восстанавливать одним щелчком в течение срока до 90 дней (настраивается). Файл резервной копии не нужен — восстановление из журнала удалений происходит мгновенно.