Email и безопасность: Можно ли защитить почтовую переписку
О том, насколько опасны почтовые рассылки и работа с электронной почтой, и как защититься при использовании email
На написание этого текста меня подтолкнула ужасающая ситуация, сложившаяся в области интернет-коммуникаций, угрожающая перспектива развития инструментов для обмена мгновенными сообщениями, аудио-видеозвонками и надоевшие споры о том, какой же мессенджер все-таки хороший, правильный и безопасный.
Последние годы конкуренция на рынке мессенджеров как никогда высока. Доступный интернет у каждого в смартфоне позволил мессенджерам стать самыми часто используемыми приложениями. Только ленивый сейчас не пишет свой мессенджер. Каждый день выходит новое приложение, обещающее совершить революцию в способах коммуникации. Доходит даже до абсурда вроде приложения Yo, позволяющего слать друг другу только одно слово.
У каждого мессенджера есть своя аудитория, агитирующая пользоваться именно их любимым сервисом. В итоге приходится заводить кучу учетных записей в различных сервисах и устанавливать кучу приложений, чтобы иметь возможность оперативно связаться со всеми необходимыми людьми.
Сложившаяся на данный момент ситуация настолько ужасна, что в перспективе угрожает фундаментальным принципам общения. В данной статье я на конкретных примерах попытаюсь донести одну мысль:
Почему такая важная для человечества технология, как мгновенные сообщения и аудио-видеозвонки, не может быть монополизирована какой-либо компанией. Как это тормозит развитие технологий, угрожает свободе и безопасности коммуникаций.
Сразу скажу, что я не страдаю опенсорсом головного мозга, и у меня нет фобий по поводу проприетарных продуктов, я сам пользуюсь закрытыми программами и протоколами. Конкретные примеры, описанные ниже, приведены исключительно для демонстрации проблем существующей централизованной архитектуры. Я вовсе не испытываю ненависти к данным продуктам и компаниям, и, напротив, считаю, что они вполне могут эволюционировать. Умереть должна только существующая модель их работы.
Интернет, каким мы его знаем сегодня, существует благодаря открытым стандартам. Все уровни взаимодействия сети, начиная с физического (кодирование сигнала по проводам, радио, оптическим каналам) и до прикладного уровня приложений (HTTP, E-mail) открыты и доступны для любого желающего. Кто угодно может написать свой веб-сайт, браузер, email-клиент. Для этого не нужно просить чьего-то разрешения, покупать патенты или заключать контракты.
Именно поэтому мы имеем множество операционных систем, умеющих работать с интернетом, и разнообразие устройств и приложений, поддерживающих популярные протоколы.
Представьте, что емейл можно было бы отправить только с программы Outlook на такой же Outlook, а на Gmail уже нельзя. И перед отправкой емейла нужно было бы выяснить, какой у получателя почтовый клиент. Или, например, голосовые звонки с мобильного работали бы только между телефонами одного производителя. То есть звонить с Samsung можно было бы только на Samsung. Абсурд, не правда ли?
Именно так сейчас выглядит ситуация, когда нужно с кем-то связаться в чате или совершить аудио-видеозвонок через интернет. Здесь правят бал коммерческие компании, целью которых является максимальный охват аудитории. Поэтому каждый мессенджер делается изолированным от других, а компании ревностно сражаются за своих пользователей.
Все дело в том, что в какой-то момент открытые стандарты перестали успевать за потребностями пользователей, и коммерческие компании смогли предложить намного более привлекательные решения. Это обеспечило огромную популярность коммерческим мессенджерам. Так, например, во времена dial-up, такого качества голосовой связи, как у Skype, не мог предоставить никто из конкурентов, да еще и бесплатно! На сегодняшний день, по разным данным, на долю Skype приходится около 40% международных звонков.
С массовым распространением смартфонов хлынула вторая волна распространения мессенджеров. Люди постепенно сообразили, что платить огромные деньги за одно SMS несправедливо, если за эти же деньги можно чатиться весь день в альтернативном мессенджере. Так, некогда большой рынок SMS-сообщений стал сдуваться.
Такая же судьба в какой-то момент неминуемо ждет и телефонные звонки. Мобильные операторы это понимают и пытаются как можно дальше оттянуть этот момент. Сперва пытаются блокировать VoIP-сервисы в своих сетях, а потом и вовсе маскироваться под них: МТС запустит альтернативу Skype.
Ситуация чем-то напоминает борьбу правообладателей с пиратством: сперва с возможностью домашней записи на аудиокассеты, VHS и компакт-диски, а позднее и с пиратством в интернете с помощью внедрения новомодных DRM, принятием законов вроде DMCA. Которая в итоге завершилась почти полным проигрышем.
Вот только мобильные операторы являются частью очень влиятельных телекомов, которым принадлежит значительная доля интернет-каналов. Поэтому, скорее всего, процесс отказа от SIM-карт и голосовых услуг оператора будет мучительным и долгим.
Однако подвижки в эту сторону уже есть. Разрабатываемый Samsung и Apple стандарт e-SIM позволит выбирать оператора прямо в телефоне, без необходимости вставлять SIM-карту. В итоге процесс подключения к новому оператору будет не сложнее оформления подписки на музыкальный сервис — включил только что купленный телефон, посмотрел список операторов, доступных в данном регионе, выбрал подходящий тариф, оплатил кредитной картой и пошел.
В таких условиях пользователи захотят всегда сохранять за собой свой номер телефона. Таким номером должен был стать iNum, который, как мне кажется, провалился. Возможно, вместо номера телефона будет ID в любимом мессенджере-коммуникаторе. Очевидно, что в этом случае ничего, кроме интернета, от оператора пользователю не нужно. Поэтому общественный запрос на услуги операторов будет звучать примерно так: «Дайте мне доступ в интернет и отвалите со своими дополнительными услугами». Уже сейчас можно видеть негодование пользователей, использующих SIM-карты в планшетах исключительно для интернета, когда операторы впаривают им подписки на платные сервисы, гороскопы, анекдоты, пакеты SMS и т. д. В будущем это ощущение сформулируется более отчетливо.
Видно, как в таких условиях многократно возрастает влияние мессенджеров. Из альтернативного, мессенджер превращается в доминирующее средство связи. Страшно представить, что будет, если нынешняя тенденция сохранится, и у нас будут сотни изолированных, несовместимых друг с другом программ.
Почему доминирующим глобальным мессенджером ни в коем случае не должен стать Skype, Viber, WhatsApp, Telegram, Hangouts и прочие проприетарные поделки.
Для того чтобы понять опасность монополии в технологической сфере, можно взглянуть, например, на бизнес-решения, работающие только в Internet Explorer, из-за чего откровенно плохой продукт вынуждены поддерживать и использовать повсеместно.
Или на форматы электронного документооборота. Так как момент был упущен, доминирующие позиции занял проприетарный doc, и до сих пор нет единого стандарта электронного документооборота.
В СМИ часто поднимается вопрос: какой же мессенджер «защищенный» на самом деле? Под этим обычно понимается безопасность транспортного протокола, что в большинстве случаев нелепо, потому как, помимо безопасного протокола, существует еще большое количество сущностей, которые могут содержать уязвимости.
Я пользуюсь Skype уже около десяти лет. У меня это вторая по частоте использования программа после браузера.
Для меня Skype — большее, чем просто IM, я веду в нем рабочие переговоры, общаюсь с друзьями, завожу новые знакомства в публичных skype-конференциях.
Skype полностью заменяет мне социальные сети, у меня даже нет аккаунта в VK и Facebook, потому что мне приятней видеть и слышать собеседника.
Я по максимуму пользуюсь всеми возможностями Skype: групповые видеозвонки, демонстрация рабочего стола, чаты, пересылка файлов, звонки на обычные телефоны, SMS, аренда прямых номеров, подписки.
Я попробовал все инструменты Skype для разработки: Skype4Com, SkypeKit SDK.
У меня есть опыт работы с решениями Skype для интеграции с бизнес-системами VoiP, такими как Skype for Asterisk и Skype Connect.
Я активно пытался улучшить Skype, писал отчеты о проблемах и найденных уязвимостях в bug tracker, пока его не закрыли. В частности, я нашел две критические ошибки, позволяющие удаленно вызвать завершение клиента Skype под Windows.
По моим наблюдениям (а попробовал я достаточно), при прочих равных условиях, в Skype всегда лучшее качество звука. И дело не только в битрейте (хотя кодек SILK великолепен), из-за динамического построения маршрутизации Skype выдает минимальные задержки, поэтому при низком качестве интернета дает лучший результат. Никакой SIP даже рядом не валялся. В этот момент многие могут возразить: «Но ведь у нас в SIP есть HD-кодеки!», правда, с оговоркой, что в реальной жизни они работают через раз. Об этом следующий пункт.
Эхоподавление Skype позволяет мне вывести голос на колонки, при том что собеседник даже не поймет этого. Только в Skype я могу включить на большую громкость динамики и слышать/отвечать из другой комнаты без малейшего намека на эхо.
Skype — дьявольски хитрая программа, которая умеет пролазить через любые изощренные фаерволы, плохо настроенные NAT-ы и блокировки. В каких бы странных условиях вы ни находились, даже если интернет ограничен tcp-запросами к 80 и 443 порту, Skype все равно, скорее всего, будет работать. Я часто наблюдал ситуации, когда выход в интернет заблокирован, но хитрый Skype все равно работает, потому что сумел найти соседа в физической сети, у которого интернет есть, и вышел через него. О такой гибкости все другие программы могут только мечтать.
На фоне этого нытье SIP-провайдеров про то, что у вас плохо настроен NAT, не проходит RTP, неправильно работает UPnP/NAT-PMP, выглядят просто смешно.
Мне важно, чтобы моя коммуникация была защищена от перехвата и анализа. И, даже несмотря на всякие Microsoft Government Security Program, согласно которым по запросу спецслужб все необходимые данные могут быть переданы заинтересованным органам, я могу быть точно уверен, что на сетевом уровне никакой провайдер не в состоянии перехватить мои разговоры, если даже новомодные системы DPI испытывают трудности с выделением трафика Skype.
Именно шифрование на сетевом уровне преподносится многими мессенджерами как функция, которая делает программу безопасной. Далее, я рассмотрю, почему шифрование трафика не является синонимом безопасности.
Skype на десктопе, по крайней мере на Windows и OS X, очень стабилен и крайне редко вылетает. Это позволяет держать активными видеозвонки без перерыва по нескольку суток. При этом с небольшой нагрузкой на CPU, в отличие, например, от решений на WebRTC, которые нагружают процессор и жутко нестабильны.
Не просто небезопасен, а крайне опасен!
Skype до сих пор раскрывает ваши IP-адреса, включая локальный. По этим данным можно узнать ваше текущее местоположение и построить карту перемещений.
Пока существовал публичный bug tracker, можно было наблюдать, как Skype больше года чинит уязвимость, позволяющую провести удаленный DoS клиента для Windows.
Уязвимость, позволяющую удаленно разблокировать выключенный микрофон, чинили около полугода.
Мне приходилось буквально упрашивать разработчиков обратить внимание на уязвимости, из-за которых нельзя было пользоваться программой.
Когда была опубликована уязвимость, позволяющая угнать любой аккаунт, от которого известен email, я сутки пытался достучаться до саппорта, но так и не смог. Зато взломал аккаунты Алексея Навального и Антона Носика.
Кстати, после этого инцидента Skype так и не пересмотрел свою политику регистрации аккаунтов без подтверждения почты. По-прежнему можно указать любую почту при регистрации и аккаунты будут отображаться при поиске, что позволяет заспамить поисковую выдачу, если искать аккаунт по email.
На момент написания этой статьи (!!!), мне известно по крайней мере две уязвимости, позволяющих необратимо заблокировать чужой Skype-аккаунт так, что у жертвы больше не получится им воспользоваться. При этом атакующему достаточно знать только логин жертвы, никакие почты и пароли не нужны. Я опять же не смог достучаться с этой проблемой до саппорта и написал на их форум. Проблема до сих пор не исправлена.
Нет никакой возможности достучаться до квалифицированного саппорта, все письма заворачиваются на индусов, цитирующих FAQ и не желающих поверить, что проблема действительно на их стороне и нужно передать ее разработчикам.
Итак, несмотря на то что Skype позиционируется как безопасный мессенджер, и транспортный протокол его действительно безопасен, он не просто небезопасен, а откровенно опасен. Из-за размеров бюрократии внутри компании, реальные проблемы с безопасностью решаются очень долго, зато в каждой новой версии добавляется десяток новых видео-смайликов.
Из этого следует вывод:
безопасный транспортный протокол не делает мессенджер безопасным
Важно помнить об этом, читая очередной маркетинговый бред про тройные уровни шифрования, длину ключа, military grade security и прочую чушь, не имеющую отношения к реальной безопасности.
Невозможно просто так взять и написать альтернативный Skype клиент, потому как его протокол закрыт и часто изменяется. Поэтому на каких устройствах будет работать Skype, решает только сама компания. Некоторое время назад существовал SkypeKit SDK, позволяющий разработать клиент для интеграции в собственные устройства. Для этого нужно было подписать несколько документов о неразглашении, пообещать не запускать skypekit на сервере, выпустить персональный сертификат (который, в случае чего, мог быть отозван), и можно было приступать к разработке. Однако потом компания передумала и решила отозвать поддержку skypekit и заблокировать все существующие купленные версии. То же произошло и со Skype4Com, и со Skype for Asterisk. Поэтому, если вы решили интегрировать поддержку Skype в один из своих продуктов, будьте готовы, что завтра это может перестать работать, и все усилия по разработке будут напрасны.
Похожая ситуация и с интерфейсом десктопного клиента. После выхода очередной новой версии приходится искать способ отключить безумные фантазии маркетологов вроде видео-смайлов на пол-экрана, пропавшей кнопки регулировки громкости, и многого другого.
Нельзя предсказать, что придумает Skype завтра, и это пугает.
Такое большое внимание уделено Skype потому, что его можно считать флагманом в индустрии мессенджеров-коммуникаторов. У него самый богатый функционал и конкурентам еще очень далеко до него. При этом он самый старый и имеет отчетливые симптомы, указывающие на необходимость его ликвидировать.
Это главная проблема всех описанных здесь сервисов. Я часто встречаю непонимание серьезности данного аргумента. Казалось, бы, что плохого в том, что какая-то компания полностью контролирует ваше общение? Ведь они все там хорошие ребята, и денег не просят, и API удобное, и смайлики красивые.
Но нельзя забывать, что это всегда компания, которая преследует собственные интересы, и, скорее всего, среди них нет задачи всю жизнь работать себе в убыток ради наступления мира во всем мире.
Уже сейчас можно наблюдать, как под давлением другой коммерческой компании Telegram определяет темы, на которые нельзя разговаривать: Telegram удалил 78 чатов об «Исламском государстве» по требованию Apple.
Или решает, какими данными нельзя обмениваться: Telegram начал блокировать музыкальных ботов по требованию Apple, Telegram ограничил доступ к порно-ботам для жителей Ирана.
Это значит, что одна взятая компания хороших ребят всегда будет уязвима для давления влиятельных структур. Этими структурами могут быть и целые государства, в юрисдикции которых действует компания. То есть, в любой момент времени, какая-то информация или действия могут стать неугодными для политики компании, контролирующей ваше общение, даже если законы вашей страны не запрещают этого.
Нельзя предсказать, как завтра изменится политика отдельных государств, и поэтому такая легкая возможность влиять на инструменты общения просто недопустима.
Эта проблема неразрывно связана с первой. Единая точка отказа позволяет в любой момент ограничить доступ к сервису для целых стран или даже полностью ликвидировать Telegram решением суда.
Серверы Telegram, вместе с перепиской, которая хранится на них в открытом виде, могут быть изъяты в любой момент, если так решит государство, в котором они размещаются.
Несмотря на то, что клиентская часть протокола Telegram открыта, серверная часть по-прежнему закрыта для стороннего аудита. По сути, защищенность обычных чатов держится на честном слове команды Telegram. Они как бы говорят: «Мы не станем читать вашу переписку, честное слово!». Вероятно, так это и есть, но сама по себе возможность некой группы людей иметь безграничный доступ к приватной информации в масштабах всего мира недопустима.
Telegram безопасен настолько, насколько безопасен ваш мобильный оператор, из-за аутентификации по SMS. Достаточно вспомнить историю, как злоумышленники пять раз перевыпускали SIM-карту Beeline. Telegram позволяет защититься от этого, установив дополнительный пароль, но по умолчанию он не используется.
Надо признать, что пользоваться данной функцией в Telegram действительно удобно. Особенно приятно, что можно установить таймер самоуничтожения чата и не переживать, удалит ли собеседник лог переписки в нужный момент.
Но процедура сверки ключа совсем не однозначна. Каждый раз отпечаток ключа разный. Непонятно, по каким каналам предполагается его сверять. Нет возможности однажды провести верификацию ключа чата, чтобы в дальнейшем проверять его подлинность самостоятельно, как в случае с OTR.
Краткая таблица популярных мессенджеров и причин, почему они должны умереть
Мессенджер | Диагноз | Должен умереть |
---|---|---|
ICQ |
|
|
Viber |
|
|
|
|
|
Google Hangouts |
|
|
Face Time / iMessage |
|
Для голоса это — SIP + ZRTP, а для текста — XMPP + OTR. Но на фоне всех коммерческих сервисов, можно сказать, что данные протоколы чаще не работают, чем работают.
Для меня выглядит диким, что, во многих случаях, при звонках через SIP можно получить голос в одну сторону, проблемы с входящими или исходящими звонками и еще целую кучу проблем, которых лишены все коммерческие решения. Мне абсолютно не хочется думать о типе NAT, используемом в данной сети, накручивать ICE или STUN, прокидывать порты, когда просто нужно позвонить. Это отвратительно.
Похожая история с Jabber. Как вообще можно представить, что в 2016 году сообщения могут просто потеряться из-за разрыва соединения с сервером? Где нормальное подтверждение доставки и прочтения? Jabber абсолютно ужасен в среде с нестабильным интернетом и на мобильных платформах.
Таким важным для человечества вопросом, как разработка единого стандарта мгновенных сообщений и звонков, должны заниматься организации вроде IETF вместе с ведущими IT-компаниями.
Хорошим примером является история с OpenSSL. В момент обнаружения уязвимости heartbleed, все были в ужасе, насколько беззащитной оказалась вся индустрия из-за одной ошибки. После чего была создана организация Core Infrastructure Initiative. В нее входят крупнейшие IT-компании вроде Cisco, Google, Intel. Целью этой организации является поддержание критически важных для индустрии программ, таких как OpenSSL, GnuPG, Network Time Protocol и других.
Надеюсь, важность открытых инструментов коммуникации будет осознана раньше, чем будут обнаружены фатальные проблемы в существующих проприетарных продуктах, и подобная организация будет вовремя создана для работы над нужными стандартами.
Протокол интернета позволяет связаться любому узлу с любым другим узлом в интернете. На сегодняшний день это не совсем справедливо из-за проблем ipv4, но представим, что прошло пару лет и у всех уже есть ipv6, и у каждого устройства в любой момент времени, при наличии связи, есть реальный маршрутизируемый IP-адрес. Это позволит любому устройству, будь то смартфон или компьютер, связываться друг с другом без помощи компаний, предоставляющих сервисы для общения. Достаточно только найти способ сообщить нужному собеседнику свой текущий IP-адрес.
Добавим к этому наличие аппаратной поддержки криптографии во всех мобильных устройствах, позволяющей без особых затрат батареи использовать шифрование.
Такая среда неизбежно породит P2P утопию, в которой люди смогут безопасно связываться напрямую, без сторонних сервисов.
Наверное, самый продвинутый на текущий момент инструмент, приближающий P2P криптоанархию. Это полностью децентрализованный мессенджер-коммуникатор, с функциями передачи голоса, видео, демонстрации экрана, конференций. Все коммуникации по умолчанию шифруются и передаются напрямую между пользователями без серверов. Есть клиенты под Windows/Linux/OSX/Android. К сожалению, реализация клиентов сыровата местами, и некоторые функции не работают между разными платформами, но они активно развиваются. Хочу сказать спасибо antonbatenev за продвижение TOX на хабре.
Наверняка существуют еще реализации, но реально работающих я больше не знаю. Эти реализации сильно далеки от идеала и простым пользователям, скорее всего, они не понравятся.
Нужно признать, что успешность конкретного продукта — это не только продвинутые технологии, но еще и юзабилити, дизайн, удобство использования и простота. Вероятно, прежде, чем подобные технологии приживутся, пройдет еще множество итераций различных протоколов.
Я не готов сказать, каким именно должен быть идеальный протокол, но попытаюсь сформулировать основные требования:
Никакая компания не должна иметь монопольную возможность управления всей архитектурой и разработкой. Разработка должна вестись путем коллективных обсуждений, подобному тому, как утверждаются RFC. Лицензии не должны как-либо ограничивать использование протокола. Это не исключает существование коммерческих клиентов, подобно тому, как сейчас существуют платные Email-клиенты и компании, зарабатывающие на технологиях электронной почты.
Под децентрализацией я не имею в виду исключительно P2P, при котором отсутствуют вообще какие-либо серверы. Опорные серверы могут существовать, подобно супернодам Skype, например для передачи тяжелой медиаинформации, кеширования, обмена данными о маршрутизации и т. д. Чистый P2P во многих случаях неудобен, например для мобильных пользователей с узким нестабильным каналом. Это может быть децентрализация, подобная Email и Jabber, когда существует большое количество независимых серверов, которые могут сообщаться между собой. Закрытие одного или нескольких серверов не повлияет на систему. Даже если целые страны или континенты будут отрезаны от интернета, система продолжит работать. Вероятно, нужно предусмотреть и работу в случае недоступности сервера. То есть, клиент, при желании, может делегировать хранение учетных записей серверу, и входить по логину-паролю, либо хранить приватные ключи локально и входить в сеть самостоятельно без сервера. Таким образом можно сохранить удобство для простых пользователей и дать возможность квалифицированным пользователям обеспечить достаточный уровень безопасности.
Протокол должен быть устойчив к попыткам блокировки, уметь переключаться между различными портами, транспортными протоколами и обфусцировать трафик таким образом, чтобы его нельзя было выделить системами DPI. В самом крайнем случае, использовать в качестве транспорта любой из доступных протоколов, например HTTPS. Даже если все возможные точки входа будут полностью закрыты на маршрутизаторах провайдера, должна существовать возможность указать собственный адрес шлюза, подобно тому как это сделано в Tor.
Все коммуникации между конечными пользователями не должны передаваться и храниться в открытом виде нигде, кроме устройств пользователя. Для удобства синхронизации между устройствами пользователя, история может сохраняться на сервере при его желании, но должна быть зашифрована. Например, мастер-паролем, как это сделано в ProtonMail. При этом должны быть удобные инструменты для верификации ключей, используемых для end-to-end шифрования, подобно тому как это сделано в RedPhone. Программа-клиент должна в обязательном порядке уведомлять пользователя о не доверенном соединении, попытках перехвата или проблемах с шифрованием.
Все реализации клиентов должны быть совместимы на базовом уровне, описанном в стандарте. То есть звонки и чат должны работать между всеми существующими программами, чтобы иметь возможность звонить со Skype в Viber и наоборот. Фирменные нестандартные функции могут быть доступны между клиентами одного производителя.
О том, насколько опасны почтовые рассылки и работа с электронной почтой, и как защититься при использовании email