一文看懂https如何保证数据传输的安全性的

通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的

1681c216df6e1901?w=656&h=125&f=png&s=10973

1681c2253e601ffb?w=624&h=388&f=png&s=128281

1681c227333d60f8?w=651&h=399&f=png&s=137269

1681c229a2555d9e?w=647&h=399&f=png&s=139717

对称加密

1681c230b082db7c?w=624&h=414&f=png&s=145008

一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。如图:

1681c23c27137dc6?w=886&h=467&f=png&s=101700

当然,如果客户端要给服务器发送数据,也是采用这把密钥来加密,这里为了方便,我采用单方向传输的形式

1681c244096f7b05?w=574&h=383&f=png&s=134295

1681c246fb34b601?w=652&h=374&f=png&s=135064

1681c24a64271217?w=613&h=396&f=png&s=130792

1681c24be9a26312?w=627&h=376&f=png&s=132287

小白:那万一密钥在传输的过程中被别人截取了怎么吧?

例如:

假如服务器用明文的方式传输密钥给客户端,然后密钥被中间人给捕获了,那么在之后服务器和客户端的加密传输过程中,中间人也可以用他捕获的密钥进行解密。这样的话,加密的数据在中间人看来和明文没啥两样

1681c252e8c99f8e?w=628&h=402&f=png&s=142892

1681c2546f2ac33a?w=621&h=350&f=png&s=125973

1681c25688e8f144?w=610&h=394&f=png&s=131115

1681c2581186edf2?w=536&h=393&f=png&s=131538

1681c259f2267eb7?w=599&h=384&f=png&s=122232

非对称加密

1681c25ffdeca5a1?w=593&h=435&f=png&s=132924

一禅:这种方法就是,让客户端和服务器都拥有两把钥匙,一把钥匙是公开的(全世界知道都没关系),我们称之为公钥;另一把钥匙则是保密的(只有自己本人才知道),我们称之为私钥。这且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密

这样,服务器在给客户端传输数据的过程中,可以用客户端明文给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。客户端给服务器发送数据的时候也一样采取这样的方式。这样就能保持数据的安全传输了。画个图理解一下:

1681c2676fea9221?w=878&h=460&f=png&s=105866

1681c30f106c9584?w=622&h=377&f=png&s=125630

1681c30d8ea98a71?w=609&h=408&f=png&s=133579

1681c31103a6aca8?w=600&h=452&f=png&s=154354

1681c3136869c082?w=677&h=382&f=png&s=129845

1681c314f4d6da04?w=639&h=411&f=png&s=140948

1681c31809ed2d41?w=675&h=433&f=png&s=163707

1681c3197404578b?w=621&h=422&f=png&s=123730

一禅:处理方式就是结合 对称加密+非对称加密这两种方式,我们可以用非对称加密的方式来传输对称加密过程中的密钥,之后我们就可以采取对称加密的方式来传输数据了。具体是这样子的:

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

1681c320ab7063a5?w=623&h=412&f=png&s=137639

1681c3222c4b3d7a?w=617&h=368&f=png&s=146871

1681c32443726d2f?w=658&h=416&f=png&s=149698

小白:例如:

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

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

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

1681c32b3e7ce41b?w=1080&h=218&f=png&s=115988

毫无疑问,在这个过程中,中间人获取了对称加密中的密钥,在之后服务器和客户端的对称加密传输中,这些加密的数据对中间人来说,和明文没啥区别。

1681c32e95a92682?w=672&h=402&f=png&s=158375

1681c3300f34bfac?w=645&h=444&f=png&s=171347

1681c332234e6e85?w=631&h=396&f=png&s=146685

1681c34222206839?w=635&h=385&f=png&s=141060

1681c3367355e07d?w=664&h=377&f=png&s=145783

1681c343ec7af93d?w=669&h=389&f=png&s=146783

数字证书登场

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

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

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

服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要。如图

1681c34c5c8886b2?w=770&h=237&f=png&s=49645

