首页> 中国专利> 一种面向无线传感器网络的混沌消息认证码实现方法

一种面向无线传感器网络的混沌消息认证码实现方法

摘要

一种面向无线传感器网络的混沌消息认证码实现方法,包括以下步骤:1)首先,面向无线传感节点采用基于整数型计算的Logistic混沌映射函数;2)采用具有动态Feistel结构特性且分组长度仅为8比特的分组加密算法;3)基于该分组加密算法实现长度为32比特的消息认证码。本发明提供一种安全性良好、效率较高的面向无线传感器网络的混沌消息认证码实现方法。

著录项

  • 公开/公告号CN102594566A

    专利类型发明专利

  • 公开/公告日2012-07-18

    原文格式PDF

  • 申请/专利权人 浙江工业大学;

    申请/专利号CN201210063512.3

  • 发明设计人 陈铁明;葛亮;蔡家楣;

    申请日2012-03-12

  • 分类号H04L9/32;H04L9/00;

  • 代理机构杭州天正专利事务所有限公司;

  • 代理人王兵

  • 地址 310014 浙江省杭州市下城区朝晖六区

  • 入库时间 2023-12-18 06:04:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-05

    授权

    授权

  • 2012-09-19

    实质审查的生效 IPC(主分类):H04L9/32 申请日:20120312

    实质审查的生效

  • 2012-07-18

    公开

    公开

说明书

技术领域

本发明涉及一种沌消息认证码实现方法。

背景技术

消息认证码即为消息的Hash值,关键是Hash函数的设计。Hash 函数又叫散列函数,是一种特殊的单向函数,可将任意长度消息压缩 成为固定长度的消息摘要,目前常见传统的Hash函数主要有MD4, MD5,SHA1等。

由于数字混沌系统的迭代过程除了对初始条件敏感外,还具备一 定意义上的单向函数性质,因此已出现了较多的混沌Hash研究,包 括基于参数可变的混沌系统单向Hash函数构造方法,该方法在混沌 迭代过程中,利用上一次的迭代值和当前处理的明文消息不断调整分 段线性混沌映射的控制参数,以使混沌系统获得更好的均匀分布,算 法效率高但安全性较差;基于二维耦合映像格子的单向Hash函数构 造方法,该方法利用Logistic映射构造耦合映像格子,再迭代过程中 的每一步都执行多次Logistic映射迭代,计算最终的输出与相邻格子 的耦合,因此算法安全性能高但效率较低;基于混沌动态S-BOX的 Hash函数构造是一种相对新型的方法,该方法用混沌S-Box替换和函 数查找表来生成具有混沌特性的Hash消息认证码,无需将原始数据 直接参与混沌迭代,采用的是混沌动态S-Box替换来提高系统的实时 性能,具有单向性好、初值敏感、密钥空间大、简单易行等优点。综 上所述,研究基于混沌动态S-Box或者动态分组加密的消息认证码将 具有广阔的应用前景。

针对无线传感器网络平台,研究基于混沌动态S-Box(或动态分 组加密)的Hash函数,主要需解决如下三个问题:(1)设计无需除法 及浮点运算等复杂操作的整数型混沌映射方法;(2)设计基于整数型混 沌映射的动态S-Box,并设计基于混沌动态S-Box的高效的混沌分组 加密算法;(3)设计基于高效混沌分组加密的消息认证码方案。在现 阶段,大多数无线传感器网络上的混沌消息认证码的研究仍停留在算 法的设计和分析上,缺少实际嵌入式硬件环境下可实现的方案。因此, 设计安全、高效、实用的混沌消息认证码解决方案具有较高的应用价 值。

发明内容

为了克服已有沌消息认证码实现方法的安全性较差、效率较低的 不足,本发明提供一种安全性良好、效率较高的面向无线传感器网络 的混沌消息认证码实现方法。

本发明解决其技术问题所采用的技术方案是:

一种面向无线传感器网络的混沌消息认证码实现方法,所述混沌 消息认证码实现方法包括以下步骤:

1)首先,面向无线传感节点采用基于整数型计算的Logistic混沌映射 函数,Logistic混沌映射函数的迭代式即为:

zn+1=zn<<2-zn2>>6-1---(I-10)

其中,zn=axn+a,取a=2L-1,L为机器字节的长度;

2)采用具有动态Feistel结构特性且分组长度仅为8比特的分组加密 算法,具体如下:

给出一种8比特分组Feistel结构,明文的一个分组被分为高位和 低位的各4比特,分别记为Li和Ri,在轮密钥ki的作用下,Ri通过f函 数后与Li异或生成新的Ri,而Li变为新的Ri,由此完成一轮的Feistel 结构加密;

f函数为8比特的整数混沌计算式,低四位的Ri首先被扩充到8 比特,与同样8比特的轮密钥ki异或后,输入到上述的一个精度为8 比特的整数型Logistic混沌映射中进行8比特整数混沌计算;输出的8 比特再次分为高低各4比特位,相互异或后生成最终的输出F;

3)基于该分组加密算法实现长度为32比特的消息认证码,具体过程 如下:

3.1)首先引入常见的密文反馈链模式,构造一个混沌Hash函数,用 于计算消息的摘要,即消息认证码;将原始消息M记为 M1,M2,...,Mn-1,Mn的长度为1字节,采用上述的具有Feistel结构的8 比特混沌分组加密函数;

3.2)在初始密钥k1的作用下,M1被加密成与其等长的k1和h1作为S函数的输入参数,计算最终的输出;同时,h1与新的迭代值 x2在f函数作用下生成下一分组所需的密钥k2;重复上述步骤,直到 处理完所有消息分组,最终的消息认证码的字节长度记为b,采用一 个字节数组CMAC[b]来表示。

进一步,所述步骤2)中,在明文分组进入轮加密之前,首先对8 比特数据进行P置换,完成初步的扩散。随后的加密过程中的轮数可 变,同一般的Feistel结构分组加密一样,最后一轮时,省去最后输出 的左右交互步骤。轮加密完成后,再一次对8比特数据进行P置换。

再进一步,所述步骤3.2)中,H的长度为1字节,消息认证码 CMAC的长度b个字节,将H的每一位扩散到这b个字节单元的对应 比特位上;Hash函数的另一个输入值K作为索引值Index,用于确定目 标单元在数组CMAC[b]中的下标;

如下定义Hi:将输入值H的第i位数据保留,其余比特位置零。

函数具体的计算过程为,对于i=1~8,分别进行如下操作:

3.2.1)K循环左移i-1位,截取K的前n位构成整数Index。其中,n的 值和CMAC长度b之间满足:

2n=b                                        (III-1)

3.2.2)以Index值作为下标,进行如下操作:

CMAC[Index]=CMAC[Index]Hi---(III-2)

f函数为:

kn=xn+hn-1 mod xmax=L(kn-1)+hn-1 mod xmax  (III-3)

其中,L为(I-10)式的混沌映射,xmax为映射过程中的迭代值上 限。

本发明的有益效果主要表现在:(1)本发明公开一种基于整数型 混沌密码技术的、输出长度可变的、通用的新型消息认证码方案。当 长度取128位时,安全与性能的分析结果优于当前常用的128位MD5 算法;当长度取32位时,安全强度和性能消耗适中,在面向基于TinyOS 系统的无线传感器网络平台的数据安全传输方面有着较大的应用前 景。

(2)本发明公开的混沌消息认证码采用了基于整数计算的混沌映 射,并基于整数混沌映射构建了一种简洁的Feistel分组结构,且基于 混沌的Feistel结构具有动态特性,有效增强了消息认证码的安全性。

(3)本发明公开的混沌消息认证码所涉及的所有计算操作,简单 明了、安全可靠、易于实现、高效低耗,是一种优选的轻量级消息认 证方案,适用于在资源受限的任何无线传感节点上开发实现,拓宽了 数字混沌密码技术的应用领域。

附图说明

图1是8比特分组Feistel结构示意图。

图2是混沌动态Feistel结构中的f函数示意图。

图3是8比特混沌分组加密流程图。

图4是8比特P置换的示意图。

图5是消息认证码的计算过程的示意图。

图6是消息认证码(CMAC)中的S函数结构示意图。

图7是待计算Hash值的部分文本实例示意图。

图8是MAC码改变比特位数的示意图。

具体实施方式

下面结合附图对本发明作进一步描述。

参照图1~图8,一种面向无线传感器网络的混沌消息认证码实现 方法,所述混沌消息认证码实现方法包括以下步骤:

1)首先,面向无线传感节点采用基于整数型计算的Logistic混沌映射 函数,Logistic混沌映射函数的迭代式即为:

zn+1=zn<<2-zn2>>6-1---(I-10)

其中,zn=axn+a,取a=2L-1,L为机器字节的长度;

2)采用具有动态Feistel结构特性且分组长度仅为8比特的分组加密 算法,具体如下:

给出一种8比特分组Feistel结构,明文的一个分组被分为高位和 低位的各4比特,分别记为Li和Ri,在轮密钥ki的作用下,Ri通过f函 数后与Li异或生成新的Ri,而Li变为新的Ri,由此完成一轮的Feistel 结构加密;

