基于混沌映射的智能卡信道加密方案
文章出处:http://www.singbon.com 作者:王洁冉,马秀荣,张佳明 人气: 发表时间:2011年09月30日
1 概述
由于ISO 7816-3的限制,智能卡I/O线上的数据基本上没有封装,因此利用PC机上的RS232串口很容易就能截获I/O线上的数据。对于一些敏感数据的传输、私有密钥的外部认证等,必须将数据加密以保证信道安全。传统方法将私有密钥在卡片个人化阶段写入卡片NVM(Non Volatile Memory),其认证流程如下:(1)利用取随机数指令从卡中取出8 Byte(16 Byte)随机数。(2)利用私有密钥将随机数作DES(3DES)]加密生成密文。(3)将密文利用外部认证指令送入卡中。(4)COS(Card Operation System)利用私有密钥将密文解密,并与流程(I)所生成的随机数做比较,完成外部认证。可见, 上述认证过程(密文交换过程)很容易受到明文攻击,而且认证的安全性依赖于固化在NVM 上的密钥以及随机数的质量,对于像CIU51G128这样没有真随机数发生器的低成本卡片来讲,上述机制毫无意义。
Logistic序列具有对初值敏感、类随机和可重现等特性,进入混沌状态后,具有分布均匀、迭代公式简单、易于数字实现等优点。本文讨论并实现了利用Logistic混沌映射来同步动态生成服务器端和卡端密钥,提高了报文交换的安全性。
2 Logistic混沌映射理论及其特性
混沌现象是非线性动力系统中一种确定的、类似随机的过程。由于混沌动力系气初始条件的极端敏感性,能产生大量的非周期、连续宽带频谱、类似噪声且确定可再生的混沌信号。Logistic混沌映射是人们普遍研究的一种混沌映射,其表达式为
其中,0<Xn<1;1≤ μ≤4, 称为分形参数,图1是Xo=0.5,迭代300次时,μ的取值对X的影响,当3.57≤ μ≤4时,系统呈现混沌状态。
图2为当Xo取0.663 489 000,0.663 489 001,μ=3.99时2个不同初值的混沌序列差值的情况。
可见,2个初值仅相差0.000 000 001,在最开始20多次迭代,两者的差很小,近似为0,但随着迭代次数的增加,2个序列的值显示出一种无规律的情形,两者相差也比较明显了。因此,可以看出该系统对初值的变化十分敏感而且具有雪崩效应。
(1)Logistic混沌序列的概率密度分布函数为
(2)Logistic混沌序列的均值为
(3)Logistic的自相关和互相关性
设a(1) ,a(2) 分别表示长度为N的2个不同的Logistic混沌映射序列,n 表示a?在i时刻的状态。当N→∞时,序列的自相关和互相关函数分别为
其中,表示ai (1)的复共轭。可见Logistic混沌映射序列具有良好的自相关和互相关特性。
(4)Logistic混沌序列的李雅普诺夫(Lyapunov)指数
李雅普诺夫指数是对非线性映射产生的运动轨道相互间趋近或分离的整体效果进行的定量刻画。对混沌系统而言,正的李雅普诺夫指数表明轨线在每个局部都不稳定,相邻轨道按指数分离。同时正的李雅普诺夫指数也表示相邻点信息量的丢失,其值越大,信息量丢失越严重,混沌程度越高。
在一维动力系统X n+1 =F(X n)中,李稚普诺夫指数为
其中,λ与初值的选取没有关系。对于Logistic映射,考虑参数3.4≤ μ≤4,若P<P ∞=3.569 9,则λ<0对应周期运动。若μ>μ∞=3.569 9,则λ>0对应混沌运动。
3 基于混沌映射的动态3DES加密方案
3.1 密文交换流程设计
DES算法是一种公认的良好加密算法,已经成为贸易、金融,通信等行业的事实标准。但是DES算法是一种公开算法,其安全性完全依赖于对密钥的保护,必须有可靠的信道来分发密钥,而且单DES算法密钥过短,仅有8 Byte。
为了弥补这一缺点,人们设计了三重DES(3DES)。即使用3次单DES算法,每次采用加密、解密和不同的密钥的组合来强化DES算法。目前常用的3DES算法模型有:
(1)DES—EEE2:双密钥加密方法。采用加密-加密-加密的流程,其中,第1加密过程和第3加密过程使用相同的密钥。
(2)DES—EDE2:双密钥加密方法。采用加密-加密-加密的流程,其中,第1加密过程和第3加密过程使用相同的密钥。
(3)DES—EEE3:三密钥加密法。采用加密-加密-加密的流程,每个加密过程使用一个不同的密钥。
(4)DES—EDE3:三密钥加密法。采用加加密-加密-加密的流程,每个加密、解密过程使用一个不同的密钥。
为了增强安全性本文采用方案,即每轮单DES运算采用一个不同的密钥,这样即使其中某一轮的密钥被攻破,密文也不会被破解,其中每一轮的密钥由配置不同分形参数的Logistic混沌序列来产生。
为了解决密钥分发问题,采用卡端与服务器端同步生成密钥的方案,即在卡片预个人化阶段, 由服务器随机生成3个分型参数 μI, μ2, μ3和初始值 X0,Y0,z0,并和每张卡片的序列号(ICCID:Integrate Circuit Card Identifier)对应,然后将3个分型参数和初始值写入卡中NVM,同时服务器将3个分型参数和初始值存入数据库,这样相当于服务器端和卡端2个混沌系统具有相同的初始值和参数配置。只要在每次外部认证或密文传递时,服务器端和卡端的迭代次数相同,就能保证2端使用的密钥是相同的,这样就解决了密钥分发的问题。同时,卡端和服务器端将本次迭代结果保存并作为下一次迭代的初始值。这样就实现了一次一密的动态加密,有效地防止了明文攻击和暴力破解。
3.2 Logistic混沌序列的算法设计
由于8 bit 51核CPU字长有限,因此得到的序列仅可能是理论值的逼近而且序列必然呈现周期性,但是从工程角度来看,只要保证周期足够长,序列足够复杂即可。结合以上因素,考虑到存储空间、运算效率、序列复杂度和DES运算对密钥长度的要求,采用double型变量来存储分型参数和初始值,即每个参数占用8 Byte的存储空问。
为了使用通用浮点数表示,采用IEEE Std 754—1985所规定的浮点数表示法,由于Logisic混沌序列的X n∈(0,1),因此将X写成二进制形式,即
在式(9)中,(2L-Xn )相当于对XK求补码,(2L-Xn )和XK均为L比特,乘积为2L bit,再与Lbit的 μ相乘,得到3L bit的乘积,然后除以2L就是把乘积右移L bit,取高L bif作为输出结果,如图3所示。
4 Logistic混沌映射的数字算法的实现
上述算法的实现采用中电华大的CIU51G128智能卡芯片,IDE(Integrated Development Environment)采用Keilvision2。Flash一般划分为代码区和数据区,采用64 KB代码,64 KB数据的规划方式,数据区分为系统区、用户数据区和备份区。其中,系统区主要存放自由指针、卡片状态、MF(Master File)地址和算法常量等重要数据,故整个系统区
一般采用异或校验或CRC 校验来保证数据的一致性和正确性。系统区洋细规划见表1。
注:物理地址=0x l 0000+逻辑地址
利用服务器生成的分型参数 μI, μ2, μ3和初始值X0,Y0,z0见表2,在卡片上采用Big Endian方式存储生成的浮点数。
图4为利用仿真器查看到的FLASH上系统区的内容,由于采用了Bank机制,代码区占用了Bank 0和Bank 1,数据区占用了Bank 2和Bank 3,每个Bank的地址空间为0x8000~0xFFFF共32 KB 空间,因此数据区的逻辑地址0x0000对应于Bank 2的0x8000。
经过200次迭代后,X200,Y200和Z200见表3。
例如,加密的数据明文为{0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88},则采用前述3DES算法,第1轮加密使用密钥X200,第2轮解密使用密钥Y200,第3轮加密使用密钥Z200,最后密文结果为{0xE3,0x1D,0x61,0xEF,0x68,0x9D,0xFB,0x72}。当服务器端收到密文后,根据卡片的ICCID 查找到对应的分型参数和初始值,同样迭代200次后生成密钥,第1轮解密使用密钥 200,第2轮加密使用密钥Y200,第3轮解密使用密钥:Z200, 得到明文{0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88},这样就完成了一次报文交换。
5 结束语
本文提出的动态信道加密方案具有速度快、代码小、成本低和安全性好等优点,适用于外部认证和敏感数据的传输。随着智能卡应用领域的不断扩大,该方案在远程身份认证和金融交易等对安全性要求较高的场合具有较为广阔的应用前景。
(文/天津理工大学光纤通信实验室,王洁冉,马秀荣,张佳明)