1.1. 加密:
1.1.1. 对称加密:
- 特点:加解密用一个密钥,加解密效率高,速度快,有密钥交互的问题
- 问题:双方如何交互对称密钥的问题,用非对称密钥的公钥加密对称密钥的混合加密方式
- 常用对称加密:AES加密,密钥长度 128、256、192位,加密级别高,速度快
- 以及DES ,3DES加密算法等
1.1.2. 非对称加密:
- 特点:没有密钥交互的问题,加密速度慢、仍然有窃听风险
- 描述:非对称密钥双方使用不同的密钥来加解密,并且不能通过一个密钥推算出另一个密钥:
- 使用:公钥加密,私钥解密_——私钥加密(数字签名),公钥解密,并且用哈希函数计算数字签名比对是否一致(用于验证该信息是否由中间人篡改)
- 常用加密算法:
-
- DSA:数字签名算法,是一种标准的 DSS(数字签名标准)
- RSA: 由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
- A把事先准备好了非对称密钥对,分别为公钥和私钥,这一套非对称密钥对能相互加解密。公钥是公开的,私钥只有自己才有。然后A把公钥发送给B,或者公钥放在服务器B自行下载。B拿到了公钥后用公钥的一套算法加密信息后传输给A,A用私钥执行另一个算法解密获得明文信息。
1.1.3. 混合加密:
使用:传输大量数据使用对称加密,加解密速度快;对称加密分配问题:用非对称加密的公钥加密这个对称密钥再传递给对方。
过程:
A:这是我的公钥public_A,你收好,你生成对称密钥也给我一下
B:好的,收到public_A,你收好对称密钥secretKey。然后用public_A加密这个secretKey
A:收到消息,private_A解密出来是secretKey。
中间人攻击:
窃听篡改:
A:这是我的公钥public_A,你收好,你生成对称密钥也给我一下
X:获得了A的公钥,把自己的公钥public_X发给B… B这傻子还以为真的是A的公钥呢
B:好的,公钥public_X已收到,生成一个对称密钥secretKey,然后用public_X加密这个对称密钥。
X:截获了这个消息,用自己私钥private_X解密出对称密钥secretKey,自己再生成一个secretKeyXXX用public_A加密一下发送给A。A这傻子还以为你们接下来会安全的用secretKey通信吗哈哈哈
A:收到消息,private_A解密出来对称密钥secretKeyXXX(其实是X篡改了)
上图中,中间人X能不仅获取A和B之间通信内容,还能任意修改,相当于一个代理抓包,修改数据。
在混合加密的传输过程中,也存在中间人篡改信息的可能性,但是如果我们能够确保使用者获取的公钥可信,则可以达到一定的防护
1.2. 数字签名:
1.2.1. 过程:
私钥加密(生成数字签名):
- 数字签名是对数据的哈希值(或摘要)进行私钥加密的结果。发送者首先使用哈希函数计算数据的哈希值,然后使用自己的私钥对这个哈希值进行加密,生成数字签名。
- 数字签名用于验证数据的完整性和来源,因为私钥是唯一的,只有私钥的持有者才能生成与数据相匹配的签名。
公钥解密(验证数字签名):
- 接收者收到数据和对应的数字签名后,他会使用发送者的公钥来解密这个签名,从而得到原始数据的哈希值。
- 同时,接收者也会对接收到的数据使用相同的哈希函数进行计算,得到一个新的哈希值。
- 如果这两个哈希值相匹配,那么接收者就可以确认数据在传输过程中没有被篡改,并且确实是由声称的发送者发送的。
1.2.2. 数字摘要:
特点:
- 不可逆:只有摘要算法,没有密钥(只能单向加密,不能解密)
- 难题友好型:破解只能暴力生成原文,通过摘要算法计算一致的摘要结果
- 发散性:对原文的一点点改动,摘要会剧烈变化
- 抗碰撞性:原文不同,摘要也不同,摘要一致的可能性非常低
常见摘要算法:(推荐:SHA2 ) 、MD5、SHA1
1.2.3. 数字摘要的作用:
- 确保数据的完整性和来源:私钥加密生成数字签名,这个签名是对数据的哈希值进行加密的结果。只有私钥的持有者才能生成与数据相匹配的签名,因此,接收方可以通过公钥解密签名并验证数据的完整性,确认数据在传输过程中未被篡改,并且确实是由声称的发送者发送的。
- 防止否认:可以防止发送方否认其发送过某条信息,因为签名是唯一的,且与发送方的私钥紧密相关。
1.3. 数字证书:
CA认证机构具有权威性和公正性的第三方信任机构,会验证申请者的真实身份,负责签发和管理数字证书,
数字证书可以验证用户的身份并确保该使用者的公钥的可用!避免中间者顶替篡改
主要内容:
颁发过程:
收到数字证书后,用户首先用安装在操作系统的CA公钥解密证书,用证书指定的哈希算法计算证书信息的摘要,通过CA 公钥解密证书的签名获取数字摘要,比对两个数字摘要是否一致,一致后表示该证书信息完整,该用户的公钥可信:获取证书所有者的公钥;
数字证书的检验:
- 数字证书的公钥一般会默认安装在操作系统中,使用操作系统中的公钥可验证CA证书是否由权威机构发布
- 判断网址于证书网址是否一致,确保公钥与目标是否一致对应
- 检验证书的有效时间,是否过期
获取者先从获取的信息中验证数字证书的信息完整性,从证书获取公钥,用于验证获取信息的完整性,最终查看信息