转https://www.cnblogs.com/WittPeng/p/8978737.html
第八章 数字签名技术
数字签名概述
基本概念
数字签名技术一般分为带仲裁和不带仲裁的两类。如果使用对称密钥进行数字签名,则必须使用仲裁者,非对称可以不带仲裁。
数字签名可以实现不可否认性和消息完整性认证(检验是否被篡改或伪造)
原理
(P,S,K,Sig,Ver),P:密钥生成算法,S:签名算法,K:验证算发,Sign,Verify
过程简图
数字签名的实现方案
| 基于RSA的签名方案 | 密钥生成算法 |
这里,先选择e再确定d的原因是:加密的重要性大于解密的重要性。 |
||
| 签名算法 |
|
|||
| 验证算法 |
|
|||
| 正确性 | |
|||
| 安全性 |
|
|||
| 基于离散对数的签名方案 | ElGamal签名体制 | 密钥生成算法 |
签名者的公钥是(p,g,y),私钥是x。 |
|
| 签名算法 | 签名者选取随机数k,计算r≡gk(mod p),s≡[h(m)-xr]K-1(mod(p-1)),签名为(r,s),其中h为安全的Hash函数 | |||
| 验证算法 | 计算h(m)后,验证yxrs≡gh(m)(mod p)是否成立 | |||
| 正确性 | |
|||
| 安全性 |
|
|||
| Schnorr签名体制 | 特点 | 签名速度较快,签名长度较短 | ||
| 密钥生成算法 |
|
|||
| 签名算法 |
签名者选择随机数k,1≤k≤q-1,然后进行如下计算: r≡gk(mod p) e=h(m,r) s≡(xe+k)(mod q) 签名为(e,s),其中h为安全的Hash函数。 |
|||
| 验证算法 | 签名接收者在收到消息m和签名(e,s)后,首先计算r1≡gsy-e(mod p) ,然后验证e=h(e,r1),如果等式成立则签名有效,否则无效。 | |||
| 正确性和安全性 |
安全性和ElGaml类似 |
|||
| DSA签名体制 | 密钥生成算法 |
|
||
| 签名算法 | 选取随机数k,r=(gkmod p)mod q,s≡[h(m)+xr]k-1(mod q),其中h是SHA1的特定Hash函数 | |||
| 验证算法 |
收到m和签名值(r,s)后,计算 w≡s-1(mod q) u1≡h(m)w(mod q) u2≡rw(mod q) v=(gu1yu2mod p)mod q 比较v和r,相同则签名有效,否则无效。 |
|||
| 正确性 | |
|||
| 安全性 | DSA是ElGamal的变形,因此安全性论述在此也同样使用。还有一点是签名算法计算的s正好为0时,会产生1除以0的情况,必须放弃这个签名。 | |||
| 三种签名体制的对比 |
|
|||
| 离散对数签名体制 |
|
|||
| 基于椭圆曲线的签名方案 | 密钥生成算法 |
选择E上一点G∈E,G的阶为满足安全要求的素数n,即nG=O。 选取一个随机数d∈[1,n-1],计算Q使得Q=dG,那么公钥为(n,Q),私钥为d。 |
||
| 签名算法 |
|
|||
| 验证算法 |
|
|||
| 正确性 |
|
|||
| 安全性 |
ECDSA安全性依赖于基于椭圆曲线的有限群上的离散对数难题,与RSA和有限域离散对数的数字签名相比,在相同的安全强度条件下,有如下特点 签名长度短、密钥存储空间小,特别是用于存储空间有限、带宽受限、要求高速实现的场合。 |
|||
特殊数字签名
- 代理签名
- 盲签名
- 群签名
- 不可否认签名
- 门限数字签名
- 多重数字签名
- ··· ··