网络原理--HTTPS的加密过程简介

HTTPS是在HTTP的基础上,引入了一个加密层(SSL),而HTTP是明文传输的(不安全)。

当下见到的大部分网页都是HTTPS的,这其实都是拜"运营商劫持"所赐。

关于加密,没有100%安全的加密方式,但是如果解密成本大于了要保护的数据本身的价值,这在很大程度上就是安全的。

密码学中的几个概念:

1.明文:要传输的真实的数据,要表达的实际的意思。

2.密文:针对明文加密后得到的结果,往往是不直观的,不易理解的。

明文==》密文 :加密

密文==》明文: 解密

解密的工具称为"密钥"。

加密的方式

1.对称加密:

加密和解密,使用的是同一个密钥。

2.非对称加密:

加密和解密使用两个密钥,这两个密钥,k1和k2 是成对的。可以使用 k1 来加密,此时就是 k2 来解密,也可以使用 k2 来加密,此时就是 k1 来解密。这两个密钥,一个可以公布出去,称为"公钥",另一个自己保存好,称为"私钥"。(只要一把密钥,是无法知道另一把的,这里涉及到了密码学的范畴)。

HTTPS工作过程

只要针对HTTPS的数据进行解密就可以得到HTTP格式的数据。

而HTTPS主要针对的就是header和body的加密。

一、引入对称加密

通过对称加密的方式,针对传输的数据进行加密操作。

注意事项:

1.对称加密的时候,客户端和服务器要同时使用一个密钥。

2.不同的客户端,需要使用不同的密钥。(如果所有客户端都使用一个密钥,加密形同虚设,黑客很容易拿到密钥。)

但是密钥在传输过程中很容易被黑客截获,一旦黑客截获了密钥,意味着加密操作就无意义了。

需要考虑,密钥的传输也进行加密。

二、引入非对称加密

使用非对称加密,主要目的是对传输的对称密钥进行加密,确保对称加密的安全性。

不能使用非对称加密对后续的header和body进行加密,而只对对称加密进行加密,这是因为非对称加密的加密和解密成本(消耗的cpu资源)很高,如果大规模使用,成本很大。

这时先让服务器生成公钥k1和私钥k2,然后再将公钥k2告诉给客户端,因为公钥和私钥是较为独立的两个部分(有公钥并不能算出私钥),所以即使公钥k2被黑客截获了也没关系,客户端使用公钥k2对进行对称加密的密钥key进行加密传输,当服务器拿到被公钥k2加密的密钥key并进行解密后,后续传输数据就可以使用密钥key来进行对称传输了。

但是这种情况仍然存在缺陷。

三、中间人攻击问题

服务器可以创建出一对公钥和私钥,黑客也可以按照同样的方式,创建出一对公钥和私钥来冒充自己是服务器。

如何解决上述问题:

首要问题是客户端在拿到公钥后要进行验证,验证这个公钥是不是真的。

所以引入了网络安全证书。

证书中包含了公钥,还包含了其他信息,这里列举几个重要信息:

1.服务器域名。

2.证书的有效时间。

3.服务器的公钥。

4.公证机构信息。

5.证书的签名:颁布证书的公证机构会在发布证书时,给这个证书计算出一个校验和,然后公证机构使用自己的私钥(与服务器的私钥无关)对校验和进行加密,此时就得到了证书的签名。

客户端拿到证书后,主要做这两件事:

1.按照同样的校验和算法,把证书的其他字段都计算一遍,得到校验和1.

2.使用系统中内置的公证机构公钥对证书中的签名进行解密,得到校验和2,对比校验和1和2。(因为市面上的公证机构没多少,所以windows等系统就内置了公证机构公钥)。如果一致,说明是原版证书,如果不一致,说明证书被修改过了。此时浏览器就会弹出警告页面,告诉用户访问的网页有风险!

有个问题,黑客自己的电脑也有公证机构的公钥,他可不可以解密之后进行修改证书呢?

不可以,因为:

1)如果黑客直接修改证书中的服务器公钥,不修改签名,客户端验证校验和时就会发现问题。

2)如果黑客修改证书中的服务器公钥,也尝试修改签名,由于黑客不知道公证机构的私钥,所以无法重新生成加密的签名,如果黑客使用其他私钥进行加密,客户端使用公钥进行解密就会失败,从而检测到问题。

3)黑客可不可以自己也去公证机构申请个证书来进行替换?

不可以,因为证书中还有域名等其他信息,例如域名就是唯一的,替换后客户端很容易发现问题。

4)如果黑客黑入公证机构或服务器来获取私钥呢?可以!但是这两个东西一般安全程度非常高,很难黑入。

相关推荐
技术小齐几秒前
网络运维学习笔记(DeepSeek优化版) 012网工初级(HCIA-Datacom与CCNA-EI)DHCP动态主机配置协议(此处只讲华为)
运维·网络·学习
北顾南栀倾寒16 分钟前
[杂学笔记]HTTP1.0和HTTP1.1区别、socket系列接口与TCP协议、传输长数据的时候考虑网络问题、慢查询如何优化、C++的垃圾回收机制
网络·c++·笔记·tcp/ip·mysql·http
cd小白33 分钟前
网络编程 day03
网络
Edward-tan1 小时前
【全栈开发】---- 一文掌握 Websocket 原理,并用 Django 框架实现
网络·websocket·网络协议
william0820121 小时前
IP地址怎么加密https访问?
服务器·网络协议·tcp/ip·网络安全·https·ssl
了不起的杰1 小时前
【计算机网络03】网络层协议IP(详细)
网络·tcp/ip·计算机网络
车载操作系统---攻城狮2 小时前
[环境搭建篇] Windows 环境下如何安装repo工具
网络·windows·github
桂月二二3 小时前
云原生网络架构:构建高性能微服务通信的智能管道
网络·云原生·架构
高鹏飞白羊4 小时前
使用WebSocket进行通信的图形用户界面应用程序
网络·websocket·网络协议
屁股割了还要学4 小时前
【计算机网络入门】应用层
网络·学习·计算机网络·考研·网络安全