Обращение с паролями в приложениях

Разработка Far.
Post Reply
User avatar
DrKnS
Posts: 6078
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 408 times

Обращение с паролями в приложениях

Post by DrKnS »

А есть на форуме специалисты по security?

Как сейчас правильно хранить пароли в приложениях?
В свете возвращения favorites в network хочется не колхозить в каждом отдельном плагине, а сделать один раз в Far и предоставить API.
Last edited by HaRT on Wed 29 Dec, 2021 22:44, edited 1 time in total.
Reason: Уточнён заголовок Темы
User avatar
HaRT
Moderator
Posts: 9999
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 147 times
Been thanked: 287 times

Пароли

Post by HaRT »

DrKnS wrote: Wed 29 Dec, 2021 22:23 сделать один раз в Far и предоставить API
Если уж на то пошло, то хранить надо не в Фаре, а в системном Credential Manager'е, и уже к нему предоставлять какой-то упрощённый доступ. Правда, я не знаю, в какой версии Виндов он появился и как приложения жили до этого.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
DrKnS
Posts: 6078
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 408 times

Обращение в паролями в приложениях

Post by DrKnS »

Credential Manager - это прекрасно, но он же вываливает на блюдечке все свое содержимое любому, осилившему CredEnumerate, что мало чем отличается от хранения в бд в открытом виде.
User avatar
HaRT
Moderator
Posts: 9999
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 147 times
Been thanked: 287 times

Обращение в паролями в приложениях

Post by HaRT »

DrKnS wrote: Wed 29 Dec, 2021 23:02 он же вываливает на блюдечке все свое содержимое любому, осилившему CredEnumerate
Жаль, что не подходит. Сам-то я с ним общался только как пользователь.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6427
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 409 times

Обращение в паролями в приложениях

Post by Shmuel »

Можно хранить в базе хэши паролей, например SHA-256.
User avatar
DrKnS
Posts: 6078
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 408 times

Обращение в паролями в приложениях

Post by DrKnS »

HaRT wrote: Wed 29 Dec, 2021 23:07Жаль, что не подходит
Я же не говорю, что не подходит.
Я тоже общался как пользователь, но вот пообщался с API и немного удивился легкости доступа к телу.
Но если все так делают и всех все устраивает, то, может быть, так и надо.
Shmuel wrote: Wed 29 Dec, 2021 23:15 Можно хранить в базе хэши паролей, например SHA-256.
Речь о тех паролях, которые надо куда-то дальше передавать.
Yegor
Posts: 1156
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 20 times
Been thanked: 32 times

Обращение в паролями в приложениях

Post by Yegor »

Надо рассуждать так, что если Фар может достать цельный пароль из какого-то супер-пупер хранилища, то любой сможет.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
2useven10
Posts: 4447
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 232 times

Обращение в паролями в приложениях

Post by 2useven10 »

Там же привязка к сессии пользователя.
Чтобы получить ваши данные кто-то должен сначала войти в ваш аккаунт.
Yegor
Posts: 1156
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 20 times
Been thanked: 32 times

Обращение в паролями в приложениях

Post by Yegor »

Минусы Credential Manager:
  • еще одна привязка к винде (да, да, я все понимаю, у меня нет особых иллюзий, но все же :))
  • нарушается портабельность
  • скорее всего не будет работать в windows server core (для меня критично достаточно)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
DrKnS
Posts: 6078
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 408 times

Обращение в паролями в приложениях

Post by DrKnS »

Yegor wrote: Wed 29 Dec, 2021 23:42любой сможет
Естественно - как ни прячь, рано или поздно надо расшифровать.
Тут скорее вопрос типичного вектора атаки и целесообразности складывания всех яиц в одну корзину.

Написать код, который будет вытаскивать все из wincred и отправлять куда-то по http не просто, а очень просто.
А конфиг фара, даже если там все будет открытым текстом, еще найти на диске надо. И вообще знать о его существовании ("фар - маргинальный продукт. © 2008 zg").

В принципе, можно сделать как в git - несколько провайдеров на выбор, пару из коробки и возможность написания своих.
buniak_a_h
Posts: 3307
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 173 times
Been thanked: 483 times
Contact:

Обращение с паролями в приложениях

Post by buniak_a_h »

А я пароли на TrueCrypt-диске храню…
Last edited by buniak_a_h on Thu 30 Dec, 2021 01:06, edited 1 time in total.
User avatar
citRiks
Posts: 1640
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 525 times
Been thanked: 95 times

Обращение с паролями в приложениях

Post by citRiks »

Как в винде не надо, я щитаю. все равно в CredentialsManager ничего чудесного нет. чем меньше винды тем лучше. может какое случиться чудо и перенесут на линух, в вайн. а в винде могут поменять архитектуру и АПИ.
может сделать архитектуру как в putty/winscp, там что-то было с приватными ключами ?
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Ariman
Posts: 1310
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 13 times
Been thanked: 47 times
Contact:

Обращение с паролями в приложениях

Post by Ariman »

А чего бы не хранить в Фаре, в отдельной базе, зашифрованной мастер-паролем? А при первом запросе вываливать диалог ввода этого мастер-пароля, который потом в памяти процесса кешируется.
User avatar
Taciturn
Posts: 485
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 57 times
Been thanked: 19 times
Contact:

Обращение с паролями в приложениях

Post by Taciturn »

Может использовать уже написанный код какого-нибудь KeePass или Firefox для хранения (но в отдельной базе в профиле, конечно)? С возможностью задать пароль или же не задавать, если вдруг безопасность не нужна.
pepak
Posts: 579
Joined: Sun 13 Jul, 2008 11:18
Has thanked: 17 times
Been thanked: 48 times

Обращение с паролями в приложениях

Post by pepak »

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.
Post Reply

Return to “Development”