关于数字签名我们要掌握哪些方面的知识呢,主要是数字签名方案的种类和之间的异同。
- ElGamal数字签名方案
- Schnorr数字签名方案
- NIST数字签名方案
- 椭圆曲线数字签名方案
- RSA-PSS数字签名方案
其中 椭圆曲线数字签名算法ECDSA和RSA概率签名方案RSA-PSS已经被定为标准的数字签名方案。
消息认证可以保护信息交换的双方不受第三方的攻击,但是如果通信双方之间产生矛盾就不好解决了,比如,
接收方可以伪造一条消息并称该消息来自发送方,但其实发送方并没有发送给这条消息,比如在支付宝、微信转账的例子里,
还有一种是发送方不承认之前他发过消息给接收方,但其实真发过,这种情况在电子支付、邮件收发也有很多例子。
这个时候就要用到数字签名了,数字签名特征:
- 它必须能验证签名者、签名日期、时间
- 它必须能认证被签的消息内容
- 签名应该由第三方仲裁,以便解决争执
攻击和伪造
那么数字签名算法也会遭受攻击么?当然,让我们一起看看:
下面攻击危害程度由高到低排名:(C是攻击者、A是被攻击者(也就签名的那一方))
- 唯秘钥攻击:C仅知道A的公钥
- 已知消息攻击:C掌握一些消息以及对应的合法签名
- 一般选择消息攻击:在攻击A的签名方案之前,C首先选择一些消息,而无需知道A的公钥,然而C对于这些选择的消息从A处获得合法签名,该攻击是一般性的,因为与A的公钥无关,同样的攻击可用于其他用户
- 定向选择消息攻击
- 适应性选择消息攻击
- 完全破译:C判断出A的私钥
- 通用伪造:C掌握一个有效的签名算法,使得对于任意消息都能够等价地构造出合法签名
- 选择伪造:C对于所选特定消息能够伪造出合法签名
- 存在性伪造
Reference:《Encryptography and Networking Security》6th William Stalling