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