会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 密码体制 / 流密码体制中初始化向量的产生方法

流密码体制中初始化向量的产生方法

申请号 CN200710203151.7 申请日 2007-12-17 公开(公告)号 CN101184224A 公开(公告)日 2008-05-21
申请人 四川长虹电器股份有限公司; 发明人 康红娟; 刘贤洪; 任飞;
摘要 本发明涉及流密码技术。本发明提供一种完全脱离流密码体制的输出,能独立产生符合要求的初始化向量的方法。本发明为解决上述技术问题所采用的技术方案是,流密码体制中初始化向量的产生方法,其特征在于,包括以下步骤:a.构造在有限域内周期为奇素数N的二元序列;b.以所述奇素数N的部分分圆陪集作为所述二元序列的特征集,使用特征集完成二元序列的构造:二元序列的特征集处取1,该二元序列的其余部分取0,二元序列构造完成;c.将构造完成的二元序列作为初始化向量输出。本发明可适用于所有流密码体制中线性反馈移位寄存器初始化向量的输入构造,也可用于密钥管理中心分发给用户的密钥种子的构造。
权利要求

1.流密码体制中初始化向量的产生方法,其特征在于,包括以下步 骤:a、构造在有限域内周期为奇素数N的二元序列;

b、以所述奇素数N的部分分圆陪集作为所述二元序列的特征集,使用特征集完成二元 序列的构造:二元序列的特征集处取1,该二元序列的其余部分取0,二元序列构造完成;

c、将构造完成的二元序列作为初始化向量输出。

2.如权利要求1所述流密码体制中初始化向量的产生方法,其特征在 于,所述步骤b中,二元序列构造完成后,还需计算该二元序列的线性复杂度是否大于N/2, 如是,进入步骤c;如否,返回步骤b重新选择奇素数N,重新构造二元序列。

3.如权利要求2所述流密码体制中初始化向量的产生方法,其特征在 于,计算该二元序列的线性复杂度,只需通过计算2属于哪个分圆陪集,即可得出该二元序 列的线性复杂度。

4.如权利要求1所述流密码体制中初始化向量的产生方法,其特征在 于,步骤b中所述作为二元序列特征集的奇素数N的部分分圆陪集为奇素数N的所有分圆陪集 中的半数。

说明书全文

技术领域

本发明涉及流密码技术。

背景技术

流密码属于对称密码体系的一种。由于它实现简单,加密速度快,以及没有或只有有限 的错误传播,使流密码在实际应用中,特别是在专用和机密机构中仍保持着优势。它的主要 原理是:通过有限个状态数产生性能优良的伪随机序列,使用该序列对明文数据流进行加密 (逐比特加密)得到密文数据流,所以流密码算法的安全强度完全取决于它所使用的伪随机 序列的好坏。
现实中的各种信息(语音,图像,文本,报文等)都可以经过量化编码等技术转化成二 进制数字序列,因此,可以假设流密码中明文空间、密文空间和密钥流空间均是由二进制数 字序列组成的集合。在实现的过程中也可以二进制的方式进行读写和运算。在流密码系统中 ,由于明文序列与密钥流序列逐位加密,密钥流序列一定要具有与明文序列相当的长度。但 这样的密钥流序列难于分配和管理,因此,流密码系统设计的主要任务就是研究如何用一个 较短的密钥生成一个足够长的安全的密钥流序列。实际上的密钥流序列都是由密钥空间中较 短的密钥经过某些算法形成的,具有一定的周期性,如线性反馈移位寄存器。
对于给定的一个线性反馈移位寄存器,在最开始阶段必须有一个相应的初始的二元序列 输入,一般称作初始化向量IV,然后才能继续产生后续的序列。目前使用的初始化向量的选 择大致有以下两种方式:
(1)随机截取前一时刻密钥流输出的某一部分作为下次的初始化向量;
(2)将前一时刻密文输出的一部分数据作为初始化向量取出。
在实际应用中,我们力求这个初始化向量具有较“好”的性质:即不仅具有较高的线性 复杂度,而且在0,1之间具有相当好的平衡,也就是所谓的稳定。