为了防止信息摘要被人调换,服务器还会用CA提供的私钥对信息摘要进行加密来形成数字签名。如图:

1681c35008254709?w=1080&h=222&f=png&s=64414

并且,最后还会把原来没Hash算法之前的个人信息以及公钥 和 数字签名合并在一起,形成数字证书。如图

1681c35a44d24000?w=1080&h=517&f=png&s=120823

当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。如图:

1681c363e1c78bd8?w=989&h=344&f=png&s=96675

这样,就可以保证服务器的公钥安全着交给客户端了。

1681c3674c12cf5e?w=632&h=439&f=png&s=158128

1681c368c9885790?w=676&h=423&f=png&s=154252

其实,(有些)服务器一开始就向认证中心申请了这些证书了(有没有看过没有证书的网站在地址栏会被标出警告?),而客户端是,也会内置这些证书。如图:

1681c36baa4404da?w=1080&h=554&f=png&s=421206

当客户端收到服务器传输过来的数据数字证书时,就会在内置的证书列表里,查看是否有解开该数字证书的公钥,如果有则...,如果没有则....

1681c36e9e2e5933?w=651&h=437&f=png&s=127718

1681c3701b73e75d?w=638&h=417&f=png&s=125661

有收获?不妨点个赞,让更多的人看到这篇文章!

文章首发于我的公众号「苦逼的码农」,更多精彩文章可以关注下我哦。

1681c382cd3b44d2?w=430&h=430&f=png&s=58558

转载于:https://www.cnblogs.com/kubidemanong/p/9390021.html

对称加密、非对称加密以及哈希算法详解 需要注意的是,在实际使用中,加密算法的实现可能会涉及到更多的细节和安全性考虑,因此建议使用经过专业审核和测试的安全库和算法,避免自己实现可能存在的安全漏洞和错误。ECC:是一种基于椭圆曲线的非对称加密算法,相比RSA等算法,ECC使用更短的密钥长度就能提供相同的安全强度,因此越来越受到关注和应用。RC4:是一种流密码,使用变长的密钥进行加密和解密操作,速度快,但由于其加密弱点被发现,现已很少使用。DES:使用56位的密钥进行加密和解密操作,由于密钥长度过短,安全性较差,因此现在很少使用。 阅读详情

相关推荐

信息安全基础—对称/非对称密码图文详解

图文详解几种典型加密机制,DES,AES,RSA,ECC等。 迅速读懂密码学基础。 科普向+期末复习。

qq_50860232的博客 9301

HTTP和HTTPS协议,看一篇就够了

一、前言: 我们上网很简单,只需要通过网络服务商开通端口就可以了,每天都在上网,有留意到访问网站链接有什么共同点吗?为什么需要但是为什么要讲HTTP和HTTPS呢? 二、HTTP和HTTPS发展历史 当我们打开谷歌浏览器输入www.12306.cn,回车很快在浏览器上就看到页面,其中的浏览器就是客户端,负责接受浏览器的是服务器,两者的通信是通过HTTP协议。 什么是HTTP? ...

不一样的博客 146万+

雷达信号处理——恒虚警检测(CFAR)

上图展示的是同时在距离维和多普勒维进行恒虚警检测的原理,如果只是在距离维或多普勒维做CFAR,检测单元的左右两侧均有设定好数量的保护单元和参考单元。不同的CFAR检测器适用于不同的场景,CA-CFAR算法适用于均匀环境中的单目标或彼此相距较远的多目标环境,在邻近多目标环境会发生目标的遮蔽效应,在杂波边缘会发生杂波边缘效应。从图中也可以看到,根据阈值的选择不同,有不同的检测器,其中CA-CFAR是取的参考单元的均值,SO-CFAR取的是参考单元的最小值,而GO-CFAR是取的参考单元的最大值。

诚朴勇毅 2万+

你的网站安全吗?一文彻底搞懂 HTTPS

