对称加密
对称加密指的是加密和解密使用同一个秘钥,所以叫对称加密。对称加密只有一个秘钥,称为私钥。
优点:算法公开、计算量小、加密速度快、效率高
缺点:数据传输前,发送方和接收方必须确定好秘钥,双方也必须要保存好秘钥。
常见对称加密算法:
DES、3DES、AES、3DES
非对称加密
加密和解密使用不同的秘钥。一把作为公开的公钥,一把作为私钥。公钥加密,私钥解密。私钥加密,公钥解密。
优点:安全,即使密文被拦截,公钥被获取,但只要不知道私钥,也就无法破解密文。
缺点:加密算法比较复杂,安全性依赖算法与密钥,加密和解密效率低。
常见非对称加密算法:
RSA、DSA、ECC
流密码与分组密码
流密码是逐位加密,采用密钥流与明文异或运算。适用于实时加解密,速度快但是安全性较弱
分组密码将明文按固定长度分组,采用复杂的算法和结构。分组密码提供高安全性,但速度较慢且对长明文需要复杂处理。
密钥与秘钥的区别
秘钥:一种用于加密或解密的算法参数,其值应该保密
密钥: 一种用于加密或解密的算法参数,其值不一定保密
秘钥是一种特殊的密钥。
例如:对称加密算法中,加密解密用的相同算法参数,此参数必须保密,为秘钥。
在非对称加密算法中,公钥可以对外公开,为密钥,私钥必须对外保密,为秘钥。
对称加密算法--DES
DES(Data Encryption Standard)属于对称加密算法中的分组加密算法。使用56位的密钥和64位的明文块进行加密。DES的分组大小是64位,如果需要加密的明文长度不足64位,需要进行填充。如果明文长度超过64位,需要使用分组模式进行分组加密。由于DES的密钥长度只有56位,因此DES容易受到暴力破解和差分攻击手段的威胁。
DES原理
DES优缺点
优点:
- 安全性高:DES算法使用密钥进行加密和解密,相同的明文使用不同的密钥加密后得到的密文是不同的。密钥越长,加密的安全性就越高。
- 算法简单:DES算法的加密和解密过程非简单,基于对称加密,使用相同的key进行加解密。
- 适用广泛:DES算法是最早也是最广泛使用的加密算法之一,被广泛应用于电子商务、电子邮件、虚拟私人网络等领域,具有广泛的适用性和可移植性。
缺点:
- 密钥长度较短:DES算法使用56密钥,不足以保证加密的安全性,容易被暴力破解
- 无法抵抗差分密码分析攻击:DES算法无法抵抗差分密码分析攻击,这种攻击可以通过比较相同明文的密文,分析加密算法的行为并推断出密钥。
- 加密速度慢:DES需要对64位的明文进行加密,速度比较慢,不适用于大量数据进行试试加密和解密。
对称加密算法--AES
AES(Advanced Encryption Standard)具有典型的对称分组加密算法特性,且加密过程效率优于DES。AES的数据分组长度统一为128位。而密钥空间可根据需要采用128位、192位和256位三种不同长度。密钥越长,加密强度越高,计算资源消耗也会增加。
AES算法主要步骤
- 密钥扩展(Key Expansion),使用密钥扩展算法将128位用户主密钥扩展成R个轮密钥;
- 初始轮(Init Round),即为轮密钥加;
- 重复轮(Rounds),每一轮包括:字节替换(SubBytes),行移位(Shift Rows),列混合(Mix Columns),轮密钥加(Add Round Key)四个步骤;
- 最终轮(Final Round),最终轮比重复轮少了列混合的步骤。
AES不安全点:
- 密钥管理:保护好密钥是至关重要的。泄露密钥将导致加密数据的安全性受到威胁。因此,需要采取适当的措施来存储、传输和销毁密钥。
- 模式选择:选择合适的加密模式对于确保数据的安全性至关重要。不同的模式适用于不同的场景,需要根据具体需求进行选择。
- 侧信道攻击:除了直接破解密文外,攻击者还可能通过侧信道攻击(如时间分析、功耗分析等)来获取密钥信息。因此,在实现AES算法时,需要注意防止这类攻击。
AES应用场景
由于AES算法具有高效、安全和可靠的特性,它被广泛应用于各种场景,如数据存储、网络通信、电子支付等。在数据存储方面,将敏感数据加密后存储可以保护数据的机密性和完整性;在网络通信中,使用AES加密可以确保数据在传输过程中的安全;在电子支付领域,通过使用AES加密技术可以保护用户的支付信息和交易安全。
AES工作模式
AES有多种工作模式,常见有ECB(Electronic Codebook)、CBC(Cipher Block Chaining)、OFB(Output Feedback)、CFB(Cipher Feedback)和CTR(Counter)。
- ECB是最简单的模式,它将每个明文块独立地进行加密,适合于加密长度较短的明文;
- CBC模式则将每个明文块与前一个密文块进行异或运算后再进行加密,适用于长度较长的明文和需要提高安全性需求的场景。
工作原理
AES算法通过多轮次的置换-置换网络(SPN)结构来实现加密过程。每轮操作包括字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)和添加轮密钥(AddRoundKey)四个步骤。
密钥扩展:AES算法的第一步是密钥扩展。在这一步中,算法将输入的密钥(可以是128位、192位或256位)扩展成多个轮密钥。这些轮密钥将在后续的加密轮次中使用。密钥扩展过程确保了每轮加密都使用不同的密钥,从而增强了算法的安全性。
加密:
- 字节替换(SubBytes):在这一步中,算法使用一个称为S盒(Substitution box)的固定置换表来替换输入数据的每个字节。S盒是一个非线性置换,它增加了数据的混淆程度,使得加密过程更加难以预测。
- 行移位(ShiftRows):行移位操作将数据块中的每一行进行循环左移。不同行的移动距离不同,这有助于在加密过程中进一步扩散数据。
- 列混合(MixColumns)(除最后一轮外):在这一步中,算法使用一个固定的矩阵与数据块的每一列进行矩阵乘法运算。这个操作进一步混淆了数据,并增强了加密过程的非线性性。然而,在最后一轮加密中省略了这一步,以简化解密过程。
- 轮密钥加(AddRoundKey):在这一步中,算法将当前轮次的轮密钥与数据块进行异或运算。这个操作将密钥信息融入到加密过程中,确保了每轮加密都使用不同的密钥。
解密:
解密是加密的逆操作过程。