发明内容

本发明所要解决的技术问题是,为了克服现有技术中生成的初始化向量肯定会含有密钥 流或者密文的部分信息这一缺点,而提供一种完全脱离流密码体制的输出,能独立产生符合 要求的初始化向量的方法。
本发明为解决上述技术问题所采用的技术方案是,流密码体制中初始化向量的产生方法 ,其特征在于,包括以下步骤:
a、构造在有限域内周期为奇素数N的二元序列;
b、以所述奇素数N的部分分圆陪集作为所述二元序列的特征集,使用特征集完成二元序 列的构造:二元序列的特征集处取1,该二元序列的其余部分取0,二元序列构造完成;
c、将构造完成的二元序列作为初始化向量输出。
进一步的,如果实际应用中必须严格要求线性复杂度,则在所述步骤b中,二元序列构 造完成后,还需计算该二元序列的线性复杂度是否大于N/2,如是,进入步骤c;如否,返回 步骤b重新选择奇素数N,重新构造二元序列。
进一步的,为了达到0与1的最佳平衡,步骤b中所述奇素数N的部分分圆陪集为奇素数N 的所有分圆陪集中的半数。
本发明的有益效果是,构造出的初始化向量不再含有密钥流或者密文信息,具有较高的 线性复杂度,在0,1之间具有相当好的平衡。本方法可适用于所有流密码体制中线性反馈移 位寄存器初始化向量的输入构造,也可用于密钥管理中心分发给用户的密钥种子的构造。

具体实施方式