HTTPS 就像给你的网络生活穿上了一件坚固的盔甲 🛡️,保护你免受各种网络攻击 👾。虽然不能保证 100% 安全,但能大大降低风险 📉。

qq_56158663的博客 32万+

一文让你看懂https如何保证数据传输安全性

大家都知道,在客户端与服务器数据传输的过程中,http协议的传输是不安全的,也就是一般情况下http是明文传输的。但https协议的数据传输是安全的,也就是说https数据的传输是经过加密。在客户端与服务器这两个完全没有见过面的陌生人交流中,https是如何保证数据传输安全性的呢?下面我将带大家一步步了解https是如何加密才得以保证数据传输安全性的。我们先把客户端称为小客,服务器称为小服。然...

weixin_34240520的博客 159

java ee数据传输安全性_一文看懂https如何保证数据传输安全性

通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的对称加密一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。如图:当然,如果客户端要给服务器发送数据,也是采用这把密钥来加密,这里为了方便,我采用单方向传输的形式小白:那万一密...

weixin_29141505的博客 207

为什么 HTTPS 比 HTTP 更安全?HTTPS 如何保证数据传输安全性

大家好,我是蛋蛋。 HTTP 和 HTTPS 在许多网站都有用到,但是现在都是极力倡导使用 HTTPS ,究其原因就是 HTTP 它不是安全的,在数据传输过程中会遭到黑客窃取,本篇文章会先讲解 HTTP 缺点,然后再讲解 HTTPS 是如何解决这些问题来保证安全的。 HTTP 缺点 通信使用明文(不加密),内容可能会被窃听 HTTP 本身不具备加密的功能,因此其在通信过程是使用明文方式发送的。这种方式就有可能造成通信过程中信息会被破解获取。例如一群????佩奇在路上坐着敞篷大货车,路过的人一下就能看到这车

卧龙小蛋的博客 1万+

数据传输安全性保证

前言 数据传输过程中,安全性十分重要,尤其是对于一些敏感的用户信息,其安全性保证更应当被重视。 现代软件开发中,无论是基于敏捷式的软件开发,或者基于前后端分离的软件开发,都离不开提供对外接口,而请求这些接口数据的安全性应当得到保证。 方法 保证传输数据的安全性,主要有以下方法: 数据加密 数据加密一直是保密数据的重要部分,常见的加密算法有可逆加密算法和不可逆加密算法,可逆加密算法...

JavaZWT的博客 1万+

HTTPS 如何保证数据传输安全性

大家都知道,在客户端与服务器数据传输的过程中,HTTP协议的传输是不安全的,也就是一般情况下HTTP是明文传输的。但HTTPS协议的数据传输是安全的,也就是说HTTPS数据的传输是经过加密的。 在客户端与服务器这两个完全没有见过面的陌生人交流中,HTTPS是如何保证数据传输安全性的呢?下面我将带大家一步步了解HTTPS是如何加密才得以保证数据传输安全性的。 我们先把客户端称为小客,服务器称为小...

ahilll的博客 400

HTTPS和SSL/TLS协议是如何保证数据传输安全性

       基于上篇提到的问题(Android5.0以下手机通过https请求服务器报SSLException异常的原因及解决方案) 事后我又深入的研究了下SSL/TLS协议。然后这篇就介绍一下HTTPS和SSL/TLS协议是如何保证数据传输安全性的。 咱们通常所说的 HTTPS 协议,就是指安全套接字层超文本传输协议HTTPS。就是“HTTP 协议”和“SSL/TLS 协议”的组合,你可以...

江户川米兰的博客 6168

https是如何保证数据传输的安全

为什么需要https HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。 举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。 用户登陆 --> 代理服务器(做手脚)--> 实际授权服务器 在发送端对密码进行加密?没用的,虽然别人不知道你原始密码是多少

jasonjwl的专栏 2万+
上一篇: Windows电脑忘记密码
下一篇: python的编码问题整理
weixin_30337157
博客等级 码龄11年 118粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值