PART1:基本知识储备
1.对称密钥(Symmetric Encryption)
- 对称密钥加密算法使用相同的密钥(Symmetric key)来进行数据加密(encryption)和解密(decryption)
- 加密和解密过程都使用相同的密钥,因此加密速度较快,适用于大量数据的加密。
- 问题在于密钥的管理:在通信双方交流之前,需要确保安全地分享密钥,这可能会带来密钥安全性的挑战。有时黑客容易截取公钥,从而尝试解密数据。
- 举例:常见的对称加密算法包括AES(Advanced Encryption Standard)
2.非对称密钥(Asymmetric Encryption)
- 非对称密钥加密算法使用一对密钥:公钥(PUBLIC KEY)和私钥(PRIVATE KEY)。公钥用于加密数据,私钥用于解密数据。
- 公钥可以公开发布,任何人都可以使用它来加密数据,但只有持有私钥的实体才能解密数据。
- 非对称密钥加密更安全,因为私钥不需要在通信之前共享,从而减少了密钥泄漏的风险。
- 非对称加密算法也用于数字签名,以确保数据的来源和完整性。
- 举例:常见的非对称加密算法包括RSA(Rivest-Shamir-Adleman)和ECC(Elliptic Curve Cryptography)。
3.SSL证书
公钥 | SSL证书中包含了服务器的公钥。这个公钥用于加密数据,只有服务器持有相应的私钥才能解密这些数据 |
证书颁发者信息 | 证书颁发者是一个受信任的证书颁发机构(CA),他们确认了服务器的身份并签发了证书。证书中包含了CA的名称、数字签名等信息 |
证书持有者信息 | 这是服务器的信息,包括域名、公司名称、组织信息等。这些信息帮助用户验证他们是否与期望的网站进行通信 |
数字签名 | 证书颁发者使用其私钥对证书进行数字签名,这表示证书是由该颁发机构签发的,并且未被篡改。浏览器使用颁发者的公钥来验证数字签名。 |
有效期 | SSL证书有一个有效期,在这个时间范围内证书是可用的。过期的证书可能会导致浏览器发出警告,因为安全性可能受到威胁 |
证书指纹 | 这是一个唯一的标识证书的字符串,可用于验证证书的完整性。 |
加密算法信息 | 证书指定用于加密通信的算法,如RSA、ECC等,以确保数据的安全传输 |
主题备用名称 | 证书可以包含多个域名或子域名,使同一个证书适用于多个域名 |
4.CA公钥预置于系统
CA机构也是拥有其CA公钥及CA私钥的,并且CA公钥存在于操作系统内,即当安装操作系统时就会带有CA公钥,因此会使用CA机构来进行非对称加密的验证,如下图:
PART2:HTTPS安全传输流程
ps:在上述过程中,并未涉及私钥(private key)的传输,因此确保了传输的安全性。相关证书颁发机构(CA)的公钥已预先嵌入操作系统内部,从而为通信提供了安全性保障。
数据是如何加密和解密的?
步骤1: 客户端(浏览器)和服务器建立 TCP 连接。
步骤2:客户端向服务器发送“客户端问候”。该消息包含一组必要的加密算法(密码套件)及其可以支持的最新 TLS 版本。服务器响应“server hello”,以便浏览器知道它是否可以支持算法和 TLS 版本。然后服务器将 SSL 证书发送给客户端。证书包含公钥、主机名、到期日期等。客户端验证证书。客户端验证这些信息
步骤3: 验证 SSL 证书后,客户端生成会话密钥并使用公钥对其进行加密。服务器接收加密的会话密钥并用私钥解密。
步骤4: 现在客户端和服务器都持有相同的会话密钥(对称加密)[这种情况下,采用对称加密是合适的,因为会话密钥没有被暴露,而非对称加密则需要进行相当大的数学计算开销。对称加密可以确保数据在安全的双向通道中进行加密的传输,适用于需要长时间会话中的数据交换]
参考文章:http://t.csdn.cn/zX4IZ
欢迎指正.......