开源之夏-10

还记得上密码学第一节课的时候,说:

本课程的主要阐述如何利用密码技术来实现信息的机密性、完整性、可鉴别性和抗抵赖性等安全属性中的有关问题。

以前一直有个疑问,前几章可以理解,学习不同密码算法,我们获得了密码学这些基础工具。
获得了对称和非对称算法,这样的基本密码原语。它们被数学上证明正确。
于是有了密钥管理技术(第五章),我们需要在各种场景中考虑保护好密钥。

但是后边第六章开始,我的疑问是:
为什么有了数字签名技术,还要消息鉴别技术?
为什么还要再有身份鉴别技术?
这些技术似乎在不同的场景中应用,背后的联系是什么?

点击链接查看和 Kimi 的对话 https://www.kimi.com/share/d2i85fvaa0v7pc7fguug

今天在写SDF_GetPrivateKeyAccessRight,借此机会大概理清了思路。也理解了第一节课上说的含义。
回答一个问题:信息安全什么要学密码学这门课。

信息安全涉及广泛的载体,各种软件、硬件,涵盖各种业务场景,在这个过程中,
需要去保护一些东西(消息=>有什么,身份=>是谁)(都是信息),
密码工具,是保护这些东西的工具。我们先学习了理论上的数学工具,又在实际应用场景中学习了这些密码学工具

于是有了密钥,数学上证明,只要密钥不泄露,加密的内容就是安全的。
于是我们的推论是:

在各种业务场景中,假设密钥完成分发,不考虑重放,使用密钥加密的方式保护信息的传递,只要保证密钥的安全,各种业务场景就都是安全的。

于是我们还需要保护密钥。让这个工具在每次用完都能被妥善保管,不丢失泄露。
对应不同的问题场景:

消息鉴别(MAC/HMAC/SM3-MAC/数字签名 )=> 解决“这条消息在传输途中是否被篡改”。
方案: MAC/签名,只暴露结果,不暴露密钥。

身份识别(挑战-响应、TLS 握手、Kerberos …)=> 解决“此刻与我通信的实体是不是声称的那个实体”。
方案: 证书或协议,只暴露可验证的断言,不暴露私钥。

这里展开上边的假设,考虑密钥分发,考虑重放攻击等实际情况,那么:
身份识别体系(PKI + 证书吊销 + 现场挑战-响应协议)共同解决‘此刻与我通信的实体是不是声称的那个实体’,且在整个过程中只暴露可验证断言与公开公钥,私钥始终留在本地。”

于是可以发现,为了在不同场景中解决问题,实现(机密性,完整性,不可否认性),同时保护好密钥。
使用这样的工具:

消息鉴别码 MAC/HMAC/SM3-MAC
• 完整性 ✔︎
• 身份鉴别 ✘(只能证明“有人拥有同一对称密钥”,无法区分具体是谁)
• 不可否认性 ✘(双方都有同一密钥,谁都算得出 MAC,无法给出法律意义上的证据)
数字签名(RSA/ECDSA/SM2 …)
• 完整性 ✔︎(任何比特被改,签名即刻失效)
• 身份鉴别 ✔︎(签名用私钥,验签用公钥/证书,可确认“是谁签的”)
• 不可否认性 ✔︎(只有签名者掌握私钥,事后无法抵赖)
挑战-响应 / TLS 握手 / Kerberos 等身份认证协议
• 它们主要解决“此刻对端是不是声称的实体”,本身不直接提供消息级完整性或不可否认性;
• 但它们通常内部会用到数字签名或 MAC 来完成完整性校验和身份绑定,所以间接满足要求。

形成这样的“信任链”:

  1. 密钥本身
    只是一串随机比特,本身没有任何“意义”。

  2. 谁有权用它(最小授权 / 访问控制)
    通过 PIN、口令、ACL、HSM 角色,把“实体→密钥使用权”绑定,但不透露密钥

  3. 消息鉴别(MAC/HMAC/SM3-MAC …)
    解决“这条消息在传输途中是否被篡改”。
    它用的对称密钥本身并不表明“谁”产生的消息,只表明“知道这把对称密钥的人”认可该消息。
    密钥与身份未解耦:拿到密钥就能伪造 MAC。

  4. 数字签名(非对称签名 / SM2-Sig …)
    用私钥签名、公钥验证。
    公钥可以公开,私钥永远留在机器。
    验证链条的最后一环,消息与私钥绑定。

    • 私钥只负责“计算签名”;
    • 身份由“公钥证书”把公钥→实体绑定;
    • 谁有权用私钥由 HSM 的访问控制决定。
      于是形成“实体 / 密钥使用权 / 签名结果”三层分离。
  5. 身份鉴别(挑战-响应、TLS 握手、Kerberos …)
    解决“此刻与我通信的实体是不是声称的那个实体”。
    它往往组合使用 MAC 或数字签名:

    • 早期系统资源受限 → 用对称 MAC(快速,但共享密钥)
    • 现代系统 → 用数字签名(无需共享密钥,可撤销、可审计)。
      → 身份鉴别协议把“实体身份”与“密钥使用权”重新耦合,通过证书、挑战-响应、签名验证等手段,现场证明“此刻使用这把私钥的人就是那个被认证的实体”;
      “我现在证明我拥有私钥使用权,但私钥不会离开 HSM,也不会被协议泄露。”

这就是“最小授权”原则从“谁能用密钥”扩展到“谁能产生可信消息”再到“谁能证明自己是某个实体”的完整链路。

总结背后的统一思想:

“把敏感资产(密钥、消息、身份)从逻辑与物理上逐层最小化暴露,任何一层泄露都不足以破坏整体信任。”
最小权限原则(Principle of Least Privilege,PoLP) + 分层信任模型(Layered Trust)
而这里讨论的仍是密码学原语及其访问控制的经典安全设计思想。
• 最小权限原则:每一层只拿到完成自己任务所必需的最小权力。
‑ 密钥 → 只留在 HSM;
‑ 消息 → 只拿到签名/ MAC 结果;
‑ 身份 → 只拿到可验证的断言。
• 分层信任模型:把“密钥本身 / 密钥使用权 / 消息完整性 / 身份鉴别”逐层解耦,任何单点失守都不会导致整体信任崩塌。


开源之夏-10
https://43.242.201.154/2025/08/19/开源之夏-10/
Author
Dong
Posted on
August 19, 2025
Licensed under