|
|
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
В случае авторизации юзера ясно, что хранить пароль нет смысла - достаточно хранить его хеш и сравнивать хеши. Но как быть в таком случае: прога (С++) периодически коннектится к ftp (да хоть к чему, принцип один) и при коннекте засылает туда логин-пароль, откуда его брать? Ясно, что приходится его хранить (в конфиге, или базе), но хранить в открытом виде - как-то совсем не красиво, как бы его зашифровать? Т.е. сам алгоритм может быть любой, и наверно CryptoAPI тут поможет, вопрос скорее в том, что может быть ключом... как обычно решается такая типичная задача??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 08:21 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
хранить пароли в виде хешей md5, в открытом виде они ни кому пользу не принесут, т.к. обратно из хеша в строку преобразовать дюже геморно Модератор: Тема перенесена из форума "C++". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 09:25 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Вообще-то есть специальные сервисы для этого дела, типа Wallet-ов, в разных операционках по-разному, но есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 09:58 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
про герр, не получится хранить MD5 пароля (или любой другой хеш), ведь при коннекте пароль нужно отправить серверу, его не вводит пользователь - пароль должна "знать" сама программа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 10:05 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
MasterZiv, интересно что есть для винды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 10:06 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Дофаминпро герр, не получится хранить MD5 пароля (или любой другой хеш), ведь при коннекте пароль нужно отправить серверу, его не вводит пользователь - пароль должна "знать" сама программа! Можно, к примеру, на клиенте (в программе) хранить хеш пароля, а на сервере хранить хеш от хеша ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 10:14 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
про герр, да, но все равно не понятно, откуда возмется САМ ПАРОЛЬ) Его не должен вводить пользователь, но для автоматической авторизации на сервер нужно указать пароль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 11:25 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
On 20.01.2011 10:06, Дофамин wrote: > интересно что есть для винды? Не знаю. Например, портированный на винду GNU-тые программы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 11:40 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
2Дофамин: В Win есть т.н. безопасные хранилища.. машинное и пользовательское.. Ровно там ОС хранит имена/пароли, запоминаемые напр. Internet Explorero-м и т.д. Посмотрите http://msdn.microsoft.com/en-us/library/ms995332.aspx "Introducing CAPICOM", http://www.cryptopro.ru/docs/cpdn/default.asp?q=cryptopro/documentation/cpdn/default.asp Архитектура криптографических функций в Windows http://ru.wikipedia.org/wiki/CAPICOM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 12:43 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Дофаминпро герр, да, но все равно не понятно, откуда возмется САМ ПАРОЛЬ) Его не должен вводить пользователь, но для автоматической авторизации на сервер нужно указать пароль. На самом сервере вы можете менять пароль? Если да, то тот вариант который предложил герр , вполне подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 14:58 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
XordalЕсли да, то тот вариант который предложил герр , вполне подходит. Прошу прощения, "про герр" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 15:03 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Дофаминпрога (С++) периодически коннектится к ftp (да хоть к чему, принцип один) и при коннекте засылает туда логин-пароль, откуда его брать? Ясно, что приходится его хранить (в конфиге, или базе), но хранить в открытом виде - как-то совсем не красиво, как бы его зашифровать? Т.е. сам алгоритм может быть любой, и наверно CryptoAPI тут поможет, вопрос скорее в том, что может быть ключом... Да просто константный ключ в коде. Смысл что-то наворачивать? Если я захочу узнать пароль, я не программу ковырять буду, а снифер возьму. Или вы от чего пароль защитить хотите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2011, 15:17 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Xordal, на сервере пароль задать можно любой, да. Извиняюсь, но я все равно не догоняю вариант про хранение хеша) Ведь сервер требует пароль, а не его хеш) Насчет константного ключа в коде - вообще вариант. Конечно, квалифицированный крякер его там найдет при желании, но хоть что-то.. А снифер тут вряд ли поможет (защищенный vpn, ssl и т.п.). Еще я накопал такой вариант: CryptProtectData/CryptUnprotectData Позволяют зашифровать/дешифровать строку с использованием ключа, привязанного к учетной записи текущего виндового юзера. Минусы на мой взгляд такие: для каждой учетки придется создавать свой конфиг (ну или ограничить работу программы только одной учеткой) и до установки программы пароль придется хранить в открытом виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 07:22 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
ДофаминВ случае авторизации юзера ясно, что хранить пароль нет смысла - достаточно хранить его хеш и сравнивать хеши. Но как быть в таком случае: прога (С++) периодически коннектится к ftp (да хоть к чему, принцип один) и при коннекте засылает туда логин-пароль, откуда его брать? Ясно, что приходится его хранить (в конфиге, или базе), но хранить в открытом виде - как-то совсем не красиво, как бы его зашифровать? Т.е. сам алгоритм может быть любой, и наверно CryptoAPI тут поможет, вопрос скорее в том, что может быть ключом... как обычно решается такая типичная задача??? 1. В прогу заходит юзер. Берем любой алгоритм шифрования (хоть тот же rar с паролем) и шифруем им персональные данные пользователя. Пользователь заходит в прогу, вводит пароль. Если не верно - расшифровали чепуху, контролька не сошлась, пользователь послан на пару секунд. Если ввел верно - получили настройки, пароли и прочую необходимую инфу для доступа куда-то. 2. Прога-демон. Пароль вводить некому. Потому авторизационные данные должны храниться в защищенном от ПОСТОРОННИХ месте. Если эта прога выполняется на сервере, так это уже задача защищенности сервера. Например, имеем веб-сетрвер на PHP. В одном из его конфигурационных файлов в открытом видем храним логин доступа к БД. При этом задача его сокрытия от посторонних глаз ну никак не на PHP ложится, а уже на сам сервер. Т.е. задача админа дать доступ к этим файлам только движку PHP, себе и никому больше. Точно так же и с твоей прогой. Сначала надо выяснить ОТ КОГО прячем пароль? Если не желательно владельцу компа его знать, то сделать защиту от дурака, тот же unrar подключить или библиотеку шифрования и расшифровывать логин явно заданным в проге паролем (или собираемым из кусочков), можно так же и из сети пароль на расшифровку запрашивать, не суть важно. Если скрыть от злоумышленников - то это уже задача админа компа, а не твоей проги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 09:35 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
ДофаминА снифер тут вряд ли поможет (защищенный vpn, ssl и т.п.). А просто из памяти работающей проги его забрать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 09:36 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, Согласен, возможно несколько вариантов уровня доступа "злоумышленника", выделю 2 основных: 1. Доступ к БД, в которой хранится пароль для доступа к серверу. 2. Доступ также и к самой программе, которая за настройками лезет в БД, потом используя их коннектится к серверу. В первом случае достаточно шифровать пароль фиксированным ключом, зашитым в код - ведь проги у хакера нет. Во-втором он может дизассемблировать код, или залезть в память запущенной проги и извлечь пароль. НО. Если он зашифрован относительно учетной записи виндового юзера, то ему придется запустить украденную программу под точно той же учеткой, что, мягко говоря, затруднительно. Создать на своем компьютере идентичную учетку он тоже вряд ли сможет. Если только не снимет образ диска с исходной машины и не взломает ее пароль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 09:56 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
ДофаминEdd.Dragon, Согласен, возможно несколько вариантов уровня доступа "злоумышленника", выделю 2 основных: 1. Доступ к БД, в которой хранится пароль для доступа к серверу. 2. Доступ также и к самой программе, которая за настройками лезет в БД, потом используя их коннектится к серверу. В первом случае достаточно шифровать пароль фиксированным ключом, зашитым в код - ведь проги у хакера нет. Во-втором он может дизассемблировать код, или залезть в память запущенной проги и извлечь пароль. НО. Если он зашифрован относительно учетной записи виндового юзера, то ему придется запустить украденную программу под точно той же учеткой, что, мягко говоря, затруднительно. Создать на своем компьютере идентичную учетку он тоже вряд ли сможет. Если только не снимет образ диска с исходной машины и не взломает ее пароль. Не. Нужно заразить тот комп, на котором прога запускается и с него стырить. А если злоумышленник увел с компа прогу себе - так это уже действиетльно ответственность пользователя. И тут уже, если речь идет о большом количестве пользователей, которых не научишь "мыть руки перед едой", то тогда уже на стороне сервера надо какие-то механизмы вводить. Типа с такого-то компа с таким-то паролем есть доступ. Если попытались получить доступ с этим паролем с другого компа - блокировать до выяснения обстоятельств. Короче, это уже от задачи зависит. При чем, с логинами на добавление инфы в БД можно особо не мучаться. А с логинами на получение не всем положенной инфы - наоборот - надо хорошо повозиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 10:17 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
ДофаминEdd.Dragon, Согласен, возможно несколько вариантов уровня доступа "злоумышленника", выделю 2 основных: 1. Доступ к БД, в которой хранится пароль для доступа к серверу. 2. Доступ также и к самой программе, которая за настройками лезет в БД, потом используя их коннектится к серверу. В первом случае достаточно шифровать пароль фиксированным ключом, зашитым в код - ведь проги у хакера нет. Во-втором он может дизассемблировать код, или залезть в память запущенной проги и извлечь пароль. НО. Если он зашифрован относительно учетной записи виндового юзера, то ему придется запустить украденную программу под точно той же учеткой, что, мягко говоря, затруднительно. Создать на своем компьютере идентичную учетку он тоже вряд ли сможет. Если только не снимет образ диска с исходной машины и не взломает ее пароль. В программе генерируется GUID, по нему делается XOR (или любой другой метод обратимого шифрования) с вшитым в программу паролем и отсылается на сервер. На сервере пара: ( GUID xor PASS ) и PASS расшифровывается и по ней определяется GUID. Сервер в своем ответе, в случае если пользователь имеет доступ к базе (это проверяется по паролю и наличию в базе записи что пользователь имеет доступ) передает ему настройки и допустим md5 ( GUID ). Программа сверяет md5 от сгенерированного ей GUID, с тем что прислал сервер. Если сервер прислал верное значение, то у себя в памяти программа запоминает GUID и на его основе создает мьютекс, который будет находиться в системе до выхода из программы. Пока мьютекс существует, пользователю разрешается работать, если его нет, то программа снова выполняет авторизацию на сервере. Эт если я вообще понял о чем речь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 15:07 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Xordal, интересный подход, если я не ошибаюсь, похож на метод "открытого ключа". Но здесь ничто связанное с вычислениями на сервере не подходит, т.к. он не самописный, а стандартный ftp-сервер. Т.е. задача, грубо говоря, в том, что "пользователь не вводит пароль в программе, поставив раз и навсегда галочку сохранить пароль, и вопрос в том, как этот пароль надежно зашифровать в БД настроек программы". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2011, 16:22 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Дофаминпользователь не вводит пароль в программе, поставив раз и навсегда галочку сохранить пароль Здесь пожалуйста уточните, какой у вас случай: - пользователь 1 раз ввел пароль и он должен сохраниться в зашифрованном виде - пароль должен сразу храниться в зашифрованном виде в программе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2011, 17:12 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Xordal, случай номер 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2011, 11:38 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
т.е. в процессе отладки пароль может лежать в открытом виде (все настройки - это таблица в БД), но перед передачей программы конечным пользователям пароль в БД необходимо зашифровать так, чтобы: а) сама программа каким-то образом могла его дешифровать в процессе работы, чтобы приконнектится к серверу, используя этот пароль, для пользователя все это прозрачно. б) пароль не мог быть дешифрован потенциальным хакером, получившим в свое распоряжение БД настроек (а в наихудшем случае - и саму программу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2011, 11:42 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Дофаминт.е. в процессе отладки пароль может лежать в открытом виде (все настройки - это таблица в БД), но перед передачей программы конечным пользователям пароль в БД необходимо зашифровать так, чтобы: а) сама программа каким-то образом могла его дешифровать в процессе работы, чтобы приконнектится к серверу, используя этот пароль, для пользователя все это прозрачно. б) пароль не мог быть дешифрован потенциальным хакером, получившим в свое распоряжение БД настроек (а в наихудшем случае - и саму программу). Выбираете любой пароль, выбираете любой алгоритм шифрования, можно даже несколько раз шифровать ваш пароль (допустим md5(des(rsa(md5(то что вы выбрали в самом начале)))), это уже на ваш вкус). То что получится в итоге ставите в качестве пароля на ваш сервер ftp. Потом перед каждым коннектом делаете операции шифрования снова и используете результат в качестве коннекта. В любом случае, если человек обладает достаточно высокой квалификацией, без шифрования канала связи, он, имея программу, получит ваш пароль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2011, 12:11 |
|
||
|
Хранение шифрованного пароля (не хеша)
|
|||
|---|---|---|---|
|
#18+
Xordal, теперь понятно) Но чем это по-сути отличается от варианта задать на сервере пароль, а в программе зашифровать его также несколько раз разными алгоритмами относительно ключа, заданного в коде? Кстати, канал шифруется. Так вот вопрос в том, как пойти дальше, и сделать привязку не к зашитому в программе ключу+алгоритму, а чему-то уникальному, например учетной записи виндузного юзера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2011, 13:10 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37068358&tid=1343178]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 554ms |

| 0 / 0 |
