get_secret
БезопасностьМодель угрозFAQ
Тема
Модель угроз

Модель угроз

Карта того, что Getsecret защищает, от кого защищает и — что не менее важно — где он бессилен. Если риска нет на этой странице, считайте, что мы его не покрываем.

Эта страница — для тех, кто решает, можно ли положиться на 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 — так обсуждение остаётся закрытым, пока не выйдет исправление. Опишите, что нашли, как воспроизвести и какой видите эффект. Мы подтвердим получение и будем держать вас в курсе, пока работаем над ним.

Пожалуйста, не запускайте тесты, которые ухудшают сервис для других (никаких отказов в обслуживании и автоматического брутфорса по живому сайту).

v2.45.2source · AGPL-3.0
ПриватностьУсловия
Все системы работают
Меню
БезопасностьМодель угрозFAQ
Тема
Тема
Язык