宜兴网站建设哪家好,内蒙古建设工程造价信息网官网,知名网络推广,宁夏网络公司排名1. 什么是摘要认证摘要认证与基础认证的工作原理很相似#xff0c;用户先发出一个没有认证证书的请求#xff0c;Web服务器回复一个带有WWW-Authenticate头的响应#xff0c;指明访问所请求的资源需要证书。但是和基础认证发送以Base 64编码的用户名和密码不同#xff0c;在… 1. 什么是摘要认证摘要认证与基础认证的工作原理很相似用户先发出一个没有认证证书的请求Web服务器回复一个带有WWW-Authenticate头的响应指明访问所请求的资源需要证书。但是和基础认证发送以Base 64编码的用户名和密码不同在摘要认证中服务器让客户端选一个随机数称作”nonce“然后浏览器使用一个单向的加密函数生成一个消息摘要message digest该摘要是关于用户名、密码、给定的nonce值、HTTP方法以及所请求的URL。2. 摘要认证算法摘要认证规范最早定义在RFC 2069中RFC 2069定义了由服务器生成随机数来维护安全性的摘要认证架构认证结果是采用下列方法得出的HA1MD5(username:realm:password)
HA2MD5(method:digestURI)
responseMD5(HA1:nonce:HA2)后来RFC 2617引入一些可选的增强安全的方法代替了RFC 2069这些增强的方法包括质量保护QOP客户端自增加计数器和客户端生成的随机数。这些可选参数提高了摘要认证的安全性如可防止明文***。如果算法指令是“MD5”或者未指定HA1算法如下HA1MD5(username:realm:password)如果算法指令是“MD5-sess”,HA1算法HA1MD5(MD5(username:realm:password):nonce:cnonce)如果质量保护指令是“auth”或未指定HA2算法是HA2MD5(method:digestURI)如果质量保护指定是“auth-int”HA2算法是HA2MD5(method:digestURI:MD5(entityBody))如果质量保护指定是“auth”或者“auth-int”,响应结果算法是responseMD5(HA1:nonce:nonceCount:cnonce:qop:HA2)如果质量保护指令未指定响应结果算法是responseMD5(HA1:nonce:HA2)3. MD5安全问题对摘要认证的影响虽然MD5是可逆的被认为是不安全的但是在HTTP摘要认证过程中使用MD5算法中引入了一些随机数使得数据的可逆性的难度大大提高所以使用MD5是安全的。但如果用户的密码过于简单通过字典或排序查找算法破解难度就大大降低了因此不建议使用过于简单的密码。RFC2617 的安全增强的主要方式:发起请求的时候,服务器会生成一个密码随机数(nonce)(而这个随机数只有每次401相应后才会更新),为了防止***者可以简单的使用同样的认证信息发起老的请求,于是,在后续的请求中就有一个随机数计数器(cnonce),而且每次请求必须必前一次使用的打.这样,服务器每次生成新的随机数都会记录下来,计数器增加.在RESPONSE 码中我们可以看出计数器的值会导致不同的值,这样就可以拒绝掉任何错误的请求.4. 摘要认证流程客户端请求一个需要认证的页面但是不提供用户名和密码。服务器返回401 Unauthorized 响应代码并提供认证域(realm)以及一个随机生成的、只使用一次的数值称为密码随机数 nonce。浏览器会向用户提示认证域(realm)通常是所访问的计算机或系统的描述并且提示用户名和密码。一旦提供了用户名和密码客户端会重新发送同样的请求但是添加了一个认证头包括了响应代码。服务器接受了认证并且返回了请求页面。如果用户名非法和/或密码不正确服务器将返回401响应代码然后客户端会再次提示用户输入用户名及密码。5.一段摘要加密报文示例有兴趣的用户可以根据摘要加密算法进行计算。Authorization: Digest usernameadmin, //用户名realmfavourite digest realm, //用户认证提示nonce1478047635099:8f32add4b6aaef23649ca330b25c64be, //随机数uri/hello, //请求地址response778110c2b5d0215e0d7640a6baa069a0, //加密后的值opaqueB2E49B2542089EE534695CA7742FB588, qopauth, //质量保护nc00000001, //客户端自增加随机数计数器cnonce8664dcaabed7e083 //客户端的随机数HA1MD5(admin:favourite digest realm:password);HA2MD5(GET:uri);response MD5(HA1:nonce:nc:cnonce:qop:HA2) 转载于:https://blog.51cto.com/favccxx/1878505