数字签名的高效长期验证与RSA实现
1 数字签名验证相关内容
1.1 请求回复与验证
请求的回复是一个三元组 (StatusA, P(StatusA, S), Sig{D(S)})。无论有多少请求,每一轮只需要一个签名。这种方法最早用于时间戳。验证过程与协议 (2) 几乎相同,不同之处在于验证者不进行最终签名验证,而是:
- 检查等式 P(StatusA, S)(h(StatusA)) = D(S) 是否成立;
- 检查 D(S) 是否由 N 签名。
需要注意的是,只有当请求处理本身的计算成本远低于签名时,这种方法才有意义。PKIX 时间戳和 OCSP 协议就是这种情况,但 DVCS 并非如此,因为每个请求都需要进行多次签名验证。
1.2 效率计算
设 Th 和 Ts 分别表示哈希和签名所需的时间,Tp 表示处理一个请求所需的时间。在传统的在线协议(如 OCSP、TSP 等)中,处理 R 个请求需要 R · (Tp + Ts) 个时间单位。在哈希树协议中,如果一轮中有 R 个请求,需要 R · Tp 个时间单位来找到相应的答案,R · Th 个时间单位来计算哈希树并找到摘要 d 和证明 P(Statusi, S),最后需要 Ts 个时间单位来对摘要 D(S) 进行签名。
假设哈希速度是签名速度的 K 倍(Ts = K · Th),请求处理速度是签名速度的 P 倍(Ts = P · Tp),则哈希树方案的速度是传统方案的 λ 倍:
[λ = \frac{R · Tp + R · Ts}{R · Tp + R · Th + Ts} = \frac{1 + \frac{1}{P}}{\fr