• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

恶意代码技术理论:加密算法总结

恶意代码技术理论 云涯 3年前 (2021-06-18) 1338次浏览

1 对称加密

1.1 DES加密算法

DES算法的入口参数有三个:Key、Data、Mode。

其中Key为8个字节共64位,是DES算法的工作密钥;

Data也为8个字节64位,是要被加密或被解密的数据;

Mode为DES的工作方式,有两种:加密或解密。

1.2 3DES加密算法

3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。

3DES(即Triple DES)是DES向AES过渡的加密算法,是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。

1.3 RC4算法

RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。密钥长度可变。

1.3.1 S和T数组初始化

i=0-255  ->   S[i]=i   /    T[i] = key(i%key_len)

1.3.2. 数据表S的初始变换

i=0-255  ->  j=j+S[i]+T[i]  ->   swap( S[i],S[j] ) 

1.3.3 密钥流生成

i=0-255  -> j=j+S[i]  ->  swap( S[i],S[j] )  ->  s[i]+s[j]

 

1.4 AES(Advanced Encryption Standard)加密算法

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。

AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。

与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。

1.4.1 AES加密算法解析

  • 1.电码本模式(Electronic Codebook Book (ECB))
  • 2.密码分组链接模式(Cipher Block Chaining (CBC))
  • 3.计算器模式(Counter (CTR))
  • 4.密码反馈模式(Cipher FeedBack (CFB))
  • 5.输出反馈模式(Output FeedBack (OFB))

1.4.1.1 电码本模式(Electronic Codebook Book (ECB)

这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密,在综合为加密密文。

128bit加密过程

1. 分组-填充

将明文分成每128bit为一组,最后一组不足128bit就需要对其填充。填充方式很多种,比如PKCS7Padding,当明文块少于16个字节,则在明文块末尾补足相应数量的字符,并且每个字节都等于缺少的字符数。

比如:

1,2,3,4,5,6,7,8,9

这里有9个字节,不足16个字节,差7个字节,所以就补7个7变为

1,2,3,4,5,6,7,8,9,7,7,7,7,7,7,7

2. 密钥-子密钥-初始向量iv

初始向量iv:实际上它并不是 Key,可以把它理解成我们使用 md5 时的 salt,通过对不同的数据使用不同的 salt,可以避免遭遇彩虹表撞库之类的暴力破解,iv 的作用亦如此,重要的是保证其随机性。IV 的作用是在每次加密消息时向过程中插入一些“新”随机性。这样,相同的消息每次都会加密为不同的密文,而相似的消息不会产生相似的密文。这就是为什么 IV 通常需要是随机的,但从不需要保密的原因。IV的长度为16字节。超过或者不足,可能实现的库都会进行补齐或截断。但是由于块的长度是16字节,所以一般可以认为需要的IV是16字节。

密钥:分为128bit,192和256bit密钥

子密钥:AES不直接使用原始密钥,而是对其进行一些处理。

3. 轮加密

① S盒字节代换

128bits对应16个字节,即图中A0-A15,每个Ai是8bits

S盒如下:

② ShiftRows

行1不移动,行2移动一次,行3移动两次,行四移动3次。

 

③ MixColumn

④ 密钥加法

最后,密钥加法层非常简单,输入的 [公式] 是16字节(128 bits),经过密钥编排之后产生的每一个子密钥 [公式] 也是16字节(128 bits),将 [公式] 与对应此轮的子密钥 [公式] 做按位异或运算(XOR,即流程图中的 [公式] 符号)即可。

 

4. 子密钥

原始密钥 K0-K15共16字节(128bits),将其4个分成一组,分别记为W0-W3,每组32bits,然后进行10轮循环处理,生成44个Wi。

对于10轮,i=1,2….10

函数 g存在的目的是增加密钥编排中的非线性,且消除AES结构中的对称性。其中函数g和轮系数RC[i]为

轮系数RC:

生成44个Wi,每4个为一组,组成一个子密钥Ki,共生成11个子密钥K0-K10用于加密。

 

1.4.1.2 密码分组链接模式(Cipher Block Chaining (CBC))

这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。

1.4.1.3 计算器模式(Counter (CTR))

在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。

 

1.4.2 AES加密算法识别

  1. 加密秘钥是128位(16字节)、192位(24字节)、256位(32位)

 

2 非对称加密

 

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:恶意代码技术理论:加密算法总结
喜欢 (0)