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


Сквозное шифрование (также оконечное шифрование; англ. 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].