HTTPS是什么?原理是什么?用公钥加密为什么不能用公钥解密?

HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,它通过在HTTP协议之上加入SSL/TLS协议来实现数据加密传输,确保数据在客户端和服务器之间的传输过程中不会被窃取或篡改。

HTTPS 的工作原理

  1. 客户端发起HTTPS请求 :第一次握手,客户端告诉服务端,它支持什么样的加密协议版本(TLS1.2),使用什么样的加密套件(RSA),并且给出一个客户端随机数(明文)。

  2. 服务器返回证书 :第二次握手,服务端收到请求后,告诉客户端确定的加密方式等信息,服务器证书和服务器随机数(明文)。这个证书由受信任的证书颁发机构(CA)签署,确保其真实性。

  3. 客户端验证证书 :第三次握手,客户端收到服务器发送的数字证书后,会验证其合法性,包括证书的颁发机构、有效期等。如果证书可信,客户端会从证书里取出服务器公钥,同时再生成第三个随机数(服务器公钥加密)。通过三个随机数用算法生成一个会话密钥。

  1. 客户端加密随机数:客户端使用服务器的公钥加密第三个随机数,并将加密后的第三个随机数发送给服务器。

  2. 服务器解密会话密钥:第四次握手,服务端使用自己的私钥解密得到第三个随机数。结合三个随机数,跟客户端一样通过同样的算法获得一个会话密钥。此时,客户端和服务端都拥有了相同的会话密钥。

  3. 使用对称密钥进行加密通信:四次握手之后,客户端和服务器使用这个会话密钥(对称加密)进行后续的加密通信,确保数据传输的安全性。

公钥加密和解密

在非对称加密中,有一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。这是因为:

  • 公钥(公开密钥):可以公开给任何人,主要用于加密数据。由于公钥是公开的,任何人都可以使用公钥加密信息,但只有对应的私钥持有者才能解密这些信息。

  • 私钥(私有密钥):需要保密,仅持有者自己知道。私钥用于解密由公钥加密的数据。

为什么公钥加密的数据不能用公钥解密?

公钥加密和私钥解密是一对数学函数,它们是单向的。这意味着公钥只能用来加密数据,不能用来解密数据,只有私钥可以解密由公钥加密的数据。这种设计的目的是为了确保即使公钥是公开的,数据的解密只能由私钥持有者完成,从而保证数据的安全性。

总结来说,HTTPS通过SSL/TLS协议提供了安全的数据传输机制,确保数据在传输过程中不会被窃取或篡改。而非对称加密则通过公钥加密、私钥解密的方式确保信息的保密性和完整性。

为什么不能直接传公钥?

公钥是公开的,任何人都可以使用公钥加密数据,而只有私钥持有者才能解密。如果用公钥加密对称密钥,即使对称密钥在传输过程中被拦截,只有私钥持有者才能解密得到对称密钥,从而确保了安全性。经过CA私钥加密后再传过去,通过CA私钥和服务器证书还能验证是不是真正的服务器公钥。

相关推荐
喜欢猪猪12 小时前
websocket的工作原理
网络·websocket·网络协议
Da1NtY092613 小时前
[计算机网络] 虚拟局域网
网络·网络协议
qq_3391911413 小时前
prometheus 安装node_exporter, node_exporter 安装最新版 普罗米修思安装监控服务器client
网络协议·rpc·prometheus
哲学渣13 小时前
TCP报文校验和(checksum)计算
网络·网络协议·tcp/ip
伏颜.14 小时前
HTTP协议深入
网络·网络协议·http
花开盛夏^.^16 小时前
TCP/IP模型每层内容和传输单位
网络·网络协议·tcp/ip
Burger232517 小时前
【路由交换技术】Cisco Packet Tracer基础入门教程(五)
网络协议·计算机网络·拓扑学
奇遇少年20 小时前
HTTPS基础
网络协议·http·https
德迅云安全--陈琦琦20 小时前
详解 HTTP 中间人攻击
网络协议·http·iphone
才艺のblog21 小时前
127还是localhost....?
javascript·https·浏览器特性