Apa perbedaan antara Otentikasi Digest dan Dasar?

Jawaban:

195

Digest Authentication mengomunikasikan kredensial dalam bentuk terenkripsi dengan menerapkan fungsi hash ke: nama pengguna, kata sandi, server memberikan nilai pertama, metode HTTP dan URI yang diminta.

Sedangkan Otentikasi Dasar menggunakan non-terenkripsi pengkodean base64 yang tidak .

Oleh karena itu, Otentikasi Dasar umumnya hanya digunakan di mana keamanan lapisan transport disediakan seperti https.

Lihat RFC-2617 untuk semua detail berdarah.

Andy
sumber
1
bagaimana otentikasi dasar tidak dienkripsi? Saya menggunakan situs web ini untuk memecahkan kode data nama pengguna & kata sandi base64decode.org
Dot Freelancer
65
Pengkodean dan enkripsi bukan hal yang sama. Fakta bahwa Anda dapat memecahkan kode kredensial menggunakan situs itu menunjukkan bahwa mereka tidak dienkripsi.
Andy
@Andy Apakah ada perbedaan antara Otentikasi Digest dan Otentikasi Kriptografis? Atau apakah mereka mengacu pada hal yang sama? Terima kasih.
user224567893
1
@Andy apa yang Anda maksud dengan "decode the credentials"? Kredensial yang disembunyikan tidak dapat diterjemahkan ...
Alexander Suraphel
8
Benar, dan auth dasar tidak menggunakan kredensial hash, mereka di-encode base64.
Andy
111

Otentikasi Akses HTTP Dasar

  • LANGKAH 1 : klien membuat permintaan untuk informasi, mengirim nama pengguna dan kata sandi ke server dalam teks biasa
  • LANGKAH 2 : server merespons dengan informasi yang diinginkan atau kesalahan

Otentikasi Dasar menggunakan pengkodean base64 (bukan enkripsi) untuk menghasilkan string kriptografis kami yang berisi informasi nama pengguna dan kata sandi. HTTP Basic tidak perlu diimplementasikan melalui SSL, tetapi jika Anda tidak melakukannya, itu tidak aman sama sekali. Jadi saya bahkan tidak akan menghibur ide untuk menggunakannya tanpa.

Pro:

  • Ini mudah diterapkan, sehingga pengembang klien Anda akan memiliki lebih sedikit pekerjaan yang harus dilakukan dan mengambil lebih sedikit waktu untuk dikirim, sehingga pengembang mungkin lebih cenderung ingin menggunakan API Anda
  • Tidak seperti Digest, Anda dapat menyimpan kata sandi di server dengan metode enkripsi apa pun yang Anda suka, seperti bcrypt, membuat kata sandi lebih aman
  • Hanya satu panggilan ke server diperlukan untuk mendapatkan informasi, membuat klien sedikit lebih cepat daripada metode otentikasi yang lebih kompleks

Cons:

  • SSL lebih lambat dijalankan daripada HTTP dasar sehingga ini menyebabkan klien menjadi sedikit lebih lambat
  • Jika Anda tidak memiliki kendali atas klien, dan tidak dapat memaksa server untuk menggunakan SSL, pengembang mungkin tidak menggunakan SSL, yang menyebabkan risiko keamanan

Dalam Ringkasan - jika Anda memiliki kendali atas klien, atau dapat memastikan mereka menggunakan SSL, HTTP Basic adalah pilihan yang baik. Lambatnya SSL dapat dibatalkan dengan kecepatan hanya membuat satu permintaan

Sintaksis Otentikasi dasar

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>

Otentikasi Akses HTTP Digest Otentikasi Akses
Digest menggunakan metodologi hashing (yaitu digest cut menjadi potongan-potongan kecil) untuk menghasilkan hasil kriptografi. Otentikasi akses HTTP Digest adalah bentuk otentikasi yang lebih kompleks yang berfungsi sebagai berikut:

  • LANGKAH 1 : klien mengirim permintaan ke server
  • LANGKAH 2 : server merespons dengan kode khusus (disebut ayaitu n Banyaknya digunakan hanya sekali ), string lain yang mewakili wilayah (hash) dan meminta klien untuk mengotentikasi
  • LANGKAH 3 : klien merespons dengan ini dan versi terenkripsi dari nama pengguna, kata sandi dan ranah (hash)
  • LANGKAH 4 : server merespons dengan informasi yang diminta jika hash klien cocok dengan hash mereka sendiri dari nama pengguna, kata sandi dan ranah, atau kesalahan jika tidak

Pro:

  • Tidak ada nama pengguna atau kata sandi yang dikirim ke server dalam plaintext, membuat koneksi non-SSL lebih aman daripada permintaan HTTP Basic yang tidak dikirim melalui SSL. Ini berarti SSL tidak diperlukan, yang membuat setiap panggilan sedikit lebih cepat

Cons:

  • Untuk setiap panggilan yang diperlukan, klien harus membuat 2, membuat prosesnya sedikit lebih lambat dari HTTP Basic
  • HTTP Digest rentan terhadap serangan keamanan man-in-the-middle yang pada dasarnya berarti bisa diretas
  • HTTP Digest mencegah penggunaan enkripsi kata sandi yang kuat, artinya kata sandi yang disimpan di server dapat diretas

Singkatnya , HTTP Digest secara inheren rentan terhadap setidaknya dua serangan, sedangkan server yang menggunakan enkripsi yang kuat untuk kata sandi dengan HTTP Basic over SSL cenderung berbagi kerentanan ini.

