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

相关推荐
apihz39 分钟前
域名WHOIS信息查询免费API使用指南
android·开发语言·数据库·网络协议·tcp/ip
guts°2 小时前
10-ACL技术
网络·网络协议
群联云防护小杜2 小时前
深度隐匿源IP:高防+群联AI云防护防绕过实战
运维·服务器·前端·网络·人工智能·网络协议·tcp/ip
en-route2 小时前
Http请求中的特殊字符
spring·http
2301_780789666 小时前
UDP和TCP的主要区别是什么
服务器·网络协议·web安全·网络安全·udp
有书Show12 小时前
个人IP的塑造方向有哪些?
网络·网络协议·tcp/ip
游戏开发爱好者812 小时前
iOS App 电池消耗管理与优化 提升用户体验的完整指南
android·ios·小程序·https·uni-app·iphone·webview
代码搬运媛13 小时前
HTTP REST API、WebSocket、 gRPC 和 GraphQL 应用场景和底层实现
websocket·http·graphql
不认输的西瓜18 小时前
前端网络知识——HTTP和HTTPS
http·https
DoraBigHead18 小时前
应用层:万维网的魔法门,协议的隐秘契约
网络协议