篇4为大家介绍一下HTTP 和 HTTPS协议。通过这两组协议的比较,我希望告诉大家一个道理。在计算机技术中,速度和安全是不可兼得的,所以要有所取舍。这个取舍的关键是根据你的应用场景,在一些不那么容易出现安全隐患的业务中(网络图片请求)可以使用速度快的,但是在一些比较注重安全的业务场景中(支付,账户登录)则需要牺牲速度换取安全性。
1 - 优点与缺点并存的HTTP
HTTP协议的优势之前在(菜鸟面试必知的 http 知识(二)—— HTTP 协议特点)已经介绍过。其特点主要是,不保存用户的状态、持久连接和管线化,这些特点让采用HTTP协议的服务器资源开销少,传输效率很高,并且使用起来也非常的简单和方便。
但是也正是因为HTTP协议设计的时候注重了轻便,也导致其在安全性上面存在了比较大的隐患。比如,通信使用明文,不验证通信方的身份,无法验证报文的完整性。这些都是一些安全漏洞,当网站用户规模到达一定程度时,就不得不重视起来了。而目前主流的方案是HTTPS,例如知乎就在2016年9月支持了HTTPS协议。
2 - HTTPS为何物
HTTPS(HTTP Secure),其实是加上加密+认证+完整性保护的HTTP。使用HTTPS最普遍的场景是支付系统,因为在这种场景下使用HTTP会导致支付卡号以及密码被盗取,采用HTTPS则能有效的避免这点。
2.1 - 加密技术
加密技术也是计算机技术的一个重要分支,由于在HTTPS中用到了加密技术,所以先做一个简单的介绍。
对称密钥加密:加密和解密同用一个密钥的方式称为对称密钥加密,这种加密方式又被称为共享密钥。
那么由于双方都需要使用一个密钥,那么A设计了这个密钥,还是要通过网络先把密钥传送给B,才能开始保密传输。一旦密钥传输的时候被截取,那么之后整个通信过程也就没有了任何的安全性可言。
非对称密钥加密:使用两把密钥,一把叫做私有密钥,另一把叫做公开密钥。私有密钥不能让其他任何人知道,公开密钥可以随意发布,任何人都可以获得。
当A设计密钥的时候会产生一对私有和公开密钥,B可以根据A的公开密钥对消息进行加密,A得到消息后通过自己的私有密钥解密,由于私有和公开密钥存在着复杂的数学关系,仅仅通过公开密钥想要破解消息是非常困难的。
非对称密钥加密虽然解决了对称密钥加密的一些弊端,但同时也有自身的局限性。比如非对称加密处理起来更为复杂,解码起来效率很低。并且由于公开密钥大家都能获取到,当你打算获取到公开密钥,如何判定你到手的公开密钥就是正宗的也是个问题。
为了验证公开密钥的正宗又出现了数字证书认证机构(CA),这种机构作为中介,告诉买家(解密方),这是机构和卖家(加密方)权威认证的,于是买家相信了这个公开密钥。这样虽好,但是中介也需要你付费啊。
2.2 - SSL
HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替。如图1所示,HTTPS其实是HTTP先和SSL通信,再由SSL和TCP通信。SSL是独立于HTTP的协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。
大家好,我是彬彬酱,目前在腾讯从事Web后端开发。
菜鸟必知的 http 知识专题整理了关于网络的基础知识,适合大家进行入门级学习,这个专题现包含下列文章:
菜鸟必知的 http 知识(一)—— TCP 握手协议
菜鸟必知的 http 知识(二)—— HTTP 协议特点
菜鸟必知的 http 知识(三)—— 请求和响应报文
菜鸟必知的 http 知识(四)—— HTTP 和 HTTPS
菜鸟必知的 http 知识(五)—— 新技术的出现
菜鸟必知的 http 知识(六)—— web的结构组件