Глоссарий
Менеджер паролей
Менеджер паролей это программа, которая держит доступы от аккаунтов под одним ключом и сама вставляет их в форму входа.
Четыре части
Под одним словом лежат продукты, которые различаются между собой очень сильно. Разделяют их вот эти четыре вопроса.
Хранилище
Один файл или одна таблица со всеми парами, и это же единственное, что имеет смысл красть.
Ключ
Пароль, который вы набираете, ключ операционной системы или ключ, который держит у себя продавец.
Дорога в форму
Расширение внутри страницы, помощник снаружи неё или ваши собственные руки и буфер обмена.
Способ переезда
Облако продавца, ваша собственная папка или вовсе ничего, и каждый ответ переносит риск в другое место.
Кто может открыть хранилище
Любопытен не сам факт шифрования, а то, кто может открыть хранилище, пока вы спите. Если продавец показывает ваши же пароли после того, как вы забыли свой, ключ есть и у продавца.
Ключ, уехавший внутри программы, это уже не ключ: он есть у каждого, кто программу скачал. Поэтому своего ключа у программы здесь нет.
Что вместо этого держит профиль
Профиль может нести пару того единственного аккаунта, в который он входит, рядом с остальными настройками этого же аккаунта, а не в отдельной таблице. На Windows пароль из неё закрывает сама система ключом вашей учётной записи Windows. На macOS он закрыт ключом, который лежит внутри самой программы, а на Linux записан как набран.
Куда пара не уезжает
Настройки профиля уезжают на сервер, пока вы в своём аккаунте, а пары среди них нет, поэтому напарник открывает общий профиль без неё. С машины ведут две дороги. Файл переноса («Перенести вместе с сессией» в меню профиля) несёт пару под вашим паролем, а обычный экспорт кнопкой «Экспорт» сперва спрашивает и без вашего согласия пару не кладёт.
Подстановка в форму без выдачи наружу
Ваш пароль попадает в окно только после нажатия «Показать» или «Подставить в открытое окно» в окне «Вход в аккаунт» (меню профиля > Данные для входа). До этого в списке профилей стоит только значок «••••» с подсказкой «Данные для входа», и при обычной перерисовке пароль никуда не едет.
Пароль набирается в поле нажатиями клавиш, как от вас за клавиатурой, а поля находит отдельный мир программы, которого страница не видит. Подставляется он только в рамки того же сайта и в то поле, которое сама форма называет полем пароля.
С чем это путают
Пароли, сохранённые самим браузером
Они живут внутри одного профиля браузера и следуют за тем, кто вошёл в этот браузер, а не за нужным аккаунтом.
Связка ключей системы
Она закрывает значения тем, кто попросит, и ничего не знает ни про формы, ни про аккаунты, ни про передачу.
Общее хранилище команды
Его смысл в передаче секрета другому человеку, а это другая задача с другими способами сломаться.
Автоподстановка
Это только последний шаг. Важнее то, где значение лежало и кто мог его прочитать.
Чего это не делает
- ARMANOS не менеджер паролей. Профиль несёт одну пару, хранилища нет, поиска по аккаунтам нет, и придумывать пароли программа не умеет.
- Своего пароля на вход в программу нет. Любой, кто уже вошёл в ваш компьютер, откроет её, и границей остаётся сама учётная запись. Свой пароль может быть у отдельного профиля: он закрывает действия в ARMANOS, а профиль на диске не шифрует.
- Пара не отражается на сервере, и оттуда общий профиль доходит до напарника без неё. С машины ведут две дороги: файл переноса под вашим паролем и обычный экспорт профилей, который пару не берёт, пока вы не выберете иначе.
- Ни стойкость пароля, ни его присутствие в известных утечках не проверяется. Что набрали, то и хранится.
Проверить
За каждым утверждением выше стоит файл, а за большинством ещё и стенд, который краснеет, когда утверждение перестаёт быть правдой.
- Чем закрыт пароль на диске на каждой системе, и значение, которое не открылось, не стирается
- apps/desktop/src/lib/profiles.js · apps/desktop/test/login-in-keychain.js · apps/desktop/test/шифрование-правда-по-системам.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
Вопросы
- Стоит ли дальше пользоваться своим менеджером паролей?
- Стоит. Профиль держит пару того аккаунта, в который он входит, а всё остальное, куда вы заходите, по-прежнему место менеджера.
- Уезжает ли пара на ваш сервер?
- Нет. Пока вы в своём аккаунте, уезжают имя, группа, сценарий использования, шаблон и поколение отпечатка, прокси, теги и заметки, и пары среди них нет.
- Может ли страница украсть значение прямо при подстановке?
- Страница получает пароль так же, как от вашего набора: нажатиями клавиш в своё поле. Поля находит отдельный мир программы, и в главном документе, и в рамке того же сайта, а мир самой страницы для подстановки не берётся. Рамки других сайтов не трогаются.
- Что будет, если закрытое значение не откроется?
- Закрытый вид сохраняется, а не подменяется пустотой, и программа отдаёт наружу ничего вместо нечитаемого куска, который сайт всё равно отверг бы.
- Почему не держать пару в таблице?
- Потому что таблица открыта всему, что есть на машине, и всем своим копиям, и потому что именно так пароль попадает в чужой аккаунт строкой ниже.
Рядом с этим
TOTP
Второй шаг входа и ключ, который профиль может для него держать.
Шифрование при хранении
Что на самом деле даёт закрытый файл и где это кончается.
Профили
У каждого аккаунта свой браузер, своё хранилище и свой выход наружу.
Безопасность и доверие
Что и где записано и что об этом знает сервер.
Пароль на профиль
Пароль, который закрывает один профиль в программе, кабинете и сценариях.
Положите пару рядом с аккаунтом
Держите доступы вместе с тем профилем, который ими пользуется, а не в таблице, которую никто не стережёт.