ZhiyuanLin
2020-11-03 23:42:08 +08:00
之前没事干写过 SM4 和 ZUC 的软件实现练手。
只能说这俩算法在设计上很鸡贼,一般对称加密算法都要考虑一下软件实现的效率(比如 SIMD 并行化什么的),这俩算法的设计故意避免了当前 CPU 指令集在这方面的应用。
简单的说,就是你想快,必须独立 ASIC 芯片实现,或者 CPU 加专门指令集(例如 AES-NI 那样子的),不管哪个都得交专利费。可以说商业考量严重影响了这两个算法的设计(收专利费,卖芯片)。
核心上,SM4 用 Feistel Network,ZUC 用 LFSR,都是很老的设计,没什么革新点,目前密码学分析上 SM4 也没体现比 RC6 之类同样用 Feistel 的更强的地方,ZUC 用的 LFSR 也用在 GSM 里,GSM 用的密钥 A5/1 和 A5/2 都被证明比同样 54 位密钥采用 Feistel 的 DES 算法弱非常多,GSM 伪基站那么多也是这个原因。要说 LFSR 有什么好处,也就是这个硬件实现容易达到高能效+高性能,但是软件实现快不起来。
至于号称真正强度高的 SM1,具体设计细节均不公开,并且只允许硬件实现不允许软件实现。就接口而猜测,也就是个 128-bits 的 block cipher,连 256-bits 强度的版本都不存在,是否真的有必要做到这么保密呢? 其设计如果公开给大家分析,是不是真的比 SM4 强还不一定。不过要用这个是真的只能买芯片,生财有道啊。