HTTPS协议原理 网络安全
更加安全的协议
基础
明文是指未加密的原始数据,即可以直接读取和理解的内容。明文可以是文本、文件、图像等,在传输或存储之前,如果不进行加密,它们都被称为明文。
密文是指通过加密算法对明文进行加密处理后生成的不可读形式的数据。密文的目的是保护信息的隐私和安全,使未经授权的用户无法理解数据的内容。
- 明文传输还极大降低了
中间人攻击
的成本——中间人攻击是一种网络攻击方式,攻击者通过秘密拦截和篡改通信双方之间的消息,伪装成双方中的一方,从而获取或操纵敏感信息。
- 明文传输还极大降低了
密钥是加密和解密过程中的核心参数。它是用于控制加密算法的一个值,只有持有正确密钥的一方才能对密文进行解密以恢复原始明文。
HTTPS安全性的简单理解
HTTPS
,也是一个应用层协议,在HTTP
协议的基础上,引入了加密
协议来对应用层传输的内容进行加密。- 例如:常见的加密协议如:
SSL
或TLS
协议。
- 例如:常见的加密协议如:
SSL
- 权威的加密解密方案。
Cookies
安全
- 在用户使用HTTPS协议连接服务器时,服务器中会生成一个
session
文件保存着用户的信息,并且会生成全站唯一的session ID
。并且用这个ID来给session
命名。- 例如:使用
Redis
集群来管理session
。
- 例如:使用
- 用户的
cookies
中保存着session ID
。- 即在客户端
Set Cookie:Session ID
。 - 这样在客户端的
cookies
中,就只会保存session ID
,在一定程度上防止用户信息泄漏。
- 即在客户端
session ID
的安全
- 由于
session ID
是服务端管理分配的,因此可以有若干保护信息的方案。- 例如:当异地登录的时候,就暂停该用户的
session ID
服务。
- 例如:当异地登录的时候,就暂停该用户的
加密技术
对称加密
对称加密是一种加密方式,在这种方式下,加密和解密使用的是相同的密钥。
需要解决数据如何发送给服务器的问题。
原理:
- 加密:发送方使用一个密钥对明文进行加密,生成密文。
- 解密:接收方使用相同的密钥对密文进行解密,还原出明文。
特点:
- 速度快:对称加密算法通常比非对称加密算法更快,适合对大数据量的加密。
- 密钥管理困难:由于加密和解密使用的是同一个密钥,密钥的分发和管理变得非常重要且困难。如果密钥被泄露,攻击者可以解密所有通信内容。
非对称加密
非对称加密是一种加密方式,在这种方式下,加密和解密使用的是一对密钥,即公钥和私钥。
原理:
- 公钥加密:发送方使用接收方的公钥对明文进行加密,生成密文。
- 私钥解密:接收方使用自己的私钥对密文进行解密,还原出明文。
或者:
- 私钥加密:发送方使用自己的私钥对明文进行加密,生成密文。
- 公钥解密:接收方使用发送方的公钥对密文进行解密,还原出明文。
特点:
- 安全性高:即使公钥被公开,只有拥有对应私钥的人才能解密。私钥不需要在网络上传输,因此更安全。
- 速度较慢:非对称加密算法通常比对称加密算法慢,通常用于加密少量数据(如对称加密的密钥)。
非对称加密与对称加密配合使用
- 同样能被中间人攻击破解 —— 因为我们没办法确定公钥的可信度。
- 建立连接:
- 当客户端(如浏览器)与服务器(如网站)建立安全连接时,服务器首先生成一对非对称密钥(公钥和私钥)。
- 公钥分发:
- 服务器将它的公钥发送给客户端,客户端使用该公钥进行加密操作。
- 对称密钥生成:
- 客户端生成一个对称密钥(通常称为会话密钥或对话密钥),这个密钥将用于后续的通信加密。
- 对称密钥加密:
- 客户端使用服务器提供的公钥对生成的对称密钥进行加密,并将加密后的对称密钥发送给服务器。
- 对称密钥解密:
- 服务器使用它的私钥解密客户端发来的加密对称密钥,得到原始的对称密钥。
- 数据传输:
- 接下来,客户端和服务器之间的通信就使用这个对称密钥进行加密和解密。由于对称加密速度快,这样的传输效率更高。
保证公钥和证书的可信度的方法:
数字签名:
数字签名的工作原理通常涉及散列算法和非对称加密算法。其过程如下:
生成数据摘要:首先,发送方对需要签名的数据进行散列处理,生成固定长度的摘要(Hash值)。常用的散列算法包括SHA-256等。
加密摘要:发送方(如CA机构)使用自己的私钥对数据摘要进行加密,生成数字签名。
附加签名:发送方将数字签名(例如CA证书)附加到原始数据上,一起发送给接收方。
验证签名:接收方收到数据后,首先使用发送方的公钥解密数字签名(例如CA的公钥),得到解密后的摘要。接着,接收方对收到的数据再次计算摘要,并将其与解密后的摘要进行比较。如果两者一致,说明数据内容没有被篡改且确实来自发送方。
一般客户端都会内置一些权威机构的公钥。并且所有客户端都只相信权威机构的公钥。——因此中间人没有资格进行证书的重新生成。
如果想要修改签名和数据,那么会因为接收方缺少中间人的公钥而传输失败。
如果仅仅对数据进行修改,那么再次计算摘要时,就会出现不同的加密摘要,从而侦测到修改。
非对称加密,对称加密配合使用与证书配合使用——安全快速
数据处理
数据摘要
数据摘要是将任意长度的输入数据通过散列函数处理后,生成的一个固定长度的输出数据——即数据指纹。可以用于验证数据的完整性等功能。数据指纹通常具有以下特征:
- 唯一性:不同的原始数据会生成不同的指纹。
- 不可逆:数据指纹不能反推出原始数据,保证了数据的隐私性。
- 固定长度:无论原始数据的大小如何,指纹的长度都是固定的。
常见的散列函数:
- MD5(Message Digest Algorithm 5)
- SHA-1(Secure Hash Algorithm 1)
- SHA-256(Secure Hash Algorithm 256-bit)
HTTPS 工作过程中的密钥与证书的使用
HTTPS 工作过程中涉及到三组密钥,分别执行不同的任务:
- 第一组密钥(非对称加密):
- 用途:用于校验证书是否被篡改。
- 服务器持有:私钥(在生成 CSR 文件与申请证书时获得)。
- 客户端持有:公钥(操作系统内置了可信任的 CA 认证机构及其对应的公钥)。
- 过程:当客户端发起请求时,服务器返回携带签名的证书。客户端使用内置的公钥验证证书的合法性,从而确保证书没有被篡改,并且验证证书中携带的服务器公钥的权威性。
- 第二组密钥(非对称加密):
- 用途:用于协商生成对称加密的密钥。
- 过程:客户端使用从 CA 证书中获得的可信任的服务器公钥来加密随机生成的对称加密密钥。该密钥随后传输给服务器,服务器通过私钥解密获取到对称加密密钥。
- 第三组密钥(对称加密):
- 用途:用于加密和解密客户端和服务器之间后续传输的数据。
- 过程:一旦对称加密密钥被协商生成,客户端和服务器使用该密钥对后续的通信数据进行加密和解密,确保数据传输的安全性。
通过这三组密钥的配合,HTTPS 能够确保数据传输的安全性和通信双方身份的可信性。