HTTP认证之摘要认证

导航

一、概述

Digest认证是为了修复基本认证协议的严重缺陷而设计的,秉承“绝不通过明文在网络发送密码”的原则,通过“密码摘要”进行认证,大大提高了安全性。

相对于基本认证,主要有如下改进:

  • 绝不通过明文在网络上发送密码

  • 可以有效防止恶意用户进行重放攻击

  • 可以有选择的防止对报文内容的篡改

需要注意的是,摘要认证除了能够保护密码之外,并不能保护其他内容,与HTTPS配合使用仍是一个良好的选择。以下是摘要认证的具体流程图:

看到上面出现了那么多之前没见过的参数,是不是有点慌(或是兴奋)?别着急,这里先给出一个概览:

  • WWW-Authentication:用来定义使用何种方式(Basic、Digest、Bearer等)去进行认证以获取受保护的资源

  • realm:表示Web服务器中受保护文档的安全域(比如公司财务信息域和公司员工信息域),用来指示需要哪个域的用户名和密码

  • qop:保护质量,包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略,(可以为空,但是)不推荐为空值

  • nonce:服务端向客户端发送质询时附带的一个随机数,这个数会经常发生变化。客户端计算密码摘要时将其附加上去,使得多次生成同一用户的密码摘要各不相同,用来防止重放攻击

  • nc:nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量。例如,在响应的第一个请求中,客户端将发送“nc=00000001”。这个指示值的目的是让服务器保持这个计数器的一个副本,以便检测重复的请求

  • cnonce:客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护

  • response:这是由用户代理软件计算出的一个字符串,以证明用户知道口令

  • Authorization-Info:用于返回一些与授权会话相关的附加信息

  • nextnonce:下一个服务端随机数,使客户端可以预先发送正确的摘要

  • rspauth:响应摘要,用于客户端对服务端进行认证

  • stale:当密码摘要使用的随机数过期时,服务器可以返回一个附带有新随机数的401响应,并指定stale=true,表示服务器在告知客户端用新的随机数来重试,而不再要求用户重新输入用户名和密码了

二、剖析

1.当打开需要认证的页面时,会弹出一个对话框,要求用户输入用户名和密码

2.使用Fidder监听请求,可以看到在未进行认证或认证失败的情况下,服务端会返回401 Unauthorized给客户端,并附带Challenge

3.输入正确的用户名和密码后,浏览器会生成密码摘要以及其他信息发送给服务端,服务端认证成功后,返回一些与授权会话相关的附加信息,放在Authorization-Info中。

其中,客户端选择的保护质量策略为authresponse就是通过计算得到的密码摘要,具体计算方式如下(使用默认的MD5加密算法):MD5(MD5(A1):<nonce>:<nc>:<cnonce>:<qop>:MD5(A2))

算法 A1
MD5(默认) <username>:<realm>:<password>
MD5-sess MD5(<username>:<realm>:<password>):<nonce>:<cnonce>
qop A2
auth(默认) <request-method>:<uri>
auth-int <request-method>:<uri>:MD5(<request-entity-body>)

另外,rspauth使得客户端可以对服务器进行认证,称为响应摘要。响应摘要的计算与请求摘要类似,但由于响应中没有方法,而且报文实体数据有所不同,所有只有报文主题信息A2不同。具体区别如下:

qop A2
auth(默认) :<uri>
auth-int :<uri>:MD5(<response-entity-body>)

4.当服务端随机数过期时,再次请求认证,可以看到质询中增加了stale=true,用户无需再次输入用户名和密码,浏览器会自动使用新的质询参数进行密码摘要的计算。

三、注意事项

1.预授权:服务端预先告知客户端下一个随机数是多少,使得客户端可以直接生成正确的Authorization首部,避免了多次“请求/质询”。常用的有一下三种方式:

  • 服务器预先在Authorization-Info成功首部中发送下一个随机数nextnonce。虽然这种机制加快了事务处理的速度,但是它也破坏了对同一台服务器的多次请求进行管道化的功能,可能会造成很大的损失。

  • 服务器允许在一小段时间内使用同一个随机数。这也就是我们上面剖析中使用的机制,在一定时间内使用同一个随机数或限制某个随机数的重用次数,当过期时,声明stale=true。虽然这确实降低了安全性,但是重用的随机数的生存周期是可控的,应该在安全和性能之间找到平衡。

  • 客户端和服务器使用同步的、可预测的随机数生成算法。

