http如何保证安全

简介: 系列

"噔噔噔......"传来一阵敲门声,把我从睡梦中惊醒了。

朦胧间听到有人在说活"提莫,在家不?”

“来了来了”,推门一看,原来是“李青”。

李青:自称武术大师,所有因他安静冥想的举动而掉以轻心敌人都将会品尝他燃烧的拳头和炽烈的回旋踢,人送外号“盲僧”。
盲僧

HTTPS


112
提莫:HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分使用SSL(安全套阶层)和TLS(安全传输层协议)协议代替而已。

通常,HTTP是直接和TCP通信的。如果你用SSL,就变成先和SSL通信,SSL再和TCP通信了。简单来说,与SSL组合使用的HTTP被称为HTTPS(超文本传输安全协议)或HTTP over SSL。

你用了SSL,HTTP就有了HTTPS的加密、证书和完整性保护这些功能了。SSL是独立于HTTP的协议,所以不光是HTTP协议,其它运行在应用层的SMTP和Telnet等协议也要配合SSL协议的使用。可以说SSL是世界上应用最为广泛的网络安全技术。
113
114
步骤1:客户端通过发Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(所使用的加密算法及密钥长度等)。

步骤2:服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本和加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛出来的。

步骤3:之后服务器发送Certificate报文。报文中包含公开密钥证书。

步骤4:最后服务器发Server Hello Done报文通知客户端,最初阶段的SSL握手协商就结束了。

步骤5:SSL第一次握手结束之后,客户端以Client Key Exchange报文最为回应。报文中包含通信加密中使用的一种被称作Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。

步骤6:接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。

步骤7:客户端发送Finished报文。该报文包含连接至今全部报文的整体效验值。这次握手协商是否能够成功,是以服务器是否能够正确解密该报文作为判定标准。

步骤8:服务器同样发送Change Cipher Spec报文。

步骤9:服务器同样发送Finished报文

步骤10:服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成,当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。

步骤11:应用层协议通信,即发送HTTP响应。

步骤12:最后由客户端断开连接。断开连接时,发送close_notify报文。上图做了一些省略,这步之后再发送TCP FIN报文来关闭与TCP的通信。

在以上流程中,应用层发送数据时会附加一种叫做MAC(Message Authentication Code)的报文摘要。MAC能够知道报文是否遭到篡改,从而保护报文的完整性。
1
2
3
4
提莫:每次发送真实数据之前,服务器先生成一把密钥,接着把密钥传给客户端。后面服务器给客户端发送真实数据的时候,会拿这把密钥对数据加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。当然,如果客户端要给服务器发数据,也是用这把密钥来加密,这里为了方便,我就用单方向传输的形式了。如图: 5
31
32
33
34
盲僧:你看服务器用明文方式传密钥给客户端,然后密钥被中间人给偷了,那么在之后服务器和客户端的加密传输过程中,中间人也可以用他偷的密钥来解密啊。这样的话,加密的数据在中间人看来和明文那没啥两样了啊。
35
36
37
38
39
40
提莫:这种方法是让客户端和服务器都拥有两把钥匙,一把钥匙是公开的(全世界都知道都没关系),我们称之为公钥;另一把钥匙则是保密的(只有自己本人才知道),我们称之为私钥。当然,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。

这样,服务器在给客户端传数据的过程中,可以用客户端明文给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。客户端给服务器发送数据的时候也可以采取这样的方式。这样能保持数据的安全传输了。上图:
41
6
8
7
9
1011
12
提莫:就是对称加密+非对称加密这两种方式,我们可以用非对称加密的方式来传输对称加密过程中的密钥,之后我们就可以采取对称加密的方式来传输数据了呀。具体是这样子的:

服务器用明文的方式给客户端发送自己的公钥,客户端收到公钥之后,会生成一把密钥(对称加密用的),然后用服务器的公钥对这把密钥进行加密,接着再把密钥传给服务器,服务器收到后进行解密,最后服务器就可以安全着得到这把密钥了,而客户端也有 同样一把的密钥,他们就可以进行对称加密了,是不是很神奇呀,大师。

