Использование HMAC для передачи пароля в порядке? - PullRequest
0 голосов
/ 04 сентября 2011

Я пишу небольшое веб-приложение и не хочу передавать пароли для входа в виде открытого текста.Поскольку у меня нет доступного SSL, я написал систему одноразового вызова, которая отправляет случайную строку с формой входа в систему, которая затем используется для хеширования пароля с помощью HMAC-SHA256 на стороне клиента.Я использую строку случайного вызова в качестве сообщения и пароль пользователя в качестве секретного ключа для HMAC.

Я знаю, что самодельные решения, как правило, плохая идея, поэтому я хотел спросить, делаю ли яошибка здесь.

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Я не верю, что это приемлемое решение.

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

Чего он не может сделать, так это некоторых других возможностей SSL, таких как защита от перехвата путем шифрования канала и проверки личности сервера для конечного пользователя.

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

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

Мне было бы интересно узнать, почему у вас нет SSL.Я много слышу об этом и нахожу, что обычная причина в том, что кто-то не хочет выкладывать 50 долларов за сертификат.Но сертификат того стоит, и в среде, где важна безопасность, не должно быть никаких технических причин, по которым SSL не будет доступен.

0 голосов
/ 04 сентября 2011

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

Однако, если вы храните случайную строку в каком-либо сеансе сервера, вы затем открываете спуфинг сеанса как возможный вектор атаки.

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

...