第13章 摘要认证

还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面

第13章 摘要认证

“第13章 摘要认证”锁定David Gourley、Brian Totty、Marjorie Sayer、Sailu Reddy、Anshu Aggarwal著,陈涓、赵振平译《HTTP权威指南》,人民邮电出版社,2012年,ISBN 9787115281487;英文原版HTTP: The Definitive Guide,O'Reilly Media,2002年9月,656页,ISBN 1565925092。O'Reilly官方页面确认英文首版的5个正文部分、21章和8个附录;中文版完整印刷目录另含“第六部分 附录”和索引。忠实度分母共586个部分、章、编号节/小节、附录与索引节点。

“第13章 摘要认证”未取得未获授权的完整中文正文;课程以 O’Reilly 官方在线版章级导览 界定首版范围,中文解释、报文、实验和练习均为独立教学重写。现代语义仅以 RFC 9110RFC 9111RFC 9112 核对差异。

学习目标

  • 能解释“第13章 摘要认证”的全部正式节点及其HTTP事务位置。
  • 能绘制请求、响应、TCP连接、中间实体和资源状态。
  • 能设计单变量实验,验证“摘要响应绑定用户、realm、密码摘要、nonce、方法与请求URI,并可解释重放防护边界”。
  • 能写出含首版边界、原始报文、故障、恢复和复核人的证据包。

从一条可证伪的HTTP事务开始

先预测:随机数可预测、长期复用或忽略方法与URI绑定会削弱摘要认证。把预测写成“URL/资源、连接、请求报文、中间实体、响应报文、身份与编码”六行,再运行客户端、代理或服务器。结果不同先定位首个字节或状态偏差。

本页主问题是:还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面。每条消息要注明发送者、接收者、HTTP版本、连接复用、逐跳/端到端首部、主体边界与历史协议状态。

验收不变量是:摘要响应绑定用户、realm、密码摘要、nonce、方法与请求URI,并可解释重放防护边界。最终页面正常、状态码200或TLS通道建立都只是局部事实,不能单独证明资源身份、缓存变体、代理转发与证书身份全部正确。

核心词汇与首版边界

这些词汇固定在2002年英文首版和2012年中译本语境。在“第13章 摘要认证”中,HTTP/2、HTTP/3、OAuth、JWT、SameSite、HSTS和现代CDN行为只作独立比较,不得替换HTTP-NG、Digest、WebDAV、WPAD等首版节点。

核心机制深读

先从摘要认证画出事务

还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面。先固定资源身份和请求目标,再标出客户端、中间实体与源服务器,任何优化或安全结论都不能跳过原始报文。

动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。

区分摘要认证与nonce

摘要认证和nonce可能在同一事务中协作,但责任、状态位置和失败语义不同。对比正常请求、单个首部变化和单个连接故障,定位首个偏差。

动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。

让A1经过真实中间实体

代理、缓存、网关或隧道会读取、添加、删除或转发不同首部。逐跳记录Via、Connection列出的字段、缓存决策和认证边界。

动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。

验证A2的历史语境

原书写于2002年,以HTTP/1.0、HTTP/1.1、SSL/TLS早期版本和当时Web基础设施为背景。现代实现可做对照,但不能冒充原书节点。

动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。

用qop关闭证据门

摘要响应绑定用户、realm、密码摘要、nonce、方法与请求URI,并可解释重放防护边界。证据至少包含原始请求/响应、TCP时间线、中间状态、失败注入、恢复动作和第三方复核。

动手试:先手写预期请求与响应,再抓取正常事务和一个单变量故障事务。标出首个不同字节或状态,不用最终页面猜根因。

首版机制逐项深读

第13章 摘要认证

验证“第13章 摘要认证”分别执行正确凭据、错误凭据和重放事务;摘要输入、时间状态与失败代码都可复算,结论才可交接。

13.1 摘要认证的改进

核对“13.1 摘要认证的改进”要保存 401 或 407 挑战、保护域、nonce、请求目标和 Authorization,区分身份验证、通道保密与资源授权。

13.1.1 用摘要保护密码

“13.1.1 用摘要保护密码”的边界包括口令存储、中间人、词典攻击和代理认证;单次登录成功不能证明凭据未在线路或日志中泄露。

13.1.2 单向摘要

