Duty Notes решает это иначе: вы создаёте записку, отправляете ссылку — и после прочтения она уничтожается без следа.
Как это работает:
1) Пишете записку — текст, пароль, инструкцию.
2) Выбираете срок жизни: от 15 минут до 24 часов. Не открыли вовремя — исчезает сама.
3) Отправляете ссылку получателю.
4) Он открывает — записка самоуничтожается сразу после прочтения. Повторно открыть невозможно.
Никакой регистрации, аккаунтов и следов.
- Записка шифруется прямо в браузере (AES-256-CBC). На сервер попадает только зашифрованный набор символов.
- Ключ хранится исключительно в ссылке и никогда не передаётся нам. Даже мы физически не можем прочитать ваш текст.
- Данные живут только в оперативной памяти и стираются после прочтения или по истечении срока. Восстановить невозможно.
Шифрование на стороне клиента.
Текст записки шифруется прямо в браузере через Web Crypto API (SubtleCrypto), алгоритм AES-256-CBC. На сервер уходит уже готовый шифротекст в base64 - открытый текст ваше устройство не покидает.
Ключ выводится из пароля. Ключ и IV генерируются из пароля по схеме, совместимой с OpenSSL - EVP_BytesToKey (MD5 + случайная 8-байтовая соль). Записку при желании можно расшифровать руками через openssl enc -aes-256-cbc.
Пароли - из криптостойкого генератора. Если вы не задаёте пароль сами, он берётся из CSPRNG (crypto.getRandomValues), а не из обычного Math.random.
Секрет живёт во фрагменте ссылки.
Хранилище - только в оперативной памяти. Никакой базы данных и записи на диск: записки лежат в памяти процесса, фоновый воркер раз в минуту вычищает протухшие, а burn-after-read удаляет запись мгновенно после первого прочтения. Перезапуск сервиса стирает вообще всё.
LIMB