В чем разница между дайджестом и базовой аутентификацией?
В чем разница между дайджестом и базовой аутентификацией?
Ответы:
Дайджест-аутентификация передает учетные данные в зашифрованном виде, применяя хеш-функцию к: имени пользователя, паролю, предоставленному одноразовому значению серверу, методу HTTP и запрошенному URI.
В то время как базовая аутентификация использует незашифрованную кодировку base64.
Следовательно, базовую аутентификацию обычно следует использовать только в тех случаях, когда обеспечивается безопасность транспортного уровня, например https.
См. RFC-2617 для всех кровавых деталей.
Базовая аутентификация доступа HTTP
Базовая аутентификация использует кодирование base64 (не шифрование) для генерации нашей криптографической строки, которая содержит информацию об имени пользователя и пароле. HTTP Basic не должен быть реализован через SSL, но если вы этого не сделаете, он вообще не является безопасным. Так что я даже не собираюсь развлекать идею использовать его без.
Плюсы:
Минусы:
Подводя итоги - если у вас есть контроль над клиентами или вы можете гарантировать, что они используют SSL, HTTP Basic является хорошим выбором. Медлительность SSL может быть устранена скоростью только одного запроса
Синтаксис базовой аутентификации
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
Аутентификация доступа к
дайджесту HTTP Для аутентификации доступа к дайджесту используются методы хеширования (т. Е. Дайджест-средства, разрезанные на мелкие кусочки) для получения криптографического результата. Аутентификация доступа к дайджесту HTTP - более сложная форма аутентификации, которая работает следующим образом:
Плюсы:
Минусы:
Таким образом , дайджест HTTP по своей природе уязвим как минимум для двух атак, в то время как сервер, использующий надежное шифрование паролей с HTTP Basic по SSL, с меньшей вероятностью разделяет эти уязвимости.
Если у вас нет контроля над вашими клиентами, они могут попытаться выполнить обычную аутентификацию без SSL, который намного менее безопасен, чем дайджест.
Синтаксис аутентификации доступа к дайджесту RFC 2069
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Синтаксис аутентификации доступа к дайджесту RFC 2617
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
В Почтальон выглядит следующим образом:
Примечание:
Давайте посмотрим на разницу между двумя HTTP- аутентификациями, использующими Wireshark
(Инструмент для анализа отправленных или полученных пакетов).
1. Http Basic Authentication
Как только клиент вводит правильное имя пользователя: пароль по запросу веб-сервера, веб-сервер проверяет в базе данных правильность учетных данных и предоставляет доступ к ресурсу.
Вот как пакеты отправляются и принимаются:
В первом пакете Клиент заполняет учетные данные, используя метод POST на ресурсе -. lab/webapp/basicauth
В ответ сервер отвечает обратно с http-кодом ответа 200 ok , т. Е. Имя пользователя: пароль были правильными.
Теперь в Authorization
заголовке показано, что это базовая авторизация, за которой следует некоторая случайная строка. Эта строка является закодированной (Base64) версией учетных данных admin:aadd
(включая двоеточие).
2 Http Digest Authentication (rfc 2069)
До сих пор мы видели, что базовая аутентификация отправляет имя пользователя: пароль в виде открытого текста по сети. Но дайджест-аутентификация отправляет HASH -пароль, используя алгоритм Hash.
Вот пакеты, показывающие запросы, сделанные клиентом и ответ от сервера.
Как только клиент вводит учетные данные, запрошенные сервером, пароль преобразуется в response
алгоритм использования и затем отправляется на сервер. Если база данных сервера имеет тот же ответ, что и клиент, сервер предоставляет доступ к ресурсу. в противном случае ошибка 401 .
В приведенном выше описании Authorization
, то response
строка вычисляется с использованием значений Username
, Realm
, Password
, http-method
, URI
и , Nonce
как показано на изображении:
Следовательно, мы можем видеть, что дайджест-аутентификация является более безопасной, поскольку она включает хеширование (шифрование MD5), поэтому инструменты анализатора пакетов не могут прослушивать пароль, хотя при базовой аутентификации точный пароль был показан на Wireshark.
Базовая аутентификация использует base 64 Encoding для генерации криптографической строки, которая содержит информацию об имени пользователя и пароле.
Digest Access Authentication использует методологию хеширования для генерации криптографического результата.