一种非线性流式加密算法_第1页
一种非线性流式加密算法_第2页
一种非线性流式加密算法_第3页
一种非线性流式加密算法_第4页
一种非线性流式加密算法_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一种非线性流式加密算法by袁园为了更好的说明算法,我们先对一些必要的概念做简单介绍。1 流式算法1.1 对称加密对称加密,它的加密和解密都是用同一把密钥完成。对称加密比不对称加密快得多,但缺点在于,它的安全性完全依赖于保持密码的机密性。不对称加密,它要求使用两个密钥,一个是公共的(公钥),另一个是私有的(私钥)。每个密钥都要求使用另一个密钥来解密一条消息。它的复杂性提高,因此没有普及。1.2 加密算法通常有两种方法可以对一批数据进行加密,一种是区块加密系统,另一种是流式加密系统。1.2.1 Block Cipher(区块加密系统)区块加密获取一大批数据,并用密钥对其加密。这个过程不断重复,直至

2、彻底加密整条消息。通常,会有一个长度变量来控制数据块的大小。但无论长度大小,都会用整个密钥来加密数据区块。Cipher Function(data , password)=Output整个密钥(password)每次都原封不动的用于数据加密,在连续使用的过程中,区块加密系统在功能上会越来越弱。密钥很容易从密文中提取出来。1.2.2 Stream Cipher(流式加密系统)流式加密也使用一个密钥,但它的加密单位小的多。区块加密可一次加密整页文本,但流式加密只能对构成一页文本的每个字母的每个比特进行加密。流式加密使用了除密钥和数据外的一个状态条件,即对流经加密程序的每个数据区块,数据都会进行不同

3、的加密。为了实现此算法,需要合并状态值和密钥生成一个随机改变的数据流Key Stream。它的加密函数有两部构成:Key Stream = State Function(State ,Password);Output = XOR(data , key stream).2 加密算法2.1 概述该算法本质为流式加密算法的一种,即对明文数据的每个bit位都进行加密。而且生成上述Key Stream 的State Function 是非线性函数,因此是一种非线性流式加密算法,还因为它加解密都使用同一密钥,所以称它是对称的。2.2 名词介绍该算法涉及到一些专业术语,我们有必要首先作声明。移位寄存器序列是

4、指由移位寄存器输出的由“1”和“0”构成的序列。相应的时间波形是指由“1”和“-1”构成的时间函数,如图2-1所示。(a)1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0(b)图2-1(a)移位寄存器序列(b)移位寄存器波形移位寄存器序列的产生如图2-2 。主要由移位寄存器和反馈函数构成。移位寄存器内容为或1,反馈函数的输入端通过系数与移位寄存器的各级状态相联()输出通过反馈线作为的输入。移位寄存器在时钟的作用下把反馈函数的输出存入,在下一个时钟周期又把新的反馈函数的输出存入而把原的内容移入,依次循环下去,不断输出。如果反馈函数为的模2加(即异或),就称寄存器为线

5、性反馈移位寄存器序列产生器(LFSR)。反馈函数还决定了寄存器移位的状态总数,若使得寄存器能遍历除全零外的所有状态,则称寄存器为m序列发生器,对应此时的称为本原多项式。 异或(XOR)XOR是一个简单的逻辑运算。它是比特位的不进位加法,是一种初级的加密方案,将一个数据区段与另一个数据区段合并到一起,从而生成一个被打乱的输出。因为它的速度极快,因此成为最流行的加密方法之一。在生成Key Stream 后,加密函数只需将数据与其做异或便得到密文,解密是只需将密文再与其做异或,即可得到数据。2.3 算法实现 获得加密密钥算法使用password的为64比特。在该算法中状态值也是64 bit。算法初始

6、时取机器时间的低64位与password异或得到加密密钥。以后取算法运行一次生成的84 bit中的64 bit作为状态值。初始状态值的随机性,以及后来状态值的迭代性,使得加密算法更安全。 移位寄存器.1 两个寄存器运算上述加密密钥送到两个64级,但具有不同的本原多项式的m序列寄存器中,作为寄存器的输入。其中为寄存器的第i bit 位对两个寄存器作如下操作:首先运转128次,得到的序列取其最高7bit构成一个十进制数N,查随机数表,输出另一个十进数Ni,寄存器再运转Ni次,得到64bit输出序列。将两个寄存器的输出按如下形式运算:LFSR1 = A1 + A2 + A3 + A4 + A5 +

7、A6 + A7 + A8LFSR2 = B1 + B2 + B3 + B4 + B5 + B6 + B7 + B8LFSR = A1 B8 + A2 B7 + A3 B6 + A4 B5 + A5 B4 + A6 B3 + A7 B2 + A8 B1.2 得到非线性函数的输入上述得到的LFSR 作为第三个寄存器的输入,经过与前两个寄存器相同的运转后,输出序列即位非线性函数的64bit输入。 非线性State Function.1 得到14个十进制数从64bit的输入中确定14个数,计算式如下:得到的为一组,为另一组。.2 对第一组数的处理 根据的值计算一组非线性函数,输出为一个8 bit数。因

8、为的值为03,所以只可能是下面函数中其中一个:式中,是两个置换表,输入为7 bit,输出也为7 bit。根据计算出来的值我们继续运算:上式中Ni7时,取Ni=0。最后计算输出一个8 bit字。.3 对第二组数的处理对第二组数做相同的处理,也得到一个8 bit字。 Key Stream 的生成对两个8 bit字作如下运算,输出一个4 bit 字合并寄存器3的64 bit输出,以及上述4 bit字,生成84 bit Key Stream序列: 加密将生成序列奇偶互换,并接在原始序列之后构成一个长度为168 bit的序列。设置一个值指向序列的某一位,由所指当前位相邻的高8 bit构成一个字节,这个值

9、由序列第一位开始依次后移直到序列的最后一位。(其中当值指向序列末尾时,不够8 bit的向序列起始位循环)由上生成168个字节的加密序列,与所给数据相应的字节做异或运算,得到密文。3附表 31 随机数表87797111073121611110113155921248970364045675596610978849198105112120011916251154317627290921031141251279730445669749510812211022655158829613318654494283100118826416381101512145285931972827619411611345

10、7801043912648737512320465335124235077294326088117184776106102386899233643732 置换表016324864809611282440567288104120117334965819711392541577389105121218345066829811410264258749010612231935516783991151127435975911071234203652688410011612284460769210812452137536985101117132945617793109125622385470861021181430466278941101267233955718710311915314763799511112733 置换表064165266367468569670771872973107411751276137714781579168017811882198320842185228623872488258926902791289229

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论