SM4 算法快速软件实现*
2021-01-13张笑从张习勇刘建伟
张笑从, 郭 华, 张习勇, 王 闯, 刘建伟
1. 北京航空航天大学 软件开发环境国家重点实验室, 北京100191
2. 密码科学技术国家重点实验室, 北京100878
3. 北京航空航天大学 空天网络安全工业与信息化部重点实验室, 北京100191
4. 北京卫星信息工程研究所, 北京100086
1 引言
SM4 分组密码算法[1]是我国自主设计的对称分组密码, 为众多信息系统提供安全、完整的数据加密方案. SM4 算法的高效软件实现为我国应用在安全产品(如IPSec、VPN、SSL、TLS 等)上的密码算法由国际标准替换为国家标准提供了强有力的支撑, 为SM4 算法广泛用于政府办公、公安、银行、税务、电力等自主可控要求高的信息系统提供了可靠的保障. 目前关于SM4 算法的软件优化实现方面的相关工作不多, 多使用查表的方法[2], 但由于代替表规模相对较大, CPU 在做查表操作时, 表中数据在内存和cache之间频繁对换导致查表延时较大, 且不利于高效并行加/解密多组消息. 此外, 查表法无法抵抗缓存-计时侧信道攻击, 因此在一定程度上制约了SM4 的软件实现性能和安全性.
1996 年Intel 推出单指令多数据的SSE (Streaming SIMD Extensions) 指令集后, Biham[3]于1997年提出一种新的对称分组密码快速软件实现方法, 核心思想是将处理器视为以1 比特为单位的单指令多数据处理器, 随后被Matthew Kwan 称为比特切片(bit slicing)[4].比特切片方法在64 位平台上实现了64 组DES 消息的并行加解密, 将逻辑门个数从理论上需要的132 个每比特输出优化到100 个每比特输出.之后研究者们对门函数个数进一步进行了优化, 使得标准逻辑门(与、或……
