分组密码算法的基础平台研究
2014-09-19孙红波傅仕诤
孙红波,傅仕诤,徐 日
(北京电子科技学院,北京100070)
0 引言
分组密码算法是信息安全加密处理的重要算法。出于安全性考虑,一个密码算法中需要使用多种特殊运算算子实现置乱,这些用于置乱的运算算子需要对抗差分密码分析、线性密码分析和强力攻击等,它们具有很强的特殊性[1]。
分组密码算法通常采用微处理器或逻辑电路实现。实现分组密码平台的效率与密码算法的特点是密切相关的,不同密码算法在不同平台上实现速度大不相同,硬布线逻辑算子适合逻辑电路实现,存储逻辑算子适合在微处理器平台上实现[2,3]。
现实中经常会出现不同特点的运算算子需要在一个平台上实现的方式。通过对目前分组密码所采用的整体结构进行分析,结合FPGA技术,给出在同一平台上实现兼容多个基本运算算子的方法。
1 分组密码算法的特点
分组密码算法是信息时代信息加密处理的重要算法,流密码每次加密处理数据流的一位,分组密码一组明文。分组密码算法的特点是明文空间为{0,1,…,2n -1},密文空间也为{0,1,…,2n -1},分组密码是由密钥 k=(k0,k1,k2,…,kt-1)确定的一一映射。目前分组密码所采用的整体结构可分为[4]:
①Feistel结构。Feistel结构的优点是容易保证加解密相似,Feistel结构广为人知,安全性只依赖于函数F。
③S-盒。S-盒的表达函数选择通常要考虑非线性度、差分均匀度、代数次数及项数分布、扩散准则、平衡性以及相关免疫性。这类函数在实现上用计算机处理器指令表达困难,但用真值表易于实现。
④P置换结构。P置换结构是分组密码轮函数的重要组成部分,好的P置换能使得轮函数具有更强的抵抗线性和差分攻击能力。
代替—置换(SP)网络由混淆层和扩散层组成,结构清晰,使用广泛。这种结构的最大优点是能够从理论上给出最大差分特征概率和最佳线性逼近优势的界,也就是密码对差分密码分析和线性密码分析是可证明安全的。
目前对分组密码安全性的讨论主要包括:差分密码分析、线性密码分析和强力攻击等[5]。
2 密码算法的设计
实用密码的设计原则是由Shannon提出的。设计安全的分组加密算法需要考虑对现有密码分析方法的抵抗,如差分分析和线性分析等,还需要考虑密码安全强度的稳定性[6]。
①混乱原则。设计的密码算法应保证密钥、明文和密文的依赖关系相当复杂,以至于这种依赖性对密码分析者来说是无法利用的。
②扩散性。设计的密码应使得密钥的每一位数字影响密文的许多位数字,防止对密钥的逐段破解;明文的每一位数字也影响密文的许多位数字,充分地隐藏明文的统计特征。
而除了袖子里能放一些小物件外,汉服的胸前也是可以放东西的。古人的着装要求一般都会把上衣掖在中裤或下裳里(就像现代规范的衬衫要塞在裤子里一样)。这样,腰带与交领结合处就形成了一个三角形口袋。只要这个东西不大、不滑、不细、不硬就可以放在里边了。由于是交领右衽,所以拿取物品很是容易。我们现在所说的“怀揣”就是指这个地方。
3 加密处理器指令系统设计
3.1 分组密码平台的构建
实现分组密码运算的平台效率与密码算法的结构和采用的算子密切相关。由于不同平台上的基本运算不同,对密码算法中运算算子的实现方式不同,因此密码算法在不同平台上的体现运算复杂度也不相同。
可重构计算为设计通用分组密码平台实现提供可能。可重构计算是利用FPGA中的可重用资源,根据应用的需要重新构造一个新的高性能计算平台。通过硬件配置文件中的编程信息,增加的可构造基本函数指令,改变逻辑块的功能和连线的互连方式。构造实用密码计算平台,提高密码算法的效率[7,8]。
实用密码计算平台实际上就是一个基于FPGA的微处理器。微处理器的指令集决定微处理器的处理能力,指令集是处理器的灵魂。不同应用领域对处理器的要求差异很大,现有通用处理器上基本没有与加密算法相关的特殊指令,通过对密码处理算法的分析,可增加密码运算指令集。
密码微处理器主要包括:运算器、控制器、存储器、堆栈、以及输入、输出接口等部件。微处理器从存储器中取出所需数据,在运算器中运算,再将得到的结果保存在存储器中。输入输出接口可以实现一个分组密码平台与外界进行数据交换。微处理器使用了指令、数据分离的存储器结构,指令集通常包括:
①算术指令:ADD、SUB和MUT;
②逻辑类指令:LNOT、LAND和LOR;
③数据传输类指令:LDA和STR;
④跳转类指令:JMP、JZ和CALL;
⑤中断类操作;
⑥位运算类操作指令;
⑦可构造基本函数指令。
处理器的基本动作是由控制信号线进行控制,每个动作对应一个控制信号线,每个控制信号线状态是一个逻辑变量,用二进制表示,每个指令的基本动作需要预先设计。控制矩阵是处理器的关键部件,是按照机器节拍设计的时序电路。专用密码微处理器的指令是互斥的,在增加可构造基本函数指令时,一定会减少其他不必要的指令。
3.2 控制器设计
专用密码微处理器设计的核心是设计硬布线控制器。要根据设计好指令周期流程图,分别列出每条控制信号的逻辑表达式,根据W1~W3的时序,T1~T4是在数据通路中各连接信号。由指令系统和数据通路图,根据硬连线控制器的基本原理,用组合逻辑电路实现控制信号每个微操作S,S是一系列输入量的逻辑函数:
其中,Im为机器指令操作码译码器的输出信号;Mi为节拍电位信号;Tk为节拍脉冲信号;Bj为状态条件判断信号。通过参考指令周期流程图,结合机器指令的节拍电位数W1,W2,W3,写出组合控制逻辑译码表。根据控制译码表写出每个控制信号的逻辑表达式,这个表达式是它所在行的逻辑表达式,写成Verilog源程序,编译软件会自动完成电路优化的工作[9]。
4 密码算法的实现
密码算法的实现基本认为有基于存储逻辑的算法和基于布线逻辑的算法2种。基于存储逻辑的算法易于在微处理器平台实现,基于布线逻辑的算法易于在可编程器件平台上实现。
通常S-盒的表达函数用数字逻辑函数表达,这类函数用布线逻辑实现,当这类函数在通用处理器上运行时,会耗费大量的处理器资源;P置换函数易于查表实现,易于访问存储器实现。当构造基本函数表达成一个专用处理器指令时,一些原来处理器运算效率较低的位运算函数,可以以单节拍的指令实现,相应的类S-盒的表达函数,也可以作为指令来使用。这样,2种不同类型、相互制约特点的函数能够同时在同一平台上高效运行。
可重构分组密码平台是建立在可重构密码微处理器基础上的运算平台。在这样平台上,置换核也是可以设计成基本构造函数,基本构造函数也可以变更,增强了密码算法的可重构性。在可重构分组密码平台,可以使用专用的指令系统描述新的算法。一些硬布线算法不再使用逻辑函数来描述而是用专门设计的指令来描述,使得算法各个部分描述得到统一,对于原本复杂的算法,可以简单地通过指令进行编程、测试。
分组密码平台存储区分为相互独立的2块,一块是程序区,分组密码平台所执行的密码算法就放在这块区域;另一块是数据区,存放着分组密码算法[9]。
5 结束语
分组密码实现平台是一种应用于密码算法的具有特殊函数运算指令的安全处理器。特殊运算算子以指令形式存在,原本硬布线逻辑函数以单一的指令形式实现,存储逻辑的函数以处理器的查表形式实现。
密码处理器不仅具有常规处理器的一般性指令,而且具有特殊函数指令,在这样的运算平台上可以实现基于存储逻辑的密码算法及基于硬布线的密码算法。通过实现构造特殊函数指令,充分发挥了微处理器平台的运算优势,也就是说在同一个平台上用户可以将2种不同逻辑的密码运算因子,在一个平台上高效地实现。
[1]赵 剑,杜钦生,王冰冰.分组密码发展现状[J].长春大学学报,2006(12):96.
[2]姜晶菲.可重构密码处理结构的研究与设计[D].长沙:国防科学技术大学博士学位论文,2004:67-71.
[3]孙 旭,李雪梅,鲁长江.分组密码算法的研究与实现[J].成都理工大学学报(自然科学版),2006,33(6):640.
[4]冯登国,吴文玲.分组密码的设计与分析[M].清华大学出本社,2000:64-65.
[5]刘景伟.分组密码中关键问题的研究[D].西安:西安电子科技大学硕士学位论文,2004:26-38.
[6]李 玮.若干分组密码算法的故障攻击研究[D].上海:上海交通大学博士学位论文,2009:24-32.
[7]管子铭.序列密码可重构处理结构研究与设计[D].郑州:解放军信息工程大学硕士学位论文,2009:26-36.
[8]杨 军,余 江,赵征鹏.基于FPGA密码技术的设计与应用[M].北京:电子工业出版社,2012:106-143.
[9]李亚民.计算机原理与设计[M].北京:清华大学出版社,2011:127-156.