常见加密算法总结
一、加密算法类型
1.对称加密
- 加密和解密都是用同一个密钥,安全性相对较低。
- 密钥交付问题:如何把密钥通过网络,安全地交付到使用者手上?《需要使用非对称加密》
- 加解密速度很快,适用于数据比较长的场景。
- 随着使用频率增高,密钥数量会变多,管理困难,在分布式网络系统上使用较为困难。
- 主要算法有:DES、3DES、AES、RC2、RC4、RC5、Blowfish。
非对称加密
- 加密和解密使用不同的密钥,公钥用来加密数据,私钥用来解密数据。
- 安全性高。
- 加解密速度慢,适用于数据比较短的场景。
- A与B需要互通消息,两者都需要生成一对用于加解密的公钥、私钥,A的私钥保密,公钥告诉B,B的私钥保密,公钥告诉A。
- 主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC等。
二、加密算法应用
- 信息加密:收信者是唯一能够解开加密信息的人,所以收信者手里必须是私钥;发信者手里的是公钥,其他人知道公钥没有关系,因为其他人发来的信息对收信者没有意义(收信者如何知道要收哪个发信者的信息?)
- 登录认证:客户端需要将认证标识传送给服务器,此认证标识其他客户端可以知道,因此需要客户端手里保着私钥,然后用私钥加密此认证标识,服务器保存着公钥,其他服务器知道公钥没有关系,因为客户端不需要登录其他服务器
- 数字签名:用来确认信息没有受到伪造,确认是信息拥有者发出来的,附在信息原文后面,就像手写的签名一样,具有不可抵赖性和简洁性。简洁性=》对信息原文做哈希运算,得到消息摘要,信息越短,加密耗时越少。不可抵赖性=》必须使用私钥加密消息摘要,得到签名,不能用公钥,因为公钥很多人都有,签名可以被随意伪造。
- 数字证书:发信者怎么知道从网络上获取的公钥就是真实的呢?公钥有可能被中间人攻击替换的,例如A与B通信,A生成了一对密钥,A拥有私钥,B拥有公钥,A使用私钥加密,B使用A的公钥解密,如果现在C自己生成一对密钥,并且使用生成的公钥将B手上持有的A公钥替换掉,然后C使用生成的私钥就可以给B发消息,此时B还觉得是跟A通信,其实是和C通信;这样就需要第三方机构来保证公钥的合法性,此第三方机构就是CA(Certificate Authority,证书颁发机构);CA用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书;信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了;信息接收者先用CA给的公钥解出信息所有者的公钥,这样就保证信息所有者的公钥是真实的,然后就能通过该公钥验证数字签名是否真实了。(如何确保获取CA公钥不被攻击替换?如何确保CA机构是权威的?答案是:认证机构形成一个树形结构,高级别的权威机构为低级别的机构创建证书,如果要验证的话,就是一级一级向上认证,信任链条的终点是Root CA,它采用自签名,对它的签名是无条件信任)。
三、加密技术应用
1.HTTPS
- 采用“混合加密+数字证书”两种技术,来保证整个通信过程的安全可靠
- 在传输层和应用层之间加了一层SSL/TLS,用于对TCP传输内容的加解密
- https原理流程图:
