uralplan / psi-dev

Automatically exported from code.google.com/p/psi-dev
0 stars 0 forks source link

Не запоминаются пароли при включения запоминания в виде хэшей #605

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Добый день!

Сабж, собственно.

====

Шаги по воспроизведению проблемы:
What steps will reproduce the problem?
1. Account menu -> вкладка Misc -> отмечаем чек-бокс 
Store hash instead of plaintext password if server supports this feature
2. Появляется требование реконнектиться - 
при реконнекте спрашивает пароль.
3. Пишем пароль, отмечаем чек-бокс Запомнить 
пароль - при следующем реконекте или входе 
в программу - опять спрашивает пароль.

Версия Psi+ - 0.16.411-435-0ubuntu1~ubuntu14.10.1~ppa1
ОС Ubuntu 14.10 x64 с Unity
Библиотеки Qt 4.8.6

Дополнительная информация по проблеме:

Есть подозрение, что хранятся всё-таки хэши 
паролей, ибо в файле accounts.xml пароли выглядят 
таким образом, хотя чек-бокс "Хранить в виде 
хэшей" - не отмечен:

<password 
type="QString">0008005f00030007000500...........002c00130002000c004a</password> 
(точками несколько символов затёр на 
всякий слйчай)

Original issue reported on code.google.com by branzean...@gmail.com on 27 Jan 2015 at 2:29

GoogleCodeExporter commented 8 years ago
Какой jabber сервер вы используете?
Если jabber.ru, то бесполезно. Он по каким-то 
своим причинам постоянно меняет соль при 
авторизации scram-sha-1. В этом случае хэш 
хранить бесполезно. Другие сервера надо 
проверять отдельно.

Original comment by li...@mail.ru on 27 Jan 2015 at 11:57

GoogleCodeExporter commented 8 years ago
Сервер - talk.google.com

Соль меняется, так как это безопасно - 
динамическая соль называется. И почему в 
этом случае хранить хэш бесполезно? 
Получили при запросе на авторизацию новую 
соль, хранимый хэш дополнительно 
захэшировали этой солью - и отправили на 
сервер. Сервер соль знает, расщифровывает 
чистый хэш. Далее алгоритм шифрования тоже 
известен - расшифровывается пароль.

Но главный вопрос в том, что неудобно 
каждый раз при авторизации пароль набирать 
- тем более, когда видно, что на самом-то 
деле хэши есть - обидно :)

Вот только SHA-1 слегка того... устарело. 
Кстати, Qt5 имеет все современные алгоритмы 
шифрования http://doc.qt.io/qt-5/qcryptographichash.html

Original comment by branzean...@gmail.com on 28 Jan 2015 at 2:08

GoogleCodeExporter commented 8 years ago
> Соль меняется, так как это безопасно - 
динамическая соль называется. И почему в 
этом случае хранить хэш бесполезно?

В данном случае под хешем подразумевается 
хеш уже соленого пароля используя механизм 
SCRAM.
SaltedPassword  := Hi(Normalize(password), salt, i)

> Вот только SHA-1 слегка того... устарело.

Но с учетом вышеуказанного механизма пока 
вполне безопасно (мое мнение). Т.к. параметр 
"i" обычно большой. j.ru, например, отдает его 
равным 4096. Т.е. 4 тысячи итераций 
хеширования.

p.s. в элементе <password /> хранится именно 
пароль. Обсуждаемый хэш хранится в другом 
месте.

Original comment by li...@mail.ru on 28 Jan 2015 at 10:27

GoogleCodeExporter commented 8 years ago
Увы, но в скором будущем возможны 
строгости. Google переходит на Open ID Connect - 
https://developers.google.com/+/api/auth-migration#timetable

На Qt ещё написали...

Original comment by branzean...@gmail.com on 28 Jan 2015 at 2:37