2.RFC 2617建议采用这个假想的随机数公式:BASE64(timestamp MD5(timestamp ":" ETag ":" private-key))
其中,timestamp是服务器产生随机数的时间或其他不重复的值,ETag是与所请求实体有关的HTTP ETag首部的值,private-key是只有服务器知道的私钥。

__EOF__

  • 本文作者: xiaoxiaotank

  • 本文链接: https://www.cnblogs.com/xiaoxiaotank/p/11078571.html

  • 关于博主: 使用微信扫描一下左侧的二维码关注我的订阅号,或加入我的QQ交流群:705680556

  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。

(0)

相关推荐

  • PHP的HTTP验证

    PHP的HTTP验证 在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录.但其实 HTTP 也提供了这种登录验证机制,我们今 ...

  • EMQX MQTT 服务器(下篇)| 开启客户端身份安全认证并使用mqtt.fx测试

    0. 准备工作 EMQ-X服务器版本说明 经过实际测试,EMQ X 版本高于3.0.1版本无法配置使用插件,所以在进行本节实验之前,先删除原有的EMQ-X,下载安装3.0.1版本. mqtt.fx工具 ...

  • 渗透测试之API接口测试

    原创作者:TrueBW,作者博客:https://blog.csdn.net/weixin_39190897接口测试API:Application Programming Interface,即应用程 ...

  • 程序员必备基础:如何安全传输存储用户密码?

    前言 我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」.一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响.因此,如何安全传输存储用户密码,是每位程序员 ...

  • ISO20000认证与ISO27001认证有何不同

    首先给大家简单的介绍一下ISO20000认证与ISO27001认证分别是什么,ISO20000认证为信息技术服务管理体系(英文全称:Information technology service man ...

  • 亚马逊LED灯具认证,灯具认证要求价格是统一的吗?

    ETL认证是美国的安全认证,基本的要求就是按照北美的LED灯标准要求. 常见的北美LED灯具标准包括:UL1993,UL8750,UL1598,UL153,UL1310等. 其他的标准还包括: UL1 ...

  • CE认证和ROHS认证是什么意思,二者有什么关系

    申请欧盟CE认证的过程中,很多产品往往会加入ROHS指令的要求,很多朋友不明白ROHS认证和CE认证是什么意思,ROHS认证和CE认证有什么关系,下面小李小编给大家介绍一下. 一.ROHS认证和CE认 ...

  • 什么是CPSC认证,CPSC认证适用范围

    什么是CPSC认证: 是美国消费品安全委员会的缩语. 他是美国联邦政府机构, 主要职责是对消费产品使用的安全性制定标准和法规并监督执行. CPSC 现有的目录上管理着15000种不同的产品,CPSC规 ...

  • 学历认证和学位认证

    我在刚开始报考的时候 也是啥也不知道 就觉得我有毕业证了,学位证了 啥也不缺啊 然后后来就净出幺蛾子 报名前一天 发现公告上写着 学历还学位认证报告 然后我 整了好久都没整出来 最后给人打电话,反正也 ...

  • 美国ETL认证和UL认证的区别

    美国ETL认证简介 ETL是北美的安全认证标志,历史可追溯到1896年托马斯·爱迪生创建的电气测试实验室,在北美具有广泛的知名度和认可度.ETL标志是世界领先的质量与安全机构Intertek天祥集团的 ...

  • 什么是CPC认证?CPC认证如何办理?

    什么是CPC证书? 儿童产品证书(Children's Product Certificate, CPC)适用于所有以12岁及以下儿童为主要目标使用对象的产品,如玩具.摇篮.儿童服装等,如在美国本地生 ...

  • 【纺织原料】有机棉选OCS认证还是GOTS认证?

    目前有机棉认证主要有 OCS认证和GOTS认证 .21世纪,随着生活水平的提高,越来越多的消费者对"绿色".环保"."健康"."有机&quo ...

  • 化妆镜CE认证标准CE认证办理流程

    LED化妆镜是周边带有LED灯珠的化妆镜,在光线不好的地方能够补充光源,方便化妆.在现在社会LED化妆镜十分受欢迎,那么LED化妆镜想要进入欧盟市场怎么办理CE认证呢? LED化妆镜一般都要通电使用, ...