算法特征逆向分析之-AES

本文详细介绍了AES算法中的字节替换和行移位操作,以及它们在加密过程中的特点,特别关注了密钥长度对AES-128、AES-192和AES-256版本的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AES算法识别:

1 字节替换

字节替换就是个查表操作 data  = table[ ( data >> 4 ) & 0xF ] [ data & 0xF ]

2 行移位

IDA中行移位常见的形式有两种:

移位特征为 :

5 -> 1 , 9 -> 5 , 13 -> 9 , 1 -> 13

10 -> 2 , 14 -> 6 , 2 -> 10 , 6 -> 14

3 -> 7 , 7 -> 11 , 11 -> 15 , 15 -> 3

密钥:密钥长度可以是16字节,24字节,32字节(128位,192位,256位)。根据密钥的长度,算法被分为AES-128、AES-192、AES-256。

填充:

1 AES是以16字节为单位进行加密,故不足16字节需要进行填充

2 除了NONE以外,其他任何模式及时满足16的倍数也要进行填充(PKCS7填充16个0x10)

NONE不允许明文长度不是16的倍数#
PKCS7缺多少就补多少个字节的缺量04 04 04 04
ZERO全补000 00 00 00
ANSI923缺的最后补缺数,其他补000 00 00 04
ISO7816_4缺的第一位补80,其他补0080 00 00 00
ISO10126缺的最后一位部缺数,其他补随机数12 87 55 04

 三种解密方式比较:

密钥长度循环次数密钥拓展长度
AES-12816字节(4*4)10轮,最后一轮没有列混淆176(11*16)
AES-19224字节(4*6)12轮,最后一轮没有列混淆208(13*16)
AES-25632字节(4*8)14轮,最后一轮没有列混淆240(15*16)

明文分组排列方式:

0 1 2 3 4 5 6 7 8 9 a b c d e f
048c
159d
26ae
37bf

密钥扩展:

1 密钥扩展就是把16 24 32字节的密钥扩展成176(11*16)  208(13*16)  240(15*16)字节的轮密钥,

11*16的11是怎么来的,如下图,共有11次轮密钥加,所以是11*16

* 密钥扩展时会暴露原始密钥

* 由于原始密钥会在拓展密钥的前面,所以AES-128中第一次轮密钥加用到的密钥就是原始密钥

2 nk值16/4=4  24/4=6  32/4=8

加密器:

轮密钥加:

1 第一次轮密钥加时能定位明文

CBC模式:

1 比ECB多一个16字节的初始向量IV,第一次进入加密器之前,先使用IV对明文分组1进行异或运算,之后进入加密器之前使用上一次加密的密文分组对明文分组进行异或运算

IV ^ 明文分组1  >>  加密器  >>  密文1

密文1  ^  明文分组2  >>  加密器  >>  密文2

密文2 ^  明文分组3  >>  加密器  >>  密文3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值