数字签名应具有的特征:
- 签名可信
- 签名不可伪造
- 签名不可复制
- 签名的消息不可更改
- 签名不可抵赖
数字签名分类:
-
基于数学难题:
离散对数问题、大整数素数因子分解、
椭圆曲线离散对数、离散对数和素数因子分解 -
基于数字签名是否具有恢复特性:
不具有消息恢复特性的签名、
具有消息恢复特性 -
基于不同加密方法:
对称加密算法(Hash 函数、单向函数)、
公钥加密 -
基于签名用户分类:
单用户签名、
多用户签名(多重签名:有序多重数字签名、广播多重数字签名) -
基于签名人对消息是否可见:
盲签名 -
基于签名者对消息是否可以进行追踪:
弱盲签名方案、强盲签名方案 -
基于签名者是否接受别人委托签名:
普通数字签名、代理签名 -
基于签名是否有仲裁:
直接数字签名、仲裁数字签名
数字签名设计主要依靠方法
- 单向陷门函数
陷门信息作为签名人的私钥
基于的两条基本假设:
私钥安全,只有其拥有者才能获得以及产生数字签名的唯一途径是使用私钥 - 从身份识别协议通过非交互零知识证明的机制转化而来的知识签名
- 利用可交换的公钥加密直接构造
基于单向函数的一次性签名-La port一次签名方案
其方案满足唯密钥攻击条件下的存在性不可伪造
基于对称加密的一次性签名-Rabin
Rabin数字签名的安全性等价于大整数分解困难性
其容易受选择消息攻击
因为其要求被签消息必须是模n的平方剩余,否则需要映射后签名
RSA数字签名及安全性分析
其安全性基于大整数因子分解的困难性
该方案可视为基于可交换的加密方案
1·单一的使用该方案签名会存在:
2·唯密钥攻击条件下的存在性伪造
3·选择消息攻击下的选择性伪造
4·已知消息攻击条件下的存在性伪造
这是来自于签名函数的同态特性,即两个签名的乘积等于另一个消息的签名
常见的处理是:在签名之前,先对消息做hash 变换
Rabin、RSA签名和EIGamal签名设计思路的差异
前两者采用类似加密体制中的解密函数进行签名,用加密函数进行验证,签名只由一项构成。
后者构造了一种“等式关系”进行签名,该关系证明了签名者对私钥的拥有,其签名拥有两部分(s:签名部分,r:承诺部分)
Schnorr签名
该数字签名是典型的基于身份识别协议的转化形式,通过非交互零知识证明协议,证明了对签名私钥的拥有
数字签名标准-DSS
其安全性基于:一、乘法群Zp*上的离散对数问题,二、其q阶子群上的离散对数问题
已知的最好攻击是亚指数算法
EIGamal,Schnorr,DSA签名体制比较
基于身份识别协议的签名
一、Feige-Fiat-Shamir签名方案
其安全性基于模n平方根的困难性
Guillou-Quisquater方案
该方案基于陷门单向函数u=r^e mod n
正确性证明:
只需证明u=u’