http头文件分析心得体会(推荐)_科学教材分析心得体会

2020-02-25 其他心得体会 下载本文

http头文件分析心得体会(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“科学教材分析心得体会”。

http头文件分析心得体会

一、http简介

HTTP即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(“)

= 39aff3a2bab6126f332b942af96d3366 Response = MD5(”939e7578ed9e3c518a452acee763bce9:

dcd98b7102dd2f0e8b11d0f600bfb0c093: 00000001:0a4f113b:auth: 39aff3a2bab6126f332b942af96d3366“)= 6629fae49393a05397450978507c4ef1 此时客户端可以提交一个新的请求,重复使用服务器密码随机数(nonce)(服务 器仅在每次“401”响应后发行新的nonce),但是提供新的客户端密码随机数(cnonce)。在后续的请求中,十六进制请求计数器(nc)必须比前 一次使用的时候要大,否则攻击者可以简单的使用同样的认证信息重放老的请求。由服务器来确保在每个发出的密码随机数nonce时,计数器是在增加的,并拒 绝掉任何错误的请求。显然,改变HTTP方法和/或计数器数值都会导致不同的 response值。

服务器应当记住最近所生成的服务器密码随机数nonce的值。也可以在发行每一个密码随机数nonce后,记住过一段时间让它们过期。如果客户端使用了一个过期的值,服务器应该响应“401”状态号,并且在认证头中添加stale=TRUE,表明客户端应当使用新提供的服务器密码随机数nonce重发请求,而不必提示用户其它用户名和口令。

服务器不需要保存任何过期的密码随机数,它可以简单的认为所有不认识的数值都是过期的。服务器也可以只允许每一个服务器密码随机数nonce使用一次,当然,这样就会迫使客户端在发送每个请求的时候重复认证过程。需要注意的是,在生成后立刻过期服务器密码随机数nonce是不行的,因为客户端将没有任何机会来使用这个nonce。

语法:

challenge

= ”Digest“ digest-challenge

digest-challenge = 1#(realm | [ domain ] | nonce |

[ opaque ] |[ stale ] | [ algorithm ] |

[ qop-options ] | [auth-param])

domain

= ”domain“ ”=“ URI(1*SP URI)

URI

= absoluteURI | abs_path

nonce

= ”nonce“ ”=“ nonce-value

nonce-value

= quoted-string

opaque

= ”opaque“ ”=“ quoted-string

stale

= ”stale“ ”=“(”true“ | ”false“)

algorithm

= ”algorithm“ ”=“(”MD5“ | ”MD5-se“ |

token)

qop-options

= ”qop“ ”=“ 1#qop-value

qop-value

= ”auth“ | ”auth-int“ | token

realm:让客户知道使用哪个用户名和密码的字符串。不同的领域可能密码不一样。至少告诉用户是什么主机做认证,他可能会提示用哪个用户名登录,类似一个Email。

domain:一个URI列表,指示要保护的域。可能是一个列表。提示用户这些URI采用一样的认证。如果为空或忽略则为整个服务器。nonce:随机字符串,每次401都不一样。跟算法有关。算法类似Base64加密:time-stamp H(time-stamp ”:“ ETag ”:“ private-key)。time-stamp为服务器时钟,ETag为请求的Etag头。private-key为服务器知道的一个值。

opaque:服务器产生的由客户下去请求时原样返回。最好是Base64串或十六进制字符串。

auth-param:为扩展用的,现阶段忽略。

其他域请参考RFC2617。

授权头语法:

credentials

= ”Digest“ digest-response

digest-response = 1#(username | realm | nonce | digest-uri

| response | [ algorithm ] | [cnonce] |

[opaque] | [meage-qop] |

[nonce-count] | [auth-param])

username

= ”username“ ”=“ username-value

username-value = quoted-string

digest-uri

= ”uri“ ”=“ digest-uri-value

digest-uri-value = request-uri;As specified by HTTP/1.1

meage-qop

= ”qop“ ”=“ qop-value

cnonce

= ”cnonce“ ”=“ cnonce-value

cnonce-value

= nonce-value

nonce-count

= ”nc“ ”=“ nc-value

nc-value

= 8LHEX

response

= ”response“ ”=“ request-digest

request-digest = 32LHEX

LHEX

= ”0“ | ”1“ | ”2“ | ”3“ |

”4“ | ”5“ | ”6“ | ”7“ |

”8“ | ”9“ | ”a“ | ”b“ |

”c“ | ”d“ | ”e“ | ”f“

response:加密后的密码

digest-uri:拷贝Request-Line,用于Proxy cnonce:如果qop设置,才设置,用于双向认证,防止攻击。

nonce-count:如果服务器看到同样的计数,就是一次重放。

示例:

401响应:

HTTP/1.1 401 Unauthorized

www.daodoc.comonce=”0a4f113b“,response=”6629fae49393a05397450978507c4ef1“,opaque=”5ccc069c403ebaf9f0171e9517f40e41"

一,用摘要保护密码

摘要认证的一个改进之处是用摘要代替密码的传输,遵循的基本原则是“绝对不通过网络发送明文密码”,而是发送一个密码的摘要信息,并且这摘要信息是不可逆 的,即无法通

