高效Kasumi加密算法的软件设计与实现
2012-10-27李翔,徐童,熊焰
李 翔, 徐 童, 熊 焰
(中国科学技术大学 计算机科学与技术学院,安徽 合肥 230027)
0 引言
为了保证移动通信的安全性并满足实时性的要求,加密算法往往采用硬件实现而非软件实现。但近年来,随着通用处理器工艺的提高,其性能也越来越接近移动通信芯片的要求。使用通用处理器,同时具有开发周期短、开发模式灵活等优点,这使得对通信算法软件实现的研究越发重要,并使软件无线电(SDR)的实际部署成为可能。
Kasumi算法作为第三代移动通信系统(3G)的核心加密算法,以 f 8和 f 92种模式使用[1],其中 f 8是加密算法,f 9是完整性算法,二者都是基于 Kasumi算法的输出反馈模式(OFB)形成的流密码。由于 Kasumi算法是基于 Feistel网络结构的分组密码,其 OFB模式无法并行实现,而且在移动通信中同时通信的不同用户需要使用不同的密钥,密钥分配也是十分耗时的计算模块,因此少有高效的软件实现方法提出。
在本文中,提出一种基于包并行的高效软件实现方法,并且对 FI子函数以查表的方式进行优化,同时引入新的SSE转置指令用于快速生成不同用户的密钥。实验表明我们的方法比协议中的实现快四倍,达到3GPP规定的实际部署的要求。
1 Kasumi算法
Kasumi算法是分组密码 MISTY1[2]的一个改进版本,64 bit的输入在128 bit密钥的加密下产生64比特的输出。该算法是一个八轮的 Feistel网络[3],包括FL,FO和FI 3个子函数,每个子函数使用对应的子密钥 KL,KO和 KI,分别由 128位密钥生成。其结构如图1所示。
具体加密过程如下:将 64 bit的输入 I分成32 bit的2部分,分别为L0和R0,即I = L0|| R0。对于第 i轮迭代(1 ≤ i ≤ 8),Ri= Li-1,Li= Ri-1⊕fi(Li-1, RKi)。……