Namun, jika Anda tidak memiliki kendali atas klien Anda, mereka dapat mencoba melakukan otentikasi Dasar tanpa SSL, yang jauh lebih tidak aman daripada Digest.

Sintaks Akses Otentikasi Akses RFC 2069

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)

RFC 2617 Sintaks Akses Otentikasi Akses

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added 

sumber dan contoh

Dalam Postman terlihat sebagai berikut:

masukkan deskripsi gambar di sini

catatan:

  • The Dasar dan Digest skema berdedikasi untuk otentikasi menggunakan username dan rahasia.
  • The Skema Pembawa didedikasikan untuk otentikasi menggunakan token.
Premraj
sumber
1
Di server web Anda, bisakah Anda tidak hanya mengarahkan ulang ke https untuk semua permintaan http bahkan jika Anda tidak memiliki kendali atas klien?
10cool
Semakin saya memikirkannya, semakin saya mengerti maksud Anda. Dengan asumsi mereka mengirimkan kredensial di sana melalui http dan sampai ke situs Anda, Anda bisa mengarahkan, tetapi jika mereka mengenai situs jahat Anda tidak dapat membantu.
10cool
3
Mengapa, dengan Digest, Anda tidak dapat mengenkripsi kata sandi Anda sebelum menyimpan dalam database, dan ketika menariknya, mendekripsi?
papiro
Meskipun jawaban yang dipilih lebih dekat dengan pertanyaan, saya suka jawaban ini karena memberikan pro dan kontra bagi kita yang belum tahu.
coder0h1t
1
@ 10cool setelah Anda membuka situs web dengan http, sudah terlambat ... sayangnya. pengguna: pass sudah dikirim dengan jelas di kawat, bahkan jika Anda diarahkan ke http setelah itu.
Julien
41

Mari kita lihat perbedaan antara kedua otentikasi HTTP menggunakan Wireshark(Alat untuk menganalisis paket yang dikirim atau diterima).

1. Otentikasi Dasar Http

Dasar

Segera setelah klien mengetik nama pengguna yang benar : kata sandi , seperti yang diminta oleh server-Web, Server-Web akan memeriksa dalam Database jika kredensial benar dan memberikan akses ke sumber daya.

Berikut adalah cara pengiriman dan penerimaan paket:

masukkan deskripsi gambar di sini Dalam paket pertama, Klien mengisi kredensial menggunakan metode POST di sumber daya - lab/webapp/basicauth. Sebagai gantinya, server membalas kembali dengan kode respons http 200 ok , yaitu nama pengguna: kata sandi sudah benar.

Detail paket HTTP

Sekarang, di Authorizationheader itu menunjukkan bahwa itu adalah Otorisasi Dasar diikuti oleh beberapa string acak. String ini adalah versi yang dikodekan (Base64) dari kredensial admin:aadd(termasuk usus besar).

2. Otentikasi Http Digest (rfc 2069)

Sejauh ini kita telah melihat bahwa Otentikasi Dasar mengirimkan username: password di plaintext melalui jaringan .Tapi Digest Tupoksi mengirimkan Hash dari Password menggunakan algoritma Hash.

Berikut adalah paket yang menunjukkan permintaan yang dibuat oleh klien dan respons dari server.

intisari

Segera setelah klien mengetik kredensial yang diminta oleh server, kata sandi dikonversi menjadi responsemenggunakan algoritma dan kemudian dikirim ke server, jika database server memiliki respons yang sama seperti yang diberikan oleh klien server memberikan akses ke sumber daya , jika tidak kesalahan 401 .

Paket auth digest detail Dalam contoh di atas Authorization, yang responsestring dihitung dengan menggunakan nilai-nilai Username, Realm, Password, http-method, URIdan Nonceseperti yang ditunjukkan pada gambar:

Algoritma respons (termasuk titik dua)

Oleh karena itu, kita dapat melihat bahwa Otentikasi Digest lebih Aman karena melibatkan Hashing (enkripsi MD5), Jadi alat packet sniffer tidak dapat mengendus Kata Sandi meskipun dalam Auth Dasar, kata sandi yang tepat ditampilkan di Wireshark.

BoRRis
sumber
6
Ini harus menjadi jawaban yang diterima karena lebih informatif dan pujian untuk tangga lagu.
mak
Tetapi di wireshark Anda hanya mengendus paket menggunakan protokol http? Bagaimana jika Anda menggunakan protokol https?
JohnRDOrazio
Tidak diputuskan oleh wireshark apakah akan mengendus Http atau Https. Ini adalah web-server yang dikonfigurasi dengan protokol.
BoRRis
1
Omong kosong. Auth dasar hanya dimaksudkan untuk digunakan di atas HTTPS. Jadi perbandingan yang sebenarnya adalah Basic Auth over HTTPS versus Digest Auth over HTTP. Melihat situs web mengenkripsi semua lalu lintas mereka saat ini, Anda mungkin juga menggunakan Auth Dasar melalui HTTPS.
Gili
-3

Otentikasi Dasar menggunakan basis 64 Pengkodean untuk menghasilkan string kriptografis yang berisi informasi nama pengguna dan kata sandi.

Otentikasi Akses Digest menggunakan metodologi hashing untuk menghasilkan hasil kriptografi

chetan chaphekar
sumber
1
encoding base 64 bukan kriptografis.
Thomas Sobieck