Хэш MD5 на стороне клиента с солью времени - PullRequest
4 голосов
/ 08 декабря 2008

Я хочу добавить хешированные имя пользователя и пароль (отправленные через http POST) в JS на стороне клиента с более высоким временным значением (разрешение <1 минута), чтобы избежать отправки хеша имени пользователя и пароля в качестве постоянного значения это может быть использовано для попытки входа в систему посредством изготовления POST неавторизованным пользователем (т. е. анализатором). </p>

Это приведет к короткому истечению срока полезности переданного хэша.

Если они осматривают JS и видят, что он использует эту соль времени, насколько легче будет сломать MD5, если они знают, что такое соль?

Стивен

Ответы [ 4 ]

3 голосов
/ 08 декабря 2008

Соль не должна быть секретной . В этом смысле ваше решение в порядке.

MD5 не работает в некоторых приложениях; это может быть хорошо, но почему бы не использовать хэш из семейства SHA-2 ? В связи с этим, почему бы не использовать SSL для обеспечения конфиденциального канала и повышения безопасности?

2 голосов
/ 08 декабря 2008

Соль на основе времени не сделает MD5 легче сломанным. Вы по-прежнему полагаетесь на 1) у пользователя есть хороший пароль, чтобы победить вычисления с использованием грубой силы, и 2) MD5 - хороший хеш. Это основной ответ на ваш вопрос. Тем не менее, это может быть не очень хорошая идея в любом случае. Некоторые комментарии -

Если вы не можете убедиться, что время клиента или сервера синхронизировано (или вы используете Javascript для фальсификации синхронизации), клиент должен будет отправить время, которое он использовал как солт. Сервер должен был бы решить, было ли используемое время достаточно близко к времени сервера.

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

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

1 голос
/ 08 декабря 2008

Их работа станет невыполнимой, поскольку вы не сможете вообще использовать радужный стол, если хеш-код солен правильно, и вы не можете разбить MD5 менее чем за минуту, когда хэш все равно будет признан недействительным. 1001 *

0 голосов
/ 03 марта 2012

Вы можете использовать обфускацию кода, чтобы найти соль сложнее

...