Сквозное шифрование
Сквозное шифрование (также оконечное шифрование; англ. end-to-end encryption) — способ передачи данных, в котором только пользователи, участвующие в общении, имеют доступ к сообщениям. Таким образом, использование сквозного шифрования не позволяет получить доступ к криптографическим ключам со стороны третьих лиц.[1]
Обмен ключами
Для обмена ключами могут быть применены симметричный и асимметричный алгоритмы.[2] Сквозное шифрование предполагает, что ключи шифрования известны только общающимся между собой сторонам. Для реализации данного условия может быть использована схема с предварительным разделением секрета или, например, протокол Диффи-Хелмана, который используется в мессенджерах WhatsApp[3] и Telegram[4][5].
Современное использование
Общие принципы
Сквозное шифрование гарантирует, что доступ к исходному тексту сообщения имеется только у отправителя и получателя.[6] Это означает, что пользовательская информация становится недоступной даже серверам, передающим данные.[6]
Шифрование и дешифрование происходит на конечных устройствах пользователей. Кроме того, данные остаются зашифрованными, пока не будут доставлены к месту назначения. Поэтому часто сквозное шифрование также называют «нулевой доступ» или «шифрование на стороне клиента». Однако, следует различать оконечное шифрование при передаче данных и шифрование на стороне клиента при хранении данных.
Электронная почта
Одним из первых стандартов для асинхронного обмена сообщениями является протокол SMTP[7]. Этот протокол, изначально используемый только для передачи электронной почты, в первоначальной своей реализации не обеспечивал конфиденциальности переписки при помощи сквозного шифрования[8]. В 1991 году Филиппом Циммерманом был создан пакет программного обеспечения для шифрования электронной почты PGP. Библиотека получила широкое распространение по всему миру, поэтому у многих компаний возникло желание создавать собственное ПО, совместимое с PGP[9]. После этого в 1997 году IETF окончательно определила набор стандартов для сквозного шифрования электронной почты, который назвали OpenPGP[10]. OpenPGP реализован в программном обеспечении систем с открытым исходным кодом, таких как Enigmail для Thunderbird, а также в мобильных приложениях, таких как IPGMail для iOS[11] и в системе управления ключами Openkeychain для Android[12] и других[13].
В 1999 году Фондом свободного программного обеспечения была разработана реализация OpenPGP, которая получила название GnuPG. Она соответствует стандартам спецификации OpenPGP, выступая в качестве основы свободного программного обеспечения для большинства современных приложений с поддержкой PGP[14].
Мессенджеры и чаты
В отличие от электронной почты, которая использует асинхронный обмен сообщениями, системы мгновенного обмена сообщениями изначально использовали синхронную передачу данных, однако сегодня многие мессенджеры позволяют осуществлять асинхронную доставку сообщений. В последнее время такие системы становятся более популярными по сравнению с почтовыми клиентами, так как они также предоставляют поддержку передачи видео, файлов и голоса[15].
В 1998 году Джереми Миллером началась разработка проекта Jabber, который впоследствии получил название XMPP. XMPP предоставляет технологию для асинхронного обмена структурированными данными в распределенной сети с участием клиентов и серверов, поддерживающую уведомления о присутствии. Чтобы повысить уровень безопасности, в новых спецификациях протокола будет добавлена поддержка сквозного шифрования, так как сейчас информация, переданная посредством XMPP, по умолчанию не шифруется, хотя в нем и используются встроенные протоколы SASL и TLS[16]. Первоначально именно открытый стандарт протокола XMPP, разработанный IETF, использовался в большинстве систем мгновенного обмена сообщениями, таких как Google Talk.[17].
Протокол OTR, выпущенный в 2004 году, является расширением XMPP с целью обеспечить сквозное шифрование. Он также обеспечивает оповещение пользователей, в отличие от PGP, которое впоследствии может быть использовано в качестве записи об установке соединения и идентификации участников. OTR в каком-то смысле можно считать обновлением безопасности по PGP, так как он не хранит долгосрочных открытых ключей, которые могут быть скомпрометированы. К недостаткам OTR можно отнести отсутствие поддержки групповых чатов и асинхронного обмена сообщений, так как он предназначен для синхронного обмена сообщениями между двумя людьми[18][19].
Несколько современных мессенджеров используют для шифрования Signal Protocol.
Проблемы
Атака «человек посередине»
Сквозное шифрование предусматривает, что контроль за перепиской осуществляется непосредственно пользователями. Одним из вариантов обхода сквозного шифрования для злоумышленника является захват под свой контроль канала связи между конечными точками, после этого он может попытаться выдать себя за получателя сообщения, чтобы, например, подменить открытый ключ. Чтобы не дать себя обнаружить, злоумышленник после дешифровки сообщения может зашифровать его ключом, который он разделяет с фактическим получателем, или его открытым ключом (в случае асимметричных систем) и снова отправить сообщение. Атаки такого типа принято называть атаками «человек посередине»[1][20] - MITM (Man-In-The-Middle) .
Для предотвращения MITM-атак большинство криптографических протоколов используют аутентификацию. Для этого могут использоваться, например, центры сертификации. Альтернативным методом является создание отпечатков открытого ключа на основе общедоступных открытых ключей пользователей или общих секретных ключей. Прежде чем начать разговор, стороны сравнивают свои отпечатки открытых ключей с использованием внешнего канала связи, который гарантирует целостность и аутентичность связи, при этом он не обязательно должен быть секретным. Если отпечатки ключей совпадают, значит атака «человек посередине» не была произведена[20][21].
Безопасность конечных точек
Другим способом обхода сквозного шифрования является атака непосредственно на конечные точки доступа. Каждое устройство пользователя может быть взломано с целью украсть криптографический ключ (для создания атаки «человек посередине») или просто прочитать дешифрованные сообщения пользователей.[3] Для избежания такого рода попыток взлома необходимо обеспечить соответствующую защиту пользовательских устройств с помощью программных или иных методов.[22] Основными попытками повысить безопасность конечных точек были выделение ключевых операций генерации, хранения и криптографии на смарт-карту, например, в Project Vault Google[23]. Тем не менее, так как ввод и вывод открытого текста видны в системе, то эти подходы не способны защитить от клавиатурных шпионов и вредоносного программного обеспечения, которое может отслеживать разговоры в режиме реального времени[24]. Более надежный подход заключается в физической изоляции устройства[25].
Бэкдоры
Компании могут также (самостоятельно или по принуждению) внедрять в свое программное обеспечение бэкдоры, которые помогают нарушить согласование ключа или обойти шифрование. Согласно информации, раскрытой Эдвардом Сноуденом в 2013 году, Skype содержал бэкдор, который позволял Microsoft передавать в АНБ сообщения пользователей, несмотря на то, что официально эти сообщения подвергались сквозному шифрованию[26][27].
Примечания
- Hacker Lexicon: What Is End-to-End Encryption? (англ.). WIRED. Дата обращения: 22 декабря 2015.
- J. H. Ellis. The possibility of secure non-secret digital encryption (недоступная ссылка) (30 октября 2014). Дата обращения: 19 января 2018. Архивировано 30 октября 2014 года.
- End-to-End Encryption (англ.). WhatsApp.
- Chris Alexander, Ian Avrum Goldberg. Improved User Authentication in Off-The-Record Messaging (англ.) // Proceedings of the 2007 ACM workshop on Privacy in electronic society : journal. — New York: Association for Computing Machinery, 2007. — February. — P. 41—47. — doi:10.1145/1314333.1314340.
- End-to-End Encryption, Secret Chats (англ.). Telegram.
- End-to-End Encryption . EFF Surveillance Self-Defence Guide. Electronic Frontier Foundation. Дата обращения: 2 февраля 2016.
- SMTP and the Evolution of Email | SendGrid (англ.), SendGrid (17 June 2015). Дата обращения 15 января 2018.
- John C. Klensin <john+smtp@jck.com>. Simple Mail Transfer Protocol (англ.). tools.ietf.org. Дата обращения: 29 декабря 2017.
- History of PGP (15 августа 2016).
- About OpenPGP (15 августа 2016).
- PGP for iOS . iPGMail (25 октября 2016).
- OpenKeychain-Team. About · OpenKeychain (недоступная ссылка). www.openkeychain.org. Дата обращения: 5 января 2018. Архивировано 5 января 2018 года.
- OpenPGP Software (27 сентября 2017).
- GnuPG 2.2.3 released (21 ноября 2017).
- Tom Van Vleck. Instant Messaging on CTSS and Multics . Multicians.org. Дата обращения: 11 мая 2012.
- XMPP | About XMPP (англ.). xmpp.org. Дата обращения: 5 января 2018.
- History of XMPP
- Borisov N., Goldberg I., Brewer E. Off-the-record communication, or, why not to use PGP (2004).
- Off-the-Record Messaging . otr.cypherpunks.ca. Дата обращения: 5 января 2018.
- A Survey of Man In The Middle Attacks (англ.). IEEE Xplore.
- (September 1998) «Escaping the Evils of Centralized Control with self-certifying pathnames» (PostScript) in Proceedings of the 8th ACM SIGOPS European workshop: Support for composing distributed applications., Sintra, Portugal: MIT. Дата обращения: 2006-12-23. (недоступная ссылка)
- What is Endpoint Security? | How does Endpoint Protection Works? (англ.), Comodo (22 October 2013).
- Julie Bort, Matt Weinberger «Google’s Project Vault is a tiny computer for sending secret messages», Business Insider, NYC May 29, 2015
- Keyloggers: Increasing threats to computer security and privacy (англ.). IEEE Xplore.
- Endpoint security management overview . Дата обращения: 22 июля 2015.
- Goodin, Dan. Think your Skype messages get end-to-end encryption? Think again . Ars Technica (20 мая 2013).
- Greenwald, Glenn; MacAskill, Ewen; Poitras, Laura; Ackerman, Spencer; Rushe, Dominic. Microsoft handed the NSA access to encrypted messages . The Guardian (12 июля 2013).