背景技术
无线通信系统已经广泛开展语音、数据等各种类型的业务,对所传输的数据进行加密是一种保护数据安全、防止非授权访问的有效手段。
GSM通信系统采用了A5/1、A5/2、A5/3加密算法对语音数据进行加密;WCDMA通信系统采用F8算法对数据进行加密。在LTE通信系统中,为满足高速、安全的数据传输,3GPP(3rd Generation Partnership Project,“第三代伙伴项目”组织)提出了一种基于SNOW 3G的EEA1加密算法--“3GPP技术规范33.40安全体系”,该规范引用的SNOW 3G算法由“3GPP技术规范加密和完整性算法UEA2&UIA2”的文件2“SNOW 3G规范”描述。
对数据进行加密的过程需要将数据与SNOW 3G加密核产生的加密码进行异或操作,如图1所示是SNOW 3G加密示意图;向SNOW 3G模块输入4个参数,包括COUNT(计数器)、BEARER(RB标识)、DIRECTION(上行或下行数据的方向位)和LENGTH(表示所加解密数据的长度),并输入密钥KEY,输出加密码(KEY STREAM),并和,将KEY STREAM和输入的数据PLAINTEXT进行异或运算,输出密文CIPHERTEXT。
SNOW 3G加密模块由线性反馈移位寄存器LFSR和有限状态机FSM两个部分组成,它们通过两个函数MULα和DIVα组成一个反馈的关系。LFSR由S0等16个寄存器组成;FSM由R1,R2,R3组成,相互间通过S1和S2变换连在一起。产生加密码流的过程分为两部分,首先是初始化阶段,如图2所示,是SNOW 3G加密模块初始化阶段示意图,在图2中,密钥KEY,COUNT、BEARER参数经过一定的变换写入寄存器S1到S15中,R1、R2、R3寄存器初始化为0,以下过程重复32次:FSM对来自LFSR的S15与R1进行模32加,接在跟R2异或产生一个中间变量F;同时FSM将S5与R3异或,然后与R2进行模32加产生一个中间变量r,依次对R2做S2变换赋给R3,R1做S1变换赋给S2,r赋给R1;LFSR根据对S0做MULα变换,对S11做DIVα变换,然后它们与S2和FSM产生的F做异或处理产生一个中间变量v,将S2赋给S1,S3赋给S2,以此类推,直到S15赋给S14,然后将v赋给S15。
初始化完成之后,如图3所示,是SNOW 3G加密码产生示意图;首先,FSM对来自LFSR的S15与R1进行模32加,接在跟R2异或产生一个中间变量F,这个值丢弃;同时FSM将S5与R3异或,然后与R2进行模32加产生一个中间变量r,依次对R2做S2变换赋给R3,R1做S1变换赋给S2,r赋给R1;LFSR根据对S0做MULα变换,对S11做DIVα变换,然后它们与S2做异或处理产生一个中间变量v,将S2赋给S1,S3赋给S2,以此类推,直到S15赋给S14,然后将v赋给S15。重复以下步骤,不断产生加密码:FSM对来自LFSR的S15与R1进行模32加,接在跟R2异或产生一个中间变量F;同时FSM将S5与R3异或,然后与R2进行模32加产生一个中间变量r,依次对R2做S2变换赋给R3,R1做S1变换赋给S2,r赋给R1;将F与S0异或产生加密码;LFSR根据对S0做MULα变换,对S11做DIVα变换,然后它们与S2做异或处理产生一个中间变量v,将S2赋给S1,S3赋给S2,以此类推,直到S15赋给S14,然后将v赋给S15。
LTE通信系统的数据传输速率很高,SNOW 3G加密模块产生加密码的计算过程非常复杂,采用软件实现性能上满足不了要求,系统的综合频率以及数据读取速度受到很大影响,进而影响系统的吞吐率,增加了系统功耗。
发明内容
本发明要解决的技术问题是提供了一种数据加密系统及方法。
为解决上述技术问题,本发明一种数据加密系统包括:SNOW 3G加密模块和异或处理模块,所述系统还包括,
总线从处理模块,用于配置加密参数,并将配置的加密参数发送给FSM控制模块;
FSM控制模块,用于根据所述加密参数,以启动所述SNOW 3G加密模块,并对SNOW 3G加密模块产生加密码进行控制;
总线主处理模块,用于从外部存储器读入数据,并将所述读入数据和加密码经所述异或处理模块处理后输出到外部存储器。
上述的系统,其中,所述总线主处理模块包括输入缓存器和输出缓存器;所述输入缓存器用于从外部存储器读入数据,所述输出缓存器用于将所述异或处理模块处理后的数据输出到外部存储器。
上述的系统,其中,所述FSM控制模块,还用于向总线主处理模块发送输入缓存器控制信息,控制所述输入缓存器从外部存储器读入数据;还用于根据所述输入缓存器和输出缓存器的数据存储情况控制SNOW 3G加密模块产生加密码的速度,以保证所述读入数据与加密码之间的顺序匹配。
上述的系统,其中,所述FSM控制模块,具体用于根据所述加密参数,开启所有模块时钟,并将密钥参数发送给SNOW 3G加密模块,以启动所述SNOW 3G加密模块,在加密完成且输出缓存器为空时,自动关闭所有模块时钟。
上述的系统,其中,所述FSM控制模块还用于根据总线主处理模块输入缓存器和输出缓存器的数据,向SNOW 3G加密模块发送暂停命令。
上述的系统,其中,所述SNOW 3G加密模块,用于在启动后,经过32个周期,产生32bit的加密码。
本发明还提供了一种数据加密方法,所述方法包括,
总线从处理模块配置加密参数,并将所述加密参数发送给FSM控制模块;
FSM控制模块收到所述加密参数后,将密钥参数发送给SNOW 3G加密模块,以启动SNOW 3G加密模块;
SNOW 3G加密模块启动后产生加密码;
总线主处理模块从外部存储器读入数据;
异或处理模块接收SNOW 3G加密模块的加密码和所述读入数据进行异或处理。
进一步地,所述方法还包括,
所述异或处理模块将处理后的数据写入到总线主处理模块中;
所述总线主处理模块接收所述处理后的数据后,将所述处理后的数据输出到外部存储器中。
上述的方法中,其中,所述FSM控制模块收到所述加密参数后,打开所有模块时钟,并向总线主处理模块发送输入缓存器控制信息。
进一步地,所述方法还包括,
当加密完成且输出缓存器为空时,FSM控制模块自动关闭所有模块时钟。
上述的方法中,其中,所述总线主处理模块从外部存储器读入数据具体为,总线主处理模块根据FSM控制模块发送的输入缓存器控制信息从外部存储器将数据读入内部的输入缓存器。
上述的方法中,其中,SNOW 3G加密模块启动后产生加密码具体为,SNOW 3G加密模块启动后,经过32个周期,产生32bit的加密码。
应用本发明的技术方案,采用了一种全新的硬件架构,提高了系统的综合频率及数据从外部存储器读写的速度,进而提高系统的吞吐率,也降低了系统功耗。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图4所示,是一种数据加密系统实施例结构图,所述系统包括数据处理装置和密码产生装置;数据处理装置包括FSM控制模块、总线从处理模块,总线主处理模块;密码产生装置包括SNOW 3G加密模块和异或处理模块。
总线从处理模块,是数据处理装置的接口,用于配置加密参数,如密钥、加密数据的源地址,加密数据的目的地址,数据长度等,并将配置的加密参数发送给FSM控制模块;在本实施例中,采用的接口是AMBA3.0协议规定的AXI从接口或者AMBA2.0协议规定的AHB从接口。
FSM控制模块,根据总线从处理模块发送的加密参数,打开各个子模块时钟,并将密钥参数发送给SNOW 3G加密模块,以启动SNOW 3G加密模块;同时将数据的源/目的地址信息传给总线主处理模块,并向总线主处理模块发送输入缓存器控制信息;数据从外部存储器中读入到输入缓存器可能会受到各种原因不能及时读入,输出缓存器的数据也可能受各种原因不能及时写的外部存储器里,FSM控制模块自动根据输入、输出缓存器(buffer)的数据空、满情况控制密码产生装置产生加密码的速度,保证数据跟加密码之间的顺序是匹配的;FSM控制模块根据总线主处理模块内部缓存器的数据情况,向SNOW 3G加密模块暂停命令,例如当数据还没有从外部存储器搬移进来,向SNOW 3G加密模块发送暂停产生加密码命令;每段待加密数据都有相应的长度,当加密完成且输出缓存器为空时,FSM控制模块自动关闭所有模块时钟,以节省功耗。当所有数据加密完成,并写到外部存储器后,FSM会将总线从处理模块的标志寄存器写1,表明加密过程完成;
总线主处理模块,由一个输入缓存器(buffer)和一个输出缓存器及相应的控制组成,用于从外部存储器读入数据至输入缓存器和将数据从输出缓存器写入到外部存储器中;根据FSM控制模块发送的控制信息从外部存储器将数据读入至输入缓存器;当数据没有全部读进来且输入缓存器不满时就不断从外部存储器读数据;接收异或处理模块处理后的数据,当输出缓存器有一定数据量时,数据开始写到外部存储器里,直到所有数据都写完为止。数据从外部存储器的搬移采用自适应方式,当数据量比较大的时候,以最高效率的burst16方式从外部存储器读数据,剩下不够burst16的数据就根据数据量计算是否能以burst15方式搬移,如果不够burst15的数据就以burst14搬移,依次类推,从而最大限度地利用总线效率;数据搬到外部存储器亦采用此种方式。总线主处理模块不限于使用AXI master接口,采用AHB master接口也没有问题。
SNOW 3G加密模块,用于接收FSM控制模块的密钥参数启动,SNOW3G加密模块启动后,经过32个周期,产生32bit的加密码;接收FSM控制模块发送的暂停命令,SNOW 3G加密模块暂停产生加密码;
异或处理模块,接收SNOW 3G加密模块的加密码和输入buffer中存储的数据进行异或处理,并将所述处理后的数据写入到总线主处理模块的输出buffer中。
如图5所述,是一种数据加密方法实施例流程图。该流程包括:
S01,总线从处理模块配置加密参数,如密钥、加密数据的源地址,加密数据的目的地址,数据长度等,并将加密参数发送给FSM控制模块;
S502,FSM控制模块根据总线从处理模块发送的加密参数,打开各个子模块时钟,并将密钥参数发送给SNOW 3G加密模块,以启动SNOW 3G加密模块;同时将数据的源/目的地址信息传给总线主处理模块,并向总线主处理模块发送输入缓存器控制信息;
S503,SNOW 3G加密模块启动后,经过32个周期,产生32bit的加密码;
S504,总线主处理模块根据FSM控制模块发送的输入缓存器控制信息从外部存储器将数据读入内部的输入缓存器;当数据没有全部读进来且输入buffer不满时就不断从外部存储器读入数据;
S505,异或处理模块接收SNOW 3G加密模块的加密码和输入缓存器中存储的数据进行异或处理,并将所述处理后的数据写入到总线主处理模块的输出缓存器中;
S506,总线主处理模块接收异或处理模块处理后的数据,当输出buffer有一定数据量时,数据开始写到外部存储器里,直到所有数据都写完为止;
S507,当所有数据加密完成后,FSM控制模块将总线从处理模块的标志寄存器写1,表明加密过程完成。
在上述步骤中,数据从外部存储器中读入到输入缓存器可能会受到各种原因不能及时读入,输出缓存器的数据也可能受各种原因不能及时写的外部存储器里,FSM控制模块自动根据输入、输出缓存器(buffer)的数据空、满情况控制密码产生装置产生加密码的速度,保证数据跟加密码之间的顺序是匹配的;FSM控制模块根据总线主处理模块内部缓存器的数据情况,向SNOW 3G加密模块暂停命令,例如当数据还没有从外部存储器搬移进来,向SNOW 3G加密模块发送暂停产生加密码命令;每段待加密数据都有相应的长度,当加密完成且输出缓存器为空时,FSM控制模块自动关闭所有模块时钟,以节省功耗。
在S04中,数据从外部存储器的搬移采用自适应方式,当数据量比较大的时候,以最高效率的burst16方式从外部存储器读数据,剩下不够burst16的数据就根据数据量计算是否能以burst15方式搬移,如果不够burst15的数据就以burst14搬移,依次类推,从而最大限度地利用总线效率;S06中,数据搬到外部存储器亦采用此种方式。
SNOW 3G加密模块包括FSM和LFSR,SNOW 3G加密模块产生加密码的过程如下:
SNOW 3G加密模块启动之后进入初始化阶段:
将LFRS的15个寄存器预置初值,如下所示,其中l表示0xFFFF,
表示按位异或,
表示模32加,||表示按位或;k0,k1,k2,k3是位宽为32bit参数,按照k3,k2,k1,k0的顺序构成了128bit的密钥KEY;IV0,IV1,IV2,IV3是位宽32bit的参数,IV0的值等于IV2,IV1的值等于IV3,且IV0等于输入参数COUNT(计数器),IV1的高5bit等于BEARER(RB标识),第26bit等于DIRECTION(上行或下行数据的方向位)的拼接,其余bit等于0。
(1)以下过程重复32次:
令R3=S2(R2),R2=S1(R1),R1=r。其中S1表示一种变换关系,功能是将32bit的输入通过查找表Sr变换为32比特的输出。
为节省芯片面积,对S1变换做了优化处理,如图6所示,是S1变换的实现框图;R1寄存器首先拆分为4个byte,然后作为查找表Sr的输入,经过查找表Sr,得到分别得到中间变量srw0,srw1,srw2,srw3,接在分别经过MULx函数,srw0’,srw1’,srw2’,srw3’,最后分别从这个8个中间变量选5个出来异或,得到4个byte,组成一个32bit的输出。其中MULx函数有2个8bit的输入,一个是V,对应查找表Sr的输出,另外一个输入c,固定为8’h1b,如图7所示,MULx函数实现框图。
本方案查找表Sr仅为256x8bit,比已有方案的256x32bit减小了四分之三。S2变换的实现与S1相同,不同的地方在于其使用的查找表为Sq,MULx函数的输入c固定为8’h69。
然后计算中间变量
其中s0=s0.0||s0.1||s0.2||s0.3,其中s0.0和s0.3分别表示寄存器s0最重要的byte和最不重要的byte;s11=s11.0||s11.1||s11.2||s11.3,其中s11.0和s11.3分别表示寄存器s11最重要的byte和最不重要的byte。
在计算中间变量v的时候,需要调用MULα和DIVα函数,它们是256级的递归,完成的功能是将8bit的输入转为32bit输出的函数。
利用硬件实现递归函数其综合频率不高,因此,本装置做了改进处理。首先根据计算公式将8bit的可能的输入情况遍历一遍,生成共256种结果,将这个结果保存起来制成一张ROM表格,使用是根据输入查找结果,大大提高的综合频率和运行速度。
令寄存器s0=s1,s1=s2,s2=s3,s3=s4,s4=s5,s5=s6,s6=s7,s7=s8,s8=s9,s9=s10,s10=s11,s11=s12,s12=s13,s13=s14,s14=s15,s15=v.
初始化完成之后,SNOW 3G加密模块开始产生加密码,过程如下:
1)计算中间变量
令R3=S2(R2),R2=S1(R1),R1=r;
2)计算
令寄存器s0=s1,s1=s2,s2=s3,s3=s4,s4=s5,s5=s6,s6=s7,s7=s8,s8=s9,s9=s10,s10=s11,s11=s12,s12=s13,s13=s14,s14=s15,s15=v.
3)计算中间变量
令R3=S2(R2),R2=S1(R1),R1=r;
4)计算加密码,
5)计算
令寄存器s0=s1,s1=s2,s2=s3,s3=s4,s4=s5,s5=s6,s6=s7,s7=s8,s8=s9,s9=s10,s10=s11,s11=s12,s12=s13,s13=s14,s14=s15,s15=v.
重复以上步骤3)、4)、5),每次都产生32bit的加密码。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。