Перейти к содержимому

Глоссарий

Менеджер паролей

Частей у него четыре: хранилище, ключ к нему, дорога в форму и способ перевезти всё это на другую машину. От того, какие из четырёх вам достались, зависит цена взлома.

Менеджер паролей это программа, которая держит доступы от аккаунтов под одним ключом и сама вставляет их в форму входа.

Четыре части

Под одним словом лежат продукты, которые различаются между собой очень сильно. Разделяют их вот эти четыре вопроса.

  • Хранилище

    Один файл или одна таблица со всеми парами, и это же единственное, что имеет смысл красть.

  • Ключ

    Пароль, который вы набираете, ключ операционной системы или ключ, который держит у себя продавец.

  • Дорога в форму

    Расширение внутри страницы, помощник снаружи неё или ваши собственные руки и буфер обмена.

  • Способ переезда

    Облако продавца, ваша собственная папка или вовсе ничего, и каждый ответ переносит риск в другое место.

Кто может открыть хранилище

Любопытен не сам факт шифрования, а то, кто может открыть хранилище, пока вы спите. Если продавец показывает ваши же пароли после того, как вы забыли свой, ключ есть и у продавца.

Ключ, уехавший внутри программы, это уже не ключ: он есть у каждого, кто программу скачал. Поэтому своего ключа у программы здесь нет.

Что вместо этого держит профиль

Профиль может нести пару того единственного аккаунта, в который он входит, рядом с остальными настройками этого же аккаунта, а не в отдельной таблице. Закрывает её связка ключей операционной системы, и своего ключа программа не добавляет.

Настройки профиля уезжают на сервер, пока вы в своём аккаунте, а пары среди них нет, поэтому напарник открывает общий профиль без неё. С машины ведут две дороги. Архив переноса несёт пару под вашим паролем, а обычная выгрузка настроек сперва спрашивает и без вашего согласия пару не кладёт.

Подстановка в форму без выдачи наружу

Значение доходит до окна только после нажатия «показать» или «подставить». До этого список профилей рисуется по признаку «пароль задан», и при обычной перерисовке пароль никуда не едет.

В главном документе подстановка идёт в отдельном мире, где страница не может подменить то, что пишет в поле. На сборке без отдельных миров она откатывается в мир самой страницы, и там страница смогла бы. Трогаются только рамки того же сайта, а поле пароля выбирается по тому, чем его называет сама форма, а не по порядку.

С чем это путают

  • Пароли, сохранённые самим браузером

    Они живут внутри одного профиля браузера и следуют за тем, кто вошёл в этот браузер, а не за нужным аккаунтом.

  • Связка ключей системы

    Она закрывает значения тем, кто попросит, и ничего не знает ни про формы, ни про аккаунты, ни про передачу.

  • Общее хранилище команды

    Его смысл в передаче секрета другому человеку, а это другая задача с другими способами сломаться.

  • Автоподстановка

    Это только последний шаг. Важнее то, где значение лежало и кто мог его прочитать.

Чего это не делает

  • ARMANOS не менеджер паролей. Профиль несёт одну пару, хранилища нет, поиска по аккаунтам нет, и придумывать пароли программа не умеет.
  • Своего пароля на вход в программу нет. Любой, кто уже вошёл в ваш компьютер, откроет её, и границей остаётся сама учётная запись.
  • Пара не отражается на сервере, и оттуда общий профиль доходит до напарника без неё. С машины ведут две дороги: архив переноса под вашим паролем и обычная выгрузка настроек, которая пару не берёт, пока вы не выберете иначе.
  • Ни стойкость пароля, ни его присутствие в известных утечках не проверяется. Что набрали, то и хранится.

Проверить

За каждым утверждением выше стоит файл, а за большинством ещё и стенд, который краснеет, когда утверждение перестаёт быть правдой.

Пару закрывает связка ключей системы, и значение, которое не открылось, не стирается
apps/desktop/src/lib/profiles.js · apps/desktop/test/login-in-keychain.js
Ни один запрос с настройками профиля не несёт пару, и список доходит до окна без пароля
apps/desktop/test/login-stays-local.js
Подстановка доходит только до рамок того же сайта, а секрет не попадает в журнал прогона
apps/desktop/src/main/main.js · apps/desktop/test/подстановка-входа-в-свои-рамки.js
Файлы с секретами пишутся правами только для хозяина и целиком
apps/desktop/src/lib/secureFile.js · apps/desktop/test/secrets-on-disk.js

Вопросы

Стоит ли дальше пользоваться своим менеджером паролей?
Стоит. Профиль держит пару того аккаунта, в который он входит, а всё остальное, куда вы заходите, по-прежнему место менеджера.
Уезжает ли пара на ваш сервер?
Нет. Пока вы в своём аккаунте, уезжают имя, папка, сценарий, шаблон и поколение отпечатка, прокси, метки и заметки, и пары среди них нет.
Может ли страница украсть значение прямо при подстановке?
В главном документе запись идёт из отдельного мира с нетронутым устройством, если только на сборке нет отдельных миров: тогда она откатывается в мир самой страницы. Страница видит ровно те же события, что увидела бы от человека за клавиатурой. Внутри рамки запись идёт в мире самой страницы, и трогаются при этом только рамки того же сайта.
Что будет, если связка ключей не откроет значение?
Закрытый вид сохраняется, а не подменяется пустотой, и программа отдаёт наружу ничего вместо нечитаемого куска, который сайт всё равно отверг бы.
Почему не держать пару в таблице?
Потому что таблица открыта всему, что есть на машине, и всем своим копиям, и потому что именно так пароль попадает в чужой аккаунт строкой ниже.

Положите пару рядом с аккаунтом

Держите доступы вместе с тем профилем, который ими пользуется, а не в таблице, которую никто не стережёт.