验证“13.1.2 单向摘要”分别执行正确凭据、错误凭据和重放事务;摘要输入、时间状态与失败代码都可复算,结论才可交接。

13.1.3 用随机数防止重放攻击

验证“13.1.3 用随机数防止重放攻击”分别执行正确凭据、错误凭据和重放事务;摘要输入、时间状态与失败代码都可复算,结论才可交接。

13.1.4 摘要认证的握手机制

“13.1.4 摘要认证的握手机制”的边界包括口令存储、中间人、词典攻击和代理认证;单次登录成功不能证明凭据未在线路或日志中泄露。

13.2 摘要的计算

核对“13.2 摘要的计算”要保存 401 或 407 挑战、保护域、nonce、请求目标和 Authorization,区分身份验证、通道保密与资源授权。

13.2.1 摘要算法的输入数据

验证“13.2.1 摘要算法的输入数据”分别执行正确凭据、错误凭据和重放事务;摘要输入、时间状态与失败代码都可复算,结论才可交接。

13.2.2 算法h(d) 和kd(s,d)

“13.2.2 算法h(d) 和kd(s,d)”区分对数据做单向摘要 H 与用秘密材料计算响应 KD;双方必须使用相同算法、字符编码和字段拼接顺序。

13.2.3 与安全性相关的数据(a1)

“13.2.3 与安全性相关的数据(a1)”把用户名、保护域与密码组合为摘要认证的长期秘密材料;保护域变化会改变结果,原始密码不应在线路上传输。

13.2.4 与报文有关的数据(a2)

“13.2.4 与报文有关的数据(a2)”至少绑定请求方法与请求 URI;启用实体完整性保护时还会纳入实体摘要,使凭据与本次操作相关。

13.2.5 摘要算法总述

“13.2.5 摘要算法总述”的边界包括口令存储、中间人、词典攻击和代理认证;单次登录成功不能证明凭据未在线路或日志中泄露。

13.2.6 摘要认证会话

分析“13.2.6 摘要认证会话”要记录状态由谁创建、存在哪里、何时回送与何时过期;IP 或 User-Agent 等线索只能辅助关联。

13.2.7 预授权

“13.2.7 预授权”在本章用于回答“还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。

13.2.8 随机数的选择

“13.2.8 随机数的选择”在本章用于回答“还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。

13.2.9 对称认证

核对“13.2.9 对称认证”要保存 401 或 407 挑战、保护域、nonce、请求目标和 Authorization,区分身份验证、通道保密与资源授权。

13.3 增强保护质量

“13.3 增强保护质量”在本章用于回答“还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。

13.3.1 报文完整性保护

“13.3.1 报文完整性保护”必须在线路语义中判断:请求方法声明意图,状态码表达处理结果,首部携带元数据,主体边界由明确的报文规则确定。

13.3.2 摘要认证首部

分析“13.3.2 摘要认证首部”要保留起始行、全部首部与实体边界;把解析对象重新打印,可能丢掉重复字段、空白和线路顺序证据。

13.4 应该考虑的实际问题

“13.4 应该考虑的实际问题”在本章用于回答“还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。

13.4.1 多重质询

验证“13.4.1 多重质询”分别执行正确凭据、错误凭据和重放事务;摘要输入、时间状态与失败代码都可复算,结论才可交接。

13.4.2 差错处理

“13.4.2 差错处理”在本章用于回答“还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面”。学习时必须把这个名称落到具体报文、连接、中间状态或历史规范,并说明它改变了哪项可观察结果。

13.4.3 保护空间

验证“13.4.3 保护空间”分别执行正确凭据、错误凭据和重放事务;摘要输入、时间状态与失败代码都可复算,结论才可交接。

13.4.4 重写uri

“13.4.4 重写uri”用基准 URI、目标 URI 与最终请求目标三列核对,尤其区分相对引用解析、默认端口和只在客户端使用的片段。

13.4.5 缓存

“13.4.5 缓存”由缓存键、当前年龄、新鲜寿命、Vary 维度和验证器共同决定;命中不等于新鲜,过期对象也可能通过条件请求复用。

13.5 安全性考虑

“13.5 安全性考虑”保护传输中的字节,不自动解决端点权限、应用日志或存储泄露;代理隧道还需约束目标和端口。

13.5.1 首部篡改

“13.5.1 首部篡改”指出未进入摘要输入的字段仍可能被中间人修改;摘要认证保护范围有限,不能替代 TLS 的通道完整性。

