什么是数字签名证书?证书如何生成?
在这个网络信息时代,各类信息满天飞,信息安全的重要性和必要性成为了人们关注的要点。信息安全有三个问题待解决:一是信息的保密性,即指信息在传输过程中不被泄密;二是信息的完整性,信息在传输过程中不被篡改;三是信息的有效性,即信息的使用者合法。这三个要素又被称为CIA Triad。
在日常生活中,个人签名,手写签名用的很多,即类似于个人的一个身份信息确认。计算机中,数字签名也是相同的含义:证明消息是某个特定的人,而不是随随便便一个人发送的(有效性);除此之外,数字签名还能证明消息没有被篡改(完整性)。
其实简单的说,数字签名(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是配对的,分别用于对证书的验证(解密)和生成(加密)。