当前位置: 首页 > news >正文

Linux网络HTTPS协议原理

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层。

加解密

加密就是把明文 (要传输的信息)进行一系列变换,生成密文 。 解密就是把密文再进行一系列变换, 还原成明文。 在这个加密和解密的过程中, 往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥。

常见的加密方式

对称加密

对称加密使用相同的密钥进行加密和解密。加密速度快,适合大量数据加密,但密钥管理复杂,需要安全渠道共享密钥。

常见的对称加密算法:

  • AES(高级加密标准):广泛使用,支持128、192、256位密钥。
  • DES(数据加密标准):较旧,密钥长度56位,安全性不足,已被AES取代。
  • 3DES:DES的增强版,应用三重加密提高安全性。
非对称加密

非对称加密使用公钥和私钥配对。公钥可公开分发,私钥必须保密。安全性高但速度慢,适合密钥交换和数字签名。(比如通过公钥加密,私钥解密)

常见的非对称加密算法:

  • RSA:基于大整数分解难题,广泛用于数字签名和密钥交换。
  • ECC(椭圆曲线加密):相同安全强度下密钥更短,适合资源受限环境。
  • Diffie-Hellman:用于密钥交换,不直接加密数据。
哈希函数

哈希函数将任意长度数据映射为固定长度哈希值。不可逆,常用于验证数据完整性或密码存储。

常见的哈希算法:

  • SHA-256:SHA-2家族成员,输出256位哈希值,广泛用于区块链。
  • MD5:输出128位哈希值,已不推荐用于安全场景。
  • bcrypt:专为密码哈希设计,内置盐值并支持慢哈希,抵抗暴力破解。
混合加密

混合加密结合对称和非对称加密的优势。先用非对称加密交换对称密钥,再用对称密钥加密数据。TLS/SSL协议即采用此方式。

密码学应用场景
  • TLS/SSL:保障网络通信安全,使用RSA/ECC交换密钥,AES加密数据。
  • PGP/GPG:加密文件或邮件,结合对称和非对称加密。
  • 区块链:SHA-256确保数据不可篡改,ECC用于数字签名

数据摘要 && 数据指纹

数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算, 生成一串固定⻓度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改

摘要常见算法:有 MD5、SHA1、SHA256、SHA512 等,算法把无限的映射成 有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)

摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不 过从摘要很难反推原信息,通常用来进行数据对比

HTTPS的工作过程探究

方案一:只使用对称加密

通信双方使用同一个秘钥,但是接收方需要得知秘钥,而秘钥传输又需要加密,因此接收方根本得不到秘钥原文,因此不可行,而且就算双方都知道了,也容易被黑客攻击从而泄露。

方案二:只使用非对称加密

服务器持有公钥S和私钥P,将S发送给客户端进行通信:

很显然,从右往左不安全,只能保证单向安全,不仅如此,运算速度比较慢。

方案三:双方都使用非对称加密

假设双方各持有一堆公钥和私钥:

安全问题任然存在,只是没有上边那么严重,但是运算速度还是慢。

方案四:非对称加密+对称加密

这样就保证了速度,也有方案三的安全保障。

中间人攻击

在方案 4 中,客户端获取到公钥 S 之后,对客户端形成的对称秘钥 C 用服 务端给客户端的公钥 S 进行加密,中间人即使窃取到了数据,此时中间人确实无法解 出客户端形成密钥 C,因为只有服务器有私钥 S'。

但是中间人的攻击,如果在最开始握手协商的时候就进行了,那就不一定了,假设 hacker 已经成功成为中间人:

1. 服务器具有非对称加密算法的公钥 S,私钥 S'

2. 中间人具有非对称加密算法的公钥 M,私钥 M'

3. 客户端向服务器发起请求,服务器明文传送公钥 S 给客户端

4. 中间人劫持数据报文,提取公钥 S 并保存好,然后将被劫持报文中的公钥 S 替换 成为自己的公钥 M,并将伪造报文发给客户端

5. 客户端收到报文,提取公钥 M(自己当然不知道公钥被更换过了),自己形成对称秘钥 C,用公钥 M 加密 C,形成报文发送给服务器

6. 中间人劫持后,直接用自己的私钥 M'进行解密,得到通信秘钥 C,再用曾经保存 的服务端公钥 S 加密后,将报文推送给服务器

7. 服务器拿到报文,用自己的私钥 S'解密,得到通信秘钥 C

8. 双方开始采用 C 进行对称加密,进行通信。但是一切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

