Технічний огляд для тих, хто перевіряє безпеку. Усе викладене можна звірити з вихідним кодом — зокрема й те, що нас не прикрашає: ми це називаємо, а не оминаємо.
Бекенду немає. Це розширення Chrome на Manifest V3, яке генерує коди TOTP/HOTP локально за допомогою OTPAuth. Ми не тримаємо серверів, не заводимо облікових записів і не маємо каналу, яким дані користувача могли б до нас потрапити.
Немає сервера — немає й ключового матеріалу на боці сервера, депонування ключів чи будь-якого шляху відновлення, який контролювали б ми. Якщо користувач забув пароль і втратив код відновлення, ми не зможемо зарадити — так задумано.
Захист паролем необов'язковий і типово вимкнений. Коли його ввімкнено:
Дані ніколи не шифруються ключем, виведеним із пароля, безпосередньо. Записи шифрує випадковий майстер-ключ; вивід PBKDF2 лише огортає цей майстер-ключ. Звідси два наслідки, і обидва важливі:
Коли захист паролем увімкнено, шифрується весь запис облікового запису, крім ідентифікатора та відбитка — зокрема й назва сервісу, тож із викраденого профілю не зрозуміти, обліковими записами яких сервісів володіє користувач. Під час увімкнення розширення шифрує записи, перевіряє їх розшифруванням і порівнянням і лише тоді видаляє всі копії у відкритому вигляді: з локального сховища браузера, із синхронізації та з усіх семи ротованих знімків резервних копій.
Кажемо прямо, бо для вашої оцінки це суттєво:
Коротко: це захищає дані у стані спокою. Пристрій, який під час роботи вже перебуває під контролем зловмисника, так захистити не можна — і ми цього не обіцяємо.
Маніфест оголошує рівно два дозволи й жодного host-дозволу:
У розширенні немає content-скриптів, немає дозволів tabs, cookies і webRequest та немає web-accessible-ресурсів. Розширення не може читати чи змінювати вміст жодної сторінки.
Сканування QR-коду камерою працює на сторінці розширення, відкритій у вкладці, а не у спливному вікні: popup знищується, щойно втрачає фокус, а запит дозволу саме це й робить. Для цього не потрібен дозвіл у маніфесті: використовується штатний запит камери браузера, який видається на origin розширення та відкликається в налаштуваннях сайту, і він ніколи не з'являється, доки користувач не відкриє сканер. Відео декодується локально, нікуди не передається й не зберігається.
За звичайної роботи розширення не робить жодних автоматичних запитів, а Manifest V3 забороняє віддалений код. Усі з'єднання, які взагалі можливі:
| Хост | Коли | Передає дані користувача? |
|---|---|---|
| worldtimeapi.org timeapi.io | Перевірка розходження годинника, кешується, у разі помилки мовчки пропускається. Зі збитим годинником TOTP ламається. | Ні |
| authenticator.sh | Сторінка привітання під час встановлення; сторінка зворотного зв'язку під час видалення або оцінювання. | Ні (звичайні логи вебсервера) |
Ні шрифти, ні скрипти, ні стилі, ні зображення не завантажуються зі сторонніх хостів. Усе потрібне для відображення інтерфейсу лежить усередині пакета.
Нічого з переліченого не треба брати на віру. Розширення має відкритий код, і кожен реліз відтворюваний:
.crx з Chrome Web Store і розпакуйте йогоnpm ci && npm run build на Node 20 LTSdist/ з розпакованим пакетомSHA-256 для кожного файлу в зібраному dist/ публікується з кожним релізом на GitHub у вигляді SHA256SUMS-v<version>.txt, у форматі sha256sum — тож крок 4 зводиться до одного запуску sha256sum -c. Розбіжності мають обмежуватися порядком файлів усередині архівів і пробілами в мініфікованому виводі на різних патч-версіях Node.
Залежностей у рантаймі свідомо мало — OTPAuth, React, jsQR, Zustand, Framer Motion і Lucide — усі зафіксовані закомміченим lock-файлом. SBOM у форматі CycloneDX надаємо на запит.
Переглянути вихідний кодМи невеликий незалежний розробник. Якщо щось із переліченого для вашого процесу обов'язкове, краще дізнатися про це зараз, а не на третьому тижні оцінювання:
Натомість ми пропонуємо повну прозорість вихідного коду, перевірювану збірку, мінімальний набір дозволів і відсутність серверної інфраструктури, яка взагалі могла б зберігати ваші дані.
Повідомлення про вразливості та питання щодо безпеки: security@authenticator.sh. Політика розкриття, межі застосування, строки відповіді й умови safe harbour — на сторінці політики безпеки; що зберігається і що залишає пристрій — у політиці конфіденційності.
Ми готові заповнити письмову анкету оцінювання постачальника або розібрати код разом із вашою командою безпеки.
З усього, що не стосується безпеки — встановлення, відновлення доступу, питання оплати під час розгортання — див. підтримку. Будь ласка, не надсилайте туди повідомлень про вразливості: ця скринька не вважається конфіденційною.