CN101771533A - 基于线性反馈移位寄存器的序列流密码算法硬件实现方法 - Google Patents
基于线性反馈移位寄存器的序列流密码算法硬件实现方法 Download PDFInfo
- Publication number
- CN101771533A CN101771533A CN200810208248A CN200810208248A CN101771533A CN 101771533 A CN101771533 A CN 101771533A CN 200810208248 A CN200810208248 A CN 200810208248A CN 200810208248 A CN200810208248 A CN 200810208248A CN 101771533 A CN101771533 A CN 101771533A
- Authority
- CN
- China
- Prior art keywords
- lfsr
- group
- tap
- combin1
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明公开了一种基于线性反馈移位寄存器的序列流密码算法硬件实现方法,采用一个128位的线性反馈移位寄存器产生抽头序列,该抽头序列作为密钥流生成器的输入,并由所述密钥流生成器生成密钥流,采用该密钥流对音视频数据流进行实时加解密。本发明能够有效解决UCPS系统中大数据流的实时加解密问题,实现加密数据的高安全性,而且硬件实现简单,可移植性好。
Description
技术领域
本发明涉及多媒体领域,特别是涉及一种基于线性反馈移位寄存器(LFSR linear feedback shift register)的序列流密码算法硬件实现方法。
背景技术
中国的统一数字保护协议,简称UCPS协议,是我国提出的具有自主知识产权的数字保护协议,该协议可以用于便携式多媒体设备到高清数字电视的各种多媒体设备上。它的提出一方面为绕开HDCP(High-bandwidthDigital Content Protection高带宽数字内容保护规范)的专利壁垒,另一方面也是为适应中国这个庞大的数字多媒体市场而开发的适合中国国情的数字保护协议。
序列流密码也称为流密码(Stream Cipher),是对称密码算法的一种,序列流密码具有实现简单、便于硬件实现、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势。
发明内容
本发明要解决的技术问题是提供一种基于线性反馈移位寄存器的序列流密码算法硬件实现方法,能够有效解决UCPS系统中大数据流的实时加解密问题,实现加密数据的高安全性,而且硬件实现简单,可移植性好。
为解决上述技术问题,本发明的基于线性反馈移位寄存器的序列流密码算法硬件实现方法是:采用一个128位的线性反馈移位寄存器产生抽头序列,该抽头序列作为密钥流生成器的输入,并由所述密钥流生成器生成密钥流,采用该密钥流对音视频数据流进行实时加解密。
采用本发明的方法,由于算法实现简单,因此运算速度很高,可以满足UCPS系统中音视频大数据流的实时加解密速度的要求,而且具有很高的安全性,极大降低了UCPS系统的被攻击性,实现加密数据的高安全性;同时采用本发明的方法硬件易于实现,可移植性好;最后完成硬件实现并用FPGA进行了验证,验证结果说明本发明的方法是正确且快速的。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是线性反馈移位寄存器的基本结构图;
图2是长度为n的线性反馈移位寄存器基本结构图;
图3是基于LFSR的序列流密码加密基本结构图;
图4是基于LFSR的序列流密码解密基本结构图;
图5是本发明中采用的序列流算法结构图;
图6是序列流算法中加密算法抽头结构图;
图7是序列流算法中解密算法抽头结构图;
图8是本发明中密钥生成器的组合逻辑函数Combin1的抽头组成图;
图9是本发明中密钥生成器的组合逻辑函数Combin2的抽头组成图;
图10本发明中密钥生成器的组合逻辑函数Combin3的抽头组成图;
图11序列流算法仿真波形图。
具体实施方式
序列流密码算法在统一内容保护体系UCPS协议中实时对音视频数据流进行加解密算法处理,是整个协议中速度和使用频率最高的部分。
所述序列流密码的基本思路是以一种方式产生一随机序列,即密钥流,这一序列由密钥所确定,利用这样的序列进行加解密,即将密钥、明文表示呈连续的符号或二进制流,对应的进行加解密。
设明文流为:M=m1m2…mn,密钥流为:K=k1k2…kn(密钥流由密钥或种子密钥通过密钥流生成器得到),则:
加密过程可表示为:
C=c1c2…cn 公式(1)
其中
解密过程可表示为:
M=m1m2…mn 公式(2)
其中
当前使用的序列流密码大多都使用二元序列密码,在这种序列密码中,密钥流、明文流都被编码成0、1序列,即加、解密算法都是模2加(即异或),此时加解密过程即为:
加密过程为: 公式(3)
解密过程为: 公式(4)
二元序列密码的安全强度取决于密钥生成器所产生的密钥流的性质,如果密钥流是无周期的无限长随机序列,则此时序列密码是一次一密的密码体制,是绝对安全的。在实际应用时,密钥流都是用有限存储和有限复杂逻辑的电路来产生的,此时密钥流生成器只有有限个状态,密钥流生成器迟早要回到初始状态而使其状态呈现出一定长度的周期,其输出也就是周期序列。总之,序列流密码的设计核心在于密钥流生成器的设计,序列密码的安全强度取决于密钥流生成器生成的密钥流的周期、复杂度、随机(伪随机)特性等。
产生密钥流最重要的部件是线性反馈移位寄存器(LFSR)。主要是由于:LFSR很适合硬件实现;LFSR能产生大的周期序列;LFSR能产生好的统计特性的序列;LFSR的结构能应用代数方法进行分析研究。
线性反馈移位寄存器的基本结构如图1所示(该算法的基本结构图来源于标准线性反馈移位寄存器原理)。其中:ai表示二值(0,1)存储单元,ai的个数n称为线性反馈移位寄存器的级,在某一时刻,这些级的内容构成该线性反馈移位寄存器的一个状态,共有2n个可能的状态,每个状态对应于域GF(2)上的一个n维向量,用(a1,a2,...,an)表示。
在主时钟确定的周期区间上,每一级存储单元ai都将其内容向下一级存储单元ai-1传递,并根据线性反馈移位寄存器当前的状态计算f(a1,a2,...,an)作为存储单元ai的下一时间的内容,即从一个状态转移到下一个状态。
如果反馈函数为:
其中系数ki∈[0,1],(i=1,2,...,n),所有ki的取值由种子密钥k确定,这里的加法是模2加,则反馈函数是a1,a2,...,an的线性函数,对应的线性反馈移位寄存器用LFSR表示,参见图2所示(该算法基本结构图来源于标准线性反馈移位寄存器原理)。
令ai(t)表示t时刻第i级的内容,ai(t+1)表示ai(t)的下一时刻的内容,则有:
移位:ai(t+1)=ai+1(t),(i=1,2,...,n-1) 公式(6)
反馈: 公式(7)
经过前面对序列流密码和LFSR,以及基于LFSR的序列密码体制的原理分析可以推导如下:
设种子密钥为k=k1k2…kn,其中ki∈[0,1],(i=1,2,...,n):a1,a2,...,an的初态为s1,s2,...,sn,设明文为m=m1m2…mn,密文为c=c1c2…cn,则有:
加密: 公式(8)
解密: 公式(9)
对应的基于LFSR的加、解密过程如图3、4所示(该算法结构图来源于标准线性反馈移位寄存器原理)。图中线框内部分代表基于LFSR生成密钥流。
由公式(8)可见:左边第三项说明第i位密文ci与前i-1个密文c1,c2,…,ci-1有关;左边第二项中的s为初态,表明该项只在i=1时存在,i≥2时式中只存在第一、第三项;式中的“+”为mod2加。由公式(8)、公式(9)可以看出它们左边的第二和第三项相同,它们实际上代表的是密钥ki。由图3、4可以看出公式(8)、公式(9)可以简化为:
加密:ci=mi+ki(l≤i≤n) 公式(10)
解密:mi=ci+ki(l≤i≤n) 公式(11)
在UCPS协议中,源端和接收端都需要调用序列流密码对音视频数据流进行实时加解密,源端用加密算法进行数据加密,解密端用解密算法进行数据解密。它们都在认证完成时被调用使用,对算法速度的要求很高,基本上要求每个像素时钟运行产生一次密文数据。
本发明的算法中采用了一个128位的LFSR及一系列的前馈组合逻辑函数。如图5所示,128位的LFSR在每个时钟周期中会运算一次,它的变化经过一系列组合函数,就产生变化的密钥流encryption。
从前面的算法原理得知序列流密码加密和解码的过程是相逆的,密钥流的产生也是相同的,只是线性反馈移位寄存器值的回填不一样。在加密过程中,每次移位后空出的高位回填的是用输出密文产生的反馈值,而在解密时回填的是直接用输入的需解密密文来产生要回填的反馈值。具体的区别见图6、7所示的序列流算法中加解密算法结构图。
如图5所示,128位的LFSR通过一些抽头序列来作为密钥流生成器的输入,这些抽头分别按照一定的顺序进入三种不同的组合逻辑,产生加密用的二十四位的加密密钥流。这些抽头序列有104个,分别是:
lfsr127、lfsr126、lfsr125、lfsr124、lfsr123、lfsr121、lfsr120、lfsr119、
lfsr118、lfsr117、lfsr115、lfsr114、lfsr113、lfsr112、lfsr111、lfsr109、
lfsr108、lfsr107、lfsr106、lfsr105、lfsr103、lfsr102、lfsr101、lfsr100、
lfsr99、lfsr97、lfsr96、lfsr95、lfsr94、lfsr93、lfsr91、lfsr90、
lfsr89、lfsr88、lfsr87、lfsr85、lfsr84、lfsr83、lfsr82、lfsr81、
lfsr79、lfsr78、lfsr77、lfsr76、lfsr74、lfsr73、lfsr72、lfsr71、
lfsr69、lfsr68、lfsr67、lfsr66、lfsr64、lfsr63、lfsr62、lfsr61、
lfsr59、lfsr58、lfsr57、lfsr56、lfsr54、lfsr53、lfsr52、lfsr51、
lfsr49、lfsr48、lfsr47、lfsr46、lfsr44、lfsr43、lfsr42、lfsr41、
lfsr39、lfsr38、lfsr37、lfsr36、lfsr34、lfsr33、lfsr32、lfsr31、
lfsr29、lfsr28、lfsr27、lfsr26、lfsr24、lfsr23、lfsr22、lfsr21、
lfsr19、lfsr18、lfsr17、lfsr16、lfsr14、lfsr13、lfsr12、lfsr11、
lfsr9、lfsr8、lfsr7、lfsr6、lfsr4、lfsr3、lfsr2、lfsr1。
密钥生成器的组合逻辑函数一共有三种,组合逻辑函数Combin1被调用八次,只是每次的输入是LFSR中不同的抽头序列;组合逻辑函数Cmbin2被调用八次,同样每次的输入是LFSR中不同的抽头序列;组合逻辑函数Combin3也被调用八次,每次的输入也是LFSR中不同的抽头序列。三种组合逻辑函数的输出就产生了密钥流encryption。它与24位的被加密数据进行加密异或后,产生24位的密文,再将密文的所有位按位异或缩减运算后生成的一位结果存于LFSR移位后空出的最高位。这三种组合逻辑函数的抽头序列组成如图8-10所示。
组合逻辑函数combin1的算法伪代码描述如下(用verilog语言描述):
module combin1(y,a,b,c,d);
assign y=~f1(a,b,c,d);
endmodule
参见图8所示,组合逻辑函数combin1的连接方式如下:取每一抽头组的最低位,连续的四个抽头组的最低位组成新的一个抽头组,即抽头组分别为:
lfsr[1]、lfsr[6]、lfsr[11]、lfsr[16]组成第一组Combin1 U11,
lfsr[2]、lfsr[7]、lfsr[12]、lfsr[17]组成第二组Combin1 U12,
lfsr[3]、lfsr[8]、lfsr[13]、lfsr[18]组成第三组Combin1 U13,
lfsr[4]、lfsr[9]、lfsr[14]、lfsr[19]组成第四组Combin1 U14,
lfsr[21]、lfsr[26]、lfsr[31]、lfsr[36]组成第五组Combin1 U15,
lfsr[22]、lfsr[27]、lfsr[32]、lfsr[37]组成第六组Combin1 U16,
lfsr[23]、lfsr[28]、lfsr[33]、lfsr[38]组成第七组Combin1 U17,
lfsr[24]、lfsr[29]、lfsr[34]、lfsr[39]组成第八组Combin1 U18,
每一组被调用一次。
组合逻辑函数combin2的算法伪代码描述如下(用verilog语言描述):
module combin2(y,a,b,c,d);
assign y=~f2(a,b,c,d);
endmodule
参见图9所示,组合逻辑函数combin2的连接方式如下:同combin1的抽头抽取方式,接组合逻辑函数combin1抽头抽取位处,即抽头组分别为:
lfsr[41]、lfsr[46]、lfsr[51]、lfsr[56]组成第一组U21,
lfsr[42]、lfsr[47]、lfsr[52]、lfsr[57]组成第二组U22,
lfsr[43]、lfsr[48]、lfsr[53]、lfsr[58]组成第三组U23,
lfsr[44]、lfsr[49]、lfsr[54]、lfsr[59]组成第四组U24,
lfsr[61]、lfsr[66]、lfsr[71]、lfsr[76]组成第五组U25,
lfsr[62]、lfsr[67]、lfsr[72]、lfsr[77]组成第六组U26,
lfsr[63]、lfsr[68]、lfsr[73]、lfsr[78]组成第七组U27,
lfsr[64]、lfsr[69]、lfsr[74]、lfsr[79]组成第八组U28,
每一组被调用一次。
组合逻辑函数combin3的算法伪代码描述如下(用verilog语言描述):
module combin3(y,a,b,c,d,e);
assign y=~f3(a,b,c,d,e);
endmodule
参见图10所示,组合函数combin3的连接方式如下:同组合逻辑函数combin2的抽头抽取方式,但是以连续的五位组合为一个抽头组,接组合逻辑函数combin2抽头抽取位处,即抽头组分别为:
lfsr[81]、lfsr[90]、lfsr[99]、lfsr[108]、lfsr[117]组成第一组U31,
lfsr[82]、lfsr[91]、lfsr[100]、lfsr[109]、lfsr[118]组成第二组U32,
lfsr[83]、lfsr[92]、lfsr[101]、lfsr[110]、lfsr[119]组成第三组U33,
lfsr[84]、lfsr[93]、lfsr[102]、lfsr[111]、lfsr[120]组成第四组U34,
lfsr[85]、lfsr[94]、lfsr[103]、lfsr[112]、lfsr[121]组成第五组U35,
lfsr[86]、lfsr[95]、lfsr[104]、lfsr[113]、lfsr[122]组成第六组U36,
lfsr[87]、lfsr[96]、lfsr[105]、lfsr[114]、lfsr[123]组成第七组U37,
lfsr[88]、lfsr[97]、lfsr[106]、lfsr[115]、lfsr[124]组成第八组U38,
每一组被调用一次。
本发明的算法经过前面的分析和设计,采用Verilog硬件语言实现,可以做到每个时钟输出一组24位的加/解密数据,也就是说可以做到音视频数据实时加解密;而且,由于本发明的算法设计只利用了一个密钥流发生器,所以整个算法所耗资源少、易于实现、可移植性好,再利用率高。
在本发明的整个算法中加密算法的伪代码描述如下(用Verilog语言描述):
module LFSR(LFSR_enable,key,data_enable,data,LFSR_out,cryptograph);
always@(posedge clk) //128位移位寄存器
begin
if(LFSR_enable==1)
lfsr <=key;
else if(data_enable==1)
lfsr[127] <=^cryptograph1;
lfsr[126:0] <=lfsr[127:1];
else
lfsr <=lfsr;
end
assign cryptograph1={data[23:16]^encry_data3,data[15:8]^encry_data2,data[7:0]^encry_data1};
//高位移处位回填值
always@(posedge clk)
if(data_enable==1)
cryptograph <=cryptograph1; //加密密文输出
LFSR_out <=1′b1;
else
cryptograph <=cryptograph;
LFSR_out <=1′b0;
//*组合逻辑函数combin1产生低8位密钥流
combin1 u11(.y(encry_data1[0]),.a(lfsr[1]),.b(lfsr[6]),.c(lfsr[11]),.d(lfsr[16]));//组合逻辑函数
combin1
combin1 u12(.y(encry_data1[1]),.a(lfsr[2]),.b(lfsr[7]),.c(lfsr[12]),.d(lfsr[17]));//组合逻辑函数
combin1
combin1 u13(.y(encry_data1[2]),.a(lfsr[3]),.b(lfsr[8]),.c(lfsr[13]),.d(lfsr[18]));//组合逻辑函数
combin1
combin1 u14(.y(encry_data1[3]),.a(lfsr[4]),.b(lfsr[9]),.c(lfsr[14]),.d(lfsr[19]));//组合逻辑函数
combin1
combin1 u15(.y(encry_data1[4]),.a(lfsr[21]),.b(lfsr[26]),.c(lfsr[31]),.d(lfsr[36]));//组合逻辑函数
combin1
combin1 u16(.y(encry_data1[5]),.a(lfsr[22]),.b(lfsr[27]),.c(lfsr[32]),.d(lfsr[37]));//组合逻辑函数
combin1
combin1 u17(.y(encry_data1[6]),.a(lfsr[23]),.b(lfsr[28]),.c(lfsr[33]),.d(lfsr[38]));//组合逻辑函数
combin1
combin1 u18(.y(encry_data1[7]),.a(lfsr[24]),.b(lfsr[29]),.c(lfsr[34]),.d(lfsr[39]));//组合逻辑函数
combin1
//*组合逻辑函数combin2产生中间8位密钥流
combin2 u21(.y(encry_data2[0]),.a(lfsr[41]),.b(lfsr[46]),.c(lfsr[51]),.d(lfsr[56]));//组合逻辑函数
combin2
combin2 u22(.y(encry_data2[1]),.a(lfsr[42]),.b(lfsr[47]),.c(lfsr[52]),.d(lfsr[57]));//组合逻辑函数
combin2
combin2 u23(.y(encry_data2[2]),.a(lfsr[43]),.b(lfsr[48]),.c(lfsr[53]),.d(lfsr[58]));//组合逻辑函数
combin2
combin2 u24(.y(encry_data2[3]),.a(lfsr[44]),.b(lfsr[49]),.c(lfsr[54]),.d(lfsr[59]));/组合逻辑函数
combin2
combin2 u25(.y(encry_data2[4]),.a(lfsr[61]),.b(lfsr[66]),.c(lfsr[71]),.d(lfsr[76]));//组合逻辑函数
combin2
combin2 u26(.y(encry_data2[5]),.a(lfsr[62]),.b(lfsr[67]),.c(lfsr[72]),.d(lfsr[77]));/组合逻辑函数
combin2
combin2 u27(.y(encry_data2[6]),.a(lfsr[63]),.b(lfsr[68]),.c(lfsr[73]),.d(lfsr[78]));//组合逻辑函数
combin2
combin2 u28(.y(encry_data2[7]),.a(lfsr[64]),.b(lfsr[69]),.c(lfsr[74]),.d(lfsr[79]));//组合逻辑函数
combin2
//*组合逻辑函数combin3产生高8位密钥流
combin3 u31(.y(encry_data3[0]),.a(lfsr[81]),.b(lfsr[90]),.c(lfsr[99]),.d(lfsr[108]),.e(lfsr[117]));
combin3 u32(.y(encry_data3[1]),.a(lfsr[82]),.b(lfsr[91]),.c(lfsr[100]),.d(lfsr[109]),.e(lfsr[118]));
combin3 u33(.y(encry data3[2]),.a(lfsr[83]),.b(lfsr[92]),.c(lfsr[101]),.d(lfsr[110]),.e(lfsr[119]));
combin3 u34(.y(encry_data3[3]),.a(lfsr[84]),.b(lfsr[93]),.c(lfsr[102]),.d(lfsr[111]),.e(lfsr[120]));
combin3 u35(.y(encry_data3[4]),.a(lfsr[85]),.b(lfsr[94]),.c(lfsr[103]),.d(lfsr[112]),.e(lfsr[121]));
combin3 u36(.y(encry_data3[5]),.a(lfsr[86]),.b(lfsr[95]),.c(lfsr[104]),.d(lfsr[113]),.e(lfsr[122]));
combin3 u37(.y(encry_data3[6]),.a(lfsr[87]),.b(lfsr[96]),.c(lfsr[105]),.d(lfsr[114]),.e(lfsr[123]));
combin3 u38(.y(encry_data3[7]),.a(lfsr[88]),.b(lfsr[97]),.c(lfsr[106]),.d(lfsr[115]),.e(lfsr[124]));
endmodule
解密算法的伪代码描述如下(用Verilog语言描述):
module LFSR_uncrypt(LFSR_enable,key,data_enable,data,LFSR_out,cryptograph);
always@(posedge clk) //128位移位寄存器
if(LFSR_enable==1)
lfsr <=key;
else if(data_enable==1)
lfsr[127] <=^data; //高位移处位回填
lfsr[126:0] <=lfsr[127:1];
else
lfsr <=lfsr;
always@(posedge clk) //加密密文输出
if(data_enable==1)
cryptograph<={data[23:16]^encry_data3,data[15:8]^encry_data2,data[7:0]^encry_data1};
LFSR_out <=1′b1;
else
cryptograph <=cryptograph;
LFSR_out <=1′b0;
//*组合逻辑函数combin1产生低8位密钥流
combin1 u11(.y(encry_data1[0]),.a(lfsr[1]),.b(lfsr[6]),.c(lfsr[11]),.d(lfsr[16]));
combin1 u12(.y(encry_data1[1]),.a(lfsr[2]),.b(lfsr[7]),.c(lfsr[12]),.d(lfsr[17]));
combin1 u13(.y(encry_data1[2]),.a(lfsr[3]),.b(lfsr[8]),.c(lfsr[13]),.d(lfsr[18]));
combin1 u14(.y(encry_data1[3]),.a(lfsr[4]),.b(lfsr[9]),.c(lfsr[14]),.d(lfsr[19]));
combin1 u15(.y(encry_data1[4]),.a(lfsr[21]),.b(lfsr[26]),.c(lfsr[31]),.d(lfsr[36]));
combin1 u16(.y(encry_data1[5]),.a(lfsr[22]),.b(lfsr[27]),.c(lfsr[32]),.d(lfsr[37]));
combin1 u17(.y(encry data1[6]),.a(lfsr[23]),.b(lfsr[28]),.c(lfsr[33]),.d(lfsr[38]));
combin1 u18(.y(encry_data1[7]),.a(lfsr[24]),.b(lfsr[29]),.c(lfsr[34]),.d(lfsr[39]));
//*组合逻辑函数combin2产生中间8位密钥流
combin2 u21(.y(encry_data2[0]),.a(lfsr[41]),.b(lfsr[46]),.c(lfsr[51]),.d(lfsr[56]));
combin2 u22(.y(encry_data2[1]),.a(lfsr[42]),.b(lfsr[47]),.c(lfsr[52]),.d(lfsr[57]));
combin2 u23(.y(encry_data2[2]),.a(lfsr[43]),.b(lfsr[48]),.c(lfsr[53]),.d(lfsr[58]));
combin2 u24(.y(encry_data2[3]),.a(lfsr[44]),.b(lfsr[49]),.c(lfsr[54]),.d(lfsr[59]));
combin2 u25(.y(encry_data2[4]),.a(lfsr[61]),.b(lfsr[66]),.c(lfsr[71]),.d(lfsr[76]));
combin2 u26(.y(encry_data2[5]),.a(lfsr[62]),.b(lfsr[67]),.c(lfsr[72]),.d(lfsr[77]));
combin2 u27(.y(encry_data2[6]),.a(lfsr[63]),.b(lfsr[68]),.c(lfsr[73]),.d(lfsr[78]));
combin2 u28(.y(encry_data2[7]),.a(lfsr[64]),.b(lfsr[69]),.c(lfsr[74]),.d(lfsr[79]));
//*组合逻辑函数combin3产生高8位密钥流
combin3 u31(.y(encry_data3[0]),.a(lfsr[81]),.b(lfsr[90]),.c(lfsr[99]),.d(lfsr[108]),.e(lfsr[117]));
combin3 u32(.y(encry_data3[1]),.a(lfsr[82]),.b(lfsr[91]),.c(lfsr[100]),.d(lfsr[109]),.e(lfsr[118]));
combin3 u33(.y(encry_data3[2]),.a(lfsr[83]),.b(lfsr[92]),.c(lfsr[101]),.d(lfsr[110]),.e(lfsr[119]));
combin3 u34(.y(encry_data3[3]),.a(lfsr[84]),.b(lfsr[93]),.c(lfsr[102]),.d(lfsr[111]),.e(lfsr[120]));
combin3 u35(.y(encry_data3[4]),.a(lfsr[85]),.b(lfsr[94]),.c(lfsr[103]),.d(lfsr[112]),.e(lfsr[121]));
combin3 u36(.y(encry_data3[5]),.a(lfsr[86]),.b(lfsr[95]),.c(lfsr[104]),.d(lfsr[113]),.e(lfsr[122]));
combin3 u37(.y(encry_data3[6]),.a(lfsr[87]),.b(lfsr[96]),.c(lfsr[105]),.d(lfsr[114]),.e(lfsr[123]));
combin3 u38(.y(encry_data3[7]),.a(lfsr[88]),.b(lfsr[97]),.c(lfsr[106]),.d(lfsr[115]),.e(lfsr[124]));
endmodule
本发明的方法进行了试验测试,在试验测试过程中,通过使用Xilinx公司XC3S5000-5 FG900的FPGA(Field Programmeble Gate Array现场可编程门阵列)芯片,建立测试验证平台电路系统,使用Modelsim6.1SE软件进行仿真。仿真环境采用P4、1GM内存,联想启天M4880计算机。仿真波形如图11所示。采用加密算法和解密算进行验证对比,先把密钥和加密数据送入加密模块,进行加密,然后把相同的密钥和密文再输入解密模块进行解密,来验证加解密的过程是否正确;第二个方面验证计算加解密算法运行加解密一组数据所耗时间,结果证明是在一个时钟内出一组数据。
加解密数据对比如下(AES-128算法):
第一组:
加密:key=128’h0123456789ABCDEF0123456789ABCDEF;
data=24’h070809;
cryptograph=24’h05370b;
解密:key=128’h0123456789ABCDEF0123456789ABCDEF;
data=24’h05370b;
cryptograph=24’h070809;
第二组:
加密:key=128’h0123456789ABCDEF0123456789ABCDEF;
data=24’h010203;
cryptograph=24’h033d01;
解密:key=128’h0123456789ABCDEF0123456789ABCDEF;
data=24’h033d01;
cryptograph=24’h010203;
第三组:
加密:key=128’h0123456789ABCDEF0123456789ABCDEF;
data=24’hffffff;
cryptograph=24’hfdc0fd;
解密:key=128’h0123456789ABCDEF0123456789ABCDEF;
data=24’hfdc0fd;
cryptograph=24’hffffff;
第四组:
加密:key=128’hFFFFFFFFFFFFFFFF1111111111111111;
data=24’h101010;
cryptograph=24’h101cab;
解密:key=128’h FFFFFFFFFFFFFFFF1111111111111111;
data=24’h101cab;
cryptograph=24’h101010;
第五组:
加密:key=128’h2b7e151628aed2a6abf7158809cf4f3c;
data=24’h329abc;
cryptograph=24’h557ce8;
解密:key=128’h2b7e151628aed2a6abf7158809cf4f3c;
data=24’h557ce8;
cryptograph=24’h329abc;
根据上述数据对比测试可以看出,本发明所提出的序列流密码算法是正确并能实现的;通过数据的加解密验证得知加解密算法是的过程是相逆的,硬件实现正确,算法设计正确;而且可以保证数据加解密数据运行一次只需要一个时钟周期时间。本发明所提出的序列流密码算法有严格的数学证明,并且从测试结果也证明了算法实现是正确的。
序列流算法仿真波形图参见图11所示。
以上结合具体实施方式对本发明进行了详细的说明,这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可作出许多变形和改进,这些也应属于本发明的保护范围。
Claims (7)
1.一种基于线性反馈移位寄存器的序列流密码算法硬件实现方法,其特征在于:采用一个128位的线性反馈移位寄存器产生抽头序列,该抽头序列作为密钥流生成器的输入,并由所述密钥流生成器生成密钥流,采用该密钥流对音视频数据流进行实时加解密。
2.如权利要求1所述的方法,其特征在于:所述线性反馈移位寄存器每个时钟周期运算一次。
3.如权利要求1或2所述的方法,其特征在于:所述抽头序列共有104个抽头,所述密钥生成器的组合逻辑共有三种,加密过程是所述抽头序列按照一定的顺序进入密钥生成器的三种组合逻辑,产生加密用的二十四位的加密密钥流;将加密密钥流与24位的被加密数据进行加密异或后,产生24位的密文,再将密文的所有位按位异或缩减运算后生成的一位结果存于线性反馈移位寄存器移位后空出的最高位。
4.如权利要求3所述的方法,其特征在于:所述三种组合逻辑分别被调用八次,每次的输入是线性反馈移位寄存器不同的抽头序列;
组合逻辑1产生低八位密钥流,组合逻辑2产生中间八位密钥流,组合逻辑3产生高八位密钥流。
5.如权利要求3所述的方法,其特征在于:进入组合逻辑1的抽头组为,取每一抽头组的最低位,连续的四个抽头组的最低位组成新的一个抽头组,即抽头组分别为:
lfsr[1]、lfsr[6]、lfsr[11]、lfsr[16]组成第一组Combin1 U11,
lfsr[2]、lfsr[7]、lfsr[12]、lfsr[17]组成第二组Combin1 U12,
lfsr[3]、lfsr[8]、lfsr[13]、lfsr[18]组成第三组Combin1 U13,
lfsr[4]、lfsr[9]、lfsr[14]、lfsr[19]组成第四组Combin1 U14,
lfsr[21]、lfsr[26]、lfsr[31]、lfsr[36]组成第五组Combin1 U15,
lfsr[22]、lfsr[27]、lfsr[32]、lfsr[37]组成第六组Combin1 U16,
lfsr[23]、lfsr[28]、lfsr[33]、lfsr[38]组成第七组Combin1 U17,
lfsr[24]、lfsr[29]、lfsr[34]、lfsr[39]组成第八组Combin1 U18,每一组被调用一次。
6.如权利要求3所述的方法,其特征在于:进入组合逻辑2的抽头组为,接续组合逻辑1的抽头抽取位处,取每一抽头组的最低位,连续的四个抽头组的最低位组成新的一个抽头组,即抽头组分别为:
lfsr[41]、lfsr[46]、lfsr[51]、lfsr[56]组成第一组U21,
lfsr[42]、lfsr[47]、lfsr[52]、lfsr[57]组成第二组U22,
lfsr[43]、lfsr[48]、lfsr[53]、lfsr[58]组成第三组U23,
lfsr[44]、lfsr[49]、lfsr[54]、lfsr[59]组成第四组U24,
lfsr[61]、lfsr[66]、lfsr[71]、lfsr[76]组成第五组U25,
lfsr[62]、lfsr[67]、lfsr[72]、lfsr[77]组成第六组U26,
lfsr[63]、lfsr[68]、lfsr[73]、lfsr[78]组成第七组U27,
lfsr[64]、lfsr[69]、lfsr[74]、lfsr[79]组成第八组U28,每一组被调用一次。
7.如权利要求3所述的方法,其特征在于:进入组合逻辑3的抽头组为,接续组合逻辑2的抽头抽取位处,取每一抽头组的最低位,连续的五个抽头组的最低位组成新的一个抽头组,即抽头组分别为:
lfsr[81]、lfsr[90]、lfsr[99]、lfsr[108]、lfsr[117]组成第一组U31,
lfsr[82]、lfsr[91]、lfsr[100]、lfsr[109]、lfsr[118]组成第二组U32,
lfsr[83]、lfsr[92]、lfsr[101]、lfsr[110]、lfsr[119]组成第三组U33,
lfsr[84]、lfsr[93]、lfsr[102]、lfsr[111]、lfsr[120]组成第四组U34,
lfsr[85]、lfsr[94]、lfsr[103]、lfsr[112]、lfsr[121]组成第五组U35,
lfsr[86]、lfsr[95]、lfsr[104]、lfsr[113]、lfsr[122]组成第六组U36,
lfsr[87]、lfsr[96]、lfsr[105]、lfsr[114]、lfsr[123]组成第七组U37,
lfsr[88]、lfsr[97]、lfsr[106]、lfsr[115]、lfsr[124]组成第八组U38,
每一组被调用一次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102082481A CN101771533B (zh) | 2008-12-30 | 2008-12-30 | 基于线性反馈移位寄存器的序列流密码算法硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102082481A CN101771533B (zh) | 2008-12-30 | 2008-12-30 | 基于线性反馈移位寄存器的序列流密码算法硬件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101771533A true CN101771533A (zh) | 2010-07-07 |
CN101771533B CN101771533B (zh) | 2012-10-31 |
Family
ID=42504154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102082481A Expired - Fee Related CN101771533B (zh) | 2008-12-30 | 2008-12-30 | 基于线性反馈移位寄存器的序列流密码算法硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101771533B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102983972A (zh) * | 2012-10-18 | 2013-03-20 | 郎六琪 | 基于流密码的动态加密解密方法 |
CN103095449A (zh) * | 2013-01-16 | 2013-05-08 | 司玉娟 | 一种基于流密码的动态加密解密方法 |
CN103595524A (zh) * | 2013-10-21 | 2014-02-19 | 吉林大学 | 一种基于流密码的丢位加密-补位解密的加解密方法 |
CN105141413A (zh) * | 2015-08-06 | 2015-12-09 | 吉林大学 | 基于流密码的循环链表异或加密方法及解密方法 |
CN107872310A (zh) * | 2017-09-27 | 2018-04-03 | 广东楚天龙智能卡有限公司 | 一种计算机可读存储介质和应用该介质的rfid系统 |
CN107925795A (zh) * | 2015-06-29 | 2018-04-17 | 纳格拉维森公司 | 内容保护 |
CN111400232A (zh) * | 2020-04-10 | 2020-07-10 | 芯启源电子科技有限公司 | 一种基于数据位宽展开的scramble与descramble硬件实现方法 |
CN112615718A (zh) * | 2020-12-14 | 2021-04-06 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希函数的序列密码加密系统密钥更新方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5365588A (en) * | 1993-03-12 | 1994-11-15 | Hughes Aircraft Company | High speed encryption system and method |
US6560338B1 (en) * | 1998-08-28 | 2003-05-06 | Qualcomm Incorporated | Limiting delays associated with the generation of encryption stream ciphers |
CN1337803A (zh) * | 2001-07-03 | 2002-02-27 | 上海复旦微电子股份有限公司 | 用于ic卡的数据安全通信的加密方法及电路 |
CN101242265A (zh) * | 2008-03-07 | 2008-08-13 | 四川虹微技术有限公司 | 安全系统中流密码、伪随机数产生方法 |
-
2008
- 2008-12-30 CN CN2008102082481A patent/CN101771533B/zh not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102983972A (zh) * | 2012-10-18 | 2013-03-20 | 郎六琪 | 基于流密码的动态加密解密方法 |
CN102983972B (zh) * | 2012-10-18 | 2015-06-10 | 吉林大学珠海学院 | 基于流密码的动态加密解密方法 |
CN103095449B (zh) * | 2013-01-16 | 2015-11-04 | 吉林大学 | 一种基于流密码的动态加密解密方法 |
CN103095449A (zh) * | 2013-01-16 | 2013-05-08 | 司玉娟 | 一种基于流密码的动态加密解密方法 |
CN103595524B (zh) * | 2013-10-21 | 2017-01-04 | 吉林大学 | 一种基于流密码的丢位加密-补位解密的加解密方法 |
CN103595524A (zh) * | 2013-10-21 | 2014-02-19 | 吉林大学 | 一种基于流密码的丢位加密-补位解密的加解密方法 |
CN107925795A (zh) * | 2015-06-29 | 2018-04-17 | 纳格拉维森公司 | 内容保护 |
CN107925795B (zh) * | 2015-06-29 | 2021-02-19 | 纳格拉维森公司 | 用于解密经加密的媒体内容的设备及控制解密的服务器 |
CN105141413A (zh) * | 2015-08-06 | 2015-12-09 | 吉林大学 | 基于流密码的循环链表异或加密方法及解密方法 |
CN105141413B (zh) * | 2015-08-06 | 2018-05-15 | 吉林大学 | 基于流密码的循环链表异或加密方法及解密方法 |
CN107872310A (zh) * | 2017-09-27 | 2018-04-03 | 广东楚天龙智能卡有限公司 | 一种计算机可读存储介质和应用该介质的rfid系统 |
CN111400232A (zh) * | 2020-04-10 | 2020-07-10 | 芯启源电子科技有限公司 | 一种基于数据位宽展开的scramble与descramble硬件实现方法 |
CN112615718A (zh) * | 2020-12-14 | 2021-04-06 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希函数的序列密码加密系统密钥更新方法 |
CN112615718B (zh) * | 2020-12-14 | 2022-09-02 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希函数的序列密码加密系统密钥更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101771533B (zh) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101771533B (zh) | 基于线性反馈移位寄存器的序列流密码算法硬件实现方法 | |
Barker et al. | Recommendation for the triple data encryption algorithm (TDEA) block cipher | |
WO2018153317A1 (zh) | 一种基于混沌数谱的数字化混沌密码方法 | |
CN104468090B (zh) | 基于图像像素坐标的汉字密码编码方法 | |
CN107196763A (zh) | Sm2算法协同签名及解密方法、装置与系统 | |
CN106296561A (zh) | 基于超混沌系统的图像加密方法及装置、解密方法及装置 | |
CN104580236B (zh) | 流媒体加密及解密方法、加密及解密装置 | |
CN101814985B (zh) | 应用多混沌映射多动态s盒的分组密码系统 | |
CN109981249B (zh) | 基于拉链式动态散列和nlfsr的加密解密方法及装置 | |
Abraham et al. | An improved caesar cipher (icc) algorithm | |
Kumar et al. | A novel approach of symmetric key cryptography | |
Zin et al. | Implementation and analysis of three steganographic approaches | |
CN101764687A (zh) | Ucps协议中采用aes算法对数据流加解密的硬件实现方法 | |
Vinotha et al. | VLSI implementation of image encryption using DNA cryptography | |
CN109600620A (zh) | 视频文件保护方法 | |
Ge et al. | Fast chaotic image encryption algorithm using a novel divide and conquer diffusion strategy | |
CN101996065B (zh) | 随机数发生器和随机数生成方法 | |
Soni et al. | Key generation using genetic algorithm for image encryption | |
CN103458316B (zh) | 一种图像加密方法 | |
Salmi et al. | Implementation of the data encryption using caesar cipher and vernam cipher methods based on CrypTool2 | |
Nazarkevych et al. | The method of encryption based on Ateb-functions | |
CN106788965B (zh) | 一种基于混沌数谱的数字化混沌密码方法 | |
CN107896149A (zh) | 基于三个群运算的128位对称加密方法 | |
Rangaswamaiah et al. | Multilevel data concealing technique using steganography and visual cryptography | |
Bin et al. | Image encryption algorithm based on chaotic map and S-DES |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121031 Termination date: 20201230 |
|
CF01 | Termination of patent right due to non-payment of annual fee |