SSL/TLS

SSL/TLS

TLS原名是SSL
HTTPS=HTTP+SSL/TLS

SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
在这里插入图片描述

SSL协议实现的安全机制包含:

  • 传输数据的加密:利用对称密钥算法和非对称加密算法对传输的数据进行加密。——混合两种加密算法
  • 身份验证机制:基于证书利用数字签名方法对server和client进行身份验证,当中client的身份验证是可选的。——摘要算法,非对称加密算法
  • 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。——摘要算法

SSL用到的三种算法实现以上三种安全机制

摘要算法

也被叫做哈希(hash)算法,散列算法

实现数据签名,发现数据有无被篡改,保证数据完整性等功能,由于其不可逆性,常被用作敏感信息的加密。

在这里插入图片描述
把一个数据通过摘要算法生成一个“摘要”字符串,把这个“摘要”字符串和其原本信息的字符串进行加密后再传输,对方收到后,解密,得到“摘要”字符串及此字符串原来的信息,此时对此原来的信息进行摘要算法,得出“摘要”字符串2,比较两个摘要字符串看是否一致。

对称加密算法

文件加密和解密使用相同的密钥加密

使用密钥a对原文进行加密–密文
使用密钥a对密文进行解密–原文

非对称加密算法

加密和解密使用的是两个不同的密钥
非对称加密算法需要两个密钥:公开密钥(可以公开给任何人使用)和私有密钥(必须严格保密)
私钥不参与网络传输,一直放在那里,可以由网站保管私钥,在网上任意分发公钥,你想要向这个网站传输一些信息,只要用公钥加密就可以,而加密后的密文只能由该公钥对应的那个私钥才能解密,黑客因为没有这个私钥,无法破解密文。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但公钥无法反推导出私钥。所以安全性较高。

总结

  • 非对称加密安全性更高,适合少量信息加密
  • 对称加密算法比较简单,故比较快速高效,适合大量信息进行加密

例子

服务器里有了公钥私钥,但私钥是不参与网络传输的,公钥可以随意分发,浏览器可以通过请求拿到公钥,然后浏览器通过公钥来加密,只能由服务器中与之对应的那个私钥才能来解密(只有服务器有私钥),所以浏览器向服务器发送的数据,即使被别人截取到,它没有对应的那个私钥,则无法解密。

而在服务器端发送的数据用私钥来加密,也只能由浏览器对应的那个公钥来解密,不过这个公钥其实大家都可以获取,所以是有很多人有这个公钥的,因此通过私钥来加密其实是不安全的。

从上面分析可知,仅用非对称加密,浏览器向服务端发送的数据是安全的(浏览器通过公钥加密),但服务端向浏览器发送的数据是不安全的(服务端通过私钥加密)

如何解决上面那个问题?
混合使用对称加密和非对称加密

我们可以在浏览器再生成一个对称加密算法的秘钥(此时浏览器有对称算法的密钥,也有非对称算法的公钥),然后通过非对称算法的公钥,将我们对称算法的密钥进行加密,传输给服务端(由上面可知这个方向是安全的),服务器端通过私钥解密,可以拿到对称算法的密钥,然后服务端发送给浏览器时,就可以利用这个秘钥来加密传输到浏览器,实现该方向的安全传输(解决了非对称加密服务端想浏览器传输数据不安全的问题)

TLS里面混合使用这两种加密方式,两者互相取长补短,既能够高效加密解密,又能安全地交换秘钥

在这里插入图片描述
SSL建立过程

三次握手
协商算法(客户端把自己支持的加密套件列表发给服务端)
服务器选择一个加密套件,并发送公钥数字证书给客户端
客户端验证证书后生成对称密钥,利用公钥加密后发送给服务端

使用对称加密算法进行加密双向传输

此时还有一个问题,如果在三次握手拿服务器的ip时,被截获了dns信息,将dns的ip地址指到自己的服务器,这样以后数据都传到别的服务器去了。
如何确定我们访问的服务器是我们想要的——公钥数字证书

在这里插入图片描述
在这里插入图片描述
信息摘要A是用CA签名时使用的hash函数计算得出
信息摘要B是用CA给我们的公钥来解密服务端返回给我们的数字签名数据(这个服务端可能是黑客的那端)

如果信息摘要A和信息摘要B一致,则可以确认证书是合法的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值