f函数为8比特的整数混沌计算式,低四位的Ri首先被扩充到8 比特,与同样8比特的轮密钥ki异或后,输入到上述的一个精度为8 比特的整数型Logistic混沌映射中进行8比特整数混沌计算;输出的8 比特再次分为高低各4比特位,相互异或后生成最终的输出F;

3)基于该分组加密算法实现长度为32比特的消息认证码,具体过程 如下:

3.1)首先引入常见的密文反馈链模式,构造一个混沌Hash函数,用 于计算消息的摘要,即消息认证码;将原始消息M记为 M1,M2,...,Mn-1,Mn的长度为1字节,采用上述的具有Feistel结构的8 比特混沌分组加密函数;

3.2)在初始密钥k1的作用下,M1被加密成与其等长的k1和h1作为S函数的输入参数,计算最终的输出;同时,h1与新的迭代值 x2在f函数作用下生成下一分组所需的密钥k2;重复上述步骤,直到 处理完所有消息分组,最终的消息认证码的字节长度记为b,采用一 个字节数组CMAC[b]来表示。

本实施例中,基于整数型计算的混沌映射:本发明采用常见的 Logistic映射,其形式如下:

xn+1=1-λxn2---(I-1)

作为公知技术,xn代表第n次迭代的结果,xn+1代表第n+1次的迭代 结果,系统迭代参数λ∈[0,2],xn的取值范围为[-1,1]。

μ是系统参数。当μ处于(3.57,4]这个区间段时,Logistics映射呈现 出混沌的特性,此时的系统迭代值从统计学上来看具有类似白噪声的 性质,呈现出随机的特点。但尽管Logistic映射在时域上离散,但其 值域上仍是连续的,鉴于无线传感节点采用的嵌入式处理器的运算能 力有限,一般不直接支持浮点数和除法运算。因此,我们将Logitic 改造成一种时域和幅域均离散化的整数型混沌系统,具体操作如下:

对(I-1)式两边乘上a2(a≠0),得:

a2xn+1=a2-λ(axn)2                       (I-2)

令zn=axn+a,则:

xn=zna-1xn+1=zn+1a-1---(I-3)

将(I-3)式代入到(I-2)式中,再取λ=2,化简得到:

zn+1=4zn-2azn2---(I-4)

由于xn∈[-1,1],因此有:

zn∈[0,2a]                               (I-5)

令(I-5)式中的取值全部为整数,若取a=2L-1,L为机器字节的长 度,则(I-5)式中的Z值正好是机器字长所能表示的整个无符号整数 范围,(I-4)式就是在机器字长表示的无符号整数范围内的迭代运算。

进一步,令(I-4)式等于0,则求解方程可得到两个解:

zn=0zn=2a---(I-6)

为保证混沌系统迭代值不会陷入0值循环,迭代初值不能为0或 2a。但在有限的二进制离散数字计算中,由于存在量化误差,经过(I-6) 式多次迭代计算后,只要得到迭代值2a,则此后的迭代序列将始终为 0。因此,可进一步修改(I-4)式,即令所有的迭代值:

zn+1=4zn-2azn2-1---(I-7)

这样,只要迭代的初值不为0,则(3-11)式将不会出现0值,这 里的混沌迭代值取值范围相应变为:

zn∈[1,2a-1]                         (I-8)

对于如(I-7)式的迭代运算,容易在嵌入式系统中计算得到zn的 值。例如,若机器字长为16bits,则可取a=216/2=215=32768,此时的 zn∈[1,65535]正好处于16bits所能表示的无符号整数范围。在迭代的过 程中,计算4zn时仅需将zn左移两位,计算时仅 需将右移14位,即混沌映射计算公式为:

zn+1=zn<<2-zn2>>14-1---(I-9)

这样,对于(I-7)式的迭代运算,整个计算的过程仅仅需要整数 的加/减法、乘法和移位操作。因此,采用(I-7)式的混沌迭代十分适 合于在无线传感器网络节点嵌入式芯片上的实现。

本发明将利用上述的整数型Logistic映射,设计一种长度仅为8 比特的混沌分组加密方法,因此选取字长为8比特的精度,即L=8。 因此,本发明后续用到的Logistic映射函数的迭代式即为:

zn+1=zn<<2-zn2>>6-1---(I-10)

