Учиться · 6 мин. чтения
Почему важна клиентская криптография
Серверные «зашифрованные» сервисы по-прежнему видят ваш открытый текст. Клиентская криптография полностью исключает сервер из границы доверия.
Многие сервисы рекламируют «шифрование». Почти все они имеют в виду шифрование при передаче (HTTPS) и шифрование в состоянии покоя. Обе практики разумны. Ни одна из них не скрывает ваши данные от людей, управляющих сервисом.
Где проходит граница#
Шифрование защищает данные от тех, кто находится за пределами границы доверия. Если граница — «от вашего ноутбука до сервера», то HTTPS скрывает данные от вашего интернет-провайдера, но сервер видит открытый текст. Если граница — «только ваш ноутбук», сервер видит лишь шифртекст, который не может прочесть.
Клиентская криптография означает вторую границу. Ваши данные шифруются до того, как покидают ваше устройство, и ключи для их расшифровки никогда не существуют на сервере.
Что означает «клиентский» в этом приложении#
- Каждый вызов шифрования/дешифрования выполняется в вашем браузере с помощью OpenPGP.js или Web Crypto.
- Закрытые ключи находятся в памяти браузера только на время операции; они никуда не отправляются.
- Нет бэкенда. Сервер только доставляет HTML, JS и CSS — без API, без учётных записей.
- Вы можете проверить это. Откройте инструменты разработчика → вкладку «Сеть». При включённом авиационном режиме исходящие запросы не отправляются.
Оговорка#
Клиентская криптография переносит границу доверия на ваше устройство. Если ваш браузер скомпрометирован или приложение получено с сервера, подвергнутого атаке посредника, вы уязвимы. Именно поэтому сайт имеет открытый исходный код, CSP и работает по HTTPS. Вы также можете клонировать репозиторий и запустить его локально.
Удобство против доверия — это ключевой компромисс. Серверные сервисы удобнее — синхронизация, восстановление, сброс пароля — но ценой доверия оператору. Клиентские сервисы менее удобны — потеряете ключ, потеряете данные — зато оператор не сможет вас предать.