@WayMax

Как правильно реализовать передачу данных для аутентификации?

Есть:
1. список пользователей в виде: логина и хеша пароля (для каждой записи используется собственная соль)
2. клиентское и серверное ПО

Нужно:
аутентифицироваться

Я себе это представляю таким образом:
1. Клиент посылает серверу логин
2. Сервер посылает клиенту соль
3. Клиент посылает серверу хеш пароля
4. Сервер посылает клиенту результат сравнения хешей

Насколько этот вариант правильный? Гугл дает много советов, но я не увидел (не понял) подходящий мне. Список пользователей уже забит и я не могу менять алгоритм хеширования пароля. Сам бы я использовал в качестве соли логин. Или так было бы еще хуже?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
Вы описываете протокол CHAP (у него много разновидностей, но суть примерно одна и та же):

1) сервер генерирует случайное число и направляет его пользователю (принципиально обеспечить его неповторяемость, поэтому обычно в него вносят компоненту от системного времени сервера); если пароль на сервере захеширован необратимо, то высылает в этом же пакете соль;

2) клиент хеширует это случайное число со своим паролем, либо с хешем от пароля на присланной соли, и пересылает на сервер;

3) сервер независимо выполняет те же операции и сверяет результаты.

P.S. Если Вы не будете использовать уникальную компоненту - описанная Вами выше схема будет небезопасной !
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы