Я использую scrypt
для генерации сильных хэшей пароля пользователя. Я хочу войти в систему, но не хочу посылать пароль в виде открытого текста по кабелю, как проверить правильность пароля (без обратной линии), так как он солен?Аутентификация с помощью соленого пароля
У меня сценарий клиент/сервер. Клиент - это приложение на настольном компьютере (а не на веб-сайте, а не на http-сервере).
Как я могу это достичь? Я пришел только так далеко: я генерирую соль + хеш на клиенте, формирую mcf из него и отправляю его на свой сервер. Сохраните файл mcf в базе данных. Я не отправлял пароль, просто хэш, который практически бесполезен (поскольку скриншот должен быть достаточно сильным, и для его изменения потребуется несколько миллионов лет). Как я могу теперь зарегистрировать пользователя в моем сервисе, не отправляя пароль открытого текста на сервер, чтобы сравнить его? Я не могу перефразировать его, так как это приведет к другому хешу из-за другой соли? Мне нужно отправить соль клиенту, ввести пароль, отправить хэш на сервер, сравнить его и отправить обратно токен аутентификации.
Как я могу это достичь? Действительно ли аутентификационный токен защищен? Наверное, его можно просто использовать для олицетворения любого?
'then THAT is password'. DOH. Вы правы. Как обычные приложения обрабатывают атаки mitm? Я, очевидно, делаю любое общение через SSL/TLS. Я также подумал о том, чтобы использовать HMAC для проверки всех запросов с некоторым хешем, но я должен был бы отправить его по крайней мере один раз, что делает его бесполезным все вместе. – Leandros
«Я, очевидно, осуществляю связь через SSL/TLS». Тогда вы делаете это правильно, брат. Под капотом TLS использует HMAC, чтобы гарантировать, что изменение сообщения приведет к ошибке. Ваша настройка звучит безопасно, так как пароль на самом деле не является открытым текстом. С помощью TLS злоумышленник не должен иметь возможность атаковать MitM на вас - для этого вам понадобится завинчивание с вашими доверенными центрами сертификации на локальном компьютере. – Gray
Я обсуждал проблему с моим другом, SSL в основном использует шифрование с открытым/закрытым ключом, не так ли? (что-то похожее на это [https://www.comodo.com/resources/small-business/digital-certificates2.php)). Что же такое упомянутое асимметричное шифрование? – Leandros