1.pre
首先要明确一下几个概念,加密,数字签名,和数字证书。加密分为对称加密和非对称加密。其中对称加密,双方使用同一个密钥进行加解密。存在的问题是在第一次与陌生人进行通信时,如何安全的传递密钥。而非对称密钥,双方使用不同的密钥进行加解密。通信时,使用公钥进行加密,而使用私钥进行解密。因为私钥是不传输的,所以就解决了密钥传输的安全问题。同时,公钥私钥可以进行身份认证,实现数字签名。具体如下
通过数字签名,能够让公钥的持有方确认数据的完整性和可靠性(确实从私钥持有方发送的)但在与陌生人第一次建立通信时,如何确认收到的公钥是对方发送的,而不是通信被截获之后伪造的。(比如:我想访问B网站,但是请求被截获,C网站伪造了一个公钥发给了我,然后我就用这个公钥加密我的隐私数据,发送给C网站,C网站就用它的私钥进行了解密获取个人信息)。此时我们就需要数字证书,来确认公钥的身份验证。因为数字证书的是由权威机构颁布的,这个证书中所包含的公钥是被认证过的公钥,我们只需要验证证书的真伪,而公钥的真伪则交给了CA担保。证书的真伪是通过CA证书的数字签名来确保的,用事先已经存储在客户端的CA公钥,进行CA的数字签名确认。
2.数字证书
CA(certification authority)颁发数字证书的权威机构,来创建CA证书,包含了以下信息:
3.其他概念
PKI( Public Key Infrastructure ,公钥基础设施)所有与数字证书相关的概念与技术的统称。PKI 的核心是在客户端、服务器和证书颁发机构 (CA) 之间建立的信任。下图例举出了 ,Authentication 和 Certification 的差别,(双方和三方的区别)
SSL(Secure Sockets Layer,安全套接字层)是一种安全协议,用于在互联网上建立加密链接,保护在网络之间传输的数据的安全性和完整性。SSL通过在服务器与客户端之间的通信上实施加密和身份验证来确保数据的私密性和防止数据被篡改。(https,ftps,vpn)
TLS(Transport Layer Security,传输层安全协议)TLS 是 SSL 的不兼容增强版。逐渐取代SSL协议。SSL 与 TLS 两者所使用的算法是不同的,同时 TLS 增加了许多新的报警代码。在认证证书时 TLS 必须与 TLS 之间交换证书, SSL 必须与 SSL 之间交换证书。
SSL工作原理:服务器和客户端,首先会进行加密参数协商。
step1.客户端Hello(ClientHello)
客户端向服务器发送“ClientHello”消息,其中包含客户端支持的TLS版本、提议的加密套件列表(加密算法和密钥交换方法的组合)、一个客户端生成的随机数(Client Random),以及一个新的扩展,名为“key_share”,其中包含客户端的Diffie-Hellman公钥参数。
step2.服务器Hello(ServerHello)
服务器选择一个客户端也支持的加密套件,并发送“ServerHello”消息回客户端,消息中包含服务器的随机数(Server Random)和服务器的Diffie-Hellman公钥参数。
step3.服务器发送证书(Server Certificate)
服务器发送其SSL证书给客户端。这个证书包括服务器的公钥和由证书颁发机构(CA)对该公钥的签名。客户端使用CA的公钥来验证证书的真实性。
step4.服务器完成(Server Finished)
服务器发送一个“Finished”消息,该消息包含对前面所有握手消息的加密散列,以确保握手过程的完整性和安全性。
step5.客户端密钥交换
如果服务器要求客户端认证,客户端将会发送自己的证书和证书验证消息。
step6.客户端完成(Client Finished)
客户端发送一个“Finished”消息,同样包含对前面所有握手消息的加密散列。
在TLS 1.3中,一旦客户端和服务器交换了它们的“Finished”消息,就认为握手完成了,双方可以开始加密通信。客户端和服务器使用会话密钥对通信内容进行加密和解密。这确保了数据的机密性和完整性。