《图解密码技术》第九章
- 明文签名:clearsign
数字签名的应用实例
安全信息公告
明文签名:对明文消息所施加的签名
安全信息方面的组织在其网站发布相关安全漏洞警告时,对文件施加数字签名
软件下载
判断下载的软件是否可以安全运行,软件作者对软件加上数字签名,下载后验证数字签名,就可以知道软件是否被攻击者篡改
e.g.一种带签名的Applet的软件,安卓系统无法安装没有数字签名的应用软件
公钥证书
公钥证书:对公钥施加数字签名
验证数字签名时要用到合法公钥,将公钥当做消息,对他加上数字签名,就可以知道公钥是否合法时
SSL/TLS
SSL/TLS在验证服务器身份是否合法时,会使用服务器证书,它就是加上了数字签名的服务器公钥.
通过RSA实现数字签名
用RSA生成/验证签名
在RSA中,被签名的都是以数字形式表示的,先将文本编码成数字,RSA生成签名的过程的公式描述:
其他的数字签名
- ElGamal:利用mod N中求离散对数的难度,可用于公钥密码和数字签名,但密码软集GnuPG中的ElGamal仅用于公钥密码
- DSA:只能被用于数字签名
- ECDSA:利用椭圆曲线密码来实现数字签名算法
- Rabin:利用了mod N中求平方根的困难度,可用于公钥密码和数字签名
对数字签名的攻击
中间人攻击
对单向散列函数的攻击
数字签名中所使用的单向散列函数必须具有抗碰撞性
利用数字签名攻击公钥密码
请对消息签名=请解密消息,巧妙利用数字签名来破译密文
对于这样的攻击:
- 不要直接对消息签名,对散列值签名比较安全
- 公钥密码和数字签名最好使用不同的密钥对
- 绝对不要对意思不清楚的密钥对进行签名
潜在伪造
潜在伪造:如果攻击者能够对无意义的消息生成合法的数字签名(能通过校验),这就是对签名算法的一种潜在威胁
随机序列S用RSA的公钥加密生成密文M,则S是M的合法数字签名,即对数字签名的潜在伪造也可以实现
RSA-PSS是对消息的散列值进行签名,为了提高安全性,在计算散列值的时候还要对消息加盐salt
其他攻击
针对公钥密码的攻击方法大多都可以被用于攻击数字签名
各种密码技术的对比
混合密码系统与对散列值签名:
- 对称密码的密钥是机密性的精华,单向散列函数的散列值是完整性的精华
数字签名无法解决的问题
使用数字签名的前提:公钥必须属于真正的发送者
为了确认自己得到的公钥是否合法,需要用到证书,
- 证书:将公钥当作一条消息,由一个可靠的第三方对其签名后所得到的公钥
###