您现在的位置是:人工智能 >>正文
HTTPS协议是如何防中间人窃听的
人工智能4324人已围观
简介相信你看过 HTTPS 协议的定义,知道它是一个安全的通讯协议,可以防止中间人窃听,但是你也知道很多代理都可以对 HTTPS 协议抓包,那 HTTPS 协议是如何防中间人窃听的呢?还有,HTTPS ...
相信你看过 HTTPS 协议的议何定义 ,知道它是防中一个安全的通讯协议,可以防止中间人窃听 ,间人但是窃听你也知道很多代理都可以对 HTTPS 协议抓包 ,那 HTTPS 协议是议何如何防中间人窃听的呢?还有,HTTPS 也可以双向验证,防中也就是间人服务器端可以验证客户端证书,这一点和防止中间人窃听有没有关系呢?窃听本文就来回答这个问题,如果有不同意见,议何可以直接发消息与我交流。建站模板防中
HTTPS 协议的间人基本概念:HTTPS 协议是在 HTTP 协议的基础上 ,通过添加 SSL/TLS 加密协议而成的窃听。SSL/TLS 协议是议何一种用于网络通信安全的加密协议,可以将数据在传输过程中进行加密 ,防中保证数据的间人机密性和完整性 。
如何防止中间人窃听
要回答这个问题 ,我们先看看 HTTPS 协议双方,也就是客户端和服务器的高防服务器通信过程。
客户端发送请求当用户在浏览器中输入一个 HTTPS 网址时,浏览器会向服务器发送一个请求 ,请求建立一个HTTPS 连接。请求中包含有客户端支持的加密算法列表 ,当然也包括客户端自己的公钥。
服务器回应服务器会回应客户端的请求,并从中选择一种加密算法 。服务器会使用该算法生成一组密钥,并将该密钥用客户端的公钥加密,并将加密后的密钥及数字证书发送给客户端 。云计算
客户端验证证书客户端收到服务器的回应后,会验证服务器的数字证书是否合法 。数字证书是由数字证书认证机构(CA)颁发的 ,用于证明服务器的身份 。客户端会根据自己的信任列表 ,验证数字证书的合法性。
验证数字证书的过程如下 :
客户端(浏览器或 APP)读取证书中的源码库证书对应的域名、所有者、有效期等信息进行一一校验;客户端开始查找操作系统中已内置的受信任的证书发布机构 CA ,与服务器发来的证书中的颁发者 CA 比对 ,用于校验证书是否为合法机构颁发;如果找不到 ,客户端就会报错 ,说明服务器发来的证书是不可信任的;如果找到,亿华云那么客户端就会从操作系统中取出 颁发者 CA 的公钥,然后对服务器发来的证书里面的签名进行解密;客户端使用相同的 hash 算法计算出服务器发来的证书的 hash 值,将这个计算的 hash 值与证书中签名做对比;对比结果一致 ,则证明服务器发来的证书合法 ,没有被冒充;此时客户端就可以读取证书中的公钥 ,用于后续加密了;客户端生成密钥如果数字证书验证通过,客户端会使用自己的香港云服务器私钥解密服务器发送过来的密钥。然后客户端会使用该密钥生成一对对称密钥,一份用于加密,一份用于解密 。
客户端发送密钥客户端使用服务器的公钥加密刚刚生成的对称密钥 ,并将加密后的密钥发送给服务器 。
服务器解密密钥服务器收到客户端发送的加密后的对称密钥后,会使用自己的私钥解密该密钥。
开始数据传输经过以上的验证和加密,HTTPS 通信就建立了起来。此时 ,客户端和服务器之间的数据传输都是通过对称密钥进行加密的 。为什么用对称密钥 ?因为对称加密的开销小 ,且其密钥采用非对称加密算法传输,通信过程非常安全 。
理解了以上过程 ,你就会明白 ,防止中间人最重要最重要的过程是验证证书,只要证书是合法的 ,服务器就是合法的 ,不会是冒充的 。证书是专业的机构 CA 颁发和管理,所以是可信的 。
假如 ,客户端和服务器直接有一个中间人,比如你用了代理,那么这个代理就是中间人。中间人要想监听客户端和服务器 ,就需要获取客户端和服务器的通信用的密钥。服务器的密钥,中间人可以作为客户端的身份进行获取 ,但是要想获取客户端的密钥,中间人需要伪装服务器的身份 ,从而发布自己的证书 ,中间人的证书可以是自签名证书 ,也可以是向 CA 申请的证书 ,无论是哪个证书 ,对应的域名一定 不是服务器的域名 ,这样 ,客户端在验证证书时一定不会通过,我们就会收到浏览器的提醒:证书不被信任。

