Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Быстрая хеш-функция


Автор: REZiaMIX 29.5.2008, 20:40
По сети передается пара login/pass от клиента к серверу.
Сервер соответственно должен найти в списке login проверить pass (дальше по усмотрению).
Задумал реализовывать так :
На сервере хешировать пары login/pass.
Клиент посылает хеш , сервер сверяет из списка.

Будет ли это правильной реализацией?(Расчет идет на большое кол-во записей)

Если это в большей степени правильно,подскажите хеш-функцию с достаточной 
устойчивостью к коллизиям (поиск будет происходить по большой базе, немалую важность 
играет производительность).

Автор: ksili 30.5.2008, 07:54
Насколько я знаю, самыми распространёнными являются хэш-функции SHA, MD4, MD5. Думаю все они удовлетворяют вашим требованиям

Автор: RockClimber 30.5.2008, 18:53
"Хотя функция хэширования MD4 очень быстрая, она довольно легко взламывается [24], поэтому не стоит ее использовать."
Брюс Шнаер, Нильс Фергюсон, "Практичсекая криптография", ISBN 5-8459-0733-0, стр. 108.

[24] - это Dobbertin H. Cryptoanalysis of MD4 // J. Cryptology. - 1998. 11(4). - P. 253-271.

Пару лет назад в "Компьютерре" писали о найденной уязвимости MD5 на основе коллизий, но она на тот момент была далека от практического применения.

Автор: mmvds 30.5.2008, 22:20
Цитата(RockClimber @  30.5.2008,  18:53 Найти цитируемый пост)
Пару лет назад в "Компьютерре" писали о найденной уязвимости MD5 на основе коллизий, но она на тот момент была далека от практического применения. 

Она и сейчас далека от применения, на ее основе вполне реально создать два бинарника с одним хэшем, но для строковых данных уязвимость не подходит http://forum.vingrad.ru/forum/topic-206366.html

Автор: Alexandr87 31.5.2008, 05:48
судя из описанной ситуации  здесь вообще не нужен криптографический хэш: хэш применяется исключительно для ускорения поиска, и никаких функций безопасности не несет.

Автор: ksili 31.5.2008, 06:15
Цитата(Alexandr87 @  31.5.2008,  09:48 Найти цитируемый пост)
судя из описанной ситуации  здесь вообще не нужен криптографический хэш: хэш применяется исключительно для ускорения поиска, и никаких функций безопасности не несет.

Как  раз в описанной ситуации (хэширование паролей) нужен именно криптографический хэш. 

Автор: Alexandr87 31.5.2008, 11:48
ksili,
Цитата(REZiaMIX @  29.5.2008,  23:40 Найти цитируемый пост)

Задумал реализовывать так :
На сервере хешировать пары login/pass.
Клиент посылает хеш , сервер сверяет из списка.

и чтоже нам даст криптографический хэш в данной ситуации.

Автор: v2v 31.5.2008, 11:53
в данной ситуации на скорость больше повлияет перебор/поиск по базе нужных логина / пароля чем сама операция хеширования.

Цитата(REZiaMIX @  29.5.2008,  20:40 Найти цитируемый пост)
Задумал реализовывать так :
На сервере хешировать пары login/pass.
Клиент посылает хеш , сервер сверяет из списка.

а вообще ты плохо придумал. 
почитай темы из раздела "Технология защиты".
твой протокол обмена очень легко взламывается...

Автор: REZiaMIX 31.5.2008, 17:46
Спасибо за ответы

Автор: ksili 2.6.2008, 07:40
Цитата(Alexandr87 @  31.5.2008,  15:48 Найти цитируемый пост)
и чтоже нам даст криптографический хэш в данной ситуации.

Ну я думаю он помешает сбрутить перехваченный хэш.

Автор: Alexandr87 2.6.2008, 07:53
Цитата(ksili @  2.6.2008,  10:40 Найти цитируемый пост)
Ну я думаю он помешает сбрутить перехваченный хэш. 

а зачем его брутить, когда им (непосредственно дайджестом) можно воспользоваться для аутентификации на сервисе.

ЗЫ. Вероятнее всего, что хэш подразумевалось использовать не для защиты (потому как защитных функций он не предоставляет), а для уменьшения требуемого машинного времени на сервере при аутентификации.
Как проходит поиска по бд: данные хэшируются и на основе их хэша производится быстрый поиск по БД. В данном случае не нужно производить хэш на сервере. В теории это позволяет несущественно уменьшить нагрузку на сервер, в чем по-моему и заключась суть этих манипуляций.

Автор: ksili 2.6.2008, 09:06
Цитата(Alexandr87 @  2.6.2008,  11:53 Найти цитируемый пост)
а зачем его брутить

в некоторых случаях нужен и сам пароль (когда его будет использовать человек, например, чтобы зайти под чужим логином)

С остальным согласен

Автор: REZiaMIX 8.6.2008, 17:35
Мне нужен был хеш ,
1) Для ускорения поиска
2) Чтобы логин/пасс не передавались "голышом".

На данный моммент выбрал MD5

Цитата

ЗЫ. Вероятнее всего, что хэш подразумевалось использовать не для защиты (потому как защитных функций он не предоставляет), а для уменьшения требуемого машинного времени на сервере при аутентификации.
Как проходит поиска по бд: данные хэшируются и на основе их хэша производится быстрый поиск по БД. В данном случае не нужно производить хэш на сервере. В теории это позволяет несущественно уменьшить нагрузку на сервер, в чем по-моему и заключась суть этих манипуляций.


В точку)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)