Безопасность
Коротко
Секрет шифруется в твоём браузере ещё до отправки. На сервер уходит и хранится только зашифрованный набор байт и односторонний хэш ключа.
Из того, что лежит на сервере, восстановить содержимое невозможно — ни владельцу сервиса, ни тому, кто получит доступ к базе. Ключ лежит в части ссылки после # — браузер никогда не отправляет её на сервер.
Как движутся данные
Секрет: hunter2
Ключ-фраза: кот.река (случайные слова)
📦 blob — зашифрованные байты
# keyHash = SHA-256(ключ) — односторонний
Хранит: blob, keyHash, id
❌ ключа нет → расшифровать невозможно
keyHash годится только чтобы проверить «тот ли ключ прислали», но не чтобы восстановить сам ключ.
Открывает ссылку → берёт ключ-фразу из части после # (на сервер не уходит)
🔓 Секрет расшифрован локально: hunter2
Что у кого есть
Почему это нельзя взломать
AES-256-GCM
Стойкое шифрование. Перебрать ключ из 5 случайных слов перебором нереально.
Хэш необратим
keyHash = SHA-256 от ключа. Из хэша ключ не восстановить — функция односторонняя.
Один просмотр + TTL
После раскрытия — 15 минут, затем удаление. Нераскрытый живёт 7 дней.
Важно про ссылку
Ключ — это часть ссылки. Кто угодно со ссылкой сможет раскрыть секрет (один раз), поэтому относись к ссылке как к самому секрету: передавай её только получателю и не публикуй в открытых местах. На сервере же без ссылки лежит лишь бесполезный шифр.