过摘要信息反推出密码信息。而服务器本身是存储这个密码的(实际上,服务器只需知道密码的摘要即可),而客户端和服务器本身都知道这个密码。这样的话,服 务器可以读取客户端的摘要和本身知道的密码进行同样计算得出的摘要进行比较,若匹配,则验证通过。

摘要是对信息主体的浓缩,摘要是一种单向函数,主要用于将无限的输入值转为有限的浓缩输出值,如MD5,则是将任意长度的字节系列转换为一个128位的摘要。MD5输出的128位的摘要通常会写出32个十六进制的字符,每个字符表示4个bit。

二,用随机数防止重放攻击

使用单向摘要就无需以明文形式发送密码了,可以只发送密码的摘要,并且可以确信,没有哪个恶意用户能轻易的从摘要中解码出原始密码。

但是,摘要被截获也可能跟密码一起好用,为了防止重放攻击的发送,服务器可以向客户端发送一个称为随机数nonce的特殊令牌,这个数会经常发生变化(可 能是每毫秒,或者每次认证都发生变化,具体由服务器控制),客户端在计算摘要之前要先将这个随机数附加到密码上去。这样,在密码中加入随机数就会使得摘要 随着随机数的每次变化而变化,记录下的密码摘要只对特定的随机数有效,而没有密码的话,攻击者就无法计算出正确的摘要,这样就可以防止重放攻击的发生。

摘要认证要求使用随机数,随机数是在www.daodoc.comonce。如下例子:

GET/cgi-bin/checkout?a=b HTTP/1.1 Authorization: Digest username=”tenfyguo”

realm=”test realm”

nonce=” 66C4EF58DA7CB956BD04233FBB64E0A4” //服务器端的随机数一起带回

uri=”/cgi-bin/checkout?a=b” //必须跟请求行一致

qop=”auth” //保护质量参数

nc=0000001

cnonce=”xxxxx234132543strwerr65sgdrftdfytryts” //客户端随机数,用于对称校验

response=” ABC4EF58DA7CB956BD04345FBB64E0A4”//最终摘要

3,服务接受摘要,选择算法以及掌握的数据,重新计算新的摘要跟客户端传输的摘要进行比较,验证是否匹配,若客户端反过来用客户端随机数对服务器进行质询,就 会创建客户端摘要,服务可以预先将下一个随机数计算出来,提前传递给客户端,通过Authentication-Info发送下一个随机数。如下例子:

HTTP/1.1 200 OK Authorization-Info:nextnonce=” 88C4EF58DA7CB956BD04233FBB64E0A4”

qop=”auth”

rspauth=”23543534DfasetwerwgDTerGDTERERRE”

cnonce=” xxxxx234132543strwerr65sgdrftdfytryts”

四,摘要的计算

在说明如何计算摘要之前,先说明参加摘要计算的信息块。信息块主要有两种:

1,表示与安全相关的数据的A1。

A1中的数据时密码和受保护信息的产物,它包括用户名,密码,保护域和随机数等内容,A1只涉及安全信息,与底层报文自身无关。

若算法是:MD5 则A1=::

若算法是:MD5-se 则A1=MD5(::

)::

2,表示与报文相关的数据的A2.A2表示是与报文自身相关的信息,比如URL,请求反复和报文实体的主体部分,A2加入摘要计算主要目的是有助于防止反复,资源或者报文被篡改。

若qop未定义或者auth:

A2=: 若qop为auth:-int A2=::MD5()

下面定义摘要的计算规则:

若qop没有定义:

摘要response=MD5(MD5(A1)::MD5(A2))

若qop为auth: 摘要response=MD5(MD5(A1):::::MD5(A2))

若qop为auth-int: 摘要response= MD5(MD5(A1):::::MD5(A2))

五,随机数的生成RFC2617建议采用这个假想的随机数公式:

nonce = BASE64(time-stamp MD5(time-stamp “:” ETag “:” private-key))其中: time-stamp是服务器产生的时间戳或者其他不会重复的序列号,ETag是与所请求实体有关的HTTP ETag首部的值,priviate-key是只有服务器知道的数据。

这样,服务器就可以收到客户端的认证首部之后重新计算散列部分,如果结果与那个首部的随机数不符,或者是时间戳的值不够新,就可以拒绝请求,服务器可以通过这种方式来限制随机数的有效持续时间。

包括了ETag可以防止对已经更新资源版本的重放请求。注意:在随机数中包含客户端IP,服务器好像就可以限制原来获取此随机数的客户端重用这个随 机数了,但这会破坏代理集群的工作,使用代理集群时候,来自单个用户的多条请求通常会经过不同的代理进行传输,而且IP地址欺骗实现起来也不复杂。

《http头文件分析心得体会(推荐).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
http头文件分析心得体会(推荐)
点击下载文档
相关专题 科学教材分析心得体会 心得体会 头文件 http 科学教材分析心得体会 心得体会 头文件 http
[其他心得体会]相关推荐
    [其他心得体会]热门文章
      下载全文