数字签名证书是什么?如何生成?
在网络信息时代,人们越来越关注信息安全问题。如何保障信息在传输过程中不被泄密?如何保障信息在传输过程中不被篡改?如何验证信息的使用者合法?毫无疑问,这三个问题的解决都需要通过技术手段来实现。今天我们要了解的就是其中一种——数字签名证书。
数字签名证书同手写签名有类似的功能,它们都是对个人身份信息的确认。但是,在互联网世界,数字签名还能确保信息的完整性,证明消息没有被篡改。
数字签名证书是什么?
数字签名证书是对公钥进行数字签名,对公钥合法性提供证明的技术。简单来说,数字签名(digital signature)是公钥密码的逆应用:用私钥加密消息,用公钥解密消息。
数字签名证书如何发挥作用?我们通过以下场景来理解:
当我们对签名进行验证时,需要用到公钥。如果公钥是假的,则验证无从谈起。
数字签名证书包含公钥、公钥的数字签名、公钥拥有者的信息。若数字签名证书验证成功,则表示该公钥是合法可信的。
那么下面又有另一个问题:验证证书中的数字签名需要另一个公钥,那这个公钥的合法性又该如何保证?
这个时候就需要一个可信的机构来颁发证书和提供公钥,只要是它提供的公钥,我们就相信是合法的。
这种机构叫做认证机构(Certification Authority, CA)。CA分为国际性组织和政府设立的组织和通过提供认证服务来盈利的组织。CA能够生成公钥并认定“公钥确实属于此人”。
如何生成数字签名证书?
1. 服务器将公钥A给CA(公钥是服务器的)
2. CA用自己的私钥B给公钥A加密,生成数字签名A
3. CA把公钥A,数字签名A,附加一些服务器信息整合在一起,生成证书,发回给服务器。
注:私钥B是用于加密公钥A的,私钥B和公钥A并不是配对的。
如何验证数字签名证书?
1. 客户端得到证书
2. 客户端得到证书的公钥B(通过CA或其它途径)
3. 客户端用公钥B对证书中的数字签名解密,得到哈希值
4. 客户端对公钥进行哈希值计算
5. 两个哈希值对比,如果相同,则证书合法。
注:公钥B和上述的私钥B是配对的,分别用于对证书的验证(解密)和生成(加密)。