Шифрование данных в чатах применяется, чтобы пользователи могли безопасно хранить данные и передавать их друг другу, поскольку в процессе передачи сообщение может пройти через много узлов и быть где-то перехвачено. Современные мессенджеры используют два основных подхода к шифрованию для обеспечения безопасности данных.
Асимметричное шифрование
использует пару ключей: открытый для шифрования и закрытый для расшифровки. Это позволяет безопасно передавать открытый ключ по незащищенным каналам.
Некоторые мессенджеры используют асимметричные алгоритмы для реализации сквозного шифрования (End-to-End Encryption, E2EE). Это наиболее надежный подход для участников чата в мессенджерах. При его использовании сообщения шифруются на устройстве отправителя и расшифровываются только на устройстве получателя, а серверы мессенджера не имеют доступа к содержанию сообщений.
Вот четыре особенности сквозного шифрования:
Гарантирует конфиденциальность: только участники разговора имеют доступ к содержанию сообщений.
Защищает от атак «человека посередине».
Обеспечивает целостность данных: любые попытки модификации сообщений будут обнаружены.
Не защищает метаданные: дата, время и участники разговора остаются доступными.
Использование сквозного шифрования хоть и обеспечивает достаточно высокий уровень безопасности, но плохо подходит для большинства сценариев корпоративной переписки, так как не позволяет отображать информацию одновременно на нескольких устройствах пользователя, предоставлять возможность поиска по ней и выполнять проверку на утечку данных с помощью DLP-систем.
DLP (Data Loss Prevention) — это системы защиты от утечек данных. Они контролируют и предотвращают передачу конфиденциальной информации за пределы организации. В контексте шифрования DLP-системы играют важную роль в защите данных от утечек и несанкционированного доступа.
DLP не видит содержимое зашифрованных данных. Так как у неё нет закрытого ключа, сообщения для системы выглядят как случайный набор символов. Значит и свою функцию они реализовать не могут.
Симметричное шифрование использует один и тот же ключ для шифрования и расшифровки данных. Оно быстрее и эффективнее, но требует надежного способа передачи ключа между участниками общения.
Как правило, в мессенджерах используются алгоритмы симметричного шифрования: они требуют меньше вычислительных ресурсов и более быстры. Например, данные как для передачи между приложением мессенджера и сервером, так и для хранения в базах, могут шифроваться симметричным ключом по алгоритму AES-256 GCM, где:
AES (Advanced Encryption Standard) — надежный алгоритм шифрования данных, который, например, принят в качестве стандарта правительством США);
256 — размер ключа (очень надежный, потому что 256 бит предполагает 2 в степени 256 вариантов);
GCM — специальный режим работы, который не только шифрует данные, но и осуществляет контроль целостности передаваемых данных.
Для использования симметричных алгоритмов встает задача: как безопасно обеспечить одинаковыми ключами обоих участников информационного обмена. Для этих целей обычно используют протокол Диффи-Хеллмана. Дополнительно он усиливается методами односторонней или двусторонней аутентификации, потому что в чистом виде этот протокол уязвим для модификации данных в канале связи, в том числе для атаки «человек посередине».
В своей стратегии мы выбирали максимальную безопасность, но также рационально смотрели на процесс коммуникации между пользователями, чтобы он был не только защищенным, но и удобным. Симметричное шифрование быстрее, чем асимметричное. Также его можно использовать для мессенджеров на разных устройствах. Например, на собственном и корпоративном смартфонах, личном и рабочем компьютерах и так далее. Но и у него есть свои недостатки. Исходя из этих вводных и тренда на BYOD, для корпоративного мессенджера DION мы использовали микс двух видов шифрования, чтобы обеспечить как безопасность коммуникаций, так и гибкость инструмента для пользователей.
Применяемый в корпоративном мессенджере DION тип шифрования можно назвать гибридным: он сочетает асимметрию для обмена ключами и симметрию для передачи данных.
Как это работает:
Происходит обмен асимметричными ключами по алгоритму E2EE, чтобы установить зашифрованную сессию.
Генерируется случайный ключ (256 бит) и случайный IV (96 бит). IV (Initialization Vector или вектор инициализации) — это случайное значение, используемое в криптографии для увеличения безопасности шифрования. Используем ключ для симметричного шифрования.
Шифруем текст — получаем зашифрованные данные и специальный код (тег), который проверяет, не изменились ли данные.
Чтобы расшифровать, нужен тот же самый ключ и IV. Тогда текст можно вернуть обратно