结合本发明的步骤,介绍如下的术语:
1、n级线性反馈移位寄存器
有限域Fq上的一个n级线性反馈移位寄存器(Linear Feedback Shift Register,LFSR )显然n级线性反馈移位寄存器序列由它的前n项a0,a1,……,an-2,an-1和反馈函数F(x1,x2,… …,xn-1,xn)=-c1xn-c2xn-1-……-cnx1(ci∈Fq)完全确定。
2、序列的线性复杂度
设有正整数L和域Fq中的一组数c1,……,cL如果序列s∞满足:
sj+c1sj-1+……+cLsj-L=0(j≥L)                (1)
则称序列s∞是一个L阶线性递归序列。确定序列其他项的s0,……,sL-1称为初始值。不 难看出线性递归序列的生成可由线性反馈移位寄存器来实现。满足(1)式的L的最小值称为 序列s∞的线性复杂度。如果用线性反馈移位寄存器来实现一个序列,则它的线性复杂度是 能产生该序列的最短线性反馈移位寄存器的阶数,这时线性递归关系式(1)中的系数即为 线性反馈移位寄存器的反馈系数。通常用L(s∞)表示序列的线性复杂度。
从线性复杂度的定义可以看出,如果一个序列的线性复杂度为L,则只需知道该序列的 任意2L个连续元素,即可通过解线性方程组找到该序列所满足的线性递归关系式,进而可确 定整个序列。在实际应用中,我们需要线性复杂度足够大(L>N/2,N为序列s∞的周期)的序 列,这时要确定线性递归关系式,至少要知道序列中N个连续的取值,如果周期N足够大,这 种穷举法在实际中并不可行。因而线性复杂度是度量密钥流序列的密码学强度的一个重要指 标。但线性复杂度高的序列未必是“好”密钥流。一个“好”的密钥流,它的线性复杂度不 仅要足够高,而且必须“稳定”。
3、二元序列的特征集
若s∞是具有周期N的二元序列,集合{0≤i≤N-1:si=1}叫做序列s∞的特征集。
本发明中二元序列的特征集将由下述的分圆陪集给出。
4、有限域中的分圆陪集
记N=df+1是一个奇素数,θ是ZN的一个本原元,我们把乘法子群(θd)记作D0,可以得到 ZN *基于D0的一个陪集分解式:
Z N * = i = 0 d - 1 D i
这里Di=θiD0,0≤i≤d-1,进一步,称陪集Di为i次分圆陪集。
这里的分圆陪集Di在本发明中起着举足轻重的作用,将决定整个二元序列。针对一个给 定的奇素数N,它相应的一部分的分圆陪集将作为我们构造的二元序列的特征集,也就是取 1的具体位置,其余的位置取0。
5、周期为N的二元序列线性复杂度的计算方法:
记序列s∞是有限域Fq上以N为周期的序列,定义如下多项式:
SN(x)=s0+s1x+……+sN-1xN-1
那么该序列的线性复杂度L(s∞)=N-deg(gcd(xN-1,sN(x)))
进一步,如果周期为N的二元序列s∞以Dk∪D1∪Dm作为特征集(k,1,m=0,1,2,……,d-1) ,那么上述多项式SN(x)可以化简为:
S N ( x ) = S ( x ) = Σ i D k D l D m x i
取另一个多项式g(x)=gcd(xN-1,S(x)),那么我们可以得到二元序列线性复杂度的最简 单的计算公式:
L(s∞)=N-deg(g(x))
从上述过程可以看出,要计算一个二元序列的线性复杂度,关键找到多项式g(x)即可。
要构造符合要求的初始化向量可由以下步骤得到:
a、构造在有限域内周期为奇素数N(N=6f+1)的二元序列s∞;
b、以所述奇素数N的部分分圆陪集D0∪D1∪D2(奇素数N=6f+1的分圆陪集有6个)作为所 述二元序列s∞的特征集,使用特征集完成二元序列的构造:二元序列的特征集D0∪D1∪D2处 取1,该二元序列的其余部分D3∪D4∪D5取0,二元序列构造完成;
c、将构造完成的二元序列作为初始化向量输出。
针对奇素数N=6f+1的形式构造二元序列,应用者只需要根据实际的应用情况,选择2属 于不同的分圆陪集即可相应的选择不同线性复杂度的序列。针对一个具体的奇素数N,分圆 陪集是对1到N-1这N-1个数的等分,那么对于具体的N=6f+1,它的分圆陪集有6个,每一个有 (N 1)/6个数,最后构造序列的特征集取了其中的三个分圆陪集,那么在0和1之间必定是 平衡的。
当序列s∞是以分圆陪集D0∪D1∪D2为特征集的周期为N(N=6f+1)的二元序列时,序列 s∞的线性复杂度的情况如下:
当f是偶数时:
如果2∈D0,           L(s∞)=(N-1)/2;
如果2∈D1∪D3∪D5,   L(s∞)=N-1;
如果2∈D2∪D4,       L(s∞)=N-1或者(N-1)/2;
当f是奇数时:
如果2∈D0,           L(s∞)=(N+1)/2;
如果2∈D1∪D3∪D5,   L(s∞)=N;
如果2∈D2∪D4,       L(s∞)=N或者(N+1)/2。
从上述结论可以看到,有少数线性复杂度等于(N-1)/2的序列,如果实际应用者非要 严格要求线性复杂度的情况(要求线性复杂度大于N/2),不选这种序列即可,实际上在实 际应用中这个影响不大。
以一些例子进一步说明本方法所生成的初始化向量能满足对线性复杂度的要求:
1、N=31,f=5,θ=3,2∈D0
g=(x5+x2+1)(x5+x4+x3+x2+1)(x5+x4+x3+x+1)
L(s∞)=31-15=16
2、N=73,f=12,θ=5,2∈D2
g=x+1
L(s∞)=73-1=72
3、N=79,f=13,θ=3,2∈D4
g=1
L(s∞)=79
4、N=97,f=16,θ=5,2∈D4
g=x+1
L(s∞)=97-1=96
本方法优点在于密钥流序列周期的选择是一类形如N=6f+1的奇素数,那么可以根据实际 的需要,选择足够安全的周期。进一步根据有限域中分圆陪集的定义,可以明确0,1的具体 取值位置,即可构造具有较高线性复杂度且0,1取值相对稳定的二元序列,作为线性反馈移 位寄存器的初始输入向量IV,或者应用于密钥管理中心分发给用户密钥种子的构造。