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

Разработка Far.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 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: 10863
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Пароли

Post by HaRT »

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

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

Post by DrKnS »

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

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

Post by HaRT »

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

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

Post by Shmuel »

Можно хранить в базе хэши паролей, например SHA-256.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 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: 1328
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

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

Post by Yegor »

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

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

Post by 2useven10 »

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

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

Post by Yegor »

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

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

Post by DrKnS »

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

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

В принципе, можно сделать как в git - несколько провайдеров на выбор, пару из коробки и возможность написания своих.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

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

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

Post by Ariman »

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

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

Post by Taciturn »

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