数字签名¶
来源:
密码学引论 / digital_signature/数字签名.md
数字签名方案由以下三个概率多项式时间算法组成:
密钥生成算法
\[
KeyGen (sk,vk) ← KeyGen(1^λ)
\]
输入安全参数\(1^λ\),输出(sk,vk),其中sk 为签名私钥,vk 为验证公钥。
签名算法
\[
Sign: σ ← Sign_{sk}(m)
\]
输入签名私钥sk 与要签署的消息m,输出签名σ,其中m ∈ M,M 为消息空间。
验证算法
\[
Vrfy:b ← Vrfyvk(m,σ)
\]
输入验证公钥vk,消息m 与签名σ,输出b,其中b ∈ {0,1}。b = 1 表示
验证通过,即签名是合法的,b = 0 表示验证不通过,即签名不合法。
与MAC的区别¶
从功能上看,数字签名与消息认证码MAC都能提供认证 性,即验证消息完整性与消息来源的真实性,但MAC是对称密码, MAC标签的生成方与验证方需要共享相同的秘密密钥k,这意味着不具有公开可验证性,并且验证方同样可以使用k 生成 标签,第三方无法确认标签究竟由谁生成,因此,无法实现不可否认性。