一种实现分组密码加密的密钥扩展方法

文档序号:7759987阅读:531来源:国知局
专利名称:一种实现分组密码加密的密钥扩展方法
技术领域
本发明涉及一种数据加密和解密的方法,具体涉及一种分组密码算法的密钥扩展 方法,用于生成分组密码算法的各轮子密钥。
背景技术
信息时代计算机技术迅猛发展,分组密码因为具有速度快、易于标准化和便于软 硬件实现等特点,成为信息安全领域中实现数据加密、消息鉴别、认证及密钥管理的核心密 码算法,在计算机、通信等领域广泛应用。分组密码算法是将需要数据保护的原始数据序列(即明文)进行分组,对每个分 组在密钥作用下进行加密操作,将明文转换为不能识别的无规律数据(即密文)。将密文进 行传输以保证数据安全,数据接受方使用同一组密钥即可将密文解密为明文。分组密码算 法加密操作通常经过多轮函数作用,每一轮都需要对应的一组子密钥。在加密和解密的实 施过程中,通信双方只共享一组初始的种子密钥,通过密钥扩展算法将种子密钥扩展生成 需要的子密钥,减小存储量、通信量,提高系统性能。目前典型分组密码算法的密钥扩展算法通常适用于密钥长度为128比特、192比 特或256比特的密钥扩展。256比特密钥长度是分组密码算法应用中一种典型的密钥长度, 在数据安全的压力下,256比特明文分组日益受到密码设计者的青睐,相应的256比特长度 的密钥使用频率逐步提升,因此,设计256比特密钥长度的分组密码算法将具有很强的实 用性。密钥扩展算法首先要保证安全性,即要求密钥扩展算法的设计具有子密钥统计独 立性和灵敏性。统计独立性即要求子密钥之间不存在简单关系,灵敏性即要求种子密钥少 数几比特的改变可以较大程度的改变相应的子密钥。此外,密钥扩展算法的速度不应影响 加密或解密的工作进程,算法在软硬件条件下实现的部件应具有适用性并尽可能的节省资 源。分组密码密钥编排方案的设计应遵守以上安全性、速度、适用性等设计准则。各设 计准则间相互制约,目前典型的分组密码的密钥扩展算法有各自的特点和不足。很多典型 的密码算法的密钥扩展算法,如AES、IDEA、KASUMI和SHACAL等密码算法的密钥扩展算法均 不能抵御特定的密码分析,如专门针对密钥扩展算法进行密码分析的密钥相关攻击及其联 合攻击。RC6、MAPRS等一些算法在实现时需要占用大量的计算和存储等资源,大大降低了 其实用性,在资源受限的情况下,它们不能实现高速、同步的加密和解密操作。兼顾安全性 和速度等性能的密钥扩展算法成为设计者的设计目标。

发明内容
本发明的目的是提供一种分组密码密钥扩展算法,支持256比特密钥的长度,生 成指定数量的子密钥,用于数据加密和解密。该密钥扩展算法包括初始化、子密钥迭代生成 算法和子密钥选取算法,其中,子密钥迭代生成算法为本发明核心,将256比特种子密钥输入本算法,即可高效安全地生成所需轮数的各轮子密钥。对于密钥长度为256比特的8轮分组密码算法,需要8个轮密钥和1个白化密钥, 每个子密钥长度为256比特,总共需要生成2304比特的扩展密钥。

