Шифрование почтовой переписки.

ProtonMail

История ProtonMail, сервиса защищенной веб-почты, о котором уже было довольно много написано (в том числе и здесь), началась летом 2013 года, когда группа ученых из CERN (Европейская организация по ядерным исследованиям) объединила усилия в работе над улучшением ситуации с безопасностью в Интернете. Их стартап ProtonMail вышел в полуфинал 2014 MIT 100K. С этого момента и началось очень бурное развитие проекта. Именно данная победа послужила серьезным шагом для того, чтобы о них заговорили по всему миру.

История развития

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

17 июня команда ProtonMail запустили кампанию по сбору средств на развитие проекта на indiegogo.com —https://www.indiegogo.com/projects/protonmail/. Целью кампании являлся сбор US$ 100 000, которые пойдут на закупку серверов и позволят команде полностью сконцентрироваться на разработке сервиса. Были разосланы письма с предложением поддержать их всем пользователям, оставившим заявку на регистрацию. Всего за несколько дней цель была достигнута. На момент написания данной статьи собрано US$ 231 088 (за первые 7 дней). Основным бонусом в благодарность за поддержание проекта является незамедлительное получение доступа к сервису.

Получение доступа к ProtonMail

Мне было очень интересно узнать, что все же представляет из себя ProtonMail. К сожалению, я не успел получить аккаунт, когда регистрация была открыта, и оставил заявку. Чтобы получить заветный аккаунт, я с удовольствием поддержал ребят через Indiegogo.

Через 6 часов на мой почтовый ящик поступило сообщение со ссылкой, по которой я активировал аккаунт. Регистрация заняла около минуты.

Создание аккаунта ProtonMail

Для создания аккаунта предлагается задать два пароля: для доступа к аккаунту и почтовый пароль.

Пароль для доступа к аккаунту используется на стороне сервиса для авторизации, как это делают многочисленные сервисы в Интернете, в том числе и предоставляющие веб-почту. Данный пароль можно изменить в настройках аккаунта.

Почтовый пароль не отправляется за пределы компьютера пользователя и используется в процессе генерации ключа для шифрования в последующем. Данный пароль не подлежит “восстановлению”. Если он утерян, то доступ к содержимому почтового ящика будет утерян вместе с ним. Забегая немного вперед, следует отметить, что изменить данный пароль не представляется возможным, о чем сказано на странице вопросов-ответов.

Can I change or reset my Mailbox password? 
No. Your MailBox Password is tied to all of your emails because it’s used to encrypt all of your messages. If you were allowed to change this, then all of your current and past messages would be undecryptable and unreadable.

Пароль для входа в аккаунт можно изменить на странице настроек в личном кабинете.

Для входа необходимо сначала авторизоваться с использованием основного пароля, а затем ввести почтовый пароль, который будет использоваться для дешифровки содержимого писем уже прямо на вашем компьютере. Это позволяет обеспечить отсутствие доступа к содержимому писем со стороны сервиса и делает это физически невозможным. Здесь стоит скептически отметить, что это “в теории”, а “на практике”…

Как же выглядит и работает ProtonMail?

ProtonMail является исключительно веб-почтой. Поддержки POP3/IMAP/SMTP нет, так как вся криптография реализована на стороне веб-браузера на JavaScript.

Заходим в аккаунт и видим приветственное сообщение от команды ProtonMail. В нем кратко объясняется, какая информация шифруется, можно ли использовать ProtonMail для общения с пользователями других почтовых сервисов (например, Gmail или Hotmail).

