目录
3.1 AES(Advanced Encryption Standard)
3.2 3DES(Triple Data Encryption Standard)
前言
本文旨在概念性地介绍关于信息安全中的加密和解密,后续会详细阐述每种加密方式的基本原理。
1. 加密与解密
- 发送方:使用接收方的公钥对数据进行加密,然后发送给接收方。
- 接收方:密方式确保了数据在传输过程中的安全性,即使数据被第三方截获,也无法解密获取原始内容。
2. 数字签名DA
- 发送者: 使用自己的私钥对信息进行签名,然后将签名和原始信息一起发送给接收者。
- 接收者: 使用发送者的公钥对签名进行验签,如果验证成功,则说明信息确实是由发送者发送的,且信息在传输过程中没有被篡改。
3. 对称加密
对称加密使用相同的密钥进行数据的加密和解密。它具有速度快、效率高的特点,因此适合用于大量数据的传输。在HTTPS中,对称加密用于实际的数据传输。常见的对称加密算法包括AES、DES和3DES。
3.1 AES(Advanced Encryption Standard)
加密过程:使用一个对称密钥对明文进行加密,生成密文。
解密过程:使用相同的对称密钥对密文进行解密,还原出明文。
密钥长度:AES支持128位、192位和256位密钥长度,密钥长度越长,安全性越高。
3.2 3DES(Triple Data Encryption Standard)
加密过程:对数据进行三次DES加密,每次使用不同的密钥。
解密过程:对数据进行三次DES解密,还原出明文。
密钥长度:3DES使用三个56位的密钥,总共168位。
4. 非对称加密
非对称加密使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。非对称加密的安全性高,但加密和解密速度较慢,通常用于加密对称密钥而非实际数据传输。
私钥 Private Key
私钥是保密的,只能由拥有者自己使用。它用于解密数据或生成数字签名。
公钥 Public Key
公钥是公开的,可以分发给任何人。它用于加密数据或验证数字签名。
RSA(Rivest-Shamir-Adleman)
公钥加密:客户端生成会话密钥后,使用服务器的公钥对会话密钥进行加密,并发送给服务器。
私钥解密:服务器使用其私钥解密会话密钥,确保只有服务器能够读取会话密钥。
密钥长度:RSA的密钥长度通常为2048位或以上,长度越长,安全性越高。
ECC(Elliptic Curve Cryptography)
公钥加密:使用椭圆曲线数学算法生成公钥和私钥,进行加密和解密。
私钥解密:相比于RSA,ECC提供更高的安全性和效率,适合资源受限的设备。
会话密钥: 用于对称加密的临时密钥,仅在当前会话中有效。会话密钥通过非对称加密进行安全传输,一旦会话结束,密钥就会失效。这样既保证了数据传输的安全性,又提高了加密解密的效率。
5. PKI&&RA&&CA&&CRL
PKI、RA、CA、CRL是与信息加密和数字证书管理相关的关键概念。
5.1 PKI
目的:解决公私钥信任问题
Public Key Infrastructure公钥基础设施,通过这套基础设施对公钥进行统一的管理,通过PKI体系可以对公钥进行发布、吊销等管理操作。PKI公钥基础设施包括:
- 认证机构(CA)
- 注册机构(RA)
- 证书撤销列表(CRL)
5.2 RA
- RA是PKI体系中的一个重要组成部分,全称为Registration Authority,即注册中心。
- RA是CA的证书发放、管理的延伸,它提供用户和CA之间的一个接口。
- 1. 负责证书申请者的信息录入、审核以及证书的发放等。
- 2. 对发放的证书完成相应的管理功能。
- RA一般都是由一个独立的注册机构来承担,它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。
- 但注意:RA不给用户签发证书,而是对用户进行资格审查。
5.3 CA
CA是PKI的信任基础,全称为Certificate Authority,即证书颁发机构。在PKI体系中,认证中心CA是整个PKI体系中各方都承认的一个值得信赖的、公正的第三方机构.
1. CA负责产生、分配并管理PKI结构下的所有用户的数字证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份。
2. CA负责证书废止列表CRL的登记和发布。
数字证书是一种权威性的电子文档,它用于证明某一主体(如个人、企业或机构)的身份以及其公钥的合法性。
5.4 CRL
CRL是Certificate Revocation List的缩写,即证书废止列表,也被称为证书黑名单。当一个证书因为某些原因(如私钥泄露、证书过期、证书持有者身份变更等)需要被废止时,CA会将这个证书添加到CRL中,并发布给所有需要验证证书有效性的实体。这样,当某个实体需要验证某个证书的有效性时,它就可以查询CRL,以确定该证书是否已经被废止。
**总结**:
- **PKI** 是整体框架。
- **RA** 负责验证用户身份。
- **CA** 签发和管理证书。
- **CRL** 列出已吊销的证书。
6. 数字证书
是由可信的证书颁发机构(CA,Certificate Authority)签发,用于验证服务器身份的电子文件。遵循它遵循x.509 v3格式。
数字证书包含公钥信息以及公钥拥有者信息:
常见数字证书格式和后缀: <区别在于是否可以包含私钥>
数字证书工作流程:
数字证书确保了客户端与服务器之间的通信是安全的,并且服务器的身份是可信的。
6.1 证书区别
未被签名的公钥证书或自签名的证书(这里的“自签名”指的是CA给自己颁发的证书,与上述自签名证书在应用场景上有所不同)。
包含CA的公钥,用于验证由该CA签发的其他证书的有效性。
安装根证书意味着对这个CA认证中心的信任。
6.2 数字证书签发
客户端校验服务端数字证书入上图右:
- 客户端会使⽤同样的 Hash 算法获取该证书的 Hash 值 H1;
- 通常浏览器和操作系统中集成了 CA 公钥信息,浏览器收到证书后可以使⽤ CA 公钥解密 Certificate Signature 内容,得到Hash 值 H2 ;
- ⽐较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。
6.3 证书链
-假设 CA 签发了一个证书 A,在这个过程中 CA 称为 Issuer,A 称为 Subject,假设 A 是一个受信任的中间证书,已经预装在我们的操作系统中了。现在由 A 利用它自己的私钥给某一个网站签发了一个证书 B。
-现在当我们的电脑需要访问该网站的时候,该网站就会给我们发来一个证书 B,由于我们的浏览器并不知道 B 证书是否合法,但是我们的电脑上已经预装了 A 证书,我们可以从 A 证书中提取出 A 的公钥,然后利用 A 的公钥对 B 证书的签名进行验证(因为 B 证书的签名是 A 的私钥签的),如果验证通过了,就说明 B 是合法的。
-相同的道理,B 也可以继续签发 C 证书,C 继续签发 D 证书,这样就形成了一个信任链。
-如果服务端的签名是 D 证书,那么一般来说,服务器返回给浏览器的就会包含 B、C、D 三个证书(因为 A 证书已经在我们的电脑上了),即使只返回 D 证书,浏览器也可以根据 D 书中的信息,自动下载到 B、C 两个证书然后进行验证。
-客户端收到 baidu.com 的证书后,发现签发者不是根证书,就不能使用本地的根证书公钥(浏览器及系统客户端默认会注入信任的CA根证书)验证 baidu.com 证书是否可信。于是,客户端根据 baidu.com 证书中的签发者,找到该证书的颁发机构 “GlobalSign RSA OV SSL CA”,然后向 CA 查询中间证书。
-请求到证书后发现该证书是由 “GlobalSign Root CA” 签发的,由于 “GlobalSign Root CA” 没有上级签发机构,说明它是根证书。那客户端就会检查此证书是否在本地已经安装的证书列表中,如果有,则可以利⽤根证书中的公钥去验证 “GlobalSign RSA OV SSL CA” 证书,如果发现验证通过,就认为该中间证书是可信的。
-“GlobalSign RSA OV SSL CA”被信任后,可以使⽤此证书中的公钥去验证 baidu.com 证书的可信性,如果验证通过,就可以信任 baidu.com 证书。
7. HTTP vs HTTPS
HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)都是用于在客户端(如浏览器)和服务器之间传输数据的协议。它们的主要区别在于HTTPS在HTTP的基础上增加了SSL/TLS协议,从而提供了数据加密和身份验证功能。
7.1 SSL/TLS
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是为互联网通信提供安全保障的加密协议。TLS是SSL的升级版本,具有更高的安全性和性能。主要功能:
加密:使用对称加密算法和非对称加密算法对数据进行加密,确保数据在传输过程中保持机密性。
身份验证:通过数字证书验证服务器和客户端的身份,防止中间人攻击。
数据完整性:使用消息验证码(MAC)和散列函数确保数据在传输过程中没有被篡改。
7.2 HTTPS与Web服务器通信步骤
7.3 HTTPS - 对称加密和非对称加密
7.4 HTTPS – 数字签名和数字证书
通信双方为确保自己拿到的对方的公钥是没有被中间人修改的,引入数字证书与数字签名。
7.5 数字签名
基于公钥密码体制,用于验证信息发送者身份和确保信息完整性。
本质:<用私钥加密用HASH算法对消息生成的摘要>
简而言之,就是我对自己发出去的包裹,写个清单,然后再签个名,接收方查看清单,检查我的字迹,检查包裹内容,就知道东西在运输过程中有没有被替换。
发送者
使用自己的私钥对信息进行签名,然后将签名和原始信息一起发送给接收者。
接收者
使用发送者的公钥对签名进行验签,如果验证成功,则说明信息确实是由发送者发送的,且信息在传输过程中没有被篡改。
基本特征:
报文鉴别:接收者能够核实发送者对报文的签名;
报文完整性:接收者不能伪造对报文的签名或更改报文内容;
不可否认性:发送者事后不能抵赖对报文的签名。
基本步骤:
计算摘要:发送方用哈希算法生成报文的摘要,如果内容在传输过程中变更,接收方重新计算摘要的时候,就会和发送方的摘要不一致;
摘要加密:发送方用自己私钥对摘要进行加密,得到数字签名;
发送消息和签名:将原数据和加密后的数字签名打包一起发送;
摘要验证:接收方用发送方公钥对数字签名进行解密,得到摘要,并用同样的哈希算法重新生成摘要进行比对,以验证报文的完整性和真实性。
文章来源:
未完待续。。。