基本認證和摘要認證

<code>基本認證:

在基本認證中如果客戶端想要訪問服務器中的某一個資源,

服務器首先要判斷該客戶是否有訪問權限,
最簡單的方式就是採用基本認證方式,
即客戶端將自己的用戶名和密碼通過明文或者base64方式加密後傳遞給服務器,
服務器根據客戶端傳遞來的數據判斷該客戶端是否有權限訪問資源。

這樣做的不足之處在於:
1.密碼和用戶名是通過明文傳遞的容易被攔截;
2.即便用戶名和密碼使用加密算法加密後無法被破解,
攔截者也可以直接攔截加密後的數據,
然後用加密後的數據發送給服務器騙取服務器的信任。
這種方式又被稱為重放攻擊(replay attack)。

摘要認證:

摘要認證的出現就是為了解決基本認證中所存在的兩條不安全之處,
摘要認證遵循的箴言是“絕不通過網絡發送密碼”,
客戶端不會發送密碼,
而是會發送一個密碼通過某種加密算法生成的摘要信息,
由於算法的原因,
一般該摘要信息是不可逆的,

即通過該摘要信息不能得到原始密碼。
由於客戶端和服務器都知道密碼,
因此服務器可以使用同樣的加密算法來驗證客戶端所提供的摘要信息是否與密碼相匹配。

具體的實現方式為:
解決基本認證中第一條不足之處:
客戶端發送的摘要認證信息是密碼參與的使用MD5或其他加密算法生成的摘要信息。
該信息不可逆,服務器使用同樣的加密算法將密碼參與加密後生成的摘要信息與客戶端發送的摘要信息進行比對,
如果一致則認證通過,否則認證不通過。(不發送密碼的原因是在摘要認證中客戶端和服務器端都知道密碼)

解決基本認證中第二條不足之處:
客戶端發送的摘要認證信息中還包含服務器端發送回來的隨機數據(nonce字段的值,每次都不一樣),
這樣即便該摘要信息被攔截了,也不能使用第二次,因為隨機數據每次都會不相同,可以有效防止重放攻擊/<code>


分享到:


相關文章: