Обращение с паролями в приложениях
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Обращение с паролями в приложениях
А есть на форуме специалисты по security?
Как сейчас правильно хранить пароли в приложениях?
В свете возвращения favorites в network хочется не колхозить в каждом отдельном плагине, а сделать один раз в Far и предоставить API.
Как сейчас правильно хранить пароли в приложениях?
В свете возвращения favorites в network хочется не колхозить в каждом отдельном плагине, а сделать один раз в Far и предоставить API.
Last edited by HaRT on Wed 29 Dec, 2021 22:44, edited 1 time in total.
Reason: Уточнён заголовок Темы
Reason: Уточнён заголовок Темы
- HaRT
- Moderator
- Posts: 10859
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Пароли
Если уж на то пошло, то хранить надо не в Фаре, а в системном Credential Manager'е, и уже к нему предоставлять какой-то упрощённый доступ. Правда, я не знаю, в какой версии Виндов он появился и как приложения жили до этого.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Обращение в паролями в приложениях
Credential Manager - это прекрасно, но он же вываливает на блюдечке все свое содержимое любому, осилившему CredEnumerate, что мало чем отличается от хранения в бд в открытом виде.
- HaRT
- Moderator
- Posts: 10859
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Обращение в паролями в приложениях
Жаль, что не подходит. Сам-то я с ним общался только как пользователь.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Обращение в паролями в приложениях
Я же не говорю, что не подходит.
Я тоже общался как пользователь, но вот пообщался с API и немного удивился легкости доступа к телу.
Но если все так делают и всех все устраивает, то, может быть, так и надо.
Речь о тех паролях, которые надо куда-то дальше передавать.
-
- Posts: 1328
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 32 times
- Been thanked: 61 times
Обращение в паролями в приложениях
Надо рассуждать так, что если Фар может достать цельный пароль из какого-то супер-пупер хранилища, то любой сможет.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
-
- Posts: 1328
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 32 times
- Been thanked: 61 times
Обращение в паролями в приложениях
Минусы Credential Manager:
- еще одна привязка к винде (да, да, я все понимаю, у меня нет особых иллюзий, но все же )
- нарушается портабельность
- скорее всего не будет работать в windows server core (для меня критично достаточно)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Обращение в паролями в приложениях
Естественно - как ни прячь, рано или поздно надо расшифровать.
Тут скорее вопрос типичного вектора атаки и целесообразности складывания всех яиц в одну корзину.
Написать код, который будет вытаскивать все из wincred и отправлять куда-то по http не просто, а очень просто.
А конфиг фара, даже если там все будет открытым текстом, еще найти на диске надо. И вообще знать о его существовании ("фар - маргинальный продукт. © 2008 zg").
В принципе, можно сделать как в git - несколько провайдеров на выбор, пару из коробки и возможность написания своих.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Обращение с паролями в приложениях
А я пароли на TrueCrypt-диске храню…
Last edited by buniak_a_h on Thu 30 Dec, 2021 01:06, edited 1 time in total.
Обращение с паролями в приложениях
Как в винде не надо, я щитаю. все равно в CredentialsManager ничего чудесного нет. чем меньше винды тем лучше. может какое случиться чудо и перенесут на линух, в вайн. а в винде могут поменять архитектуру и АПИ.
может сделать архитектуру как в putty/winscp, там что-то было с приватными ключами ?
может сделать архитектуру как в putty/winscp, там что-то было с приватными ключами ?
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Обращение с паролями в приложениях
А чего бы не хранить в Фаре, в отдельной базе, зашифрованной мастер-паролем? А при первом запросе вываливать диалог ввода этого мастер-пароля, который потом в памяти процесса кешируется.
- Taciturn
- Posts: 603
- Joined: Thu 26 May, 2005 17:14
- Location: Санкт-Петербург
- Has thanked: 89 times
- Been thanked: 31 times
- Contact:
Обращение с паролями в приложениях
Может использовать уже написанный код какого-нибудь KeePass или Firefox для хранения (но в отдельной базе в профиле, конечно)? С возможностью задать пароль или же не задавать, если вдруг безопасность не нужна.
Обращение с паролями в приложениях
I agree with Ariman:
1) Save the passwords in a separate database, encrypted with a master key.
2) The master key should be randomly generated and also encrypted. As for the key to this, give the user a choice:
a) Password entered by the user on first access in the session.
b) Password read from the Windows credential store.
c) Password read from DPAPI.
d) Key decrypted using a private key stored in the Windows certificate store (this will give the user an opportunity to store the data on a smartcard).
3) In all of the cases above, if you are using a password (=user-entered data rather than randomly generated), process it using a secure (and slow!) key derivation function (e.g. Argon or scrypt - with user-configurable parameters).
4) When the user asks for a protected password for the first time in a session, read whatever data is necessary to decrypt the master key and, based on configuration:
a) Forget it after first use.
b) Forget it after the specified number of seconds since the last use.
c) Forget it when Windows session is locked.
d) Keep it in memory indefinitely.
e) Provide a UI to forget the remembered value right now.
1) Save the passwords in a separate database, encrypted with a master key.
2) The master key should be randomly generated and also encrypted. As for the key to this, give the user a choice:
a) Password entered by the user on first access in the session.
b) Password read from the Windows credential store.
c) Password read from DPAPI.
d) Key decrypted using a private key stored in the Windows certificate store (this will give the user an opportunity to store the data on a smartcard).
3) In all of the cases above, if you are using a password (=user-entered data rather than randomly generated), process it using a secure (and slow!) key derivation function (e.g. Argon or scrypt - with user-configurable parameters).
4) When the user asks for a protected password for the first time in a session, read whatever data is necessary to decrypt the master key and, based on configuration:
a) Forget it after first use.
b) Forget it after the specified number of seconds since the last use.
c) Forget it when Windows session is locked.
d) Keep it in memory indefinitely.
e) Provide a UI to forget the remembered value right now.