Шифрованная ссылка на секрет
Инструмент для передачи секретов в режиме браузера. Введите секрет — получите ссылку, которая шифрует всё на клиенте через AES-GCM 256 бит при помощи Web Crypto API. Ключ живёт в URL fragment (после #) — по поведению браузеров (RFC 3986) fragment никогда не включается в сетевые запросы, поэтому ключ остаётся в браузере получателя. Регистрация не требуется. Компромисс относительно Privnote-сервисов: в режиме браузера инструмент не ведёт базу данных секретов, поэтому правило «прочитал и удалили» мы технически обеспечить не можем — ссылка расшифровывается столько раз, сколько кто-то её откроет.
Как пользоваться
До ~4 КБ текста помещается в URL во всех современных браузерах.
Второй фактор: ссылка декодируется ключом из URL, затем снимается слой пароля. Передайте пароль по другому каналу.
Отправьте по почте, в Slack, Signal, SMS — где доверяете каналу. Получатель открывает в любом браузере.
Без установок и аккаунтов. Просто клик и (если есть) ввод пароля.
Отправьте секрет через зашифрованную ссылку — шифрование в браузере, аккаунт не нужен
Параметры
Как это работает (и чего НЕ делает)
- AES-GCM 256 бит с случайным ключом, сгенерированным в браузере.
- Ключ живёт в fragment URL (после #) — fragment никогда не передаётся серверам.
- Никаких аккаунтов, базы, сторонних сервисов: любой с ссылкой расшифрует секрет.
- Это не настоящий «одноразовый» режим — любой с копией ссылки может расшифровать сколько угодно раз. Индикатор «прочитано» — только локальная подсказка в браузере получателя.
- Для настоящих one-time нужен сервис с серверным хранением и delete-after-read. Если приватность важнее — этот инструмент правильный компромисс.
Открыть зашифрованный секрет
Особенности
Частые вопросы
Можем ли мы прочитать ваш секрет на сервере?
В режиме браузера — нет. Ключ шифрования живёт после # в URL, и по поведению браузеров (RFC 3986) fragment никогда не включается в сетевые запросы, поэтому ключ не доходит до нашего сервера. Зашифрованный блок приходит в path URL (то есть наши логи сервера могут на короткое время записать шифротекст через стандартные access-логи nginx), но без ключа этот шифротекст — AES-GCM-256 и расшифровать его нельзя.
Чем это отличается от Privnote?
Privnote хранит шифроблок в базе данных и удаляет после первого просмотра. В режиме браузера этот инструмент не использует базу секретов — блок находится в самой ссылке, поэтому правило «прочитал и удалили» мы обеспечить не можем. Компромисс: ключ шифрования никогда не доходит до нашего сервера, но ссылка остаётся пригодной к расшифровке, пока она у кого-то есть. (Режим хранения на сервере у этого инструмента ближе к Privnote.)
Почему URL такой длинный?
Он содержит весь шифротекст, IV, соль (если есть) и ключ. Чем длиннее секрет, тем длиннее URL.
Пароль действительно нужен?
Нет — ссылка одна уже полностью шифрует. Пароль — дополнительный фактор на случай утечки ссылки.
Как долго работает ссылка?
В режиме браузера: пока у кого-то есть URL. Состояния в базе данных, которое могло бы принудительно применить срок годности, нет, поэтому относитесь к отправленным ссылкам как к долговечным до тех пор, пока не убедитесь, что они удалены со всех устройств получателей. (В режиме хранения на сервере действует явный TTL — см. «Срок жизни».)
Можно ли сделать настоящий «one-time»?
Да — это и есть режим хранения на сервере. Он использует серверное хранение с delete-after-read, что подразумевает другие допущения о доверии (приходится доверять серверу). Режим браузера (шифротекст в URL) поставляется параллельно как вариант без базы данных.
Мы можем! И это бесплатно. Просто отправьте нам сообщение с вашим пожеланием. Если хотите обсудить детали — оставьте свою почту, и мы с вами свяжемся. Можно анонимно.