首页 > 编程知识 正文

记住看小电影前一定要检查一下域名是不是 HTTPS 的,不然……

时间:2023-05-03 11:08:30 阅读:17267 作者:3950

看小电影还是看普通网站,一定要检查是否是HTTPS。 HTTP可能会被中间人攻击或拦截。 以下是详细的HTTPS原理,请仔细考虑。 来自: https://segment fault.com/a/119000023936425作者:在谈mokeyWie1. HTTP协议HTTPS协议之前,让我们先回顾一下HTTP协议的概念。 1.1 HTTP协议介绍HTTP协议是一种基于文本的传输协议,位于OSI网络模型中的APP应用层。 HTTP协议与客户端通过服务器的请求响应进行通信,当前协议由之前的RFC 2616拆分成六个单独的协议描述符(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、 信息如下。 post http://www.Baidu.com http/1.1 host 3360 www.Baidu.com connection 3360 keep-alive content-length 3360-aser-aa ser win 660 x64 ) appleWebKit/537.36(khtml,like Gecko ) chrome/71.0.3578.98 safari/537.36 wd=http响应HTP/1.1.200 ok cko 14 feb 20190733602:49 GMT transfer-encoding 3360 chunked html ./html 1.2 http中间人攻击http协议确实是易于使用的http协议消息都以明文传输举个例子吧。 健壮的耳机发布在JAVA留言板上,内容是我爱JAVA。 被中间人攻击,内容被修正为爱PHP。 使用HTTP是不安全的,因为在HTTP传输过程中,中介可以查看和修改HTTP通信中的所有请求和响应。 1.3防止中间人攻击的时候,有人可能想到了。 既然内容是明文,用对称加密方式加密消息,中间人不是看不到明文吗? 因此,改造如下。 如果加密方式使用AES加密消息,看起来中间人得不到明文信息,其实在通信中暴露明文方式和私钥。 如果通信首次被拦截,私钥会泄露给中介,中介可以解密后续通信。 在这种情况下,我们是否应该考虑将私钥加密,不让中间人看到呢? 有答案。 可以采用非对称加密,用RSA算法实现。 该步骤实际操作也比较简单,在码匠的备忘订阅号后台回复HTTPS,就可以看到构建HTTPS服务的视频。 当约定了加密方案时,服务器生成公钥对,服务器向客户端返回公钥,客户端本地生成用于对称加密的一系列私钥AES_KEY,并使用从服务器发送的公钥加密得到的[ AES _ key _ seey ] 服务器在用私钥进行客户端发送的AES_key_secret的最后,客户端和服务器通过AEK_KEY进行消息的加密通信,进行了如下改造。 在此情况下,中介不能偷用于AES加密的私钥,因此不能对后续通信进行解密。 那样绝对安全吗? 道高一尺魔高一丈是中介为了应对这种加密方法而想出新的解密方案,既然拿不到AES_KEY,我就模拟自己作为客户端和服务器端的结合体,在用户-中介的过程中中介模拟服务器的动作可以得到用户请求的明文,通过中介-服务器过程中中介模拟客户端的动作,可以得到服务器响应的明文。 由此进行中介攻击:这次通信再次被中介拦截,中介自身也通过伪造公钥对,将公钥发送给用户,窃取客户端生成的AES_KEY,得到AES_KEY后可以轻松解密。 如果中间人这样希望,就不能进行制裁吗? 当然有哦。 接下来,让我们来看看HTTPS是如何解决通信安全问题的。 2. HTTPS协议2.1 HTTPS概述HTTPS其实是SSL HTTP的简称,当然目前SSL已基本取代TLS,其次统一SSL为简称。 SSL协议实际上不仅应用于HTTP协议,还应用于FTP、WebSocket等各种APP应用层协议。 其实,SSL协议大致与上一节的不对称加密性质相同,因为握手过程中主要是交换私钥,然后在通信过程中使用对称加密进行通信,大致流程如下。 这里只是描绘了一个形象,实际的SSL握手会比这复杂得多,但性质相似。 而且,这里值得关注的重点是HTTPS如何防止中间人攻击。 如上图所示,服务器通过SSL证书传递公钥,客户端验证SSL证书。 其中,证书认证系统是确保SSL安全的关键。 接下来介绍一下CA认证系统,看看它是如何防止中间人攻击的。 2.2在ca认证系统的上一节中,我们看到客户端需要验证服务器返回的SSL证书,那么客户端如何验证服务器的SSL证书的安全性呢? 认证机构在CA认证系统中,所有证书由认证机构颁发,认证机构的 CA 证书都是已经在操作系统中内置的,我们把这些证书称之为CA根证书:签发证书我们的应用服务器如果想要使用 SSL 的话,需要通过权威认证机构来签发CA证书,我们将服务器生成的公钥和站点相关信息发送给CA签发机构,再由CA签发机构通过服务器发送的相关信息用CA签发机构进行加签,由此得到我们应用服务器的证书,证书会对应的生成证书内容的签名,并将该签名使用CA签发机构的私钥进行加密得到证书指纹,并且与上级证书生成关系链。这里我们把百度的证书下载下来看看:可以看到百度是受信于GlobalSign G2,同样的GlobalSign G2是受信于GlobalSign R1,当客户端(浏览器)做证书校验时,会一级一级的向上做检查,直到最后的根证书,如果没有问题说明服务器证书是可以被信任的。如何验证服务器证书那么客户端(浏览器)又是如何对服务器证书做校验的呢,首先会通过层级关系找到上级证书,通过上级证书里的公钥来对服务器的证书指纹进行解密得到签名(sign1),再通过签名算法算出服务器证书的签名(sign2),通过对比sign1和sign2,如果相等就说明证书是没有被篡改也不是伪造的。这里有趣的是,证书校验用的 RSA 是通过私钥加密证书签名,公钥解密来巧妙的验证证书有效性。这样通过证书的认证体系,我们就可以避免了中间人窃取AES_KEY从而发起拦截和修改 HTTP 通讯的报文。总结首先先通过对 HTTP 中间人攻击的来了解到 HTTP 为什么是不安全的,然后再从安全攻防的技术演变一直到 HTTPS 的原理概括,希望能让大家对 HTTPS 有个更深刻的了解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。