HTTPS

对称加密:

发送方和接受方用同样的规则来为数据进行加密,也可以说用同样的密钥来解开密文。

问题是:如何有第三方知道加密和解密规则后就很容易破解。

非对称加密:

  • 用两个密钥来进行加密和解密,公开密钥是所有人都知道的密钥,私有密钥是持有方才有的密钥。一般来说私钥放在服务器里,数据经过公钥加密就只能被私钥解密,数据经过私钥加密就只能被公钥解密。
  • 服务端拥有成对的私钥和公钥,然后公布自己的公钥让客户端知道,客户端用公钥将自己的数据加密,但是加密后使用公钥无法解密这段数据,必须使用服务端的私钥才行。这样的非对称加密也叫公钥加密。

证书:

  • 现在虽然可以对数据加密但是我们现在不知道沟通的对象是否是自己想要沟通的对象,比如有不法分子伪装相识域名(你输错域名的时候)。
  • 服务端需要申请 SSL 证书来解决这个问题,需要使用 SSL 证书来证明这个是真网站。 SSL 证书就是保存在源服务器的数据文件。
  • 要使 SSL 证书生效就需要向 CA (证书授权中心)申请,证书中包扩了特定的公钥和私钥。

TLS(1.2)握手过程:

  • 三次握手是不变的。三次握手以后,客户端发送了一个 Client Hello 给服务端,客户端就会告诉服务端支持 TLS 1.2 版本和支持的加密套件。
  • 这里 16 个加密套件可以理解为不同的加密算法组合,然后生成一个随机数发给服务端。
  • 接下来就是服务端发送 Server Hello 给客户端,在响应报文中会告诉客户端服务端确认支持的 TLS 版本以及选择的加密套件,服务端也生成一个随机数发送给客户端。
  • 接下来服务器会再发一个响应来出示服务器自己的证书,这样浏览器就可以对照自己的证书列表来确认这个服务器是否可信。
  • 服务器将公钥发送给客户端,如果服务器想要客户端的证书也会在这里发出请求。
  • 服务器告诉客户端发送完成。
  • 客户端会生成第三个随机数(预主密钥 ),这个随机数会用刚刚收到的公钥进行加密,并且将加密后的随机数发送给服务器。
  • 客户端告诉服务器往后的数据就用商议好的算法和密钥来加密。
  • 表示客户端这边的 TLS 协商已经没有问题了,加密开始。
  • 表示服务器端这边的 TLS 协商已经没有问题了, TLS 握手已经成功。



总结:

  • 服务器收到加密后的预主密钥以后会用自己的私钥进行解密,这样服务器就知道预主密钥了。只有客户端和服务端知道预主密钥。
  • 客户端和服务端都使用第一随机数加第二随机数加预主密钥生成会话密钥(相同的),使用非对称加密。
  • 会话加密后就使用对称加密了,也就是双方都使用同一个私钥。使用对称加密是因为非对称加密消耗资源比较大。会话密钥只会应用在当前会话。
  • 会话加密后就使用对称加密了,也就是双方都使用同一个私钥。使用对称加密是因为非对称加密消耗资源比较大。会话密钥只会应用在当前会话。
相关推荐
无足鸟ICT27 分钟前
【RHCA+】IO调度算法
linux·服务器
火云代理1 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
wacsii1 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下1 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
如夏倾城1 小时前
QUIC——HTTP/3 的唯一底层传输协议 及 0-RTT恢复
网络·网络协议·tcp/ip·安全·http
科研邪修法2 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
Lansonli4 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
可乐ea18 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
真好啊又活了一天1 天前
服务器和虚机配置IPV6
运维·服务器·github
墨痕诉清风1 天前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库