AES SM4
一、 AES和SM4算法特点分析
基于前面几篇分享,我们对AES和SM4的算法流程有了较为清晰的认识,接下来对AES和SM4算法的共同点进行分析,得出二者的可重构设计思路。
首先,这里把AES和SM4的算法流程图再贴出来方便对比分析:

AES算法流程图

SM4算法流程图
可以看到AES和SM4存在相同的操作符,例如异或、S盒替换、循环左移操作等。其中异或、循环左移操作符在理论上可以实现复用,但是需要增加额外的控制逻辑。这对于简单的逻辑操作符而言,并不能够明显的减少硬件开销。相较而言,S盒占用的硬件开销更大且使用频繁,故可对S盒进行复用。而S盒在实现上分为基于查找表(Look-up Table,LUT)和基于伽罗瓦域(Galois Field,GF)两种方式。基于LUT实现S盒,AES加解密需要2块LUT,SM4加解密需要1块LUT,合计3块LUT。然而,两种算法的S盒在GF下具有相似的实现过程,可以进行可重构设计。同时,这两种算法在加解密过程中会频繁使用寄存器来存储数据
二、 可重构S盒设计思路
在GF下,AES的S盒输出公式为 Z=M(X^-1)+V, SM4的S盒公式为:Y=A(AX+C)^-1+C 。
通过对比以上两个计算公式可以发现,它们都具有的仿射变换操作和求逆操作,于是可以通过以下流程图对AES和SM4算法进行S盒的可重构。具体实现过程需要具备有限域上的知识,感兴趣的读者可参考本文末尾列出的链接进行延伸阅读。

更多回帖