图1是迭代型密码扩展 算法的实施流程图,包括(1)初始化、(2)密钥迭代生成算法和(3)子密钥选取算法。本发明的技术方案如下A.初始化定义长度为80的数组W,该数组的元素长度为32比特;将256比特的种子密钥依 次写入数组w
W[7]作为输入;W[8] W[79]用来存储扩展生成的子密钥;B.计算生成子密钥(如图2所示),采用如下迭代函数ff[i] = {FS (W [i-8]) +FS (W [i-7]) +FS (W [i-3]) +FS (W [i-2])+Fimod4+t (i)} <<< (7i+3)mod32(公式 1)其中-i为数组下标,从8开始每次增加1进行迭代,i^79;-FS为非线性变换函数;-Φ的取值为4个常数,通过有限域中32阶本原多项式的5阶根求解,确定4个常 数的值为;_(D。= 3C2D240EUO1 = E4BB73F6■ O2 = B40B34CD■ O3 = 6C9D6334-t为一个函数,用来将其参数转化为二进制表示;-“<<<”表示循环左移;如a< < < b表示把a循环左移b位。C.输出子密钥将数组W[i] (i = 8,9,…,79)中的元素顺序输出即为子密钥。在公式1中,所述非线性变换函数FS的实现方式如下对于所述函数FS(X),χ表 示长32比特的变量,将χ写成4个8比特数并联的形式,即χ = X1X2X3X4,贝IJFS (χ) = M (S0 (X1),S1 (X2),S2 (X3),S3 (S4))(公式 2)其中,
'01 02 03 01)「%、
01 01 03 02 V7M(y,,y2,y3,y4)=· ,
12 3 4 02 01 01 03 γ3
ν03 02 01 01J ^4yy2,y3,y4 为 GF (28)中的元素;矩阵中的元素为GF(28)中元素的十六进制表示;S0, S1, S2, S3为四个不同的函数,表示8X8的S盒;Stl采用加密和解密运算的分组 密码算法的S盒;S1, S2, S3由Stl生成,生成方法如下
:GF(28) GF (28)
Xh^S1 (χ)= ^0(χ>>> 1);
权利要求
一种应用于分组密码加密解密算法的密钥扩展方法,其特征在于,生成轮数为8的子密钥的步骤如下A.初始化定义长度为80的数组W,该数组的元素长度为32比特;将256比特的种子密钥依次写入数组W
~W[7]作为输入;W[8]~W[79]用来存储扩展生成的子密钥;B.计算生成子密钥,采用如下迭代函数W[i]={FS(W[i 8])+FS(W[i 7])+FS(W[i 3])+FS(W[i 2]) +Fimod 4+t(i)}<<<(7i+3)mod32其中 i为数组下标,从8开始每次增加1进行迭代,i≤79; FS为非线性变换函数; Φ的取值为4个常数; t为一个函数,用来将其参数转化为二进制表示; “<<<”表示循环左移;C.输出子密钥将数组W[i](i=8,9,…,79)中的元素顺序输出即为子密钥。
2.如权利要求1所述的方法,其特征在于,所述非线性变换函数FS的实现方式如下 对于所述函数FS(X),χ表示长32比特的变量,将χ写成4个8比特数并联的形式,即
3.如权利要求2所述的方法,其特征在于,所述Stl的取值为配套分组密码算法的S盒。
4.如权利要求2所述的方法,其特征在于,所述Stl的取值为自定义S盒。
5.如权利要求1所述的方法,其特征在于,Φ的取值为如下4个常数 O0 = 3C2D240EΦ ! = E4BB73F602= B40B34CD03= 6C9D6334。
6.如权利要求要求1所述的方法,其特征在于,所述轮数的取值范围为4 20。
全文摘要
本发明提供了一种分组密码算法的密钥扩展方法,用于生成分组密码算法的各轮子密钥。本发明提供的方法主要是通过迭代函数计算生成子密钥,该迭代函数由非线性运算,常数运算和循环一位运算构成。通过本发明提供的方法,可以高效便利地生成子密钥,有效减少存储空间,具有较一般商用分组密码算法更高的实现速度,可以满足实时加密和解密的要求,同时,该算法具有比较高的安全性。
文档编号H04L9/06GK101938351SQ20101028455
公开日2011年1月5日 申请日期2010年9月16日 优先权日2010年9月16日
发明者张筱, 王文华, 王钊, 邱望洁, 郑志明, 高莹 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1