В чем разница между Digest и базовой аутентификацией?

В чем разница между Digest и базовой аутентификацией?

Ответ 1

Дайджест-аутентификация передает учетные данные в зашифрованном виде, применяя хеш-функцию к: имени пользователя, паролю, предоставленному одноразовому значению серверу, методу HTTP и запрошенному URI.

В то время как базовая аутентификация использует незашифрованную кодировку base64.

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

Смотрите RFC-2617 для всех кровавых подробностей.

Ответ 2

Базовая аутентификация доступа HTTP

  • ШАГ 1: клиент делает запрос информации, отправляя имя пользователя и пароль на сервер в виде простого текста
  • ШАГ 2: сервер отвечает желаемой информацией или ошибкой

Базовая аутентификация использует base64 кодировку (не шифрование) для генерации нашей криптографической строки, которая содержит информацию об имени пользователя и пароле. HTTP Basic не нужно реализовывать через SSL, но если вы этого не сделаете, он вообще не безопасен. Так что я даже не собираюсь развлекать идею использовать его без.

Плюсы:

  • Его просто реализовать, поэтому у ваших клиентов-разработчиков будет меньше работы и меньше времени на доставку, поэтому разработчики с большей вероятностью захотят использовать ваш API
  • В отличие от Digest, вы можете хранить пароли на сервере любым способом шифрования, который вам нравится, например, bcrypt, делая пароли более безопасными
  • Для получения информации требуется всего один вызов на сервер, что делает клиента немного быстрее, чем могут быть более сложные методы аутентификации

Минусы:

  • SSL работает медленнее, чем базовый HTTP, поэтому клиенты становятся немного медленнее
  • Если у вас нет контроля над клиентами и вы не можете заставить сервер использовать SSL, разработчик может не использовать 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 - это более сложная форма аутентификации, которая работает следующим образом:

  • ШАГ 1: клиент отправляет запрос на сервер
  • ШАГ 2: сервер отвечает специальным кодом (называемым , т.е. n umber используется только один раз), другая строка представляет царство(хеш ) и просит клиента аутентифицировать
  • ШАГ 3: клиент отвечает этим одноразовым номером и зашифрованной версией имени пользователя, пароля и области (хеш)
  • ШАГ 4: сервер отвечает запрошенной информацией, если хеш клиента совпадает со своим собственным хешем имени пользователя, пароля и области, или ошибка, если нет

Плюсы:

  • Имена пользователей и пароли не отправляются на сервер в виде открытого текста, что делает соединение без SSL более безопасным, чем HTTP-запрос Basic, который не отправляется по SSL. Это означает, что SSL не требуется, что делает каждый вызов немного быстрее

Минусы:

  • Для каждого необходимого вызова клиент должен сделать 2, делая процесс немного медленнее, чем HTTP Basic
  • Дайджест HTTP уязвим к атаке "человек посередине", что означает, что его можно взломать
  • HTTP Digest предотвращает использование надежного шифрования паролей, что означает, что пароли, хранящиеся на сервере, могут быть взломаны

Таким образом, дайджест 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 

источник и пример

В Почтальон выглядит следующим образом:

enter image description here

Примечание:

  • Базовая схема и схема дайджеста предназначены для аутентификации с использованием имени пользователя и секрета.
  • Схема канала предназначена для аутентификации с использованием токена.

Ответ 3

Посмотрим разницу между двумя проверками HTTP, используя Wireshark (Инструмент для анализа отправленных или полученных пакетов).

1. Http Basic Authentication

Basic

Как только клиент набирает правильное имя пользователя: пароль, в соответствии с запросом веб-сервера, веб-сервер проверяет в Базе данных, если учетные данные верны и дает доступ к ресурс.

Вот как отправляются и принимаются пакеты:

введите описание изображения здесь В первом пакете Клиент заполняет учетные данные с помощью метода POST на ресурсе - lab/webapp/basicauth. В ответ сервер отвечает на ответ с кодом ответа HTTP 200 ok, то есть, имя пользователя: пароль были правильными.

Деталь пакета HTTP

Теперь в заголовке Authorization он показывает, что это Basic авторизация, за которой следует некоторая случайная строка. Эта строка является кодированной (Base64) версией учетных данных admin:aadd (включая двоеточие).

2. Аутентификация Http Digest (rfc 2069)

До сих пор мы видели, что Basic Authentication отправляет имя пользователя: пароль в текстовом виде по сети. Но Digest Auth отправляет HASH пароля с использованием алгоритма Hash.

Вот пакеты, показывающие запросы, сделанные клиентом, и ответ от сервера.

Дайджест

Как только клиент вводит учетные данные, запрашиваемые сервером, пароль преобразуется в response с помощью алгоритма и затем отправляется на сервер. Если база данных сервера имеет тот же ответ, что и клиент, сервер дает доступ к ресурсу, в противном случае - 401.

Подробный дайджест-пакет В приведенной выше Authorization строка response вычисляется с использованием значений Username, Realm, Password, http-method, URI и Nonce, как показано на рисунке:

Алгоритм ответа (двоеточие включены)

Следовательно, мы можем видеть, что аутентификация Digest более безопасна, поскольку включает в себя Hashing (шифрование MD5), поэтому инструменты пакетного анализатора не могут обнюхать пароль, хотя в Basic Auth на Wireshark был показан точный пароль.

Ответ 4

Базовая аутентификация использует базовую 64 кодировку для генерации криптографической строки, содержащей информацию об имени пользователя и пароле.

Digest Access Authentication использует методологию хеширования для генерации криптографического результата.