Глоссарий
Менеджер паролей
Менеджер паролей это программа, которая держит доступы от аккаунтов под одним ключом и сама вставляет их в форму входа.
Четыре части
Под одним словом лежат продукты, которые различаются между собой очень сильно. Разделяют их вот эти четыре вопроса.
Хранилище
Один файл или одна таблица со всеми парами, и это же единственное, что имеет смысл красть.
Ключ
Пароль, который вы набираете, ключ операционной системы или ключ, который держит у себя продавец.
Дорога в форму
Расширение внутри страницы, помощник снаружи неё или ваши собственные руки и буфер обмена.
Способ переезда
Облако продавца, ваша собственная папка или вовсе ничего, и каждый ответ переносит риск в другое место.
Кто может открыть хранилище
Любопытен не сам факт шифрования, а то, кто может открыть хранилище, пока вы спите. Если продавец показывает ваши же пароли после того, как вы забыли свой, ключ есть и у продавца.
Ключ, уехавший внутри программы, это уже не ключ: он есть у каждого, кто программу скачал. Поэтому своего ключа у программы здесь нет.
Что вместо этого держит профиль
Профиль может нести пару того единственного аккаунта, в который он входит, рядом с остальными настройками этого же аккаунта, а не в отдельной таблице. Закрывает её связка ключей операционной системы, и своего ключа программа не добавляет.
Настройки профиля уезжают на сервер, пока вы в своём аккаунте, а пары среди них нет, поэтому напарник открывает общий профиль без неё. С машины ведут две дороги. Архив переноса несёт пару под вашим паролем, а обычная выгрузка настроек сперва спрашивает и без вашего согласия пару не кладёт.
Подстановка в форму без выдачи наружу
Значение доходит до окна только после нажатия «показать» или «подставить». До этого список профилей рисуется по признаку «пароль задан», и при обычной перерисовке пароль никуда не едет.
В главном документе подстановка идёт в отдельном мире, где страница не может подменить то, что пишет в поле. На сборке без отдельных миров она откатывается в мир самой страницы, и там страница смогла бы. Трогаются только рамки того же сайта, а поле пароля выбирается по тому, чем его называет сама форма, а не по порядку.
С чем это путают
Пароли, сохранённые самим браузером
Они живут внутри одного профиля браузера и следуют за тем, кто вошёл в этот браузер, а не за нужным аккаунтом.
Связка ключей системы
Она закрывает значения тем, кто попросит, и ничего не знает ни про формы, ни про аккаунты, ни про передачу.
Общее хранилище команды
Его смысл в передаче секрета другому человеку, а это другая задача с другими способами сломаться.
Автоподстановка
Это только последний шаг. Важнее то, где значение лежало и кто мог его прочитать.
Чего это не делает
- 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
Вопросы
- Стоит ли дальше пользоваться своим менеджером паролей?
- Стоит. Профиль держит пару того аккаунта, в который он входит, а всё остальное, куда вы заходите, по-прежнему место менеджера.
- Уезжает ли пара на ваш сервер?
- Нет. Пока вы в своём аккаунте, уезжают имя, папка, сценарий, шаблон и поколение отпечатка, прокси, метки и заметки, и пары среди них нет.
- Может ли страница украсть значение прямо при подстановке?
- В главном документе запись идёт из отдельного мира с нетронутым устройством, если только на сборке нет отдельных миров: тогда она откатывается в мир самой страницы. Страница видит ровно те же события, что увидела бы от человека за клавиатурой. Внутри рамки запись идёт в мире самой страницы, и трогаются при этом только рамки того же сайта.
- Что будет, если связка ключей не откроет значение?
- Закрытый вид сохраняется, а не подменяется пустотой, и программа отдаёт наружу ничего вместо нечитаемого куска, который сайт всё равно отверг бы.
- Почему не держать пару в таблице?
- Потому что таблица открыта всему, что есть на машине, и всем своим копиям, и потому что именно так пароль попадает в чужой аккаунт строкой ниже.
Рядом с этим
Положите пару рядом с аккаунтом
Держите доступы вместе с тем профилем, который ими пользуется, а не в таблице, которую никто не стережёт.