混沌动态8比特分组加密方法:首先给出一种8比特分组Feistel 结构,如图1所示。明文的一个分组被分为高位和低位的各4比特, 分别记为Li和Ri,在轮密钥ki的作用下,Ri通过f函数后与Li异或生 成新的Ri,而Li变为新的Ri,由此完成一轮的Feistel结构加密。

这一过程可以表示为:

Ri=Li-1FLi=Ri-1---(II-1)

其中Ri,Ri-1,Li,Li-1,F均为4比特长度。

f函数为8比特的整数混沌计算式,其结构如图2所示。低四位的 Ri首先被扩充到8比特,与同样8比特的轮密钥ki异或后,输入到上 述的一个精度为8比特的整数型Logistic混沌映射(Chaos函数)中进 行8比特整数混沌计算。输出的8比特再次分为高低各4比特位,相 互异或后生成最终的输出F。

这里的Feistel结构具备混沌动态特性主要体现在所采用的8比特 混沌分组加密函数Chaos。Chaos函数接收输入作为zn,进行一次迭代 后将zn+1作为输出。每一轮的中间输出F与输入的Ri有关及该轮的轮密 钥ki相关,且利用了8比特整数混沌计算的非线性变化,保障了加密 轮的安全性。

加解密过程:参照图3,在明文分组进入轮加密之前,首先对8 比特数据进行P置换,完成初步的扩散。随后的加密过程中的轮数可 变,同一般的Feistel结构分组加密一样,最后一轮时,省去最后输出 的左右交互步骤。轮加密完成后,再一次对8比特数据进行P置换。 整个完整的分组加密过程如图3所示。

该设计同样具备Feistel结构的一大特点,即加密过程与解密过程 具有完全相同的结构,仅需要逆序地使用加密时的输入密钥,即可构 成对应的解密操作。如加密时顺序使用了4轮子密钥k1,k2,k3,k4,则解 密时正确的子密钥使用顺序为k4,k3,k2,k1

明文输入后以及密文输出前需要调用8比特的P置换,起到一定 程度的预扩散效果。该置换的过程如图4所示。

P置换可如下简化表示:

b0b6b1b3b2b5b4b7---(II-2)

即0号比特位与6号比特位互换;1号比特位与3号比特位互换; 2号比特位与5号比特位互换;4号比特位与7号比特位互换。

基于混沌分组加密的混沌消息认证码:Hash函数设计,基于上述 的混沌分组加密结构设计一种高效安全的混沌消息认证码方案,首先 引入常见的密文反馈链(CBC)模式,构造一个新型混沌Hash函数, 用于计算消息的摘要,即消息认证码(MAC)。总体结构如图5。将原 始消息M记为M1,M2,...,Mn-1,Mn的长度为1字节(8比特),这里的CB 即采用上述的具有Feistel结构的8比特混沌分组加密函数。

图5中x1,x2,...,xn为映射迭代值序列。在初始密钥k1的作用下,M1被 加密成与其等长的k1和h1作为S函数的输入参数,计算 最终的输出。同时,h1与新的迭代值x2在f函数作用下生成下一分组 所需的密钥k2。重复上述步骤,直到处理完所有消息分组。最终的消 息认证码的字节长度记为b,这里用一个字节数组CMAC[b]来表示。

图5中的S函数结构如图5所示。图6消息认证码(CMAC)中的S 函数结构,其中,H的长度为1字节,消息认证码CMAC的长度b个字 节,这里考虑将H的每一位扩散到这b个字节单元的对应比特位上。 函数的另一个输入值K作为索引值Index,用于确定目标单元在数组 CMAC[b]中的下标。

如下定义Hi:将输入值H的第i位数据保留,其余比特位置零。

函数具体的计算过程为,对于i=1~8,分别进行如下操作:

1)K循环左移i-1位,截取K的前n位构成整数Index。其中,n的 值和CMAC长度b之间满足:

2n=b                                        (III-1)

2)以Index值作为下标,进行如下操作:

CMAC[Index]=CMAC[Index]Hi---(III-2)

图5中的f函数为:

kn=xn+hn-1 mod xmax=L(kn-1)+hn-1 mod xmax  (III-3)

其中L为(I-10)式的混沌映射,xmax为映射过程中的迭代值上限。

上述S函数、f函数以及CBC模式的加入使得输入消息对整个混 沌迭代的过程产生影响,从而使各分组计算结果顺序影响到其后的分 组,加强了整个Hash函数的扩散效应。

Hash函数的安全及性能分析:上述的混沌Hash函数的输出通过 调整参数b可变长度。常用的Hash函数,如MD5,其产生的输出为 128比特,即16字节。这里为了便于对比本方案提出的混沌Hash函 数与现有Hash函数的性能,故将长度同样定为16字节,即(III-1) 式中的b=16。

