基本认证和摘要认证

<code>基本认证:

在基本认证中如果客户端想要访问服务器中的某一个资源,

服务器首先要判断该客户是否有访问权限,
最简单的方式就是采用基本认证方式,
即客户端将自己的用户名和密码通过明文或者base64方式加密后传递给服务器,
服务器根据客户端传递来的数据判断该客户端是否有权限访问资源。

这样做的不足之处在于:
1.密码和用户名是通过明文传递的容易被拦截;
2.即便用户名和密码使用加密算法加密后无法被破解,
拦截者也可以直接拦截加密后的数据,
然后用加密后的数据发送给服务器骗取服务器的信任。
这种方式又被称为重放攻击(replay attack)。

摘要认证:

摘要认证的出现就是为了解决基本认证中所存在的两条不安全之处,
摘要认证遵循的箴言是“绝不通过网络发送密码”,
客户端不会发送密码,
而是会发送一个密码通过某种加密算法生成的摘要信息,
由于算法的原因,
一般该摘要信息是不可逆的,

即通过该摘要信息不能得到原始密码。
由于客户端和服务器都知道密码,
因此服务器可以使用同样的加密算法来验证客户端所提供的摘要信息是否与密码相匹配。

具体的实现方式为:
解决基本认证中第一条不足之处:
客户端发送的摘要认证信息是密码参与的使用MD5或其他加密算法生成的摘要信息。
该信息不可逆,服务器使用同样的加密算法将密码参与加密后生成的摘要信息与客户端发送的摘要信息进行比对,
如果一致则认证通过,否则认证不通过。(不发送密码的原因是在摘要认证中客户端和服务器端都知道密码)

解决基本认证中第二条不足之处:
客户端发送的摘要认证信息中还包含服务器端发送回来的随机数据(nonce字段的值,每次都不一样),
这样即便该摘要信息被拦截了,也不能使用第二次,因为随机数据每次都会不相同,可以有效防止重放攻击/<code>


分享到:


相關文章: