专利名称:基于t半序的伪随机序列生成方法及序列发生器的制作方法
技术领域:
本发明属于信息安全密码学中的序列密码学领域。
技术背景序列密码又称流密码。加密过程为首先将特定的种子密钥(对话密钥)注入到序 列密码发生器,然后用序列密码发生器产生的伪随机比特序列与明文比特流进行逐位 异或得到密文。使用序列密码加密时不受明文长度限制,只要产生的序列密码的周期 足够大,可以加密任何长度的文件,非常灵活。与分组密码加密方法相比较,序列密 码加密速度最快。因此,特别适合于大数据量、实时性要求较高的加密场合。序列密 码加密的安全性依赖于密钥序列发生器的内部机制。如果输出的是一列真随机数序列, 而不是伪随机数序列,则该密码具有一次一密乱码本同样完美的安全性。但在实际应 用中,真正随机序列较难实现,主要是使用的还是伪随机序列。因此设计序列密码的 主要工作是要获得具有伪随机序列。在密码系统中,其安全性在很大程度上依赖于是否能够随机地生成一些不可预测 的数,这些不可预测的数包括DES加密算法中的密钥、RSA加密算法中的素数P、 Q 以及DSA中的私钥等等。在这些情况下,要求产生的数必须足够大,并且是随机的, 也就是说,产生任何特定的随机数的概率都必须足够小,以防止对手利用规律破译密 码。随机数和随机位生成器就是用来生成任意的数或二进制位,使这些数的产生没有 任何特定的前提和规律。随机位生成器(random bit generator)是用来输出 一系列独立随机的二进制位串。 在实际应用中,有许多物理因素要考虑。在理想情况下,密码算法和协议中保密数需 要通过随机位生成器来产生。但在有些情况下,要想保证安全地存取和传输一个非常 大的随机位序列是不现实的,因此,往往用伪随机位生成器来代替随机位生成器。伪随机位生成器(Pseudorandom bit generator, PRBG)采用确定性的算法,即输 入长度为A的二进制随机序列,输出长度为W》^的二进制随机序列。PRBG的输入 称为种子数,输出称为伪随机序列。伪随机生成器其实并不全是随机的,它可能的输 出只占其中的一小部分。它是把一个位数比较少的随机序列通过一定的方法进行扩展 变为一个位数较长的随机序列,这样对方就不能有效地区别伪随机输出序列和真正的 长度为Z的随机序列。Ad-hoc方法就是用来产生这样的伪随机序列。为了确保伪随机 生成器是可靠的,必须经过大量的测试,但通过测试的生成器只能说明是局部可靠的, 并不能保证是绝对可靠的。传统我们构造序列密码所需要的伪随机序列都是基于数论和布尔代数的,常用的 有Brent序列,钟控序列以及一些相关免疫函数。本发明利用半序空间的非线性迭代 来构造伪随机位生成器,产生二进制伪随机序列。 发明内容本发明的目的是提供一种基于^半序的伪随机序列生成方法及序列发生器。 本发明引入了一种新的半序"^",我们称为^半序。在实/Z欲eW空间F中,取初始的某个x。ei/作为种子,选取一个非线性算子X作为迭代算子,建立一个迭代系统x +1 = Jx ,w = 0,1,2,…(*)半序伪随机序列及其密码系统的思想是将某个r e if和某个种子x。 e作为密 钥,利用(*)得到一个序列,若xj,u,则记录编码为"0";若x"与;^不可比较, 跳过不记录;若x"^^+,,则记录编码为'T,。通过这种方法,我们只要进行足够多 次的迭代,我们就可以得到足够长的二进制序列。在/T中定义标准的内积,kKU为其单位向量,设jc = |>,.e,.0c^0),取 ,=^/^,0, 21),显然〈;c,f〉2 0,因为^》1,所以 '=1 <x,f >2=(ZxJ,.)2 2(Z、)2 ^Zx,2 , < x'x >:^< >2 , ||;x|s<x,/>故当取,=J、e,.,"》l'f,锥户^xl^ |>^,^々0}是一个及 中的《锥。这样,我 们只要限制算羊^在锥P,中进行迭代就行f1,方便算法的建立与实现。为了使得迭代具有足够高的混乱度,我们可以在建立非线性算子^中引入混沌系 统,我们选取的空间为i u,其中u为一个大于等于8的正整数,设= C^,i,X",2,X",3,X",4,X",5,X",6,X",7,…,X",w) , G及 建立以下非线性算子迭代4" + l)其中叉"+u —(1)义"+1,2 =- rX",3X",3)(2)X"+l,3 =p.sin2(^ 2x 3(3)Xfl+1,4 =(4)X"+l,5 =p.sin2(《x 4x 5-rX",6X",6〕(5)义"+1,6 =; .sin2(^x 5x 6-(6)、+i,"-i = P.sin (仏,"一2、,"一i - 、,")(7)(8)(其中/^7>0,其中《一般取较大的数)取这种形式的算子主要是考虑每个算子选择好参数后在若干次迭代后将陷入混沌状态。半序控制密钥为,=(/"^,f"4,^,^,7,…,U '其中Q U = 1,2,…," (10)初始种子密钥为:(a^,;,2,:^,3,^,4,:^,5,;,6,:^,7,. . 、 初始迭代次数为m (m为整数)。利用以上原理,可以实现一个基于Z半序的加密算法和装置。 具体的说,本发明所述的方法是通过以下步骤实现的(51) 、设置参数;^,r,其中p,^x ,其中g—般取较大的数;(52) 、设置半序控制密钥 (^2,,3入,^^^…,U, f,々l,i-l,2,…,w;(53) 、设置初始种子密钥为X(O) 二 (X)'"Xo,2,Xo,3,工0,4,Xo,5,Xo,6,工0,7,…,Xo,w) , X(),/ ^ A s(54) 、设置初始迭代次数为m(m为整数);(55) 、建立非线性算子迭代义("+ l) = ,由计算x(" + l),其中 x =x("), ;c +1 , + l), " = 0,1,2,…,此迭代为非线性泛函半序迭代;(56) 、若^^;c"+,,则记录编码为二进制"0";若^与^+1不可比较,跳过不记录; 若&^&+1,则记录编码为二进制"1 ",其中比较过程方法如下计算"Jt"-a,')2, &=1>,*"+1,—x ,》,s3=|s2|,若a"3,则说明可比V '=1 i=l较,若其中"^0,记录编码为二进制"0",否则记编码为二进制"1",不能比较则不 记录;(S7)、重复过程(S5),直到得到足够长二进制序列。 本发明所述的序列发生器是通过以下技术方案实现的(参见附图4): 由时钟发生器、参数;^,r寄存器、迭代次数m寄存器、初始种子密钥寄存器、 半序控制密钥寄存器、非线性迭代函数电路、异或门电路组成,时钟发生器、参数A《r 寄存器、迭代次数m寄存器、初始种子密钥寄存器、半序控制密钥寄存器通过系统数 据总线与非线性迭代函数电路相连,非线性迭代函数电路有两个输出, 一个是反馈中 间迭代结果到初始种子密钥寄存器中保存;另外是产生O-l 二进制输出,与需要加密 的数据二进制流一起输入至异或门电路输入端,由异或门电路输出加密后的二进制流。 时钟控制发生器负责同步总线数据信号,发出初始化寄存器、清除寄存器和终止 数据传输等信号,参数/7,《r寄存器用于保存参数/^,r,迭代次数m寄存器用于设置 保存初始迭代次数m,半序控制密钥寄存器用于设置保存半序控制密钥,初始种子密 钥寄存器用于设置保存初始种子密钥,并接受非线性算子迭代电路的一个反馈输入, 保存每次生成的中间结果。本发明所述的序列发生器的解密过程(装置)参见附图1所示,即将明文预处理二进制序列与半序伪随机序列一起作为一个异或门电路输入,异或门电路输出加密后 的二进制流(密文二进制序列)。本发明所述的序列发生器的加密过程(装置)参见附图2所示,即将密文二进制 序列与半序伪随机序列 一起作为 一个异或门电路输入,异或门电路输出明文预处理二 进制序列。由于非线性泛函混沌序列间相关度非常低,本发明序列随机度高,速度快,另外 釆用的运算相对简单,便于用硬件实现,加解密装置一致,成本相对低廉。能够广泛 的应用于实时性要求高安全通讯、数据加密中。
图1为半序伪随机序列加密过程。图2为半序伪随机序列解密过程。图3为基于t半序非线性迭代的伪随机数发生器算法流程图。 图4为基于t半序的伪随机序列发生器。 具体实施方法本发明将通过以下实施例作进一步说明。 实施例1。下面我们给出一个具体的例子。我们选取的空间为及8,即取『8时,设X(")二0",l,工n,"、,3,&,4,、,5,X",6,^,7,X",8)' e及+'建立以下非线性算子迭代'.A" + l)其中^+1,1 = |P-sin2(^",8X",l -(1. Dx +1,2 = |p.sin2 (亿, ,2 - x '3)| (1. 2)X"+l,4 = I"in2(队,3、,4 _ ,5^,5)| (1. 4)x"+i,s = |Asin2( x 4x 5 _"x,,6jc 6)| (1. 5)x"+i,6 = l"in2(队,A,6 - X ,7)| (1.6)x"+l,7 = ip.sin2(W ,6、7 — n ,8、8)| (l' 7))| (1.8) (其中/^7>0,其中《一般取较大的数)取这种形式的算子主要是考虑每个算子选择好参数后在若干次迭代后将陷入混沌 状态。半序控制密钥为/二(V^,^"A^,f7,0,其中^ >U = 1,2,'..,8 (1.9)6初始种子密钥为=0^0,1 ,义0,2,^),3,Xo,4,乂0,5,Xo,6,^D,7,Xo,8), ~ £, (1. 1。)初始迭代次数为m(m为整数)。利用以上原理,可以实现一个基于^半序的加密算法和装置。具体的说,本发明所述的方法是通过以下步骤实现的(流程图见附图3):(51) 、设置参数p,《,r,其中; ,《,PO,其中《一般取较大的数;(52) 、设置半序控制密钥^ = (^2,^",^^/7,,8),其中。21,; = 1,2,",8;(53) 、设置初始种子密钥为x(0):(:cw,x。2,x。,3,x。,4,x。,5,x。e,;c。,7,jc。,s), x。, e iT ;(54) 、设置初始迭代次数为w(w为整数);(55) 、建立非线性算子迭代x(" + Xx(")),由x(")计算x(" + l),其中 x。 =x("), ;c +1 =z(" + l), " = 0,1,2,…,此迭代为非线性泛函半序迭代;(56) 、若^^^+1,则记录编码为二进制"0";若;c"与;c"+,不可比较,跳过不记录; 若1 ^^ +1,则记录编码为二进制"1 ",其中比较过程方法如下计算^^S"",'—, &=2>,*0 +1,,—&+2|,若A"3'则说明可比 较,若其中5220,记录编码为二进制"o",否则记编码为二进制"1",不能比较则不 记录;(S7)、重复过程(S5),直到得到足够长二进制序列。 实施例2。算法的MATLAB实现示例根据本发明所述的方法,本实施例结合一个生成半序伪随机序列二进制流的 MATLAB例子程序,说明算法的建立和工作%程序1:生成半序序列密码二进制流演示程序1.0 t = [2.5,3.2,4,1.2,3,5,2.5,4]; %半序控制密钥q = 2137; %参数qp二3.7; 。/。参数pr = 7; 。/o参数rm = 43; %初始迭代次数MAXSIZE = 512; %要产生的二进制序列长度%定义初始种子密钥x(l)-0.43;x(2) = 2.3;x(3) = 1.52;x(4) = 3.4;x(5) = 2.78;x(6) = 5.34; x(7) = 7.42; x(8) = 4.51;
y =
; %定义一个临时数组,保存迭代结果 z =
; %定义一个临时数组,保存迭代结果 k=l; %二进制序列计数变量 %进行初始迭代,进入混沌状态 for i=l:m
y(i)■— abs(p^sin(q*x(8)*x(l
y(2)=abs(p^s—*x(l)*x(2
y(3)=abs(p承sin(q*x(2)*x(3
y(4)-3bs(p、in(q*x(3)*x(4
y(5)=abs(p*sin(q*x(4)*x(5
y(6)=abs(p*sin(q*x(5)*x(6
y(7)=abs(pSin(q*x(6)*x(7
y(s)=abs(p伞sin(q*x(7)*x(8
for=1:8
l)-r*x(2)*x(2))*sin(q*x(8)*x(l 。-r*x(3)*x(3))*sin(q*x(I)*x(2 })-r*x(4)*x(4))*sin(q*x(2)*x(3 0-r*x(5)*x(5))*sin(q*x(3)*x(4 5)-r*x(6)*x(6))*sin(q*x(4)*x(5 5)-r * x(7) *x(7)) * sin(q * x(5) * x(6 7)-r*x(8)*x(8))*sin(q*x(6)*x(7 。-r*x(l)*x(l))*sin(q*x(7)*x(8
)-r*x(2)*x(2》) )-r*x(3)*x(3))) )-r*x(4)*x(4)》 )-r*x(5)*x(5》) )-r*x(6)*x(6》) )-r*x(7)*x(7》) )-r*x(8)*x(8》) )-r*x(l)*x(l)》
x①=y(i);
end
end
while k <= MAXSIZE
y(l) = abs(p*sin(q*x(8)*x(l)-r*x(2)*x(2))*sin(q*x(8)*x(l)-r*x(2)*x(2》);
y(2) = abs(p承s y(3) = abs(p*s y(4) = abs(p*s y(5) = abs(p*s: y(6) = abs(p*s: y(7) = abs(p*s: y(8) = abs(p*s:
n(q*x(l)*x(2)-r*x(3)*x(3))*sin(q*x(l)*x(2)-r*x(3)*x(3))) n(q*x(2)*x(3)-r*x(4)*x(4))*sin(q*x(2)*x(3)-r*x(4)*x(4))> n(q*x(3)*x(4)-r*x(5)*x(5))*sin(q*x(3)*x(4)-r*x(5)*x(5))> n(q*x(4)*x(5)-r*x(6)*x(6))*sin(q*x(4)*x(5)-r*x(6)*x(6》) n(q*x(5)*x(6)-r*x(7)*x(7))*sin(q*x(5)*x(6)-r*x(7)*x(7)》 n(q*x(6)*x(7)-r*x(8)*x(8))*sin(q*x(6)*x(7)-r*x(8)*x(8)》 n(q*x(7)*x(8)-r*x(l)*x(l))*sin(q*x(7)*x(8)-r*x(l)*x(l)))
%进行t半序比较,其中y为x(n+l)向量,x为x(n)向量
si = sqrt((y-x)*(y-x)'); s2 = (y-x)承t'; s3 = abs(s2); ifsl〈s3
ifs2>=0 wts(k)=0;
%计算sl=||y-x|| %计算s2=<y,t>-<x,t>
%计算s3=|<y,t>-<x,t>|判断x,y是否可比较 %是否可以比较?可以进行序列取值 %如果y>x %序列取0
8else
wts(k)=l; %序列取1 end
k = k+l; end
for.j=l:8
x(j)"(j);
end
end
wts %输出序列 实施例3。
应用示例l-基于半序随机序列的序列密码程序
使用半序序列密码算法很简便,只要先将明文通过预处理加密过程得到明文二进 制流,与半序序列密码二进制流进行异或运算即可(如图l所示)。解密过程只要与半 序序列密码二进制流再进行异或运算(如图2所示)。算法的关键是得到半序伪随机序
列二进制流。
权利要求
1、一种基于t半序的伪随机序列生成方法,其特征是通过以下步骤实现(S1)、设置参数p,q,r,其中p,q,r>0,其中q一般取较大的数;(S2)、设置半序控制密钥t=(t1,t2,t3,t4,t5,t6,t7,…,tu),ti≥1,i=1,2,…,u;(S3)、设置初始种子密钥为x(0)=(x0,1,x0,2,x0,3,x0,4,x0,5,x0,6,x0,7,…,x0,u),x0,i∈R+;(S4)、设置初始迭代次数为m(m为整数);(S5)、建立非线性算子迭代x(n+1)=A(x(n)),由x(n)计算x(n+1),其中xn=x(n),xn+1=x(n+1),n=0,1,2,…,此迭代为非线性泛函半序迭代;(S6)、若xn≤txn+1,则记录编码为二进制“0”;若xn与xn+1不可比较,跳过不记录;若xn≥txn+1,则记录编码为二进制“1”,其中比较过程方法如下计算<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><msub> <mi>s</mi> <mn>1</mn></msub><mo>=</mo><msqrt> <munderover><mi>Σ</mi><mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn></mrow><mi>u</mi> </munderover> <msup><mrow> <mo>(</mo> <msub><mi>x</mi><mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi></mrow> </msub> <mo>-</mo> <msub><mi>x</mi><mrow> <mi>n</mi> <mo>,</mo> <mi>i</mi></mrow> </msub> <mo>)</mo></mrow><mn>2</mn> </msup></msqrt><mo>,</mo> </mrow>]]></math> id="icf0001" file="A2009101860150002C1.tif" wi="37" he="11" top= "104" left = "40" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0002" num="0002" ><math><![CDATA[ <mrow><msub> <mi>s</mi> <mn>2</mn></msub><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>u</mi></munderover><msub> <mi>t</mi> <mi>i</mi></msub><mo>*</mo><mrow> <mo>(</mo> <msub><mi>x</mi><mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi></mrow> </msub> <mo>-</mo> <msub><mi>x</mi><mrow> <mi>n</mi> <mo>,</mo> <mi>i</mi></mrow> </msub> <mo>)</mo></mrow><mo>,</mo> </mrow>]]></math> id="icf0002" file="A2009101860150002C2.tif" wi="38" he="9" top= "105" left = "81" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>s3=|s2|,若s1<s3,则说明可比较,若其中s2≥0,记录编码为二进制“0”,否则记编码为二进制“1”,不能比较则不记录;(S7)、重复过程(S5),直到得到足够长二进制序列。
2、权利要求1所述方法实现的序列发生器,其特征是由时钟发生器、参数; ,《,r 寄存器、迭代次数w寄存器、初始种子密钥寄存器、半序控制密钥寄存器、非线性迭 代函数电路、异或门电路组成,时钟发生器、参数p,g,r寄存器、迭代次数m寄存器、 初始种子密钥寄存器、半序控制密钥寄存器通过系统数据总线与非线性迭代函数电路 相连,非线性迭代函数电路有两个输出, 一个是反馈中间迭代结果到初始种子密钥寄 存器中保存;另外是产生O-l 二进制输出,与需要加密的数据二进制流一起输入至异 或门电路输入端,由异或门电路输出加密后的二进制流。
全文摘要
基于t半序的伪随机序列生成方法及序列发生器,其方法步骤(S1)设置参数p,q,r;(S2)设置半序控制密钥;(S3)设置初始种子密钥;(S4)设置初始迭代次数;(S5)建立非线性泛函半序迭代;(S6)根据前后迭代序列半序比较结果进行编码;(S7)重复过程(S5),得到足够长序列;发生器是时钟发生器、参数p,q,r寄存器、迭代次数m寄存器、初始种子密钥寄存器、半序控制密钥寄存器通过系统数据总线与非线性迭代函数电路相连,非线性迭代函数电路输出一个是反馈中间迭代结果到初始种子密钥寄存器中;另一是产生二进制输出,与需加密二进制流输入至异或门电路,异或门电路输出加密二进制流,本发明序列随机度高,速度快,运算相对简单,便于用硬件实现,加解密装置一致,成本相对低廉。
文档编号H04L9/22GK101645772SQ20091018601
公开日2010年2月10日 申请日期2009年9月11日 优先权日2009年9月11日
发明者左黎明, 汤鹏志 申请人:华东交通大学