问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

HTTPS 安全通信原理

发布网友 发布时间:2022-09-05 18:16

我来回答

2个回答

热心网友 时间:2024-03-11 22:45

HTTP 是明文传输,存在三大风险:窃听风险、篡改风险、冒充风险
窃听风险:由于 HTTP 明文传输,中间人可以轻易获取到通信内容。
篡改风险:中间人可以篡改信息传输内容
冒充风险:中间人可以伪装成与 Client 通信的 Server,也即是钓鱼网站。

安全通信需要包括:机密性、完整性、身份认证以及不可否认
机密性:即中间人无法获取通信的真正内容
完整性:通信内容在传输过程中不被篡改
身份认证:确认通信双方的真实身份,不被钓鱼网站冒充身份通信
不可否认:不可否认已发生的行为

HTTP 是明文传输的,而 HTTPS 采用对称加密对传输的报文加密。对称加密具有加密解密速度快、性能高的特点。HTTPS 确保通信双方使用同一把密钥对通信内容加密,以保证安全通信的机密性。

但是,对称加密的密钥是怎么获取的?如果 Server 像 Client 直接传输密钥,这个密钥仍然会被中间人截取甚至替换,如此一来,安全通信的机密性和完整性依然不能得到保证。

非对称加密:加密和解密双方使用不同的密钥,一把作为公钥,可以公开;一把作为私钥不能公开。使用公钥加密,则只能私钥解密;使用私钥加密,则只能公钥解密。
对于 Server 而言,保管好私钥,将公钥发布给其他 Client。对于 Client 而言,将对称密钥通过公钥加密,传输给Client。Client 再通过自己保留的私钥解密获取对称密钥。然后通信双方就能通过对称密钥加密通信内容了。

但是, Server 如何做到将公钥安全地传输给 Client 呢?直接传输公钥,也会存在被中间人窃取甚至掉包的风险。

为了解决公钥传输的信任问题,第三方权威机构(Certificate Authority,简称 CA)应运而生。 Server 可以向 CA 申请证书,在证书中附上公钥,然后将证书传给 Client。Server 申请证书时,会提交 DNS 主机名等信息,CA 会根据这些信息生成证书。

但是,如果证书被篡改,Client 拿到了*书,同样会有风险。

1、首先使用摘要算法(如 MD5等),将证书明文内容生成摘要,然后再用 CA 的私钥对摘要进行非对称加密(这里不直接使用私钥对明文内容进行加密,是因为使用非对称加密是十分耗时的。所以先将明文内容压缩成小得多的定长字符串,再用私钥加密,公钥解密会快得多)
2、Client 获取证书后,首先使用同样的摘要算法对明文内容生成摘要。然后将传输的加密后的摘要通过 CA 的公钥解密,获取传输过来的摘要。再将两份摘要进行对比,就能够判断证书内容是否被修改过。
这里采用 CA 私钥加密,Client 公钥解密,是保证了 身份认证 的安全性。因为只有 CA 私钥加密,Client 才能公钥解密成功。

Server 将证书传给 Client 后,Client 验签过程:

注意,这里存在两个公钥:一个是附在证书上的,站点的公钥,用于加密对称密钥;一个是 CA 的公钥,用于解密证书的签名。
那么,这里的 CA 的公钥又是怎么传输的呢?实际上,此公钥是存在与 CA证书上,而此证书(也成为 Root CA 证书)被操作系统信任,内置与操作系统上的,不存在传输过程。这样一来,Server 传输 CA 颁发的证书,客户收到证书后使用内置的 CA 证书中的公钥解密签名即可。就不再存在 CA 公钥被掉包的危险。

正常站点和中间人都可以向 CA 申请证书,并且申请的证书都是合法的。那么如果中间人在传输过程中,将 Server 传输给 Client 的证书替换成中间人自己的证书呢?
实际上,这种操作是不可行的,因为 Client 校验证书是否合法,不仅要校验签名,保证证书不被篡改,还要校验证书上的域名和自己请求的域名是否一致。如果 Client 发现域名不一致,同样会校验不通过。

但是,如果 Client 在一开始,信任了一些非法的第三方机构(称为 charles),安装了 charles 的证书,那么中间人就可以将 Server 传给 Client 的证书掉包成自己的证书,因为此时的证书不是向 CA 申请的,charles 可以自主修改证书上的域名等信息。Client 在拿到此证书后,可以使用 charles 证书的公钥验签,并校验通过,继而将对称密钥发送给中间人,如下图:

所以,中间人能够抓取 HTTPS包的前提,是 Client 信任了非法的CA证书,通过替换证书的方式使 Client 实际和中间人通信。所以,我们千万不要随便信任第三方的证书,避免安全风险。

热心网友 时间:2024-03-11 22:46

HTTPS是HTTP over SSL/TLS,HTTP是应用层协议,TCP是传输层协议,在应用层和传输层之间,增加了一个安全套接层SSL/TLS。
HTTPS相比HTTP多了一层 SSL/TLS,SSL/TLS层负责客户端和服务器之间的加解密算法协商、密钥交换、通信连接的建立。
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL中使用了非对称加密,对称加密以及HASH算法。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
平方公里与亩有什么区别? 申请名称预先核准应提交哪些档 申请名称预先核准应提交哪些资料 申请名称预先核准需要哪些资料 如何隐藏iphonex的刘海? 07款凯美瑞遥控怎么换电池 金针云耳蒸滑鸡做法 爱奇艺VIP会员有哪些免费领取或者低价购买的渠道?持续更新中_百度知 ... 吸尘器应该怎么选?全屋灰尘清洁神器——追觅 V16 吸尘器深度测评 两个长方形重叠部分的面积相当于小长方形面积的4分之1,相当于大的6分... Https原理及流程 从加密解密演进看 HTTPS 通信(上)——简述加密解密演进 文言文 心不在焉 的翻译 心不在焉是不是描写人物神态的词语 纳新吐故的近义词 姜枣茶什么时间喝最好冷喝还是热的喝好 King+was+shot+dead什么语法? king的过去式并造句 旧字的含义是什么? 问道乐山大佛合并在哪个区? 南京事业单位成绩什么时候出来 汤圆创作怎么更新章节 芥川龙之介经典励志名言 c语言怎样处理多组数据问题? 分母相同分子怎样分大小分母相同分子分大小方法 《一起来看流星雨》中,扮演慕容云海、云朵的老妈的人,名字叫李颖吗... 如何快速学会电脑打字? 广州市番友财务软件有限公司怎么样? 我用的是用友财务软件,期初余额录入不平衡? 金蝶k3和有友财务软件有什么不一样? 全国代理记账管理系统进的时候有时间限制吗 全国代理记账机构管理系统里的注册申请地区怎么填写 代账许可证的年检在哪个网站 四年级数学教育故事 茅台酒多少钱一瓶53度500ml2013年- 问一问 学生手册考试重要吗 考哪些内容 卫校学生手册考试内容是什么 江西农业大学南昌商学院学生手册考什么 2022教师教学个人工作总结(5篇) 怎么才能看免费动画片 be based on 造句 在线急求翻译句子 日日夜夜的意思和造句 我的乐视2pro账号密码忘了怎么办,卡号也不知道啊?求各位大神求解。_百 ... 粟米百合炒西芹的做法,粟米百合炒西芹怎么做 常见的进口复合肥有哪些 挪威化肥12-11-18复合肥是什么色? 挪威诺法特乐歌好不好 网易云怎么邀请好友一起听音乐 网易云电脑版怎么邀请人一起听歌