Эта страница — для тех, кто решает, можно ли положиться на Getsecret в конкретной задаче. Если нужен простой рассказ о том, как всё устроено, читайте Безопасность.
Инструмент, который обещает защитить от всего, не защищает ни от чего. Поэтому самая полезная часть этой страницы — раздел «Вне зоны покрытия» ниже: риски, про которые мы прямо говорим, что бессильны.
Что защищаем
- Plaintext секрета — пароль, токен, ключ или файл, который вы передаёте.
- Ключ шифрования, которым он открывается.
- Метаданные о секрете — насколько позволяет архитектура (мы их минимизируем, но не сводим к нулю).
Что мы предполагаем
Модель ниже работает, только пока всё это верно:
- TLS между браузером и нашим сервером не скомпрометирован (валидный сертификат, стойкий шифр).
- Встроенная криптография браузера (Web Crypto, AES-GCM, PBKDF2) работает как заявлено.
- Устройства на обоих концах — отправителя и получателя — не заражены.
- Ссылку и пароль вы передаёте по каналу, который не прочитают чужие.
От кого защищаем
| Атакующий | Что может сделать | Защищены? |
|---|---|---|
| Сетевой пассивный (Wi-Fi-сниффер) | Видит ваш HTTPS-трафик | Да. Трафик закрыт TLS, а ключ всё равно не уходит в запросе. |
| Сетевой активный (MITM с валидным сертификатом) | Подменяет ответы | Да. Ключ не доходит до сервера — посреднику нечего перехватывать. |
| Оператор сервера (мы, хостинг, запрос по закону) | Имеет полный доступ к хранилищу | Да. В хранилище только шифротекст и отпечаток токена — ключа нет. |
| Брутфорсер токена | Заваливает endpoint попытками | Да. Сравнение за постоянное время, а после 5 промахов запись самоуничтожается. |
| Криптоаналитик (тайминг, повтор IV) | Анализирует ответы сервера | Да. Чтение — одна атомарная операция, и у каждого секрета свой случайный IV. |
| Тот, к кому попала украденная ссылка | Имеет полный URL вместе с ключом | Нет — by design. Откроет секрет, но только один раз — и этим сожжёт его для всех. |
| Получатель, сделавший скриншот или копию | Один раз видит plaintext | Нет. Как только секрет оказался у него на экране, это уже его копия. См. «Вне зоны покрытия». |
Зона покрытия
Вот что Getsecret предотвращает:
- Чтение секрета сервером — невозможно; у него только шифротекст.
- Восстановление секрета после первого открытия — невозможно; чтение удаляет запись.
- Брутфорс токена доступа — лимит в 5 попыток, дальше запись уничтожается.
- Повторное использование IV — каждый секрет шифруется со свежим случайным IV.
- Атаку по таймингу на проверку токена — сравнение идёт за постоянное время.
- Вечную жизнь секрета — он удаляется через 24 часа независимо от того, прочитан он или нет.
Вне зоны покрытия
Это самая важная часть. Getsecret не защищает ни от чего из перечисленного, и никакая настройка этого не меняет:
- Скомпрометированное устройство. Если на машине отправителя или получателя есть вредоносная программа, кейлоггер или запись экрана — секрет утечёт в момент, когда его набирают или показывают. Само устройство мы не защищаем.
- Дырявый канал передачи. Если вы кинете ссылку в тот же чат, где обычно делитесь паролями, этот чат прочитают первым. Отправлять ссылку обычной SMS — ваш собственный риск.
- Скриншоты и копипаст получателем. Как только человек законно увидел plaintext, мы не контролируем, что он с ним сделает.
- Анализ трафика. Наблюдатель всё равно видит, что кто-то создал секрет в такое-то время, и приблизительно знает его размер. Форму вашей активности мы не прячем.
- Метаданные на стороне сервера. Сервер видит IP отправителя, время, размер шифротекста и TTL. Мы логируем только минимум, нужный для работы, но не ноль.
- Квантовый противник. AES-GCM не post-quantum. Если в вашей модели угроз есть атакующий, который собирает сегодняшний трафик про запас и ждёт квантового компьютера, Getsecret вам не подходит.
- Целевой противник уровня государства. Если против вас лично жгут браузерный 0-day, никакая одноразовая ссылка не спасёт. Нужно air-gapped-устройство и инструмент, созданный для этой задачи.
Если что-то из этого — про вашу ситуацию, Getsecret вам не подходит.
Как сообщить об уязвимости
Если вы нашли проблему с безопасностью, сообщите о ней приватно — не открывайте публичный issue и не пишите в чат.
Используйте GitHub security advisory — так обсуждение остаётся закрытым, пока не выйдет исправление. Опишите, что нашли, как воспроизвести и какой видите эффект. Мы подтвердим получение и будем держать вас в курсе, пока работаем над ним.
Пожалуйста, не запускайте тесты, которые ухудшают сервис для других (никаких отказов в обслуживании и автоматического брутфорса по живому сайту).