HTTPS加密原理

HTTPS通过非对称加密算法如RSA、对称加密算法如AES以及散列算法如MD5确保数据传输的安全性。HTTP协议存在保密性和身份确认问题,HTTPS通过证书和CA认证解决这些问题。握手过程中,客户端和服务端协商加密方式并生成共享密钥,确保后续通信的加密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用加密算法

  • 常用对称加密算法
    AES、DES
    优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。
    缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘 钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
  • 常用非对称加密算法
    RSA、elgamal
    缺点:速度较慢
    优点:安全
  • 常用线性散列算法(签名算法)
    MD5、SHA1、HMAC
    这几种算法只生成一串不可逆的密文,经常用其效验数据传输过程中是否经过修改,因为相同的生成算法对于同一明文只会生成唯一的密文,若相同算法生成的密文不同,则证明传输数据进行过了修改。通常在数据传说过程前,使用MD5和SHA1算法均需要发送和接收数据双方在数据传送之前就知道密匙生成算法,而HMAC与之不同的是需要生成一个密匙,发送方用此密匙对数据进行摘要处理(生成密文),接收方再利用此密匙对接收到的数据进行摘要处理,再判断生成的密文是否相同。

什么是http协议

hyper text transfer protocol:超文本传输协议,位于TCP/IP四层模型中应用层
在这里插入图片描述
在这里插入图片描述
HTTP协议的信息传输完全以明文方式,不做任何加密,容易被中间人截获篡改,因此存在两个问题:

  1. 没有保密性,可能被窃取
  2. 身份不确定,无法确定时服务端响应还是中间人的响应

我们可以采用抓包工具,比如青花瓷(charles)来进行模拟拦截抓包,打断点拦截请求,修改服务器给客户端的响应数据

身份认证是如何进行的?

为什么人民币可以在市场流通?是因为我们大家都信任中国人民银行这个机构,所以不管中国人民银行发布多少面值的纸币,都是可以流通的

CA认证也是这样,有专门的CA机构,在网络中,就是做第三方的认证的,认证的前提是 互联网 对CA机构是信任的,只要是你这个机构认证的服务器我就认为是有效的
在这里插入图片描述
下面是证书颁发流程:
在这里插入图片描述
CA机构自己的私钥在CA机构,公钥在浏览器内置名单,CA机构用自己的私钥加密证书,比如中国人民银行印钱的技术和设备都不是公开的

浏览器是可以直接在内置名单里面拿到CA机构的公钥的,因此就可以对这个证书解密,解密以后就拿到了该服务端的证书里面的公钥和数字签名,这个数字签名(hash值)是CA机构生成的,证书里带的,浏览器用公钥解开证书以后,再hash运算,与签名的hash值对比,并且还会对证书的有效期,当前域名进行对比

如果不相同的话,浏览器会提示:当前网站证书不是安全,不是可靠的

我们可以自己模拟来本地生成证书,使用java提供的一个工具
在这里插入图片描述

下面的工具,无论是什么协议,监控的网卡,都是可以获取的在这里插入图片描述
在应用层和传输层加了一层 TLS,前两行是握手
在这里插入图片描述
第一行,客户端发送给服务端,random是用于生成对称加密密钥的随机值,有sessionId意思是之前访问过服务端,另外还有支持的可选择加密方式
在这里插入图片描述
第二行,服务器返回给客户,从客户端发过来的加密方式中选择一种确定的加密方式
在这里插入图片描述
第三行 服务器又发给客户端一个信息,带着证书在这里插入图片描述
server key exchange是一个对称加密,密钥协商的过程
要保证客户端和服务端的密钥相同,这样对称加密才能解开
server hello done代表服务端已经把这个密钥协商消息给你发过去了,然后需要你客户端去做

第四行 当前客户端给服务器发送客户端生成密钥的规则,注意:仅仅是发送响应算法的规则和一些参数,不会把真正的密钥传过去的

这一过程主要为了客户端和服务器产生相同的密钥串 ,并且客户端通知服务端自己这边已经生成好了密钥
在这里插入图片描述
第六行,
第一个是sessionTicket所代表的意思是会话的id不用id来表示,用这个加密的sessionTicket来表示
在这里插入图片描述
第二个是服务器返回,切换我们的密钥,告知客户端我们可以用这个密文传输数据了
在这里插入图片描述
第三个是告诉客户端,当前我们协商的密钥是正确的
在这里插入图片描述
第7行 applicationData表示我们可以真正的进行密文传输了,以后客户端和服务端的通话都是这种applicationData,http-over-tls就是https,下面的是加密后的传输的内容
在这里插入图片描述

总结

  1. 有了CA证书+签名,服务端就不可以被伪造
  2. 以后通讯的内容是不是可以被保密的,下面这部分就是这个过程,告诉算法和参数,推算DLH算法
    在这里插入图片描述
    https不仅仅要验证服务端身份是否可靠
    同时还要保证客户端和服务端以后的通讯是加密的

ssl和tsl

TLS(Transport Layer Security,传输层安全协议)是更为安全的升级版 SSL(Secure Socket Layer,安全套接字层)

协议年份
SSL 2.01995
SSL 3.01996
TLS 1.01999
TLS 1.12006
TLS 1.22008
TLS 1.32018
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值