Использование хеш-функции в python - PullRequest
0 голосов
/ 27 февраля 2011

Я создал тему о встроенной хэш-функции python: Старое хэширование python выполняется слева направо - почему это плохо? Предыдущая тема была о том, почему это плохо для шифрования, потому что у нас есть приложение под названием Gruyere, которое заполнено дырами в безопасности, и оно использует hash () для шифрования куки.

# global cookie_secret; only use positive hash values
h_data = str(hash(cookie_secret + c_data) & 0x7FFFFFF)

c_data - имя пользователя; cookie_secret - это соль (по умолчанию это просто '*)

Я реализовал более безопасный метод шифрования с использованием хеширования md5 с солью, но одним из упражнений является преодоление этого старого шифрования, и я до сих пор не могу понять, как :-( Я прочитал код string_hash из исходного кода python, но он не задокументирован и Я не могу понять это.

РЕДАКТИРОВАТЬ: Идея состоит в том, чтобы написать программу, которая может создать действительный файл cookie для любого действующего пользователя, поэтому я думаю, что мне нужно каким-то образом узнать cookie_secret

1 Ответ

0 голосов
/ 27 февраля 2011

Зак описал ответ уже в своем последнем вопросе: легко найти столкновение.

Допустим, вы сохранили hash("pwd") в базе данных (что вы действительно делаете что-то другое, не имеет значения.если вы введете "pwd" на сайте, вы можете ввести. Но как это проверяется? Опять же, хеш "pwd" является токеном и сравнивается со значением в базе данных. Но что, если есть вторая строка, скажем"hello" и hash("hello") == hash("pwd")? Тогда вы также можете использовать "hello" в качестве пароля. Поэтому, чтобы пройти шифрование, вам не нужно находить «pwd», вам просто нужна любая строка с таким же хеш-значением.Вы можете просто найти такую ​​строку грубой силы (и я думаю, что вы можете сделать некоторые оптимизации, основываясь на знании источника hash)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...