Appearance
第5章:数字签名、证书与认证协议
签名的目标
数字签名用私钥生成签名、公钥验证。常见安全目标是选择消息攻击下的存在性不可伪造:即使攻击者获得自己选定消息的签名,也难以为新的消息产生有效签名。
签名不加密消息,也不自动证明现实世界行为已经发生。它证明的是在指定假设下,持有相应秘密的实体对某个编码消息进行了签名。
Schnorr 关系与 nonce
在阶为素数 的群中,私钥 、公钥 。简化 Schnorr 形式取随机 ,计算 ,令 ,输出 。验证等式为
若同一个 用于两个不同挑战 ,则
这展示了随机数复用如何直接暴露私钥。真实标准还规定群元素编码、哈希到标量、验证限制等细节,不能只实现这个等式就认为完整安全。
证书与信任
证书把身份或域名与公钥绑定,由受信任机构签名。验证方需要检查链、名称、有效期和相应约束,而不是仅检查“某个签名能验证”。
证书信任依赖根密钥、签发流程、吊销或更新机制。证书中包含公钥而非私钥;获得一个人的证书不会因此获得其签名能力。
认证密钥交换
认证密钥交换将临时密钥材料与身份、角色、协议参数及握手上下文绑定。只签一个孤立的随机数,可能遗漏会话身份或允许跨协议误用。
使用临时 DH 并正确擦除临时秘密,可使长期认证密钥后来泄露时,历史会话仍受到保护,称为前向安全。它不保证已被攻陷的端点无法读取当前明文。
口令认证还要应对低熵秘密的离线猜测。给口令加盐的成本型哈希用于存储验证,不会把弱口令变成高熵随机密钥。
练习
- 由两次复用 nonce 的 Schnorr 签名推导私钥公式。
- 一张证书签名有效但域名不匹配,为什么仍应拒绝?
- 区分前向安全、身份认证与端点安全。