13.5.2 重放攻击

“13.5.2 重放攻击”属于挑战—响应认证:服务器给出保护域与挑战参数,客户端生成凭据,验证端检查身份、时效和重放条件;Base64 本身不保密。

13.5.3 多重认证机制

“13.5.3 多重认证机制”属于挑战—响应认证:服务器给出保护域与挑战参数,客户端生成凭据,验证端检查身份、时效和重放条件;Base64 本身不保密。

13.5.4 词典攻击

“13.5.4 词典攻击”属于挑战—响应认证:服务器给出保护域与挑战参数,客户端生成凭据,验证端检查身份、时效和重放条件;Base64 本身不保密。

13.5.5 恶意代理攻击和中间人攻击

诊断“13.5.5 恶意代理攻击和中间人攻击”先确认它是转发 HTTP、转换协议还是盲转发字节;三种角色拥有不同的解析能力和安全责任。

13.5.6 选择明文攻击

“13.5.6 选择明文攻击”属于挑战—响应认证:服务器给出保护域与挑战参数,客户端生成凭据,验证端检查身份、时效和重放条件;Base64 本身不保密。

13.5.7 存储密码

“13.5.7 存储密码”的边界包括口令存储、中间人、词典攻击和代理认证;单次登录成功不能证明凭据未在线路或日志中泄露。

13.6 更多信息

“13.6 更多信息”是原书的延伸资料入口,不增加新的协议结论;使用时必须记录资料版本、适用的 HTTP 年代和与本章结论的对应关系。

分步1 / 3

复原原始HTTP事务

固定URL、资源、连接与版本,写出请求行、首部、主体、响应和所有中间实体。

HTTP/1.1 message laboratory

第13章 摘要认证

还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面

请求方法
GET /resource?chapter=%E7%AC%AC13%E7%AB%A0%20%E6%91%98%E8%A6%81%E8%AE%A4%E8%AF%81 HTTP/1.1
Host: example.test
Connection: keep-alive

解析边界:首部空行结束请求

章内坐标:第13章 摘要认证、13.1 摘要认证的改进、13.1.1 用摘要保护密码、13.1.2 单向摘要、13.1.3 用随机数防止重放攻击、13.1.4 摘要认证的握手机制、13.2 摘要的计算、13.2.1 摘要算法的输入数据

可复现实验记录

GET /resource HTTP/1.1
Host: example.test
Connection: keep-alive
Accept: */*
HTTP/1.1 200 OK
Date: Tue, 01 Jan 2002 00:00:00 GMT
Content-Type: text/plain
Content-Length: 5
 
hello
evidence = request_bytes + response_bytes + tcp_timeline + intermediary_state + recovery

动手试:保存一次正常请求、一次缓存或连接边界和一次单变量故障。记录客户端、代理、缓存、网关与源服务器看到的原始报文,以及统一时间戳和恢复动作。

独立证据门

最小证据包包含:首版节点、URL、原始请求/响应、连接时间线、代理与缓存决策、身份和编码、单变量故障、恢复、偏差、责任人与复核人。

练习

练习

问题 1:为什么“第13章 摘要认证”必须固定2002年首版?

问题 2:怎样构造“随机数可预测、长期复用或忽略方法与URI绑定会削弱摘要认证”的最小反例?

问题 3:何时可以认为本页完成独立交接?

本章回顾

“第13章 摘要认证”的核心是还原摘要认证的nonce、A1/A2、摘要计算、预授权、保护质量和攻击面。真正掌握不是记首部名,而是能用原始报文、连接和中间状态证明资源如何被定位、传输、缓存、保护与交付。

名词解释

本章出现的专业名词,用大白话再讲一遍。

摘要认证

用单向摘要质询响应避免直接发送明文密码的HTTP认证方案。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。

nonce

服务器提供并用于限制重放的唯一或有时效质询值。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。

A1

摘要算法中与用户、realm和密码或会话相关的数据。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。

A2

摘要算法中与请求方法、URI和可选实体摘要相关的数据。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。

qop

摘要认证中声明auth或auth-int等保护质量的参数。掌握标准是能在原始HTTP报文、中间状态或历史规范中定位,并构造最小失败反例。

← 上一页:第12章 基本认证机制 · 下一页:第14章 安全http →

讨论

评论区加载中…