概况
- 2004年8月28日,胡主席签署了 中华人名共和国电子签名法,2005年4月1日起施行
电子签名:是指数据电文中以电子形式所含,所附用于识别签名人身份并表明签名人认可的其中内容的数据
基本要求
- 完整性:内容在经过数字签名之后未经更改或篡改
- 不可伪造性:不能伪造他人的签名
- 不可否认:能证明签署内容的来源,签名人不得否认自己曾经签名
数字签名技术
没有加密功能
数字签名通常采用公钥技术
- 私钥签名
私钥自己拥有
- 公钥验证
数字签名系统
- 密钥生成算法
- 生成公私钥对(公钥公开,私钥保密)
- 签名算法
- 签名者用自己的私钥进行运算
- 签名验证算法
- 验证者用(签名者的)公钥进行验证(由于公钥公开,任何人都可以验证)
RSA签名方案(简化版)
-
密钥生成算法 用户用RSA密钥生成算法,产生私钥d,公钥是e和n
-
签名算法
用户(用自己的私钥d)对消息m签名进行签名 r = m^d mod n (m,r)是带签名的消息
-
签名算法验证
r^e mod n == m^d^e mod n
加密:公钥加密,私钥解密(接收者)
签名:私钥签名,公钥验证(签名者)
RSA签名方案(带hash)
- 密钥生成算法
用户用RSA密钥生成算法,产生私钥d,公钥是e和n
- 签名算法
用户(用自己的私钥d)对消息m签名进行签名
r = H(m)^d mod n
(H(m),r)是带签名的消息
- 签名算法验证
r^e mod n == [H(m)^d mod n]^e mod n == H(m)^e^d mod n
ElGamal 加密
密钥生成算法
签名过程
用户随机选取k:1<=x<=p-1 (k保密),计算
r = g^k mod p ,s = (m-xr)*k^(-1) (mod p-1)
(r,s)为用户对m的签名,即(m,(r,s))为带签名的文件
验证过程
验证者收到签名(m,(r,s))后,验证等式是否成立
.....
Schnorr 数字签名算法
schnorr数字签名方式ElGamal的一种变形