一种适合硬件环境的流密码加密方法及***
技术领域
本发明属于信息安全中的对称加密技术领域,尤其涉及一种适合硬件环境的流密码加密方法。
背景技术
加密技术是信息安全当中很重要的一个部分,几乎所有的通信协议背后都离不开加密算法的支持,这使得加密技术属于信息安全当中的基础性技术。流密码属于对称加密算法的范畴,在对称加密算法中有着重要的地位。流密码的设计思路使得它在对称加密体系中较其他设计思路具有更快的加解密速度,这使得对传输速度有着较高要求的场景更加青睐使用流密码来作为通信保密性的支持。并且,不同与在业界已经形成标准的分组密码,流密码在业界上目前还没有一个固定标准,这些原因促使本发明去设计一种新的流密码。
细胞自动机是一种常见的用来设计随机数发生器和流密码的方法,目前许多流密码的设计都直接或是间接的使用了这种方法.之所以研究者会选用细胞自动机设计流密码,这主要是因为细胞自动机的硬件实现非常简单,同时具备并行特性,这使得它能够快速的产生密钥流。
另外,现有技术也存在这样的问题:
(1)现有的流密码设计基本不是由国内自主设计完成的,在技术和知识产权问题上容易受制于人。
(2)同样是基于细胞自动机设计的流密码,如一种基于Rule30细胞自动机设计的流密码,它由于具备不可避免的线性相关性问题,这使得这种设计在安全性上存在一定隐患。目前基于细胞自动机设计的流密码多基于复杂的规则(Rule),或是复杂的结构,这将增大流密码的硬件开销,或是加解密速度。
(3)另外,对于针对硬件环境的流密码设计,它的参数设计大都与流密码的密钥长度具有很大的关联性,这使得对流密码无法适配更大长度的密钥。如果一种流密码设计方法不能适应不同长度的密钥,那么当需要增加密钥长度的时候,此时只能重新设计整个流密码,这明显会增加流密码的设计成本。事实上,流密码的密钥长度选择与当下计算机的计算能力相关,过去密钥长度多为80比特,如今增长到128比特。这时,当密钥长度发生变化时,许多流密码就需要根据新的密钥长度重新设计。
总的来说,加解密速度与安全性是评价加密技术好坏的重要指标。而流密码在加密算法中的定位决定了它更加的重视加解密速度。现有流密码在设计中,由于很多原因的影响,会更加重视安全性这一指标,从而在设计阶段一定程度上牺牲了速度来保证足够的安全性。事实上,不同的应用场景,对安全性的需求是不同的。这使得在实际的应用中,需要出现速度快,同时具备一定安全性的流密码。
解决上述技术问题的意义:对于安全性基于反馈多项式构建的流密码,流密码的参数设计与流密码的密钥长度一定会存在关联性。于是,流密码的参数设计需要在确定密钥长度之后才能进行,目前主流的流密码大都基于反馈多项式构建安全性。当存在一种依赖于密钥长度,而能够独立的进行参数设计的流密码时,如果这种流密码能够满足现代密码学对安全性的要求,这就意味着在流密码范畴下,一种通用的,能够标准化的设计理念的出现。
发明内容
针对现有技术存在的问题,本发明提供了一种适合硬件环境的流密码加密方法,流密码中设计了一个新的规则称之为Rule30+的细胞自动机,用于有效的产生密钥流。
本发明是这样实现的,一种适合硬件环境的流密码加密方法,所述适合硬件环境的流密码加密方法包括:
步骤一,根据密钥和初始化向量为CA30+和CA90两个结构赋值;
步骤二,CA30+和CA90每经过一个时钟周期,状态变化一次;CA30+的变化与CA30+本身和CA90的状态相关;CA90的变化与CA90本身和上一个时钟周期所产生的密钥流有关;
步骤三,根据CA30+和CA90的状态,产生密钥流;在初始化阶段,所产生的密钥流不输出,作为步骤二中影响CA90变化的变量;
步骤四,重复步骤二和步骤三指定的次数,完成初始化阶段,进入密钥流输出阶段;在密钥流输出阶段,步骤二中CA90的变化仅与CA90本身有关;
步骤五,根据步骤四对步骤二中CA90的变化规律进行调整,继续重复步骤二和步骤三,直至产生足够长的密钥流。
进一步,步骤一进一步包括:将密钥和初始化向量分别作为CA30+和CA90的输入,如果结构能存储的数据长度大于变量的长度,则将额外的为这些位置的状态赋值;CA30+的状态中至少包含一个状态1,对于CA90的状态不限制。
进一步,步骤二进一步包括:令E0为CA90中某一个元素的状态,令E1为7个元素的异或结果,其中6个状态来自CA30+,1个状态来自CA90;在密钥流输出阶段选用0-镜像边界,设置第0个元素EL为0,第N+1个元素ER为第N个元素的值;第N+1个ER的值为上一个时刻所产生密钥流的值Z,同时将Z纳入对E1的异或操作中。
进一步,步骤三进一步包括:密钥流的产生仅与CA30+和CA90在当前时刻的状态相关,取CA30+最后面的元素,第N个元素E1,N代表CA30+的长度;取CA90任意一个位置元素E2,有输出
进一步,步骤四中,重复步骤二和步骤三指定的次数为N=256。
进一步,步骤五进一步包括:
CA30+的长度应大于密钥长度,CA90的长度应大于初始化向量的长度;边界条件E1所关联的元素个数在log2N附近,其中N为CA30+的长度;初始化次数应大于两倍于CA30+的长度,即2N。
本发明的目的在于提供一种所述适合硬件环境的流密码加密方法。
本发明的另一目的在于提供一种适合硬件环境的流密码加密程序,应用于终端,所述适合硬件环境的流密码加密程序实现所述的适合硬件环境的流密码加密方法。
本发明的另一目的在于提供一种终端,所述终端搭载实现所述适合硬件环境的流密码加密方法的处理器。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的适合硬件环境的流密码加密方法。
综上所述,本发明的优点及积极效果为:
本发明通过简单调整就能适应不同长度的密钥,在规则设计上,本发明提出了一个新的规则Rule30+,规则较Rule30改变了对最后一个细胞的依赖关系,这使得基于规则Rule30+设计的流密码只需要较少的逻辑操作数,因而具备较少的硬件开销,同时改进后的规则能够避免Rule30中存在的线性相关性问题,本发明设计的流密码加密方法所产生的密钥流还具有良好的随机性质。
本发明在初始化阶段,流密码所产生的密钥流不会输出,而是作为一个影响CA90变化的变量存在;产生指定长度的密钥流后,完成初始化阶段,进入密钥流输出阶段;在密钥流输出阶段,CA90的变化仅与CA90本身有关,不会受到密钥流的影响;此时,开始输出密钥流,直至产生足够长的密钥流为止。本发明能够很好的平衡加密算法在安全性和硬件开销两个重要的性能参数,而且非常适应并行环境。
附图说明
图1是本发明实施例提供的流密码大体的框架图。
图2是本发明实施例提供的初始化阶段的示意图。
图3是本发明实施例提供的适合硬件环境的流密码加密方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明涉及的细胞自动机是一种能够随着时间变化,进行状态转移的结构。CA30+和CA90均是细胞自动机,其中CA30+服从规则Rule30+,CA90服从规则Rule90,规则可以认为是一种变化的代称。密钥和初始化向量是流密码执行前需要提供的参数,一般认为密钥是需要保密的,初始化向量是可以公开的,如果使用相同的密钥和初始化向量作为流密码的输入,那么产生的密钥流是相同的。数组是计算机领域中一种常见的数据结构,在软件实现细胞自动机的过程中,可以使用数组来存储细胞自动机的状态。
现有的流密码设计基本不是由国内自主设计完成的,在技术和知识产权问题上容易受制于人。基于Rule30细胞自动机是一种设计流密码的有效方法.这种细胞自动机属于非线性细胞自动机,硬件开销较小,同时它产生的密钥流具有良好的随机性.然而,由于Rule30中存在不可避免的线性相关性问题,这使得这种设计无法满足现代密码学对安全性的要求。另外还有一个关键问题需要解决,也就是针对硬件环境的流密码设计,它需要对参数设计得非常精细。这使得需要对流密码的密钥长度进行调整。如果一种流密码设计方法不能适应不同长度的密钥,那么只能对每个密钥重新设计整个流密码,这明显会增加流密码的设计成本。一般流密码的密钥长度与当下计算机的计算能力相关,过去密钥长度为80比特,如今多为128比特或者更长。这时,当密钥长度发生变化时,大多数流密码就需要重新设计。
为解决上述技术问题,下面结合具体方案对本发明作详细描述。
本发明实施例提供的适合硬件环境的流密码加密方法是一种针对硬件环境设计的流密码加密技术,下文使用的算法一词即指代该流密码。对称加密算法一般由加密和解密两个操作组成,就流密码而言,其加密和解密的操作相同,即由算法产生足够长的密钥流,随后在加密和解密阶段使用原文(密文)与密钥流进行异或操作即可。因而,一个流密码的关键在于产生密钥流的方式,下面将对具体步骤中涉及到的一些名词进行说明。流密码中输入包含两个变量,一个称之为密钥,另一个称之为初始化向量。在给定了以上两个变量后,流密码就会根据其内部机制产生指定长度的密钥流。本发明的执行分为两个阶段,首先是初始化阶段,第二是密钥流输出阶段。流密码大体的框架如图1所示,图2为初始化阶段的示意图。由图1可以看出,它包含两个结构CA30+和CA90,在产生密钥流的过程中,两个结构的状态会发生变化,同时最后密钥流的产生只与这两个结构的状态相关。另外,图中的b{-1},b{-2}特别指代CA30+的边界条件,在后文会对它做详细的介绍。
如图3所示,本发明实施例提供的适合硬件环境的流密码加密方法包括:
步骤1,根据密钥和初始化向量为算法的两个结构赋值。
步骤2,CA30+和CA90每经过一个时钟周期,它们的状态就变化一次。CA30+的变化与它本身和CA90的状态相关。CA90的变化与它本身和上一个时钟周期所产生的密钥流有关。
步骤3,根据CA30+和CA90的状态,产生密钥流。在初始化阶段,所产生的密钥流不会输出,而是作为步骤2中影响CA90变化的变量。
步骤4,重复步骤2和步骤3指定的次数,完成初始化阶段,进入密钥流输出阶段。在密钥流输出阶段,步骤2中CA90的变化仅与其本身有关。
步骤5根据步骤4对步骤2中CA90的变化规律进行调整,继续重复步骤2和步骤3,直至算法产生足够长的密钥流。
在本发明实施例中,CA30+和CA90是两个细胞自动机,细胞自动机在计算机的软件实现中可以使用数组来进行表达,数组中每个元素状态的变化都与其他元素相关。细胞自动机使用规则来定义这种相关性,其中CA90满足规则90,规则90的代表的变化规律可以用来表示,它代表一个元素的状态与周围两个元素的状态有关,代表异或操作。对于CA30+,它满足一种特殊的规则,也就是本发明提出的规则Rule30+,它的变化规律可以用来表示,它代表一个元素的状态与其本身,和前面两个元素的状态相关,∨代表或操作。Rule30+通过改变对最后一个细胞的依赖关系,能够减少硬件开销中的逻辑操作数量。
在本发明实施例中,对于步骤1,将密钥和初始化向量分别作为CA30+和CA90的输入,如果结构能够存储的数据长度大于变量的长度,那么将额外的为这些位置的状态赋值。该步骤要求CA30+的状态(由0和1组成)中至少包含一个状态1,对于CA90的状态则没有限制。
在本发明实施例中,对于步骤2,如果使用数组来理解细胞自动机,对于Rule30+,很明显可以看出,数组中的第一个元素和第二个元素没有办法利用该规则进行变化。本发明可以在逻辑上构造实际上并不存在的第0个元素E0和第-1个元素E1,从而使得第一个元素和第二个元素能够满足Rule30+的变化,细胞自动机称这种方式为边界条件。图1和图2中的b{-1}和b{-2}就等价于这里的E0和E1(计算机中习惯从0开始计数)。这里,本发明令E0为CA90中某一个元素的状态,令E1为7个元素的异或结果,其中6个状态来自CA30+,1个状态来自CA90。对于CA90,数组中的第一个元素和最后一个元素存在这个问题,在密钥流输出阶段本发明选用0-镜像边界解决这个问题,即设置第0个元素EL为0,第N+1个元素ER(N代表数组的长度)为第N个元素的值。另外,在初始化阶段,调整如下,本发明设第N+1个ER的值为上一个时刻所产生密钥流的值Z,同时将Z纳入对E1的异或操作当中。
在本发明实施例中,对于步骤3,密钥流的产生仅与CA30+和CA90在当前时刻的状态相关,具体而言,取CA30+最后面的元素,即第N个元素E1,N代表CA30+的长度。取CA90任意一个位置元素E2,该位置没有特别要求,仅需与变化中与CA90相关的位置存在一定距离即可。于是有输出
在本发明实施例中,对于步骤4,其中包含一个重复执行操作2和操作3的次数N,一般认为N=256。N值越大,初始化阶段就越长,相对的,安全性也越好。
在本发明实施例中,对于步骤5,步骤5说明的是在密钥流输出阶段算法所执行的操作。事实上初始化阶段的意义在于,利用没有输出的密钥流隐藏CA90的状态信息,从而能够防止攻击者在密钥流输出阶段能够得到CA90中状态的信息,因为一般认为,初始化向量是公开的。
在本发明实施例中,本发明以密钥长度为128比特,初始化向量长度为112比特为例说明算法详细的参数。
此时逻辑上可以认为CA90和CA30+为数组,于是CA90的长度为119,CA30+的长度为137。密钥和初始化向量的输入方式如下,将初始化向量从前往后的填充CA90,剩余位置补1。令CA30+的第一个元素为1,从第二个位置开始,将密钥从前往后填充CA30+,剩余位置补0。另外,在对CA30+边界条件的处理上,第0个元素E0和第-1个元素E1确定方式为,E0等于CA90最后一个元素,E1为7个元素的异或之和,元素位置的选取没有特别要求,只需具有一定间隔即可,本例中,本发明选取CA30+中位置为14,27,57,85,92,114共6个元素,CA90位置为61的元素。如果在初始化阶段,还会包含上一个时刻的输出Z,使用共8个元素进行异或操作用于确定E1的值。由此本发明给出了算法的具体设计,以及在指定密钥长度和初始化向量长度下,算法具体参数的设置方式。
对于不同长度的密钥和初始化向量下具体参数的设计,应当保证CA30+的长度大于密钥长度,CA90的长度大于初始化向量的长度。在对边界条件E1值的确定上,应当保证其关联的元素个数在log2N附近,其中N为CA30+的长度。对于初始化次数的选取,应当保证其次数最少应大于两倍于CA30+的长度。
本发明使用该流密码生成了一定长度的密钥流,并利用目前主流的随机性检验工具,进行了检测,如表1是检测的内容。报告中的Test列代表测试项,Status列代表测试结果,Pass代表通过,Fail代表不通过。报告说明了流密码生成的密钥流通过了全部的测试项。
表1检测的内容
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。