Почему HTTPS не спасет ваши секреты
Замочек в адресной строке браузера — это мощное успокоительное для обывателя, но для инженера это лишь индикатор того, что данные не украдут прямо из кабеля.
Большинство считает: раз есть HTTPS, значит, информация в безопасности. Но это опасное заблуждение. Трафик действительно шифруется, но только в узком коридоре «клиент — сервер».
Иллюзия бронированного сейфа
Представьте, что вы отправляете сверхважное письмо в бронированном сейфе. Пока курьер везет его до почтового отделения, всё отлично — вскрыть его на ходу невозможно. Но как только посылка попадает на склад (наш сервер), сотрудники почты достают письмо из сейфа и кладут его на полку в открытом виде.
Под капотом HTTPS работает именно так: пакет данных зашифрован, пока летит по сети, но в конечной точке, на сервере, происходит терминация SSL/TLS. Сервер получает чистый текст, который затем улетает в базу данных или оседает в логах. Если админ или злоумышленник получит доступ к серверу, ваша «защита» превращается в тыкву.
Механика End-to-End: Исключаем посредника
Чтобы данные оставались приватными, мы должны убрать у сервера саму техническую возможность их прочитать. Здесь в игру вступает сквозное шифрование (E2E). Основная задача — сделать так, чтобы в цепочке не было третьей точки, способной расшифровать payload.
Логика строится на асимметричном шифровании и паре ключей:
1. Public Key (Публичный): Отдается миру. Нужен только для того, чтобы зашифровать сообщение для конкретного получателя.
2. Private Key (Приватный): Хранится строго на устройстве пользователя. Только он может расшифровать то, что было зашифрованно его публичным ключом.
В момент «рукопожатия» (инициации секретного чата) клиенты обмениваются публичными ключами. И когда вы пишете сообщение, ваше приложение шифрует его публичным ключом собеседника. Сервер же получает запертый сейф, к которому у него нет и не может быть отмычек. Поэтому роль бэкенда здесь сводится к примитивной пересылке зашифрованного байт-кода от клиента А к клиенту Б. И когда сообщение получит клиент Б, он сможет расшифровать его своим приватным ключом.
Инженерный профит: Безопасность через неведение
Для разработчика E2E — это лучший способ снять с себя ответственность за чужие данные. Если вы как провайдер физически не можете прочитать переписку, вы не станете источником утечки при взломе базы.
Правда, есть нюанс: если у пользователя утечет приватный ключ, вся история сообщений в базе (если вы её храните и она тоже утекла) мгновенно станет доступна злоумышленнику. Поэтому архитектура E2E часто подразумевает, что хранить зашифрованный мусор на сервере вообще нет смысла — разве что для синхронизации истории, но и это требует ювелирной работы с ключами.
Если хотите глубже разобраться в этой теме, то приглашаю вас в ВЕБМастер. Мы будем по косточкам разбирать реализацию таких систем в рамках проекта, который будем делать в Мае. Будем пилить мессенджер с групповыми чатами и полноценным E2E, чтобы на практике понять, как управлять ключами и не превратить архитектуру в решето. Подробнее про проект я расскажу совсем скоро 👌
Ставь 🔥, если не знал как работает E2E шифрование, а теперь все понятно
А если остались вопросы или что-то звучит слишком абстрактно — пиши в комменты, обязательно разберем!
10МДК | ВЕБМастер
Post #143
260

- 🔥 2