Безопасность: от чего защищает OTP Pink, а от чего не может
Эта страница — о расширении OTP Pink. Сайт, который вы читаете, — отдельная вещь: он считает посещения, а как — сказано на странице о приватности.
От чего оно защищает
- Копия ваших данных без вашего пароля. Хранилище в данных расширения в браузере, автоматические бэкапы и экспорт
.pinkotpзашифрованы. Тот, кто скопирует ваш профиль браузера или один из этих файлов, не узнает о ваших аккаунтах ничего, кроме примерного размера хранилища и параметров получения ключа. Сколько времени займёт подбор, зависит от пароля, который вы выберете. - Подделанные или вредоносные файлы. Зашифрованные данные, привязанные к ним метаданные и каждый обёрнутый ключ аутентифицированы: изменение любого из них приводит к тому, что хранилище или файл не открывается, а не открывается неправильно. Импортируемый файл проверяется на размер, структуру и параметры получения ключа до того, как будет получен какой-либо ключ, поэтому файл не может заставить расширение выполнять неограниченные вычисления.
- Сеть. Расширение не делает сетевых запросов, поэтому нет сервера, через который могла бы случиться утечка или который могли бы взломать, и нечего перехватывать.
- Страницы, которые вы посещаете. У OTP Pink нет постоянного доступа ни к одному сайту. Расширение читает вкладку только после того, как вы откроете его на ней, и только пока браузер сохраняет этот доступ для вкладки. Скрипт, который оно там запускает, только читает страницу и не делает запросов, а то, что он находит, показывается вам прежде, чем что-либо будет добавлено.
- Старый пароль. Смена пароля заменяет ключ данных и заново шифрует хранилище, поэтому старый ключевой материал, возвращённый на место, не откроет текущее хранилище старым паролем.
От чего оно не защищает
- Скомпрометированный компьютер или браузер. Вредоносная программа, скомпрометированный браузер или другое расширение, способное отлаживать или просматривать расширения, может прочитать то, что показывает OTP Pink, а пока хранилище разблокировано, — и его ключ.
- Откат, удаление или повреждение. Тот, кто может записывать в данные расширения в браузере, может вернуть более
старую, правильно зашифрованную копию хранилища — а с ней и аккаунт, который вы удалили, — либо удалить или повредить
хранилище. Автоматические бэкапы лежат в том же профиле браузера, в пределах той же досягаемости, и удаляются вместе с
расширением. Путь назад — файл
.pinkotp, который вы храните вне браузера (бэкапы). - Слабый пароль. Argon2id замедляет подбор; короткий или повторно используемый пароль он надёжным не делает.
- Старые файлы. Файл
.pinkotpили автоматический бэкап, сделанный до смены пароля, по-прежнему открывается паролем, который действовал, когда он был сделан. Если тот пароль утёк, удалите их. - То, что вы выносите в открытом виде. Открытые экспорты, QR-коды на экране и распечатанный лист восстановления содержат ваши ключи как есть. Код, скопированный в буфер обмена, могут прочитать другие программы, пока он там. Очистка буфера обмена — удобство, а не гарантия: OTP Pink не может прочитать буфер обмена, чтобы проверить, что в нём, поэтому очищается и всё, что вы скопировали после кода.
- Фишинг. Код, введённый на поддельном сайте, этот сайт может сразу же использовать. OTP Pink ставит коды для сайта, на котором вы находитесь, первыми, но не оценивает сайт за вас.
- Настройки рядом с хранилищем. Небольшая запись об устройстве хранится незашифрованной: тема, время автоблокировки, поправка часов, случайный идентификатор устройства, когда этот браузер в последний раз экспортировал хранилище (с хешем зашифрованного хранилища на тот момент — для напоминания об экспорте) и до какого времени это напоминание отложено, а также два переключателя функций, которых нет в этой версии.
Шифрование в цифрах
- Хранилище зашифровано AES-256-GCM случайным 256-битным ключом данных, с новым 12-байтовым nonce при каждой записи. Метаданные, хранящиеся рядом с шифротекстом, аутентифицируются вместе с ним.
- Ключ данных обёрнут ключом, полученным из вашего пароля через Argon2id: память — 64 MiB, проходов — 3, параллелизм — 1.
- Пароль — не короче 8 символов, и он нигде не хранится.
- Импортируемый или восстанавливаемый файл проверяется до того, как из пароля будет получен какой-либо ключ: файлы больше 10 МиБ отклоняются, а распаковка ограничена 16 МиБ.
Блокировка
Хранилище блокируется после выбранного вами времени без действий — 1, 5 или 15 минут, 1 час или никогда — и при закрытии браузера. Пока оно разблокировано, ключ данных хранится в сессионном хранилище браузера (session storage), которое живёт в памяти и очищается при закрытии браузера, — там, где расширение может закрыть его для остальных своих контекстов; где не может, ключ остаётся только в памяти фоновой части расширения. Время блокировки и смена пароля — в разделе блокировка и пароль.
Что расширению разрешено
Разрешения в Chrome и Edge: storage, alarms, activeTab, clipboardWrite, scripting, contextMenus, offscreen и sidePanel. В Firefox: storage, alarms, activeTab, clipboardWrite, scripting и contextMenus. Необязательные, запрашиваются только когда вы включаете настройку: tabs.
- На странице: только на вкладке, где вы открыли OTP Pink, — кнопкой на панели инструментов, пунктом контекстного меню или своим сочетанием клавиш. Там расширение запускает скрипт из своего пакета, который читает страницу в поисках QR-кода, ссылки настройки или выписанного ключа, ничего не меняет и ничего не отправляет. Пока браузер сохраняет этот доступ для вкладки, расширение ищет снова, когда там загружается страница. Чтобы прочитать QR, до которого скрипт не может добраться, оно делает снимок видимой вкладки.
- Буфер обмена: расширение записывает в него код, который вы копируете, а позже записывает пустую строку, чтобы его очистить. Буфер обмена оно никогда не читает.
- Коды сайта на любой вкладке — необязательная настройка. При включении она просит у браузера разрешение
tabs(браузер называет его «Чтение истории просмотров» или «Доступ ко вкладкам браузера») и читает только адрес активной вкладки, никогда — её содержимое. Сайт сохраняется, только когда вы привязываете его к аккаунту. - Нет доступа к сайтам (host permissions), нет
webRequest, нет скриптов контента (content scripts), которые остаются на страницах, а политика безопасности контента начинается сdefault-src 'none'и задаётconnect-src 'none'.
Проверьте сами
Обещание: код расширения не делает ни одного запроса http:, https:, ws: или wss: и не открывает ни одного
соединения WebRTC — ни к серверу, ни к странице, на которой вы находитесь. Загрузка собственных файлов из пакета
(chrome-extension://…, moz-extension://…) и локальные адреса data: или blob: — это не сетевые запросы.
- Боковая панель. Chrome или Edge: щёлкните правой кнопкой мыши внутри панели → Просмотреть код → Сеть.
Firefox:
about:debugging→ Этот Firefox → OTP Pink → Исследовать → Сеть; эти инструменты относятся к фоновой части расширения, а боковой панели могут понадобиться свои (щелчок правой кнопкой внутри неё → Исследовать, при включённом наборе инструментов браузера). - Фоновая часть. Chrome или Edge:
chrome://extensions(илиedge://extensions) → Режим разработчика → OTP Pink → service worker → Сеть. В Firefox её охватывает то же окно «Исследовать». - Пользуйтесь расширением: разблокируйте хранилище, добавьте аккаунт, найдите ключ на странице, скопируйте код, сделайте экспорт. Во вкладке «Сеть» будут только собственные файлы расширения.
Ссылки внизу панели — 301.st, магазин расширений — обычные ссылки, которые открывают новую вкладку, когда вы по ним щёлкаете; расширение ничего с них не загружает.
Как пользоваться им безопасно
- Длинный пароль, который вы больше нигде не используете.
- Время блокировки, которое подходит к тому, как вы оставляете компьютер.
- Зашифрованный экспорт
.pinkotp, хранящийся вне браузера, и запомненный пароль к нему. Панель снова напоминает об этом через 30 дней после экспорта, если хранилище с тех пор изменилось. - Удаляйте открытые экспорты, как только они импортированы, а распечатанный лист храните так же, как паспорт.