软件AES算法基本识别

2021-10-27


软件AES算法基本识别


AES算法,即高级加密标准,在密码学中又称为Rijndael加密算法。该算法已被用来替代原先的DES算法,并在世界范围内广泛使用。


可以通过各种搜索引擎找打大量的基本AES算法介绍与实现,这里不再做深入探讨,仅仅介绍下本文需要用得到的内容。

参考《现代密码学》一书,基本AES算法的流程可以用下图概括:


zqpgxqeaeg.jpeg


其中,轮函数包含四部分:

1,字节替换;

2,行位移;

3,列混合;

4,轮密钥加。

识别基本AES算法的关键也就是识别该轮函数。


在github上可以找到Dani Huertas写的关于AES算法的简单实现,点击本文末尾“阅读原文”可查看。

该项目中有很完整的注释信息,可以下载并编译,用来学习逆向识别AES算法。


逆向识别标准的AES算法最关键的是找到置换表s_box,在AES算法中该置换表为固定的256元素数字:


k9ymp1e43h.jpeg


s_box的内容过长,这里不做展示。如果顺利找到该表,那么所用的加密算法很有可能就是AES算法。

此后,再查看一下是否存在形式如下的赋值语句:

mov     al   ,   [esi + eax]

mov      [ecx + edx - 1]   ,   al


截图如下:


k9ymp1e43h.jpeg


是否存在列混合矩阵的几个关键常量:0x02, 0x01, 0x01, 0x03:


k9ymp1e43h.jpeg


以及是否存在与密钥的异或操作,并存储异或结果的操作:


k9ymp1e43h.jpeg


当以上所有结果都判断为真,那么已经可以认定为基本的AES算法了。

分享
写下您的评论吧