ОК, это может звучать странно. Пожалуйста, прочитайте внимательно, прежде чем прыгать на меня, хорошо? ; -)
Представьте себе такую ситуацию:
- У нас есть сервер и клиент.
- Они подключаются с использованием SSL.
- Клиент создает учетную запись на сервере с паролем.
- Но на самом деле он передает серверу по проводам хеш (+ соль) пароля (НЕ пароля)
- Сервер сохраняет полученный хэш пароля в БД (СНОВА хешируется с солью)
- Во время входа в систему для аутентификации пользователь повторно отправляет хэш пароля (НЕ пароль!).
Хорошо, да, я понимаю, это звучит странно. Да, весь разговор происходит в SSL, так что вы МОЖЕТЕ просто отправить пароль открытым текстом. И да, я понимаю, что можно безопасно хранить открытый текст в хешированном виде.
Вот точка зрения, к которой я стремлюсь: для нашего бизнеса полезно искренне сказать: «Мы никогда не узнаем ваш пароль».
Заметьте, я НЕ говорю "мы не храним ваш пароль в открытом тексте", но мы действительно никогда этого не узнаем; Вы никогда не даете это нам.
(причина, по которой это нужно, не имеет значения, достаточно сказать, что пароль пользователя используется для других целей, например, для шифрования файлов).
Да, я понимаю, что вы могли бы сказать, что при обычном способе сделать это "хорошо, пароль будет только в виде открытого текста в памяти в течение 5 мс, пока вы выполняете хеширование", но это больше об отрицании. то есть, мы можем сказать, что 100% мы даже не получаем ваш пароль.
Хорошо, вот вопрос:
Я изо всех сил пытаюсь увидеть обратную сторону. Например:
- Нет повторных атак (поскольку разговор зашифрован с использованием SSL, злоумышленник не может увидеть хеш)
- Не могу посмотреть в БД, потому что хеш сам по себе, хм ..., хешируется
ОК, теперь вы можете прыгнуть на меня:)
Мысли, комментарии приветствуются.
Спасибо
John
Обновление : Просто хотел уточнить: я не предполагаю, что это как-то улучшает безопасность процесса аутентификации . Но вместо этого он позволяет «настоящему» паролю пользователя оставаться в секрете даже с сервера. Таким образом, если настоящий пароль используется, например, для шифрования файлов, сервер не имеет к нему доступа.
Я полностью удовлетворен моими причинами этого желания, вопрос в том, является ли это помехой для безопасности процесса аутентификации.