密码学——数字签名
数字签名
- 引言
-
数字签名机制
-
签名方案设计的核心要素在于确保信息真实性与可追溯性
-
直接数字签名方法通过数学运算实现快速认证
-
EIGamal算法基于离散对数问题构建独特的加密体系
-
公钥与私钥生成流程详细阐述了如何实现安全配对关系建立
- 在实际应用中,通过该流程可有效保障通信双方身份认证过程的安全性与可靠性
- 整个验证流程确保了数据完整性和不可篡改性特征得以维持
-
Schnorr 数字签名方案
-
- 公钥和私钥生成
- 签名生成
- 签名验证
-
-
证书和认证中心
-
引言
通过消息认证机制能够有效防止第三方发起攻击活动;然而该机制无法应对双方内部人员可能发起的攻击行为。例如,在某些情况下,接收端可能会伪造接收到的信息内容;相应地,在另一端可能出现发送方试图否认自己曾发送过的信息的情况。
数字签名
数字签名(Digital Signature)也被称为电子签名(Electronic Signature)。实际上,
数字签名是指发送方在经过自身私钥加密后的信息中加入自己的标识,
随后将标识与原始信息一同传递给接收方。
接收方通过解密发送方使用其公钥加密的标识来验证信息真实性,
只有当验证通过后才可确认接收到的信息无误且真实可靠。
数字签名的主要特点包括:
其一,
它具有极强的安全抗篡改能力;
其二,
能够有效防止信息被非法伪造;
其三,
确保了数据来源的真实可靠性;
其四,
提供了不可否认的有效证明;
最后,
它还具备独特的标识特性。
- 只有签署方个人可为信息创建其独特标识符。
- 所有人均可识别某人对其信息所附加的独特标记。
一个有效的数字标识符必须具备以下关键特性:首先需能可靠识别签署方身份及其签署时间;其次需能准确确认信息内容与签署方之间存在直接关联;再次须能经受第三方评估以防止信息来源及真实性存疑的问题。
- 所有人均可识别某人对其信息所附加的独特标记。
电子签名具有如下优点:
该系统设计旨在有助于确认信息内容的准确性。
此功能不仅能够有效识别发件人,并且确保了没有任何第三方能够冒充发件人进行通信。
此外,在这种机制下还能够防止发件人对消息 originator身份的否认。
签名方案
签名方案通常由3种不同的算法组成。
- 密钥对生成算法:签名者创建私密钥匙和公密集 keys。
- 签名算法:基于私密集 keys 与信息内容进行处理运算后形成信息摘要。
- 验证算法:利用公密集 keys、原始信息及其摘要进行操作运算以实现有效性确认。
直接数字签名
直接数字签名指的是仅涉及发送者与接收者的数字签名方案,在此情境中,则假设接收者已知发件人的公共密钥。采用对称加密算法对信息及其签名进行加密处理,在出现争议的情况下,则第三方能够访问相关信息及其电子签名。
然而,在实际应用中存在明显局限性:直接数字签名的主要缺陷体现在其方法的有效性依赖于发件人私钥的安全性程度。当发件人声称其私人密钥遗失时,则有可能使其否认曾发布过特定信息。
EIGamal 数字签名方案
此方案采用秘钥的方式进行加密与解密操作。其基本元素为素数a与q;其中$a为q的一个原根。
公钥和私钥对的产生
随机选取整数 X_{A} 满足条件 1 < X_{A} < q - 1。接着通过计算得到 Y_{A} = a^{X_{A}} \mod q。随后确定用户的私钥为 X_{A} ,而其公钥则由集合 \{q, a, Y_{A}\} 完成构造。
签名的产生
首先用户A计算hash值,m=H(M), m是满足0<=m<=q-1的整数。
-
选择随机整数K,使得
1<=K<=q-1 \\ gcd(K,q-1)=1也就是K与q-1互素。 -
计算S_1 = a^k \mod 1
-
计算K^{-1} \mod {(q-1)} K模q-1的逆。
-
计算S_2 = K^{-1} (m-X_AS_1) \mod (q-1)
-
得到签名对¥(S_1,S_2)¥
签名的验证
用户B通过一下计算验证
V_1 = a^m \mod q \\ V_2 = (Y_A)^{S_1}(S_1)^{S_2} \mod q
若V_1 = V_2通过认证。
Schnorr 数字签名方案
基本要素:素数模p,且p-1所包含的最大素数因子q, p-1 = 0 (\mod q)
公钥和私钥生成
- 取出满足特定条件的素数组合p, q, 其中q是p-1的一个素因子。
- 取出满足条件的整数值a, 其中$a^q ≡ 1 \mod p成立。
- 随机取出满足条件的整数值s, 并将其用作用户的私钥。
- 计算出v = a^{-s} \mod p, 将其定为用户的密钥。
签名生成
-
选择随机整数r,0
,并计算x= a^r \mod q -
在消息后附加x,计算HASH值
e=H(M||x) -
计算 y = (r+se) \mod q,则签名包括(e,y)
签名验证
x'=a^y v^e \mod p验证e=H(M||x')
证书和认证中心
电子签名文件是指,在公开钥匙上增加此公钥的电子签名这一标识项而颁发的电子签名文件。
若公钥持有者欲将其公钥变为可发布的状态,则需向发证机构提出申请。
发证机构审核并确认所提交公钥是否符合相关标准;基于该公钥计算对应的电子签名,并将其与该公钥整合后制作成电子签名文件。
从证书申请到使用,其详细步骤可以分为:
- 用户A向认证中心提出申请以获取自身公开钥匙的认证证书。
- 认证中心经确认公开钥匙真实有效后颁发相应认证证书。
- 认证中心将颁发的认证证书存入数据存储系统中。
- 用户从数据存储系统中成功获取认证证书副本。
- 用户使用认证证书对自身拥有的公开钥匙进行解密操作。
- 解密完成后对提取的私钥与原公开钥匙进行比对分析,
若两者一致则可确认持有者身份信息无误。
公共密钥基础设施(PKI),它被用来确保信息的完整性和一致性
