来源:法大大发布时间:2022-04-13 15:38:51
什么是数字签名?
通俗理解,数字签名相当于现实世界中的签字盖章功能在计算机世界中进行实现的技术。数字签名可以识别篡改、伪装、防止抵赖。
在数字签名中,有 2 种行为:
生成消息签名的行为
验证消息签名的行为
生成消息签名的人是由消息发送者完成的,也称为“对消息签名”。生成签名就是根据消息内容计算数字签名的值。
验证数字签名的人是第三方。第三方验证消息的来源是否属于发送者。验证结果可以是成功,也可以是失败。
数字签名对签名密钥和验证密钥进行了区分,使用验证密钥是无法生成签名的。签名密钥只能由签名人持有,而验证密钥则是任何需要验证签名的人都可以持有。
私钥 | 公钥 | |
公钥密钥 | 接收者解密时使用 | 发送者加密时使用 |
数字签名 | 签名者生成签名时使用 | 验证者验证签名时使用 |
谁持有密钥? | 个人持有 | 只要需要,任何人都可以持有 |
严格的来说,RSA 算法中公钥加密和数字签名正好是完全相反的关系,但是在其他公钥算法中有可能和数字签名不是完全相反的关系。
在公钥算法中,公钥用来加密,私钥用来解密。
在数字签名中,公钥用来解密(验证签名),私钥用来加密(生成签名)。
数字签名的应用
1. 安全信息公告
信息安全组织会在网站上发布一些关于安全漏洞的警告。由于这些信息需要被更多的人知道,所以没有必要对消息进行加密。但是需要防止有人伪装该组织发布虚假信息,这个时候只需要加上数字签名即可。这种对明文消息所施加的签名,一般称为明文签名(clearsign)。
2. 软件下载
为了保证下载软件的安全,不是恶意的病毒,软件作者会对软件加上数字签名。用户在下载完成以后,验证数字签名就能识别出下载的是不是被篡改过的软件。
3. 公钥证书
验证数字签名的时候需要合法的公钥,但是如何才能知道自己拿到的公钥是合法的呢?这个时候就需要把公钥作为信息,对它加上数字签名,得到公钥证书。关于证书的问题再下一篇文章里面详细分析。
4. SSL/TLS
SSL/TLS 在认证服务器身份的时候会使用服务器证书,服务器证书就是加上了数字签名的服务器公钥。