用于IC卡的数据安全通信的加密方法及电路 【技术领域】
本发明是一种用于具有很高安全性的IC卡的数据通信加密方法及电路。
背景技术
随着通信技术的发展及其应用领域的拓宽,IC卡的应用越来越广泛,但是IC卡的应用领域对数据安全性要求甚高,所以现有技术中在IC卡的数据通信中使用了各种不同的加密算法,由于这些算法程序复杂,所以对芯片的硬件提出了很高地要求,使IC卡的制作成本提高。
【发明内容】
本发明的目的是研制一种方法简单、安全性高、芯片的硬件工艺容易实现的IC卡数据安全通信的加密方法及电路。
本发明研究了一种简单实用的算法实现加密电路。本发明在进行数据通信之前,需要进行读卡器对卡片的认证和卡片对读卡器的相互认证,我们称之为三次相互认证。认证的关键是要保持读卡机和卡中的加密单元和随机数发生器的一致,可见图1。三次相互认证和随后的加密/解密的具体操作过程如下所示:
1.装载密钥,即把卡里的密钥K(48比特,读卡机已知)装载到加密单元中。在这里加密单元(以下简称E)的宽度为48比特,随机数发生器(R)的宽度为32比特。
2.产生Rb,卡的随机数发生器产生32比特的随机数Rb,Rb与UID号异或后送到E。同时Rb被发送至读卡器,假设在认证之前,卡已经将自己的身份号码32比特通知读卡器,并且密钥为双方约定,因此在收到Rb后可以完全复制E,同时读卡机把自己的随机数发生器的随机数预置为Rb,这时读卡机的E和R已与卡的E和R完全一致。现在加密单元里的数据是E(Rb,K,UID),随机数发生器的内容是Rb。
3.认证读卡机。读卡机将发回64比特数据到卡,前32比特Ra由读卡机的随机产生,卡收到这32比特将直接送到E中,同样读卡机也把这32比特送到自己的加密单元中以保持与卡里的E一致,在这次加密运算中,送入加密单元的数据实际上是加密单元的本身输出和送入的数据的异或,这时卡与读卡器的加密内容均为E(Rb,Ra,K,UID)。其中随机数Rb,Ra使得每次加密过程不确定,防止通信数据被分析;K为双方约定的密钥,可以认证对方是否合法。之后读卡机把E的输出和R的输出进行异或后送出32比特数据,在这时E的输入是‘0’。卡把后32比特的数据用卡的E的数据(与读卡机的E的数据一致)异或得到读卡机Ra的值,再与自己的R中的即时的值比较,如果一致,则读卡机通过认证。
4.读卡机验证卡,卡发出32比特的数据(E和R输出的异或)到读卡机。读卡机验证这些数据,和自身的加密单元和随机数的输出异或进行比较,如果相同则整个安全认证完成。
上述安全认证完成后,读卡机和卡之间的通信都是加密的。加密的方法是把数据与加密单元的输出相异或得到密文,解密则是把密文与加密单元的输出相异或就得到明文。
整个加密电路是由加密单元和伪随机数发生器构成,两个电路都利用了线性反馈移位寄存器组(LFSR)对数据移位和混乱的作用。对于特定的n次多项式生成的LFSR,可以产生的伪随机数组合为2n-1个。
其中48位线性反馈移位寄存器组的产生多项式为x48+x43+x39+x38+x36+x34+x33+x31+x29+x24+x23+x19+x13+x9+x7+x6+x5+11.伪随机数发生器
随机数发生器中的16位线性反馈移位寄存器组的产生多项式为x16+x14+x13+x11+1,复位值为5555h。在时钟控制下,随机数结果从输出口串行输出。本发明可以从伪随机数发生器的输出口上截取连续的32位数据流,就能够得到32位伪随机数。2.加密单元
由于线路很复杂,但是本领域的技术人员都能实现。本发明提供线路框图,见图7,LFSR和组合电路内容由产生多项式和组合电路的逻辑表达式给出。信号en为低时切断LFSR的内部反馈回路,为高时LFSR工作正常。clk是加密单元的时钟信号,data为加密单元的数据输入。dataout是数据输出,通过它和明文密文进行异或可以完成加解密。
本发明组合电路的逻辑表达式为 !{(!A·!B·E)+(!B·!C·E·!D)+(A·D·!E)+(B·C·E)+(A·B·C)+(B·D·!E)}其中A=!{(!Q21·Q19·!Q23)+(!Q19·Q17·Q21)+(Q23·Q17·!Q19)+(Q23·Q21)}B=!{(!Q37·Q33·Q35)+(Q37·Q35·Q39)+(!Q33·!Q35·Q39)+(Q37·!Q35·!Q39)+(Q33·Q35·Q39)}C=!{(Q7·!Q3·Q1)+(Q7·Q5)+(!Q5·Q3·!Q7)+(Q5·!Q3·Q1)}D=!{(Q29·!Q27·Q25)+(!Q31·Q27·!Q29)+(Q29·Q31)+(Q25·!Q27·Q31)}E=!{(Q9·Q15·Q11)+(!Q9·Q15·!Q11)+(Q13·!Q15·!Q11)+(!Q13·Q11·Q9)+(Q13·Q15·Q11)LFSR寄存器组中所有反馈信号和输入信号的异或结果送到第一级寄存器,所有寄存器都没有复位端,在加密过程中通过移位送入48位密钥进行初始化。内部寄存器数据中的所有奇数编号的寄存器输出,送到一个复杂的组合电路产生加密单元的输出。整个加密电路有以下三种工作模式:1.在加密单元的输入数据信号为0时,通过自身的反馈实现内部数据的伪随机化处理过程。这个模式工作在卡和读卡器认证完成之后,对明文加密和对密文解密的过程中。2.可以关掉LFSR的反馈功能,则LFSR等同于一个48位的移位寄存器组。所有输入数据可以通过移位过程,给内部寄存器赋值。这个过程用于给加密单元装载密钥。3.同时进行数据输入和LFSR内部信号的反馈动作。在这个过程结束之后,加密单元的内容是原来的内容和输入序列的函数。这个模式用在卡和读卡器进行相互认证的过程中。
本发明的算法实现加密电路简单实用,电路采用线性反馈移位寄存器组构成伪随机数发生器个加密逻辑单元,其中加密逻辑单元的输出和明码的异或结果即加密后的数据,由此可获得如下的良好效果:1.在相互通信过程中的数据只有传输随机数和密文,可以有效地防止信 息泄密;2.只比较加密的数据,不直接传递密钥进行比较,提高了系统的安全性;3.数据通信之前对读卡器也进行认证,防止假冒读卡器对卡进行访问;4.系统相对简单,硬件实现容易;5.加密速度快;
【附图说明】
图1是本发明认证过程框图。
图2是本发明装载密钥框图。
图3是本发明随机数发生器产生框图。
图4是本发明验证读卡机的框图。
图5是本发明读卡机再次验证卡的框图。
图6是本发明通信加密框图。
图7是本发明组合电路框图。
图8是实施例电路框图。
具体实施方式实施例
图8给出了三次相互认证和加密过程的具体电路框架图,我们在复旦微电子公司的1K bytes非接触卡芯片设计中就采用了此方案。图中的加密单元和随机数发生器都是使用我们在前面提供的产生多项式和组合电路的逻辑表达式生成。通过增加控制模块和三个选择开关,我们就能够构成一个完整的加解密系统。我们可以看到,在开关S1,S2,S3的控制下,电路实现了装载密钥,送入随机数,认证读卡机,读卡机认证卡和加密/解密的过程。输入数据在认证过程中代表从读卡机发来的数据,而在加解密过程中可以是明文,也可以是密文。输入数据为明文时输出数据为对应的密文,在输入为密文时输出为明文。图中的UID和32bits的密钥都是一位的串行输入数据。控制电路包括加密过程的状态控制,在不同的状态下我们输出不同的选择信号S1,S2,S3。
信号值和状态的过程对应如下表。 过程 S1 S2 S3 装载密钥 0 0 2送入随机数/UID 0 0 3 认证读卡机(1) 1 0 1 认证读卡机(2) 0 1 0 认证卡 0 2 0 加解密过程 0 1 0
对我们实际的设计芯片而言,控制电路的功能不单单限制在对加密的控制,还包括了命令的接受和译码控制,响应数据的发送控制,和内存的接口控制等等,逻辑相当复杂,但对我们的加密电路来说,我们只需要给出以上几种状态和控制信号。