Из основных моментов следует отметить:

  • Письма между пользователями ProtonMail шифруются всегда и автоматически.
  • Прикрепленные файлы не шифруются, о чем говорится в приветственном письме, но пишут, что планируют добавить такую возможность в будущем.
  • Наличие возможности отправить зашифрованный email любому получателю за пределами ProtonMail. В этом случае получателю приходит письмо со ссылкой, перейдя по которой он видит предложение ввести пароль для доступа к содержимому письма. Данный пароль задает отправитель перед отправлением письма с сервиса ProtonMail.
  • Возможность задать время хранения письма. Данная возможность доступна при переписке с другими пользователями ProtonMail и отправке шифрованных писем на сторонние почтовые сервисы (получателю приходит ссылка для чтения письма на сайте ProtonMail). По истечению данного времени письмо удаляется.
  • Возможность получать письма от сторонних сервисов. В данном случае содержимое писем должно быть в открытом виде, как и в случае использования обычной веб-почты.

Интерфейс

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

Все письма распределяются по папкам: полученные, отправленные и черновики. Просмотреть можно только отдельно выбранное письмо. Отображение отдельной переписки целиком (в виде списка) отсутствует.

Можно задать получателей копии письма: CC (все видят, кому отправлена копия) и BCC (получателей из данного списка другие получатели не видят в списке копий).

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

Сервис предоставляется бесплатно, но имеются ограничения на объем хранимых писем (100 мегабайт) и ежемесячное общее количество писем (500 писем). Планируется запустить платные бизнес-аккаунты, у которых будет доступен 1 гигабайт для хранения писем и не будет ограничений на количество писем. В будущем планируется добавить возможность использовать собственный домен для бизнес-аккаунтов.

Интеграция с другими сервисами и приложениями

Интеграция с другими сервисами и приложениями отсутствует. Весь функционал реализован на стороне веб-браузера на JavaScript. Открытого API нет.

Хранение писем

Полученные и отправленные письма между пользователями ProtonMail хранятся на сервере в зашифрованном виде. На стороне клиента ничего не кешируется и не сохраняется.

Если письмо получено в открытом виде со стороннего сервиса, то даже после его прочтения оно все равно остается в Inbox в открытом виде.

Если письмо отправлено на сторонний сервис в открытом виде, то оно сохраняется в папке с отправленными письмами сразу в зашифрованном виде.

Возможность экспорта писем в архив для скачивания отсутствует.

Поиск

Поиск по письмам ищет по имени отправителя, теме письма и по тексту писем, которые хранятся в открытом виде. Напомню, что в открытом виде хранятся только письма, полученные со сторонних сервисов (в незашифрованном виде).

Хранение ключей шифрования

Закрытый ключ хранится на серверах сервиса, но защищен вашим почтовым паролем. Это требуется, чтобы была возможность использовать различные устройства (и/или веб-браузеры) для доступа к почте ProtonMail. На стороне веб-браузера клиента в Local Storage ключ не сохраняется.

Возможность импорта / экспорта ключа отсутствует.

Техническая реализация

Основой сервиса стала библиотека OpenPGPjs. На время рабочей сессии почтовый пароль хранится в полностью открытом виде (без обфускации) в Session Storage.

Сервис использует асимметричное шифрование (систему шифрования с использованием открытых ключей), реализованную на стороне веб-браузера пользователя на JavaScript.

На Wikipedia есть подробная статья про шифрование с использованием открытых ключей, но, к сожалению, довольно тяжело читается для обычного пользователя без специальных технических знаний.

Безопасность

Про безопасность подобных решений на стороне пользователя, когда программный код выдается сервисом при каждом обращении, в интернете можно найти массу обсуждений и статей. Например, статья на английскомhttp://matasano.com/articles/javascript-cryptography/ от Matasano security.

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

Команда ProtonMail подчеркивает, что они находятся в Швейцарии, где, как они пишут, законодательно их не могу обязать установить backdoor. Полный текст их объяснения доступен по адресуhttps://protonmail.ch/blog/switzerland/. Но это “в теории”, а “на практике” пока нет широко известных публичных прецедентов.

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

Исполняемый код Javascript на стороне браузера может быть подвержен XSS-атакам. В случае с ProtonMail, как и любой другой веб-почтой, можно отправить специально сформированное письмо в обход встроенной защиты от XSS-атак и исполнить вредоносный код, который получит доступ к почтовому паролю пользователя или просто будет перехватывать расшифрованное содержимое сообщений.

