| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> HTTPS能解决IM即时通讯开发的什么问题 -> 正文阅读 |
|
[网络协议]HTTPS能解决IM即时通讯开发的什么问题 |
很多人一提到 HTTPS,第一反应就是安全,对于普通用户来说这就足够了;但对于程序员,很有必要了解下 HTTP 到底有什么问题?以及HTTPS 是如何解决这些问题的?其背后的解决思路和方法是什么? ? HTTP 有典型的几个问题,第一就是性能,HTTP 是基于 TCP 的,所以网络层就不说了(快慢不是 HTTP 的问题)。 比较严重的问题在于 HTTP 头是不能压缩的,每次要传递很大的数据包。另外 HTTP 的请求模型是每个连接只能支持一个请求,所以会显得很慢。 那么 HTTPS 是解决这些问题的吗? 不是,实际上 HTTPS 是在 HTTP 协议上又加了一层,会更慢,相信未来会逐步解决的。同时 HTTPS 用到了很多加的密算法,这些算法的执行也是会影响速度的。 当用户在浏览器输入一个网址的时候,在地址栏上看到小锁图标,就会安心,潜意识的认为自己的上网行为是安全的,当然对于小白用户来说可能还不明白,但是未来会慢慢改善的(万事开头难嘛)。 那么 HTTP 到底有什么安全问题呢,看几个例子: ????1)由于互联网传输是能够被拦截的,所以假如你的上网方式被别人控制了(没有绝对的安全),那么你的任何行为和信息攻击者都会知道,比如我们连上一个匿名的 WIFI,当你上网的时候,输入的网站密码可能就已经泄漏了;
身份验证的意思就是服务器并不知道连接它的客户端到底是谁,而客户端也不确定他连接的服务器就是他想连接的服务器,双方之间没有办法进行身份确认。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询 ? 为了解决 HTTP 的两个核心问题,HTTPS 出现了,HTTPS 包含了核心的几个部分:TLS 协议、OpenSSL,证的书。 什么是 OpenSSL 呢,它实现了世界上非常重要和多的密码算法,而密码学是解决问题最重要的一个环节。 TLS 最重要的是握手的处理方式。证的书的体系也很大,但是他们背后都是基于同样的密码学。 1)既然 HTTP 没有数据加的密,那么我们就加的密下,对称加的密算法上场了,这种算法加的密和解密要使用同一个密钥,通信双方需要知道这个密钥(或者每次协商一个),实际上这种方法不太可能,这涉及到密钥保密和配送的问题,一旦被攻击者知道了密钥,那么传输的数据等同没有加的密。 2)这个时候非对称加的密算法上场了,公钥和私钥是分开的,客户端保存公钥,服务器保存私钥(不会公开),这时候好像能够完美解决问题了。 但实际上会存在两个问题,第一就是非对称加的密算法运算很慢,第二就是会遇到中间人攻击问题。 先说说中间人攻击的问题,假如使用非对称加的密算法,对于客户端来说它拿到的公钥可能并不是真正服务器的公钥,因为客户端上网的时候可能不会仔细分辨某个公钥是和某个公司绑定的,假如错误的拿到攻击者的公钥,那么他发送出去的数据包被劫持后,攻击者用自己的私钥就能反解了。 3)接下来如何解决公钥认证的问题呢?证的书出现了,证的书是由 CA 机构认证的,客户端都充分信任它,它能够证明你拿到的公钥是特定机构的,然后就能使用非对称加的密算法加的密了。 证的书是怎么加的密的呢?实际上也是通过非对称加的密算法,但是区别在于证的书是用私钥加的密,公钥解密。 4)上面说了非对称加的密算法加的密解密非常耗时,对于 HTTP 这样的大数据包,速度就更慢了,这时候可以使用对称加的密算法,这个密钥是由客户端和服务器端协商出来,并由服务器的公钥进行加的密传递,所以不存在安全问题。 5)另外客户端拿到证的书后会验证证的书是否正确,它验证的手段就是通过 Hash 摘要算法,CA 机构会将证的书信息通过 Hash 算法运算后再用私钥加的密,客户端用 CA 的公钥解出后,再计算证的书的 Hash 摘要值,两者一致就说明验证身份通过。 6)HTTPS 解决的第三个问题是完整性问题,就是信息有没有被篡改(信息能够被反解),用的是 HMAC 算法,这个算法和 Hash 方法差不多,但是需要传递一个密钥,这个密钥就是客户端和服务器端上面协商出来的。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:44:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |