数字签名方案与安全概念
1. 数字签名方案概述
数字签名如同手写签名,期望数字签名 $\sigma$ 将来自可允许消息空间 $M$ 的消息 $m$ 的内容与签名者绑定。签名者通过公钥 $pk$ 识别,公钥可能经过认证并与身份关联。只有签名者能创建签名,所以签名者持有与公钥通过密钥生成算法 $KGen$ 一起生成的匹配私钥 $sk$。签名使用私钥 $sk$ 通过签名算法 $Sig$ 完成,验证使用公钥 $pk$ 通过验证算法 $Vf$ 进行。
一个数字签名方案 $S = (S.KGen, S.Sig, S.Vf)$ 由三个概率多项式时间算法组成:
- 密钥生成 :输入一元安全参数 $1^{\lambda}$,输出私钥 - 公钥对 $(sk, pk) \gets^{\$} S.KGen(1^{\lambda})$。安全参数决定消息空间 $M_{\lambda} \subseteq {0, 1}^ $。
- 签名 :输入私钥 $sk$ 和消息 $m \in M_{\lambda}$,输出签名 $\sigma \gets^{\$} S.Sig(sk, m)$。
- 验证 *:输入公钥 $pk$、消息 $m \in M_{\lambda}$ 和潜在签名 $\sigma$,输出决策位 $d \gets^{\$} S.Vf(pk, m, \sigma)$。
正确性要求对于任意消息 $m \in M_{\lambda}$,以压倒性概率(关于 $\lambda$ 的函数),当 $(sk, pk) \gets^{\$} S.KGen(1^{\la