选取任意文本中的10k bytes长度消息,本实验中选用了系统更新 日志记录文本WindowsUpdate.log,其头部内容如下图7所示。

作为一种实施例,分以下几种情况分别计算消息的MAC码,并进 行比较分析。

Case 1:计算原始消息的MAC码;

Case 2:将原消息中第一个数字‘2’改成‘3’,计算更改后的消 息MAC码;

Case 3:在原消息中的‘Shutdwn’中加入‘o’,即改成‘Shutdown’, 计算更改后的消息MAC码;

Case 4:将原消息中的‘health’改成‘error’,计算更改后的消息 MAC码;

Case 5:去除原消息中第一行末尾的‘.’符号,计算更改后的消息 MAC码;

Case 6:交换原消息中的‘event’和‘state’,计算更改后的消息 MAC码。

计算得到相应的MAC码的十六进制表示如下:

Case 1:D4410C3237715AA8584E2471E4BE15B2

Case 2:98B83FC0D7892E332B3DEE52C15D4521

Case 3:558A11AD83BAE86599EA05B16AF79271

Case 4:EA5AAC947DA8F062B48F9E6E5D1D0493

Case 5:F9CA68EC57FBF5DC7E6C541C50CF3486

Case 6:59809E6B99D59975428AEA3FC0123A84

以上的测试结果表明,本方案提出的算法满足Hash函数的最基本 要求,对于消息进行压缩摘要的同时,尽可能地将原文信息扩散到了 输出的每一位当中,任何明文中的细节修改都会导致函数输出MAC 码的大幅度改变。

统计测试:任意选取10k bytes长度的消息,计算其Hash值,记 为cmac1。翻转(toggle)消息中的的任意一比特信息,计算新的消息 的Hash值,记为cmac2,统计cmac2和cmac1相比改变的比特位数,记 为B。重复该测试N次,N=1024时的结果如图8。

理想的扩散和混乱情况下,即使当消息发生了极其微小的变化,其 Hash值的每一比特都应有50%的几率发生改变。可以看到,本实验分 析中Hash函数计算得到的MAC码长度为128比特,而每次测试均有 大约55~75个比特发生了改变,且这些数值大多分布在64的附近。 也即,发生改变的比特数约为总数的一半,这与理想情况十分接近。

以下是几个常用的Hash函数性能指标:

B=1NΣi=1NBi---(III-4)

P=(B/128)×100%---(III-5)

ΔB=1N-1Σi=1N(Bi-B)2---(III-6)

ΔP=1N-1Σi=1N(Bi/128-p)2×100%---(III-7)

其中(III-4)和(III-5)计算改变比特数(率)的均值,而(III-6) 和(III-7)的标准差值则体现了样本值与均值的偏差程度,较小的值 意味着更为理想的扩散和混乱特性。

对于N=256,512,1024,2048,分别计算(4-15)至(4-18)的 结果,与目前最常用的MD5进行比较,结果如表1。从表中可以看到, 本方案在多数情况下的统计测试结果优于MD5算法。

表1

消息认证码的具体应用设计:上述实验测试是基于128比特长度 的Hash值进行的,但如果要将Hash函数应用到无线传感器网络中, 计算MAC码来验证消息的完整和真实性,这样的长度是不可行的。 原因在于:在无线传感器网络中,通常节点一次发送的消息大小仅为 10~20个字节左右,如果MAC码长16字节,那就要占到整个数据包 的一半左右,对于能量有限的节点,这就意味着成倍的能量消耗,这 显然是不可接受的。前面提到的几种现有Hash算法均为固定的128 字节长度输出,因此不适合在无线传感器网络中的应用,而由于本发 明公开的混沌Hash函数的输出长度可变,仅需改变(I-10)式中的b值, 即可构造不同输出长度的Hash函数。理论上来说,过短的Hash函数 发生碰撞的可能性会增高,因此需要权衡考虑算法性能和应用可行性。 参照目前TinyOS平台中最常见的TinySec协议中的MAC码长度,我 们将b减小为4,此时Hash函数的输出长度为32比特。

对长度为32比特的Hash函数重新进行测试,结果如表2所示。 可以看到,尽管输出长度减小,但修改后的Hash函数仍具有较好的 统计特性,其改变比特率仍接近理想情况下的50%。因此,32比特的 消息认证码对无线传感器网络是一种安全、高效、低耗的实用方案, 可作为一种优选的混沌消息码方案,具有极大的应用价值。

表2

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号