13
14
15
盲僧:服务器用明文的方式给客户端传输公钥的时候,中间人截取了这本属于服务器的公钥,并且把中间人自己的公钥冒充服务器的公钥传给了客户端。

之后客户端就会用中间人的公钥来加密自己生成的密钥。然后把被加密的密钥再传给服务器,这个时候中间人又把密钥给截取了,中间人用自己的私钥对这把被加密的密钥进行解密,解密后中间人就可以获得这把密钥了。

最后中间人再对这把密钥用刚才服务器的公钥进行加密,再发给服务器。如图:
16
17
18
19
20
21

数字证书上场

在刚才的讲解中,我们知道,之所以非对称加密会不安全,是因为客户端不知道这把公钥是不是服务器的,因此,我们需要找到一种策略来证明这把公钥就是服务器的,而不是别人冒充的。

解决这个问题的方式就是使用数字证书,具体是这样的:

我们需要找到一个拥有公信力、大家都认可的认证中心(CA)。

服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要。如图:
26
为了防止信息摘要被人调换,服务器还会用CA提供的私钥对信息摘要进行加密来形成数字签名。如图:
27
并且,最后还会把原来没Hash算法之前的个人信息以及公钥和数字签名合并在一起,形成数字证书。如图:
28
当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则那就不是。如图:
29
22
23
其实,某些服务器一开始就向认证中心申请了这些证书了(有没有看过没有证书的网站在地址栏会被标出警告?),而客户端是,也会内置这些证书。如图:
42
当客户端收到服务器传输过来的数据数字证书时,就会在内置的证书列表里,查看是否有解开该数字证书的公钥,如果有则...,如果没有则....

24
25

相关文章
|
2月前
|
安全 前端开发 网络协议
|
2月前
|
安全 搜索推荐 前端开发
揭秘 HTTPS 加密协议:保护你的网上安全之道
揭秘 HTTPS 加密协议:保护你的网上安全之道
379 0
|
7天前
|
安全 网络安全 数据安全/隐私保护
https比http安全在哪
因此,HTTPS在保护用户隐私、防止数据泄露等方面具有很大的优势,是现代网络安全的重要组成部分。
8 0
|
11天前
|
安全 网络安全 数据安全/隐私保护
深入解析HTTPS:安全机制全方位剖析
深入解析HTTPS:安全机制全方位剖析
|
11天前
|
安全 网络协议 网络安全
【网络安全】HTTPS为什么比较安全
【网络安全】HTTPS为什么比较安全
|
2月前
|
Web App开发 缓存 前端开发
《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。
41 2
|
2月前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-上篇(详解教程)
【5月更文挑战第7天】本文介绍了如何在Java+Selenium自动化测试中处理浏览器对不信任证书的处理方法,特别是针对IE、Chrome和Firefox浏览器。在某些情况下,访问HTTPS网站时会遇到证书不可信的警告,但可以通过编程方式跳过这些警告。
33 1
|
2月前
|
安全 算法 网络协议
HTTPS:如何确保您的网站数据传输安全?
HTTPS:如何确保您的网站数据传输安全?
|
2月前
|
缓存 安全 应用服务中间件
蓝易云 - Nginx的HTTPS部署与安全性能优化教程
以上就是在Nginx上部署HTTPS并进行安全性能优化的基本步骤。需要注意的是,这些步骤可能会根据您的具体需求和环境有所不同。
33 0
|
2月前
|
域名解析 网络协议 安全
【域名解析DNS专栏】DNS-over-TLS与DNS-over-HTTPS:安全升级新标准
【5月更文挑战第26天】随着网络技术的发展,DNS协议面临安全挑战,DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH) 作为解决方案出现,旨在通过加密增强隐私和安全。DoT使用TLS封装DNS查询,防止流量被窥探或篡改;DoH则利用HTTPS隐藏DNS查询。实施DoT需在客户端和服务器间建立TLS连接,DoH需DNS服务器支持HTTPS接口。这两种技术为网络安全提供支持,未来有望更广泛部署,提升网络环境的安全性。

热门文章

最新文章