跳转至

数字签名

来源:密码学引论 / 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 生成 标签,第三方无法确认标签究竟由谁生成,因此,无法实现不可否认性