Sự khác biệt giữa Digest và Xác thực cơ bản là gì?
Sự khác biệt giữa Digest và Xác thực cơ bản là gì?
Câu trả lời:
Xác thực Digest truyền đạt thông tin đăng nhập dưới dạng được mã hóa bằng cách áp dụng hàm băm cho: tên người dùng, mật khẩu, máy chủ được cung cấp giá trị nonce, phương thức HTTP và URI được yêu cầu.
Trong khi đó Xác thực cơ bản sử dụng mã hóa base64 không được mã hóa.
Do đó, Xác thực cơ bản thường chỉ được sử dụng khi bảo mật lớp vận chuyển được cung cấp, chẳng hạn như https.
Xem RFC-2617 để biết tất cả các thông tin chi tiết.
Xác thực truy cập cơ bản HTTP
Xác thực cơ bản sử dụng mã hóa base64 (không phải mã hóa) để tạo chuỗi mật mã của chúng tôi chứa thông tin về tên người dùng và mật khẩu. HTTP Basic không cần triển khai qua SSL, nhưng nếu bạn không, nó hoàn toàn không an toàn. Vì vậy, tôi thậm chí sẽ không giải trí ý tưởng sử dụng nó mà không có.
Ưu điểm:
Nhược điểm:
Tóm lại - nếu bạn có quyền kiểm soát khách hàng hoặc có thể đảm bảo họ sử dụng SSL, HTTP Basic là một lựa chọn tốt. Sự chậm chạp của SSL có thể bị hủy bỏ bởi tốc độ chỉ thực hiện một yêu cầu
Cú pháp xác thực cơ bản
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>
Xác thực
truy cập tiêu hóa HTTP Xác thực truy cập tiêu hóa sử dụng phương pháp băm (nghĩa là tiêu hóa có nghĩa là cắt thành từng mảnh nhỏ) để tạo kết quả mã hóa. Xác thực truy cập HTTP Digest là một hình thức xác thực phức tạp hơn hoạt động như sau:
Ưu điểm:
Nhược điểm:
Tóm lại , HTTP Digest vốn dễ bị tổn thương trước ít nhất hai cuộc tấn công, trong khi đó một máy chủ sử dụng mã hóa mạnh cho mật khẩu với HTTP Basic qua SSL thì ít có khả năng chia sẻ các lỗ hổng này.
Nếu bạn không có quyền kiểm soát khách hàng của mình, tuy nhiên họ có thể cố gắng thực hiện xác thực Cơ bản mà không cần SSL, điều này kém an toàn hơn nhiều so với Digest.
Cú pháp xác thực truy cập RFC 2069
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Cú pháp xác thực truy cập RFC 2617
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
Trong Postman trông như sau:
Ghi chú:
Chúng ta hãy xem sự khác biệt giữa hai xác thực HTTP bằng cách sử dụng Wireshark
(Công cụ để phân tích các gói được gửi hoặc nhận).
1. Xác thực cơ bản http
Ngay khi máy khách gõ đúng tên người dùng: mật khẩu , theo yêu cầu của máy chủ Web, Máy chủ Web sẽ kiểm tra trong Cơ sở dữ liệu nếu thông tin đăng nhập là chính xác và cấp quyền truy cập vào tài nguyên.
Đây là cách các gói được gửi và nhận:
Trong gói đầu tiên, Máy khách điền thông tin đăng nhập bằng phương thức POST tại tài nguyên - lab/webapp/basicauth
. Trả lại máy chủ trả lời lại với mã phản hồi http 200 ok , tức là tên người dùng: mật khẩu đã đúng.
Bây giờ, trong Authorization
tiêu đề cho thấy đó là Ủy quyền cơ bản theo sau là một chuỗi ngẫu nhiên. Chuỗi này là phiên bản được mã hóa (Base64) của thông tin đăng nhập admin:aadd
(bao gồm cả dấu hai chấm).
2. Xác thực tiêu hóa (rfc 2069)
Cho đến nay chúng ta đã thấy rằng Xác thực cơ bản gửi tên người dùng: mật khẩu trong văn bản gốc qua mạng. Nhưng Autest Auth gửi HASH của Mật khẩu bằng thuật toán Hash.
Dưới đây là các gói hiển thị các yêu cầu được thực hiện bởi máy khách và phản hồi từ máy chủ.
Ngay khi máy khách nhập thông tin đăng nhập do máy chủ yêu cầu, Mật khẩu sẽ được chuyển đổi sang response
sử dụng thuật toán và sau đó được gửi đến máy chủ, Nếu Cơ sở dữ liệu máy chủ có phản hồi giống như được cung cấp bởi máy khách, máy chủ sẽ cấp quyền truy cập vào tài nguyên , nếu không thì lỗi 401 .
Ở phía trên Authorization
, các response
chuỗi được tính toán dựa trên các giá trị của Username
, Realm
, Password
, http-method
, URI
và Nonce
như thể hiện trong hình ảnh:
Do đó, chúng ta có thể thấy rằng Xác thực Digest an toàn hơn vì nó liên quan đến Băm (mã hóa MD5), vì vậy các công cụ sniffer gói không thể đánh hơi được Mật khẩu mặc dù trong Basic Auth, Mật khẩu chính xác được hiển thị trên Wireshark.
Xác thực cơ bản sử dụng Mã hóa cơ sở 64 để tạo chuỗi mật mã chứa thông tin tên người dùng và mật khẩu.
Xác thực truy cập Digest sử dụng các phương pháp băm để tạo kết quả mã hóa