中间人得到了秘钥C可以随意篡改传输的数据,这样方案四有问题,那么方案三也有问题。

实际上主要矛盾是客户端能否区分自己收到的公钥是否合法。

CA证书与签名

数据签名

签名:

验证:

私钥只有本人持有,因此只能本人有对数据签名的能力,只能用公钥解密。

CA证书

服务端在使用 HTTPS 前,需要向 CA 机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行 了,证书就如身份证,证明服务端公钥的权威性。

服务器返回时不仅有公钥,还有附带公钥和签名的证书。所有的浏览器都要内置可信的CA机构或者子机构的公钥。CA机构就有签名的权利,所有浏览器只认CA机构的签名。

第五种方案:非对称加密+对称加密+证书认证

如果中间人改了公钥,那么散列值不一样则无法通过客户端的识别,而中间人有没有CA机构的私钥,因此无法重新签名。所以中间人改不了证书,就算中间人申请一份真的证书发过去,域名之类信息又对不上,还是无法通过客户端的识别。

总共设计三组秘钥:

第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在形成 CSR 文件 与申请证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同 时持有对应的公钥). 服务器在客户端请求时,返回携带签名的证书. 客户端通过这个公钥进行证书验证, 保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。

第⼆组(非对称加密): 用于协商生成对称加密的密钥. 客户端用收到的 CA 证书中的公钥 (是可被信任的)给随机生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解 密获取到对称加密密钥.

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

补充

在线生成CSR和秘钥:https://myssl.com/csr_create.html

形成 CSR 之后,后续就是向 CA 进行申请认证,不过一般认证过程很繁琐,网络各种提供证书申请的服务商,一般真的需要,直接找平台解决就行。

在浏览器设置里面搜就能看到:

如何成为中间人:

• ARP 欺骗:在局域网中,hacker 经过收到 ARP Request⼴播包,能够偷听到其它节点的 (IP, MAC)地址。例, 黑客收到两个主机 A, B 的地址,告诉 B (受害者) ,自己是 A,使得 B 在发送给 A 的数据包都被黑客截取

• ICMP 攻击:由于 ICMP 协议中有重定向的报文类型,那么我们就可以伪造一个 ICMP 信息然后发送给局域网中的客户端,并伪装自己是一个更好的路由通路。从而导致⽬标所有的上网流量都会发送到我们指定的接⼝上,达到和 ARP 欺骗同样的效果

• 假 wifi && 假网站等

http://www.dtcms.com/a/558701.html

相关文章:

  • AI短视频工具的“知识准确性”瓶颈,内容特工队AI如何通过RAG技术破局
  • 做押韵句子的网站建设网站龙华
  • 2、webgl 基本概念 + 绘制点
  • 重复打开同一个网站怎么做做网站广告软件
  • 高级系统架构师笔记——软件工程基础知识(3)逆向工程与需求工程
  • 山东网站建设seo软文推广广告公司
  • 精品成品网站入口网络推广计划书格式
  • 【Qt】 Qt5.14以下版本也可以使用 Q_TRACE_SCOPE啦 !!!
  • o2o网站建设怎么样北京市网站建设 维护推荐
  • 做平面设计在那个网站上找图好惠州做网站多少钱
  • Java接口规范升级 —— 给你的 Java 接口 “穿西装”(参数不瞎填,返回不乱码)
  • AI学习研究2025.11.1——deepseek-r1 1.5B 五轮问题下来暴露无法区别中英文
  • Dubbo 全解析:从入门到精通的分布式服务框架实战指南
  • 网站更改公司需要重新备案吗网站联盟怎么做
  • C与汇编深入分析
  • UDS中时间参数相关
  • 东莞网站制作建设项目之家
  • C++:链接的两难 —— ODR中的强与弱符号机制
  • 徐家汇网站建设秦皇岛海港区防疫人员事件
  • 长沙专业网站建设服务网站代备
  • 开始改变第七天 第一个面试
  • 网站资源做缓存做网站开发需要的笔记本配置
  • 搜索引擎网站盈利模式长沙旅游必去的八个景点
  • 如何写出让业务满意的性能测试报告?
  • 网站做数据分析整站优化seo平台
  • 烟台网站建设服务网站百度搜索不到
  • 做网站除了dw网站域名注册备案教程
  • 南华大学城市建设学院网站注册企业邮箱哪家最好
  • C++隐藏机制——extern 的边界:声明、定义与符号分配
  • 为什么选择做游戏网站做国外销售都上什么网站