PKI:公钥基础设施
- 作用通过加密技术和数字签名保证信息的安全
- 组成:公钥加密技术,数字证书,CA(证书颁发机构),RA(注册机构)
- 应用:SSL/HTTPS,IPsecVPN…
信息安全的三要素:机密性,完整性,身份验证
1.公钥加密技术
eg:x+8=y,x为原文,y为密文,8为密钥,整个公式称为加密算法。发送一个密文,需要使用密钥将其解密得到原文。
①:对称加密:加密跟解密用同一个密钥的称为对称加密
对称加密算法:DES,DES3,AES…
②:非对称加密:加密跟解密用不同的密钥
非对称加密算法RSA,DH…
非对称加密中,密钥有两个,一个公钥与一个私钥。由公钥加密的内容只能由私钥解密,同样,用私钥加密的内容只能用公钥解密。公钥与私钥不可互推。通常,会把公钥发布出去供别人使用,私钥由自己保存。
非对称加密过程:
比如,现在由大飞跟小飞两台机器要进行通信传输数据。
由于公钥是公开的,我们此时 “假设大飞跟小飞已经得到了对方的公钥”。
那么就会进行如下步骤:
- 过程1
大飞用小飞的公钥进行数据加密,只有小飞使用自己的私钥可以解密数据。此时实现了数据三要素之一的机密性,确实只有小飞能解密数据。
那么问题来了,如果这个数据是不完整的呢?数据中间的某个部分可能被删除或者修改,虽然黑客不能解密数据,但是可以篡改数据,然后发送一个不完整的数据包给小飞。但是小飞并不知道数据被修改过。
过程2:
为了保证数据的完整性,我们可以采用如下的步骤:
还是在已经交换公钥的前提下,大飞为了把数据完整且机密的发送给小飞。大飞首先使用小飞的公钥加密数据,然后将加密后的密文进行Hash,得出一串哈希值,然后再使用大飞自己的私钥对这串哈希值进行加密,最后把加密过的哈希值与加密密文一起发送给小飞。
小飞收到数据之后,为了确保收到完整的信息,小飞首先用大飞的公钥解密哈希值密文,得出原哈希值,然后小飞自己使用哈希算法对message密文进行哈希,如果得到的哈希值与解密出来的哈希值一致,则说明信message是完整的。最后用小飞的私钥解密即可得到message。这个过程同时保证了信息的机密性与完整性。
- 过程3
那么问题来了,前两个过程我们都是在已经交换公钥的前提下。
那如果我们没有对方的公钥呢?互联网上这么多机器,我们不可能保存所有机器的公钥。
那如果我们在双方开始通信时互相交换公钥可不可以呢?
其实,这样也不行。因为我们在交换公钥的过程中,可能会被黑客攻击。
如上图所示:黑客可以作为中间人进行攻击。如大飞本来是要给小飞发送123公钥,但是此信息被黑客劫持了,黑客自己生成一对公钥与私钥,告诉小飞说我是大飞,我的公钥是xyz。小飞无法辨别此信息的真假就会把黑客当成大飞。所以这样是不安全的
那么怎样才能解决这种情况呢?
此时就需要用到CA(证书颁发机构)
- 过程4:
如上图所示:
大飞为了让别人相信自己就是大飞,大飞先到CA去注册一个证书。CA是一个权威机构,类似与公证处。大飞向CA申请CA证书,证书里面包含大飞的一些信息,我们称这些信息为摘要。光有信息不行啊,为了让别人认可这个证书,CA需要在这个证书上进行签名,类似于公正处盖章。
- 签名的过程:CA把大飞的摘要进行哈希,得到一串哈希值,然后用自己的私钥对这串哈希值进行加密,得到哈希值密文,将此密文写入证书当中,最后把证书下发给大飞。
大飞有了CA证书之后,在与小飞通信时会先把证书发送给小飞。小飞收到证书后,那他得看看这证书时真的还是假的啊。然后小飞用CA的公钥解密证书签名,对证书摘要进行哈希,如果哈希得到的结果与解密签名的结果是一样的 ,则说明该证书没有被篡改,那证书中的公钥就是来自大飞的公钥。
那大飞就想,那既然没问题,你也有我的公钥,我就直接用我的私钥加密message,同样进行哈希和再加密,最后把数据发送给小飞。小飞此时就可以直接用大飞的公钥解密数据。
至此,非对称加密过程就完成了。
PKI(Public Key Infrastructure)是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。基础是加密技术,核心是证书服务。
当然,这篇文章只讨论了非对称加密的过程,忽略了其他密匙管理与注册的过程。如有错误,还请指出。