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私钥和服务器证书还能验证是不是真正的服务器公钥。

相关推荐
FeelTouch Labs11 分钟前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
千天夜2 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
follycat2 小时前
[极客大挑战 2019]HTTP 1
网络·网络协议·http·网络安全
earthzhang20213 小时前
《深入浅出HTTPS》读书笔记(5):随机数
网络协议·http·https
xiaoxiongip6663 小时前
HTTP 和 HTTPS
网络·爬虫·网络协议·tcp/ip·http·https·ip
JaneJiazhao3 小时前
HTTPSOK:SSL/TLS证书自动续期工具
服务器·网络协议·ssl
JaneJiazhao3 小时前
HTTPSOK:智能SSL证书管理的新选择
网络·网络协议·ssl
CXDNW3 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
城南vision5 小时前
计算机网络——HTTP篇
网络协议·计算机网络·http
‍。。。7 小时前
使用Rust实现http/https正向代理
http·https·rust