13.1 摘要认证的改进

来源:互联网 发布:java程序员前景怎么样 编辑:程序博客网 时间:2024/05/22 11:44
  • 本章只需了解摘要认证的基本概念和流程即可,关于 HTTP 的安全问题,重点关注下一章。
  • 基本认证便捷灵活,但极不安全。用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改。安全使用基本认证的唯一方式就是将其与 SSL 配合使用。
  • 摘要认证与基本认证兼容,但却更为安全。
  • 摘要认证进行了如下改进:
    • 永远不会以明文方式在网络上发送密码。
    • 可以防止恶意用户捕获并重放认证的握手过程。
    • 可以有选择地防止对报文内容的篡改。
    • 防范其他几种常见的攻击方式。
  • 摘要认证并不是最安全的协议。比如,与基于公有密钥的机制相比,摘要认证所提供的认证机制就不够强。同样,摘要认证除了能保护密码外,并没有提供保护其他内容的方式——请求和应答中的其余部分仍然可能被窃听。
  • 摘要认证并不能满足安全 HTTP 事务的很多需求。对这些需求来说,使用传输层安全(Transport Layer Security,TLS)和安全 HTTP (Secure HTTP,HTTPS)协议更为合适一些。但摘要认证比它要取代的基本认证强大很多。

1. 用摘要保护密码

  • 摘要认证遵循的箴言是“绝不通过网络发送密码”。客户端不会发送密码,而是会发送一个“指纹”或密码的“摘要”,这是密码的不可逆扰码。
  • 客户端和服务器都知道这个密码,因此服务器可以验证所提供的摘要是否与密码相匹配。
  • 只拿到摘要的话,除了将所有的密码都拿来试试之外,没有其他方法可以找出摘要是来自哪个密码的。
  • 摘要认证简要工作原理:
    1. 图a,客户端请求了某个受保护文档。
    2. 图b,在客户端能够证明其知道密码从而确认其身份之前,服务器拒绝提供文档。服务器向客户端发起质询,询问用户名和摘要形式的密码。
    3. 图c,客户端传递了密码的摘要,证明它是知道密码的。服务器知道所有用户的密码,因此可以将客户提供的摘要与服务器自己计算得到的摘要进行比较,以验证用户是否知道密码。另一方在不知道密码的情况下,很难伪造出正确的摘要。
    4. 图d,服务器将客户端提供的摘要与服务器内部计算出的摘要进行对比。如果匹配,就说明客户端知道密码(或者很幸运地猜中了)。可以设置摘要函数,使其产生很多数字,让人不可能幸运地猜中摘要。服务器进行了匹配验证之后,会将文档提供给客户端——整个过程都没有在网络上发送密码。
      这里写图片描述

2. 单向摘要

  • 摘要是“对信息主体的浓缩”。摘要是一种单向函数,主要用于将无限的输入值转换为有限的浓缩输出值。理论上来讲,我们将数量无限的输入值转换成了数量有限的输出值,所以两个不同的输入值就可能映射为同一个摘要。这种情况被称为冲突(collision)。实际上,由于可用输出值的数量足够大,所以在现实生活中,出现冲突的可能是微乎其微的,对我们要实现的密码匹配来说并不重要。
  • 常见的摘要函数 MD5 会将任意长度的字节序列转换为一个 128 位的摘要。MD5 表示“报文摘要的第五版”,是摘要算法系列中的一种。安全散列算法(Secure Hash Algorithm, SHA)是另一种常见的摘要函数。
  • MD5 输出的 128 位的摘要通常会被写成 32 个十六进制的字符,每个字符表示 4 位。
  • 有时也将摘要函数称为加密的校验和、单向散列函数或指纹函数。

3. 用随机数防止重放攻击

  • 仅仅隐藏密码并不能避免危险,因为即便不知道密码,别有用心的人也可以截获摘要,并一遍遍地重放给服务器。摘要和密码一样好用。
  • 为防止此类重放攻击的发生,服务器可以向客户端发送一个称为随机数(nonce)的特殊令牌,这个数会经常发生变化(可能是每毫秒,或者是每次认证都变化)。客户端在计算摘要之前要先将这个随机数令牌附加到密码上去。
  • 随机数是在 WWW-Authenticate 质询中从服务器传送给客户的。

4. 摘要认证的握手机制

  • 摘要认证在传统首部中添加了一些新的选项,还添加了一个新的可选首部 Authorization-Info。
  • 摘要认证简要三步握手机制:
    1. 服务器会计算出一个随机数。
    2. 服务器将这个随机数放在 WWW-Authenticate 质询报文中,与服务器所支持的算法列表一同发往客户端。
    3. 客户端选择一个算法,计算出密码和其他数据的摘要。
    4. 将摘要放在一条 Authorization 报文中发回服务器。如果客户端要对服务器进行认证,可以发送客户端随机数。
    5. 服务器接收摘要、选中的算法以及支撑数据,计算出与客户端相同的摘要。然后服务器将本地生成的摘要与网络传送过来的摘要进行比较,验证其是否匹配。如果客户端反过来用客户端随机数对服务器进行质询,就会创建客户端摘要。服务器可以预先将下一个随机数计算出来,提前将其传递给客户端,这样下一次客户端就可以预先发送正确的摘要了。
      这里写图片描述
  • 这些信息中很多是可选的,而且有默认值。基本认证与摘要认证的语法对比:
    这里写图片描述
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 楼上木地板走路声音都很响怎么办 班里团支不搭理我我该怎么办 客户买家具说贵怎么办 英雄联盟超出显示范围怎么办 脸上有斑点怎么办内条 脖子扭到了一动就疼怎么办 杭州限行在路上怎么办 在路上限行了怎么办 微信号不能进群怎么办 在微信约妹子被骗2000怎么办 qq号进不了热聊怎么办 网上买彩票中五百万怎么办 别人登我支付宝怎么办 医保刷卡刷到现金支付怎么办 微信诈骗立案后怎么办 奔跑吧诈骗填写了身份证怎么办 快手绑定的手机号丢了怎么办 球球大作战绑定手机号丢了怎么办 快手绑定手机号丢了怎么办 绑定银行卡的手机号丢了怎么办 爱奇艺绑定的手机号丢了怎么办 高铁票订错时间怎么办 微信音频视频打出没反应怎么办 海尔超低温保存箱低温报警怎么办 孕期吃了烧烤蔬菜怎么办 百姓动迁政府说话不算数怎么办 孕妇用了青草膏怎么办 药材不知道啥名怎么办 诛仙手游鸿蒙紫气不见了怎么办 紫叶兰叶干了怎么办 绿萝叶子中毒了怎么办? 怀孕初期胃疼的厉害怎么办 怀孕胃疼的厉害怎么办 天然气热水器风口一封闭怎么办 热水器着火后火变大怎么办? 人如果没有天魂怎么办 被鬼魂附体了该怎么办 被吸血蠓咬了怎么办 股份公司大股东占用资金怎么办 抱小孩抱的胳膊疼怎么办 一个月好几个性伴侣怎么办