Название: Хранение паролей Отправлено: kalif от Февраль 03, 2011, 11:02 Всем привет.
Суть проблемы: в настройках программы необходимо хранить пароль доступа к СУБД. Сейчас он храниться открытым текстом, но это не есть гуд. Подскажите как лучше скрыть пароль от посторонних глаз без самостоятельной реализации алгоритма шифрования? Название: Re: Хранение паролей Отправлено: Omg от Февраль 03, 2011, 11:12 Думаю, что никак. Если есть данные хранимые на диски и их необходимо защитить от прочтения, то единственный вариант - шифрование.
Название: Re: Хранение паролей Отправлено: kalif от Февраль 03, 2011, 12:11 А в Qt нету готовых решений на эту тему?
Название: Re: Хранение паролей Отправлено: SimpleSunny от Февраль 03, 2011, 12:18 Смотря от кого прятать будете.
Можно использовать простой XOR http://www.prog.org.ru/topic_13420_0.html Если модель угрозы "более продвинутая", то тут уже особо не спасешься, так как можно прослушать снифером сетевой трафик и получить пароль в открытом виде, или скопировать программу домой и декомпилировать ее и узнать пароль. Название: Re: Хранение паролей Отправлено: kalif от Февраль 03, 2011, 12:23 Тоже подумывал использовать обычный XOR, скорее всего так и сделаю.
А прослушка трафика не страшна, так как работа ведется с локальной БД. Название: Re: Хранение паролей Отправлено: kirill от Февраль 03, 2011, 12:46 OpenSSL - посмотри, я в блоге писал как его использовать для Qt.
http://qtcoder.blogspot.com/2010/02/qt.html (http://qtcoder.blogspot.com/2010/02/qt.html) Название: Re: Хранение паролей Отправлено: developer от Февраль 04, 2011, 12:24 Можно сделать еще так.
Береш MD5 от пароля, сохраняеш в базу. Юзер вводит пароль и нажимает Ентер, берем MD5 от введеного пароля и проверяем на равность с MD5 из базы. Если равны - значит пускаем дальше, если нет значит баним. Название: Re: Хранение паролей Отправлено: kirill от Февраль 04, 2011, 12:27 Можно сделать еще так. Береш MD5 от пароля, сохраняеш в базу. Юзер вводит пароль и нажимает Ентер, берем MD5 от введеного пароля и проверяем на равность с MD5 из базы. Если равны - значит пускаем дальше, если нет значит баним. А ему не надо чтобы юзер вводил. Он хочет сам вводить его в базу, а лежит он у него во внешних настройках в открытом виде. Название: Re: Хранение паролей Отправлено: Prm от Февраль 04, 2011, 13:39 Cryptopp тебе в помощь! Отличная криптографическая библиотечка.
Название: Re: Хранение паролей Отправлено: xokc от Февраль 04, 2011, 20:45 Хранить его в ресурсах Qt в сжатом виде - намного кошернее, чем XOR получится, да еще и пару байт памяти съэкономишь :)
Название: Re: Хранение паролей Отправлено: asrael от Февраль 05, 2011, 23:42 Можно сделать еще так. я недавно тоже мучался с этим вопросом.. ничего лучше не придумал, чем сохранять в файл настроек шифрованый пароль. для этого есть в Qt функция:Береш MD5 от пароля, сохраняеш в базу. Юзер вводит пароль и нажимает Ентер, берем MD5 от введеного пароля и проверяем на равность с MD5 из базы. Если равны - значит пускаем дальше, если нет значит баним. Код: QString pass_hash = QCryptographicHash::hash(hsh,QCryptographicHash::Md5); Название: Re: Хранение паролей Отправлено: iRQSX от Июнь 07, 2011, 16:07 Личное мнение: md5 это конечно решение, но не всегда. Вот пример: постгрес на винде при установке просит пароль на подключение к серверу, например укажем "qwerty". Идем дальше, в своей программе надо подключиться к этой базе
Код если мы тут хотим использовать хеш то его надо еще до установки сервака знать. Неудобно... Вот тоже бъюсь головой об стену как реализовать авторизацию и подключение к базе. Даже если использовать обратимый алгоритм шифрования то встает вопрос где хранить ключи шифрования. p.s. Код выдает такой хеш: \xaf\xa0\xcbT\xc1nr\x2-0\x8as\xcc\x61\x96\x94 а сайт (http://mainspy.ru/shifrovanie_md5) выдает e86fdc2283aff4717103f2d44d0610f7 Объясните кто прав или где я накосячил... Название: Re: Хранение паролей Отправлено: LisandreL от Июнь 07, 2011, 16:23 p.s. Код выдает такой хеш: \xaf\xa0\xcbT\xc1nr\x2-0\x8as\xcc\x61\x96\x94 а сайт (http://mainspy.ru/shifrovanie_md5) выдает e86fdc2283aff4717103f2d44d0610f7 Объясните кто прав или где я накосячил... Код А хеш - d8578edf8458ce06fbc5bb76a58c5ca4. e86fdc2283aff4717103f2d44d0610f7 - это qwertyu. Название: Re: Хранение паролей Отправлено: iRQSX от Июнь 07, 2011, 18:42 Спасибо за ответ. Есть еще одна заморочка: делаю
Код
получаю efe6398127928f1b2e9ef3207fb82663 установил такой же пароль(qweqwe) на пользователя в постгресе получаю такое: (http://imagepost.ru/images/p/qs/pqsql.png) то есть хеш md5d2d430490cc35011e0941f20108c8c4e Создаю еще одного пользователя с таким же паролем хеш другой... Приставка "md5" стандартная, но остальное все равно совсем не похоже Название: Re: Хранение паролей Отправлено: LisandreL от Июнь 07, 2011, 20:56 установил такой же пароль(qweqwe) на пользователя в постгресе получаю такое: Солит (http://ru.wikipedia.org/wiki/Соль_(криптография)) чем-нибудь.то есть хеш md5d2d430490cc35011e0941f20108c8c4e Создаю еще одного пользователя с таким же паролем хеш другой... Приставка "md5" стандартная, но остальное все равно совсем не похоже Md5 в чистом виде уже не используют для хранения пароля. Для простых паролей они давно просчитаны, поэтому по хешу можно будет восстановить пароль, как я в прошлом посте по e86fdc2283aff4717103f2d44d0610f7 нашёл "qwertyu". Название: Re: Хранение паролей Отправлено: iRQSX от Июнь 08, 2011, 07:39 спасибо за статью, в любом случае этот хеш бесполезен, так как драйвер базы требует передачи пароля в открытом виде. а значить если мы не хотим спрашивать пользователя два пароль при входе в программу(один от базы, а второй пароль от самой программы который хранится в базе), то придется пароль от базы хранить в открытом виде, а если его шифровать по ключу, то тогда хранить ключ в открытом виде, что в принципе одно и тоже...
Название: Re: Хранение паролей Отправлено: LisandreL от Июнь 08, 2011, 08:16 придется пароль от базы хранить в открытом виде, а если его шифровать по ключу, то тогда хранить ключ в открытом виде, что в принципе одно и тоже... Как вариант - хранить пароль от базы зашифрованным, где шифр - пароль пользователя.При каждом изменении пароля - перешифровывать. |