对称加密
定义
加解密使用同一密钥
工作原理
加密过程:明文通过加密算法和一个密钥加密成不可读的密文
解密过程:接收方使用相同密钥和解密算法解密成明文
常见对称加密算法
AES
工作原理
- 加密模式:分组加密算法,使用固定大小的块进行加密,默认是128bit/16Byte的块
- 密钥长度:支持128/192/256位密钥长度,长度越大,安全性越高,对应加解密复杂度也会增加
- 轮数:根据不同长度密钥,加密过程经过多轮(10、12、14)加密操作,每一轮含多个步骤,如字节替代、行移位、列混淆和轮密钥加
优点
- 高安全性:AES被认为是目前最安全的对称加密算法之一
- 性能优异:AES的加密和解密速度都很快,尤其是在硬件支持下,AES的性能表现非常优秀
- 灵活性:支持多种密钥长度和加密模式,适应不同安全需求
3DES
工作原理
- 三重加密:使用3个不同密钥进行加密,或者一个密钥加密三次
- 密钥长度:112/168位
RC4
与分组加密算法不同,RC4是一种流加密算法,即数据按字节或比特流的方式加密
工作原理
流加密:RC4生成一个密钥流,然后将数据流的每个字节与密钥流的相应字节进行异或(XOR)操作,从而生成密文。解密过程与加密过程相同,只需再次进行异或操作即可恢复明文
密钥长度:RC4支持可变长度的密钥(通常为40至256位)
优缺点
优点
- 速度快
- 算法简单
缺点
- 密钥管理难:需要通信双方安全的传输和存储,可能会泄露
- 扩展性差:多方通信中,每一对通信方都需要一个独立的密钥,通信方增加后,密钥管理难度变复杂
非对称加密
定义
有两个密钥,公钥和私钥,公钥用于加密,私钥用于解密
工作原理
- 公钥加密:公钥公开给所有人,用于加密数据,只有持有私钥才能解密
- 私钥解密:公钥加密,公钥和密钥是一对
常见算法
RSA
工作原理
- 大数分解:安全性基于大数分解的计算难度,RSA算法生成两个大素数,利用它们生成公钥和私钥
- 密钥生成
- 选择两个大素数p和q,计算乘积\(n = p * q\)
- 计算n的欧拉函数,\(\varphi(n) = (p - 1) * (q - 1)\)
- 选择一个与\(\varphi(n)\)互质的整数e,作为公钥的指数
- 计算公钥的指数d使得\(e * d = 1(mod \varphi(n))\)
- 公钥为(e, n),私钥为(d, n)
- 加解密过程
- 密文 = 明文 ^ e mod n
- 明文 = 密文 ^ d mod n
缺点
- 速度较慢
- 密钥长度大:通常需要较大的密钥长度(2048位或者更大),增加了存储和传输开销
ECC(椭圆曲线算法)
工作原理
- 基于椭圆离散曲线对数问题,被认为比RSA大数分解问题更难
- 密钥生成
- 选择一个椭圆曲线上的基点G和一个随机数d作为私钥。
- 计算\(Q = d * G\),得到公钥Q。
- 公钥为Q,私钥为d
- 加解密过程
- 加密:使用接收方的公钥和椭圆曲线上的点生成密文
- 解密:使用私钥对密文进行解密,还原出明文
优点
- 高效性:在同样安全级别下,ECC所需密钥长度远小于RSA,加解密更快,性能更高
- 较小的密钥:使用较短的密钥,占用存储空间少
优缺点
优点
- 安全性高
- 密钥管理简单
缺点
- 速度慢
- 算法复杂
其他算法
哈希算法/摘要算法/摘要信息算法
将任意长度的数据转换为固定长度的哈希值(摘要)
哈希算法是单向的,无法从哈希值反推原始数据
MD5
SHA-256
数字签名算法
DSA
工作原理
- 基于离散对数问题:DSA的安全性依赖于离散对数问题的难度
- 签名生成
- 生成私钥x和对应的公钥y。
- 对要签名的数据计算哈希值H。
- 生成一个随机数k,计算签名值r和s。
- 签名由(r, s)组成
- 签名验证:验证方使用签名(r, s)、公钥y和哈希值H来验证签名是否有效
优点
- DSA专用于数字签名,不用于加密数据,所以生成和验证签名方面性能较好
缺点
- 速度较慢:签名生成速度较快,但是验证速度较慢
- 随机数要求高:随机数生成不当,容易造成私钥泄露