ProtonMail в защите от XSS-атак полагается на библиотеку js-xss. Но помимо фильтрации содержимого письма есть еще и служебные почтовые заголовки, которые можно аналогично сформировать специальным образом при отправлении писем со сторонних сервисов пользователю ProtonMail. А возможность получать письмо со сторонних сервисов есть у всех аккаунтов ProtonMail и запретить ее в настройках аккаунта нельзя.

В начале июня была найдена уязвимость у сервиса ProtonMail, позволяющая исполнить произвольный JavaScript код на компьютере ничего неподозревающего пользователя и получить полный доступ к его почтовому ящику.

Данную уязвимость нашел Mike Cardwell, о чем сообщил команде ProtonMail. После исправления уязвимости он опубликовал информацию об этом на ycombinator.com. ProtonMail разместил его имя в списке благодарностей на своем сайте — https://protonmail.ch/blog/protonmail-security-contributors/, что подтверждает данный факт.

Сейчас данная проблема в безопасности ProtonMail уже исправлена, но сколько еще таких возможностей для хакеров таит в себе реализация криптографии на стороне браузера на JavaScript?

Подобные проекты

Mailpile — проект с открытым исходным кодом, активно развивается, является почтовым веб-клиентом (аналогично ProtonMail работает в веб-браузере на JavaScript), который должен сделать доступным использование криптографии пользователям без специальных технических навыков.

Отдельно следует отметить уникальную возможность данного проекта — поддержку полноценного поиска по зашифрованным сообщениям. На https://www.mailpile.is/faq/ пишут, что создается индекс, а само содержимое индекса хранит в виде хешей.

Не уточняется, это обычные MD5/SHA хеши или MAC. В случае обычных хешей данное решение по поиску может быть крайне небезопасным из-за возможности установить, какое ключевое слово встречается в зашифрованном тексте, посчитав хеши слов по словарю. Безопасность очень зависит от реализации данного способа.

Lavaboom — сервис безопасной веб-почты аналогично ProtonMail. Криптография реализована на JavaScript, код исполняется в веб-браузере.

Scramble — открытый исходный код, реализован на базе OpenPGPjs (аналогично ProtonMail), но относительно молодой проект и не так бурно развивается. Я указал его в этом списке, чтобы дать более полное представление о имеющихся сервисах на рынке.

OpenMailBox — шифрование реализовано при помощи плагина OpenPGP к проекту почтового веб-клиента Roundcube. Закрытый ключ сохранятся в Local Storage браузера.

Unseen — использует свою собственную реализацию, есть сервис обмена текстовыми сообщениям и голосовые звонки. Имеются клиенты для мобильных платформ и десктопов.

Unseen используется также Roundcube с плагином OpenPGP.
Из десктопных клиентов смотрел версию для Ubuntu и Mac. Это нативные приложения-обертки, в которые внутри встроен “веб-сайт”.

Что же делать?

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

Кто сможет реализовать использование криптографии с открытыми ключами в доступном (легком) виде для обычных рядовых пользователей с использованием известных почтовых клиентов (Apple Mail, Microsoft Outlook, встроенные в мобильные ОС почтовые клиенты и другие), тот завоюет любовь пользователей и, безусловно, станет самым успешным сервисом!

Click to rate this post!
[Total: 2 Average: 3]
cryptoworld

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

View Comments

Recent Posts

Лучший адаптер беспроводной сети для взлома Wi-Fi

Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…

11 месяцев ago

Как пользоваться инструментом FFmpeg

Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…

11 месяцев ago

Как создать собственный VPN-сервис

Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…

12 месяцев ago

ChatGPT против HIX Chat: какой чат-бот с искусственным интеллектом лучше?

С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…

12 месяцев ago

Разведка по Wi-Fi и GPS с помощью Sparrow-wifi

Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…

12 месяцев ago

Как обнаружить угрозы в памяти

Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…

12 месяцев ago