Яка різниця між дайджестом та базовою автентифікацією?


197

Яка різниця між дайджестом та базовою автентифікацією?



Чи потрібна автоматизація дайджесту, щоб сервер знав пароль або пересилав дайджест на бекенд для перевірки?
Массімо

Відповіді:


197

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

У той час як базова аутентифікація використовує незашифровані кодування base64.

Тому базову автентифікацію зазвичай слід застосовувати лише там, де забезпечується захист транспортного рівня, наприклад https.

Дивіться RFC-2617 про всі деталі горі.


1
як основна аутентифікація не шифрується? Я використовував цей веб-сайт, щоб розшифрувати базу
Dot Freelancer

65
Кодування та шифрування - це не одне і те ж. Те, що ви можете розшифрувати облікові дані за допомогою цього веб-сайту, свідчить про те, що вони не зашифровані.
Енді

@Andy Чи є різниця між Digest Authentication і Cryptographic Authentication? Або вони мають на увазі те саме? Дякую.
користувач224567893

1
@Andy, що ви маєте на увазі під «декодуванням облікових даних»? Зашиті дані не можна розшифрувати ...
Олександр Сурафель

8
Правильно, і основний auth не використовує хешовані облікові дані, вони є кодованими base64.
Енді

114

Аутентифікація базового доступу 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 Digest Access Authentication
Digest Access Authentication використовує методи хешування (тобто засоби дайджесту, розрізані на невеликі шматочки) для створення криптографічного результату. Аутентифікація доступу до HTTP Digest - це більш складна форма аутентифікації, яка працює наступним чином:

  • КРОК 1 : клієнт надсилає запит серверу
  • КРОК 2 : сервер відповідає за допомогою спеціального коду (званий aтобто n umber використовується лише один раз ), інша рядок, що представляє область (хеш), і просить клієнта підтвердити автентифікацію
  • КРОК 3 : клієнт відповідає на це питання і зашифрованою версією імені користувача, пароля та області (хеш)
  • КРОК 4 : сервер відповідає на запитувану інформацію, якщо клієнтський хеш відповідає власному хешу імені користувача, пароля та області, або помилка, якщо ні

Плюси:

  • Жодні імена користувачів або паролі не надсилаються на сервер у простому тексті, що робить з'єднання, яке не є SSL, більш захищеним, ніж HTTP Basic запит, який не надсилається через SSL. Це означає, що SSL не потрібен, що робить кожен дзвінок трохи швидшим

Мінуси:

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

Підсумовуючи це , HTTP Digest є вразливим для щонайменше двох атак, тоді як сервер, що використовує сильне шифрування паролів із HTTP Basic через SSL, рідше поділяє ці вразливості.

Якщо ви не маєте контролю над своїми клієнтами, проте вони можуть спробувати виконати базову автентифікацію без SSL, що набагато менш безпечно, ніж Digest.

Синтаксис автентифікації дайджесту доступу 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 

джерело та приклад

У листоноші виглядає так:

введіть тут опис зображення

Примітка:

  • Ці схеми Основний і Digest призначені для аутентифікації , використовуючи ім'я користувача та секрет.
  • Схема Bearer присвячена аутентифікації за допомогою маркера.

1
Чи не могли ви на своєму веб-сервері просто перенаправити на https для всіх запитів http, навіть якщо ви не маєте контролю над клієнтами?
10cool

Більше я думаю про це більше, проте я бачу вашу думку. Якщо припустити, що вони надсилають там облікові дані через http та потрапляють на ваш сайт, ви можете перенаправити, але якщо вони потраплять на шкідливий сайт, ви не можете допомогти.
10cool

3
Чому за допомогою дайджесту ви не можете зашифрувати свій пароль перед зберіганням у базі даних, а витягуючи його, розшифрувати?
папіро

Хоча обрана відповідь ближче до питання, мені подобається ця відповідь, оскільки вона дає плюси і мінуси для нас непосвячених.
coder0h1t

1
@ 10cool, як тільки ви перейдете на веб-сайт із http, це вже пізно ... на жаль. користувач: пропуск уже надіслано чітко по дроту, навіть якщо ви перенаправлені на httpS відразу після.
Жульєн

41

Давайте побачимо різницю між двома HTTP- аутентифікаціями за допомогою Wireshark(Інструмент для аналізу відправлених чи отриманих пакетів).

1. Основна автентифікація Http

Основні

Як тільки клієнт вводить правильне ім’я користувача: пароль , як цього вимагає Web-сервер, Web-сервер перевіряє в Базі даних, чи є облікові дані правильними, і дає доступ до ресурсу.

Ось як надсилаються та отримуються пакети:

введіть тут опис зображення У першому пакеті Клієнт заповнює облікові дані за допомогою методу POST на ресурсі -. lab/webapp/basicauthУ відповідь сервер відповідає назад з кодом відповіді http 200 Ок , тобто ім'я користувача: пароль були правильними.

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

Тепер у Authorizationзаголовку видно, що це Основна авторизація, за якою слідує деяка випадкова рядок. Цей рядок - це закодована (Base64) версія облікових даних admin:aadd(включаючи двокрапку).

2. Перевірка автентичності Http (rfc 2069)

Поки ми бачили, що Basic Authentication надсилає ім'я користувача: пароль в прямому тексті по мережі. Але Digest Auth надсилає HASH пароля за допомогою алгоритму Hash.

Ось пакети, що показують запити, зроблені клієнтом, та відповіді від сервера.

Дайджест

Як тільки клієнт набирає запити облікових даних, які вимагає сервер, пароль перетворюється на responseалгоритм, який використовується за допомогою алгоритму, а потім надсилається серверу. Якщо база даних сервера має таку ж відповідь, що і клієнт, сервер надає доступ до ресурсу , інакше помилка 401 .

Детальний дайджест аутентичного пакета У наведеному вище описі Authorization, то responseрядок обчислюється з використанням значень Username, Realm, Password, http-method, URIі , Nonceяк показано на зображенні:

Алгоритм реагування (кольори включені)

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


6
Це має бути прийнятою відповіддю, оскільки воно є більш інформативним та кудо для графіків.
мак

Але в wireshark ви лише нюхаєте пакети, використовуючи протокол http? Що робити, якщо ви використовували протокол https?
JohnRDOrazio

Wireshark не вирішує, чи нюхати Http чи Https. Саме веб-сервер налаштований за допомогою протоколів.
BoRRis

1
Дурниці. Базовий Auth призначений для використання лише через HTTPS. Тож справжнє порівняння - базовий Auth через HTTPS проти Digest Auth через HTTP. Бачачи, як веб-сайти шифрують увесь їхній трафік сьогодні, ви також можете використовувати Basic Auth через HTTPS.
Гілі

-3

Основна аутентифікація використовується база 64 Кодування для генерації криптографічного рядка, який містить інформацію про ім'я користувача та пароль.

Аутентифікація доступу дайджесту використовує методи хешування для створення криптографічного результату


1
кодування бази 64 не є криптографічним.
Thomas Sobieck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.