一种基于算法变换思想的加密方法

文档序号:7838846阅读:202来源:国知局
专利名称:一种基于算法变换思想的加密方法
技术领域
本发明属于信息安全领域,涉及一类新型的加密方法。
背景技术
现有的加密算法都有非常清楚和固定的结构,只有明文、密钥和一些参数是变换的,它们都在固定的算法框架下参与运算,得到密文。由于有确定的结构,进行密码分析会比较容易着手,许多数学的方法可以用于密码的破译。本发明基于这样的观点1)作为在运算中的变量的密钥的变化对算法的复杂性的影响是有限的,不如算法本身的变化对密码算法的复杂性的影响显著,而且由于许多密码分析是基于固定结构的密码算法,算法的变换使得密码分析的线索会少许多,从而增强密码算法的安全性。2)采用算法变换,相对于增加了算法的复杂性,但是,这并没有直接增加运算量,而传统的方法在增加复杂度和破译难度的同时,往往会增加加密和解密的运算量。这样算法变换的方法在增强安全性的同时并不造成运算量的明显增加。

发明内容
在本发明中先设计一些安全性比较好、运算量小、接近雪崩效应的加密小算法作为加密的部件L,在加密的过程中,总密钥一方面确定算法的结构和调用不同的L的次序和方式以及哪些L被调用,另一方面起到作为传统密钥的作用,即作为参数输入算法参与运算。这些部件可以是S盒、各种运算、各种发生器,也可以是这些的组合或者是一个小型加密算法等。总密钥对算法结构的影响主要可以通过以下的方式体现第一,通过密钥决定各个部件运算的顺序,第二,通过密钥决定选用哪些部件;第三,通过密钥决定算法的结构和布局。由于各个部件接近雪崩效应,所以,这会将各种信息的泄露和线索的暴露降到最低限度。密码分析者也很难通过密文,乃至于选择的明文来确定密码算法的真正结构。密钥有两部分的作用,即决定算法和作为传统密钥参与运算,为了增加密钥量, 同时增强算法和传统意义密钥参数的独立性,将密钥分成两部分,一部分决定算法的结构, 一部分作为参数输入。增加密钥量可以增加算法的自由度和密码系统的不确定性,同时伪密钥的数量也会增加,惟一解距离会加大。这对于保障算法的安全性是有利的。在每一轮的运算中,有些部分依然是不确定的、随机的,比如某个部分可能是a、b、 C、d四个函数之一。对于一个密码系统,一般将所有的秘密都寓于密钥中,即整个密码系统的不确定性在于密钥中,本发明中虽然算法是不确定的,但是算法在具体的情况下,在密钥已知的情况下却是确定的,这个确定的条件就是密钥。具体依据这一方法来构造加密算法的时候,可以按照以下步骤
一、确定加密的算法(函数),函数具有多方面的不确定性和变换形式,包括次序、选择性和其他的变换。算法的设计也考虑传统密码算法的设计原则,保证传统意义上的安全性, 并且是可以惟一解密的。这些不同的选择之间得到的密文并没有可区分性,比如不能通过密文就分析确定采用的算法,如算法得到的密文都是没有冗余的,统计特征都是相似的,则不能判定其中的一些随机变换的因子具体是什么。二、依据算法来确定总密钥的结构,原则为将不同用途的数据进行独立的分块,让算法具有最多的变换方式,同时也方便信息的提取,可以规定每一部分分块的长度。比如, 一个12轮的密码算法,其中每一轮的算法都是不一样的,其顺序是可以任意排列的,则决定这一排列次序的那一部分密钥的bit数应该大于等于!,再比如某一个部分可能是4个函数之一,则决定这一个函数的密钥数应该不小于2bit。依据这种方法,可以设计一个决定加密算法的密钥部分的结构,然后,附加上算法的传统的密钥那一部分,即是完整的总密钥的结构。加密时,第一步先解析总密钥,从中提取参数;第二步通过某些参数确定具体的加密算法;第三步利用传统的密钥加密明文。其中对于随机顺序的结构,确定各个部分顺序的时候,采用以下的方法对于需要排序的η个部分设定一个初始顺序从1到n,将提取出来的用于确定顺序的密钥部分的那些bit,转换为十进制值Kf,进行转换确定排列顺序。对于η个部件进行排列,有η!种排列。 因此首先计算Km=Kf mod (η ! )+1,让其不大于η !。然后根据Km值确定排列的顺序。解密的时候,类似地解析密钥结构,对应的可以确定解密算法,利用传统密钥解密密文。现行的密码算法都是有许多轮的运算,均采用相对一致的结构,使得算法的结构简单、对称,并且便于运算,但是,这对于破译来说是有利的,可以将多轮重复的运算改为多轮不同的运算,这些运算具有一些类似,运算量相当的特征,但是也具有很大的差异,这些轮的运算可以是根据密钥来确定顺序的,即其顺序是不确定的。这种加密方法可以从不同的角度来看待其优越的安全性1)算法本身不定,密码分析的靶子都是不确定的。2)算法形式更加复杂,算法不确定使得通过已知的明文和密文逆推密钥更加困难。3)相比传统密码算法,密钥的信息量更大。现有密码算法密钥信息量增加往往导致运算量急剧增加,有时候加密运算量与密钥的长度呈指数关系。但是本方法在增加密钥量和运算量的同时,直接计算量的增加并不大,确定算法的计算量不大,并且是一次性的。虽然算法具有以上优点,且算法更加复杂,破译无线索,但是,单纯考虑计算量并没有多大的增加。即可以在不增加多大运算量的情况下使得安全性大幅度提升。
具体实施例方式以下为一个分组密码的实施例,为了方便和简洁地描述,采用比较简短的算法,并且模仿已经为公众熟知的AES算法的结构和具体加密部件。本算法采用三重变换的算法, 这三重分别采用代表性的变换,包括,根据密钥的一部分从多个函数中选取一个函数、根据密钥的一部分确定运算的函数部件的顺序、根据密钥的一部分确定结构。本实施例是基于对分组长度和密钥长度都是128bit的密码算法,其迭代的轮数为10,在原AES算法中,除了初始轮和结束轮,每一轮均包含字节代换、行移位、列混合和密
4钥加运算四个环节。结束轮依次包含字节代换、行移位和密钥加运算三个环节,其次序是确定的。算法的变换性体现在以下几点1)在中间轮中的行移位、列混合和密钥加运算的顺序是可以任意调换的,由密钥的最前面3比特确定。2)算法中的每一轮的字节代换都是相同的随机函数,这个随机函数的两个具体的函数元素,一个与AES算法相同,即将字节看做GF (28)上的元素,取自己的乘法逆元,如果是00000000则映射到自己,再做一个固定的 GF (28)上的可逆仿射变换,即完成字节代换;另外一个则是字节的每一个bit反转,即将0 替换为1,1替换为0后的字节进行,接着类似前面的采用相同的乘法逆元代换和仿射变换。 字节代换的随机性由密钥中的Ibit确定到底是采用两个函数中的哪个,比如如果这一 bit 是0则不反转,是1则反转。3)初始轮的结构是可变的,初始轮的变换有两种变换情形第一种是仅有明文与本轮的轮密钥的异或运算,第二种是首先将明文与本轮的轮密钥进行异或运算后,采用行移位进行变换。行移位与其他轮的行移位是相同的,即采用AES的行移位方式。初始轮的两种方式也是由密钥的1个bit确定,这一 bit为0即不附加行移位,如果是1则采用行移位。除了以上具有变换性的部分,本实例的诸如行移位、列混合和密钥加运算的方法均与AES中对应的方法一样。本实例的密钥的结构为前128bit为密码算法的密钥,后面的一个字节中的前 3bit确定中间轮的行移位、列混合和密钥加运算的顺序,具体方法为将!Bbit值变成十进制 X,计算Xmod3!,用这个值对应6种排列次序。第4bit确定字节代换的函数,第^Dit确定初始轮的结构。对前面128bit密钥采用AES算法相同的密钥,由这些密钥进行密钥的扩展,从扩展密钥中依次取128bit的密钥,分别作为每一轮的轮密钥,参与上面的轮密钥加运算。下面是另外一个基于修改AES的实施例将AES的9个中间轮改为不同的形式,分别称为A、B、C、D、E、F、G、H、I轮,它们均有字节代换(S盒)、行移位、列混合和密钥加运算, 但是这些内容每一轮都不一样。这9轮的次序由19bit的密钥确定,并且其中A轮的S盒有两种随机的形式,由Ibit的密钥确定,C轮中的行移位的循环移位的规则有四种,由2bit 的密钥确定,F轮中列混合的运算有四种函数,由2bit的密钥确定,其他的轮是固定不变的。密钥结构上规定密钥的前128bit是传统的密钥,作为密钥扩展,产生轮密钥,而其后的19bit的十进制值取模9 !后加1,用于决定中间轮的次序,随后Ibit决定A轮的形式, 紧接着的2bit决定C轮的形式,最后的2bit决定F轮的形式。本实施例的描述只详细介绍其变换方面的随机性,而其他的方面不做赘述。
权利要求
1.一种基于算法变换思想的加密方法,其特征为密钥未知时,密码算法本身是变换的、不确定的,它由密钥中的一部分数据确定。
2.一种如权利要求1所述的基于算法变换思想的加密方法,其特征为密码算法中的一些运算部件是随机的,包括算法的部件是η个函数或者运算方法之一,算法的一些结构是不确定的,或者一些运算部件的顺序是可变的,它们的这些不确定性均由密钥中的一部分数据确定。
3.—种如权利要求2所述的基于算法变换思想的加密方法,其特征为确定算法的不同随机和变换性的密钥数据是相互独立的。
4.一种如权利要求2所述的基于算法变换思想的加密方法,其特征为密码算法的构造步骤为,先确定加密的算法(函数),函数具有多方面的不确定性和变换形式,算法的设计也考虑传统密码算法的设计原则,保证传统意义上的安全性,并且是可以惟一解密的;其次依据算法来确定总密钥的结构,将不同用途的数据进行独立的分块,可以规定每一部分分块的长度,依据各个部分的长度决定加密算法的密钥部分的结构,然后,附加上算法的传统的密钥那一部分,即是完整的总密钥的结构。
5.一种如权利要求4所述的基于算法变换思想的加密方法,其特征为加密时先根据密钥的结构提取密钥信息,根据密钥确定算法的具体形式,然后再用确定的算法和密钥进行加密。
全文摘要
本发明属于信息安全领域,涉及一种基于算法变换思想的加密方法,密码(加密)算法是不确定的、可变的,密码算法中的一些运算部件是随机的,是n个函数或者运算方法之一,算法的一些结构是不确定的,或者一些运算部件的顺序是可变的,它们的这些不确定性均由密钥中的一部分数据确定。这种加密方法的优点在于算法不确定使得密码分析缺少关于算法的信息而非常困难。现有许多密码分析针对确定的算法,当算法不确定时候,这些密码分析将难于着手,同时也可以使得算法的形式多样化,而且带来的计算量的增加不大,可以在不明显增加运算量的情况下,极大地增大密钥空间,增加密码系统的不确定性和复杂性,从而增强安全性。
文档编号H04L9/32GK102404123SQ201210000940
公开日2012年4月4日 申请日期2012年1月4日 优先权日2012年1月4日
发明者王勇 申请人:王勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1