ProtonMail
История ProtonMail, сервиса защищенной электронной почты, о котором уже было довольно много написано (в том числе и здесь http://habrahabr.ru/post/223809/), началась летом 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. В нем кратко объясняется, какая информация шифруется, можно ли использовать ProtonMail для общения с пользователями других почтовых сервисов (например, Gmail или Hotmail).
Из основных моментов следует отметить:
- Письма между пользователями ProtonMail шифруются всегда и автоматически.
- Прикрепленные файлы не шифруются, о чем говорится в приветственном письме, но пишут, что планируют добавить такую возможность в будущем.
- Наличие возможности отправить зашифрованный email любому получателю за пределами ProtonMail. В этом случае получателю приходит письмо со ссылкой, перейдя по которой получателю предлагается ввести пароль для доступа к содержимому письма. Данный пароль задает отправитель перед отправлением письма с сервиса ProtonMail.
- Возможность задать время хранения письма. Данная возможность доступна при перепискке с другими пользователями ProtonMail и отправке шифрованных писем на сторонние почтовые сервисы (получателю приходит ссылка для чтения письма на сайте ProtonMail). По истечению данного времени письмо удаляется.
- Возможность получать письма от сторонних сервисов. В данном случае содержимое писем должно быть в открытом виде, как и в случае использования обычной веб-почты.
Интерфейс
Поддерживаются базовые опции форматирования писем: жирный шрифт или курсив, заголовки, списки и возможность редактирования письма непосредственно в HTML.
Можно задать получателей копии письма: CC (все видят, кому отправлена копия) и BCC (получателей из данного списка другие получатели не видят в списке копий).
Стоимость сервиса
Сервис предоставляется бесплатно, но имеются ограничения на объем хранимых писем (100 мегабайт) и ежемесячное общее количество писем (500 писем). Планируется запустить платные бизнес-аккаунты, у которых будет доступен 1 гигабайт для хранения писем и не будет ограничений на количество писем. В будущем планируется добавить возможность использовать собственный домен для бизнес-аккаунтов.
Техническая реализация
Основой сервиса стала библиотека OpenPGPjs (http://openpgpjs.org). На время рабочей сессии почтовый пароль хранится в полностью открытом видом (без обфускации) в Session Storage (http://ru.wikipedia.org/wiki/Web_Storage).
Сервис использует асимметричное шифрование (систему шифрования с использованием открытых ключей), реализованную на стороне веб-браузера пользователя на JavaScript.
На Wikipedia есть подробная статья про шифрование с использованием открытых ключей (http://ru.wikipedia.org/wiki/Криптосистема_с_открытым_ключом), но, к сожалению, довольно тяжело читается для обычного пользователя без специальных технических знаний.
Безопасность
Про безопасность подобных решений на стороне пользователя, когда программный код выдается сервисом при каждом обращение, в интернете можно найти массу обсуждений и статей. Например, статья на английском http://matasano.com/articles/javascript-cryptography/ от Matasano security.
Краткое резюме всех дискуссий и доступных материалов заключается в том, что в любой момент сервис может отдать измененный программный код (например, по запросу правоохранительных органов), который отправит им почтовый пароль пользователя.
Команда ProtonMail подчеркивает, что они находятся в Швейцарии, где, как они пишут, законодательно их не могу обязать установить backdoor. Полный текст их объяснения доступен по адресу https://protonmail.ch/blog/switzerland/. Но это “в теории”, а “на практике” пока нет широко известных публичных прецедентов.
В любом случае возможность изменить программный код в любой момент со стороны сервиса является очень серьезным недостатком, так как эти изменения могут быть нацелены на конкретных пользователей. В случае, когда криптография реализована в программном продукте или вообще на уровне операционной системы, то подобные обновления, нацеленные на конкретных пользователей намного менее вероятны и намного тяжелее в реализации. Хотя, как известно, нет 100% безопасных решений, но надо стремиться к максимальному возможному необходимому в данной ситуации уровню безопасности.
Исполняемый код Javascript на стороне браузера может быть подвержен XSS-атакам. В случае с ProtonMail, как и любой другой веб-почтой, можно отправить специально сформированное письмо, которое обойдет встроенную защиту от XSS-атак и исполнит вредоносный код, который в свое время в одну строку программного кода получит доступ к почтовому паролю пользователя или просто будет перехватывать расшифрованное содержимое сообщений.
ProtonMail в защите от XSS-атак полагается на библиотеку js-xss (https://github.com/leizongmin/js-xss). Но помимо фильтрации содержимого письма есть еще и служебные почтовые заголовки, которые можно аналогично сформировать специальным образом при отправление писем со сторонних сервисов пользователю ProtonMail. А возможность получать письмо со сторонних сервисов есть у всех аккаунтов ProtonMail и запретить ее в настройках аккаунта нельзя.
В начале июня была найдена уязвимость у сервиса ProtonMail, которая позволяла исполнить произвольный JavaScript код на компьютере ничего неподозревающего пользователя, что позволяло получить полный доступ к его почтовому ящику.
Данную уязвимость нашел Mike Cardwell, о чем сообщил команде ProtonMail. После исправления уязвимости опубликовал информацию об этом на https://news.ycombinator.com/item?id=7850953. ProtonMail разместил его имя в списке благодарностей на своем сайте — https://protonmail.ch/blog/protonmail-security-contributors/, что подтверждает данный факт.
На данный момент данная дыра в безопасности ProtonMail закрыта, но сколько еще таких возможностей для хакеров таит в себе реализация криптографии на стороне браузера на JavaScript?
Подобные проекты
Mailpile (https://www.mailpile.is) — проект с открытым исходным кодом, является почтовым веб-клиентом (аналогично ProtonMail работает в веб-браузере на JavaScript), который должен сделать доступным использование криптографии пользователям без специальных технических навыков.
Lavaboom (https://lavaboom.com/en/) — сервис безопасной веб-почты аналогично ProtonMail. Криптография реализована на JavaScript, код исполняется в веб-браузере.
Scramble (http://dcposch.github.com/scramble) — открытый исходный код, реализован на базе OpenPGPjs (аналогично ProtonMail), но относительно молодой проект и не так бурно развивается. Указал его в этом списке, чтобы дать более полное представление о имеющихся сервисах на рынке.
Что же делать?
Использование отдельного приложения для работы с почтой (почтового клиента), использование общеизвестных реализаций криптографии и ряд специальных ограничений ради безопасности (например, отсутствие возможности принимать почту со сторонних ресурсов, чтобы минимизировать количество возможных атак) являются наилучшим решением.
Кто сможет реализовать использование криптографии с открытыми ключами в доступном (легком) виде для обычных рядовых пользователей с использованием известных почтовых клиентов (Apple Mail, Microsoft Outlook, встроенные в мобильные ОС почтовые клиенты и другие), тот завоюет любовь пользователей и, безусловно, станет самым успешным сервисом!
Автор: n1k0s