一.对称加密
对称加密方法是指发送方和接收方在通信前,先协定一把同样的私钥,然后用同一把私钥进行数据的加密和解密。
常用的对称加密算法有DES、RC、AES等。
对称加密的优点:算法公开、计算量小、加密更快,通常用于加密大量数据。
对称加密的缺点:
- 每个通信双方需要一把密钥,n个通信方就需要n*(n-1)把钥匙(每个发送方对其他每个接收方都有一个密钥),所以钥匙数量非常多,管理成本过大
- 两个通信方使用同一把钥匙,只要有一方丢失就会造成数据被解密、泄露
- 缺少像非对称加密一样的数字签名来认证发送方身份和内容篡改的功能(只有一把钥匙,丢失了就可以篡改,而非对称则需要两把,而且是双方各一对,一对加密,一对认证,下面会说)
二.非对称加密
非对称加密是指发送方和接收方需要使用两把不同的钥匙进行数据的加密解密通信,而这两把钥匙是一一对应的,一个称作公钥,一个称作私钥。
一把公钥对数据加密为密文,只有对应的私钥才能将密文解密为原始数据。
一个通信方有一对公钥私钥,公钥是可以给任意通信方的,而私钥需要自己保存好。
常用的非对称加密算法有RSA、背包算法、ECC(椭圆曲线加密算法)。
非对称加密的优点:加密解密用不同密钥更安全、不需要事先同步密钥。
非对称加密的缺点:加密和解密速度慢,只适合对少量数据进行加密。
1.数据加密
发送方事先知道了接收方的公钥,使用公钥对数据加密为密文,然后传送给接收方,接收方接收密文后,用自己的私钥将密文解密为原始数据,即使传送过程中被拦截,拦截方也无法破解密文,因为其不知道接收方的私钥。
2.签名认证
非对称加密还有一个特点就是可以签名认证,即确认发送方信息并防止传输内容被篡改:
- 发送方首先将原始传输内容提取摘要作为内容的唯一标识,摘要及用算法提取出一段内容中的特定序列,不同的内容会有不同的摘要,常用的摘要算法有MD5、SHA1等
- 然后使用发送方的私钥将该摘要加密,作为数字签名并连同发送方的公钥一起发送给接收方
- 接收方收到信息后,使用发送方的公钥将数字签名解密得到原始摘要;并且再使用相同算法算出实际数据的摘要,将两个摘要做对比,相等则认为内容是真实发送方发送的且没有被篡改
如果两个摘要不等,为什么说明内容不是真实发送方或者可能被篡改了呢?
- 如果传输中信息被拦截并被修改,则接收方接收后的真实内容的摘要肯定与解密出来的原始摘要不同
- 即使拦截方算出了修改后的内容的摘要,由于不知道发送方的私钥,无法构造出该摘要的正确数字签名;如果随便使用一个私钥加密摘要生成签名,接收方使用发送方的公钥解密,肯定也是错误的摘要,还是不相等
3.公钥安全性
上面无论是数据加密还是签名认证,都提到了一个步骤,就是将一方的公钥要传递到另一方,另一方才能进行加密或解密,那么问题来了,如果拦截方将真实的公钥给换了呢?
- 如果是接收方发送的公钥被修改传递到客户端,那么客户端就会用这个错误的公钥进行加密,传递数据时就会被拦截方用其对应的错误私钥解密,造成数据泄露,也就是发送方把坏人当成了好人
- 如果是发送方将公钥发给接收方用于签名认证时被拦截,拦截方就可以修改内容,重新计算摘要,并用自己的私钥生成数字签名,并将公钥替换成自己,那么接收方肯定认为是正确的了,即接收方把坏人当成了好人
于是乎,公钥的安全性问题就出来了,如何保证公钥是可信任的呢?人们想出了借助第三方认证机构来保证合法性,也就是CA机构(Certificate Authority)。
- 每个用户去CA机构申请公钥,大部分是需要付费的
- CA机构为用户颁布一个数字证书,包含用户的基本信息、公钥等信息,数字证书与用户是绑定关系的
- 证书会被该机构的私钥加密,即用户的公钥不是直接暴露的或者易从证书中获取的,需要机构的公钥去解密获取
- 设备(手机、浏览器等)出厂时都会预安装一些合法CA机构的证书列表,当设备收到数字证书时,会进行合法性校验,是合法CA机构颁发的证书时,就通过认证,使用公钥解密并取出真实的用户公钥
- 合法CA机构签名的证书,就认为里面的用户公钥是真实的,因为即使拦截方破解了证书替换了用户公钥,也会因为没有机构为证书签名时用的私钥而无法伪造签名,所以只要保证CA机构的信息不被泄露就是安全的(这也说明了一些掌握了这些机构信息的人也是可以搞一些事情的…)
也就是说,公钥会以加密的数字证书的方式传递,防止破解并保证安全性,如上图所示,传递的公钥其实是包含在Certificate证书里的,而Certificate证书就是加密的数字证书。