如果 ,客户端(你)选择信任并继续,那么你的通信将毫无安全可言。除非 ,这个代理(中间人)是你自己部署的 ,基于测试或抓包分析等其他原因,你可以信任并继续。
回想一下 ,很多代理之所以可以抓取 HTTPS 包,是因为我们提前导入并信任它们的 CA 证书,然后就可以通过替换证书的方式进行密钥交换,以 charles 为例,具体过程如下:

图片来源:https://ost.51cto.com/posts/19810
因此,HTTPS 协议是借助于证书防中间人窃听的,请注意,如果自己从没有做过什么代理设置,不要相信任何不受信任的证书 ,推而广之,IOS 不要相信任何描述文件 ,不要安装不明来源的 APP,不要赋予任何 APP 不需要的权限,这是保障自己信息安全的根本 。
HTTPS 的双向验证
HTTPS 也可以双向验证 ,也就是服务器端可以验证客户端证书,那么什么场景需要这样?
之前的过程,只能说明服务器是合法的,如果服务器想让客户端也是合法的,那么就需要验证客户端的证书 ,因此 ,如果服务端需要限定的客户端才能访问服务,那么可以采取 HTTPS 的双向验证[1]。因此 即使 HTTPS 不开启双向验证,也可以防止中间人攻击。
HTTPS 的双向验证 nginx 的配置示范如下 :
复制location / {# 开启 HTTPS 协议
listen 443 ssl;# 指定 SSL 证书文件和私钥文件
ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem;# 开启证书校验
ssl_verify_client on;# 指定 CA 证书文件
ssl_client_certificate /path/to/ca.pem;# 指定校验方式为深度校验
ssl_verify_depth 2;}1.2.3.4.5.6.7.8.9.10.11.12.13.最后的话
HTTPS 协议通过使用 SSL/TLS 加密技术 ,通过证书检验 ,可以有效防止中间人窃听、篡改和伪造等安全问题。
最后 ,请注意 ,当浏览器或手机出现安全提醒时 ,一定不要添加信任并继续,因为 ,诈骗犯/黑客正在暗处等着你 ,除非你真的知道你在做什么。
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“算法与编程”。http://www.bzli.cn/html/361c699632.html
相关文章
新的一年,新的挑战:2024年物联网安全趋势预测
人工智能随着2024年的到来,业界充斥着对今年及以后物联网安全趋势的预测。虽然这些趋势中有许多都是未来几年都不会实现的,但我认为我们会在许多领域看到一些重大创新,包括网络安全。特别是,物联网行业在这一领域一直 ...
【人工智能】
阅读更多如何在 2022 年加强 Kubernetes 的安全性
人工智能Kubernetes 现在是最流行的容器编排平台。世界上的 Mesoses 和 Docker Swarms 几乎消失了,老实说,我不会想念他们的。但其市场主导地位的不利之处在于,Kubernetes ...
【人工智能】
阅读更多七个步骤,保障医疗行业免受网络威胁!
人工智能现阶段,越来越多网络犯罪分子将勒索攻击目标转向医疗卫生部门。本文梳理了一些网络安全保障措施,希望能够为医疗行业网络安全建设带来一些帮助。加强电子邮件安全 医疗卫生机构应该为各种电子邮件传 ...
【人工智能】
阅读更多
热门文章
最新文章
友情链接
- 雨林木风装机教程(一步步教你如何选择雨林木风配件,组装一台性能出色的电脑)
- 神舟笔记本硬盘分区教程(一键分区,自定义存储,释放笔记本潜力)
- 魅蓝2红米2电信版如何?(用一台手机满足所有需求,)
- 戴尔科技边缘计算解决方案,助力制造业企业实现智能转型
- Win10硬盘装系统教程(详细步骤教你在Win10上进行硬盘装系统)
- 戴尔科技助力医院为病人带来高质量就医体验,收获较高满意度
- 咪咕听书(一键畅听,走进无限的阅读世界)
- Win10U官方安装教程(从零开始,快速学习Win10系统的安装与配置方法)
- 戴尔Precision 7920塔式工作站让数据及时备份避免“曼德拉效应”
- 2015大白菜U盘装系统教程(使用大白菜U盘轻松安装操作系统) 亿华云香港物理机网站建设源码库云服务器b2b信息平台企业服务器