序列密码加密系统中控制密钥序列的方法与装置的制作方法

文档序号:7590348阅读:105来源:国知局
专利名称:序列密码加密系统中控制密钥序列的方法与装置的制作方法
技术领域
本发明涉及加密,特别是指在序列密码加密系统中对密钥序列进行控制的方法和装置。
背景技术
加密是指对数据进行变换,使之除了对目标接收者外,变得无法或者难以理解。对数字化的数据进行加密的一种方法是采用序列密码(或流密码,stream cipher)。通常,序列密码将数据与密钥序列(或密钥流,keystream;或加密比特流,encryption bit stream),采用异或(exclusive-or,XOR)运算而结合在一起,从而获得密文(即,被加密了的数据)。解密则是生成与发送者同样的密钥序列以及从被加密了的数据中移除密钥序列的过程。如果异或操作在发送者加密数据时被执行,则同样的异或操作也在接收者解密数据时被执行。
序列密码在数据的安全传输与存储中有着广泛的应用。比如,在计算机系统中采用的RC4序列密码加密技术;高通公司(QUALCOMM,Incorporated)提出的用于码分多址(CDMA)无线电话系统的序列密码加密技术(美国专利,专利号6510228);等等。
序列密码加密的性能是一个需要着重考虑的方面。虽然加密过程中与数据实施异或操作是一种简单的运算,但生成密钥序列的过程则需要一定的代价。在一个系统中,如果序列密码加密功能与其它应用功能共享一个共同的系统资源或计算实体(比如,在通常的计算机系统中基于软件程序实现RC4序列密码加密功能时,RC4的相关功能是与系统中其它应用共同由该计算机系统的CPU完成的),那么对系统资源的共享过程会使得(1)完成序列密码功能所需的代价会影响其它应用的性能;(2)其它应用也会影响序列密码加密功能完成加密的速度。在某些情况下,例如当系统的工作负载很小时,这种相互影响是细微的。但在某些情况下,例如当系统的工作负载很大时,这种相互影响会变得显著。举例来说,如果一个计算机系统的CPU正处于繁忙的状态中(比如,正在计算一个复杂的矩阵),那么此时的加密请求(比如,加密矩阵计算的中间结果)将会比其它时候(比如,当CPU不处于繁忙状态时加密同样数量的数据)需要更多的延迟才能完成,因为可供加密功能使用的CPU时间减少了。另外,即使序列密码的功能与其它应用是由系统中不同的实体完成的(比如,加密功能是由单独的加密协处理器完成的),当生成密钥序列的速度小于待加密数据生成的速度时,也会延迟数据的加密过程。
现有的序列密码加密的性能优化技术主要致力于如何降低总体运行代价;比如,通过硬件结构的改进、更好的软件编程方法和技术,可以使得同样的序列密码算法在更少的指令周期内完成其全部工作。但是,在序列密码加密过程的总体代价已确定后,系统中存在的其它应用对系统资源的争用会使得序列密码加密功能完成加密需要更长的时间(比如,当序列密码加密功能与其它应用功能共享同一系统资源时),或者由于待加密数据生成的带宽更大而不得不引入额外的等待(比如,当序列密码加密功能使用与其它应用功能不同的系统资源或使用单独的资源,但生成密钥序列的带宽低于待加密数据生成的带宽时)。因此,如果能够有效地消除或减小这些因素所带来的影响,序列密码加密将具有更好的性能表现。

发明内容
本发明的目的在于给出序列密码加密系统中,为提高加密的性能而对密钥序列进行预先生成并缓存的方法和装置。
为实现本发明的目的,本发明所采用的技术方案是使用一个密钥序列缓冲区来存储密钥序列;超前于待加密数据准备就绪来预先生成密钥序列并以之填充密钥序列缓冲区;利用系统空闲或系统不繁忙的时候来预先生成密钥序列并以之填充密钥序列缓冲区;响应加密请求而对数据实施加密时直接从密钥序列缓冲区获取所需的全部或部分密钥序列。
在为实现本发明的目的所采用的技术方案中,密钥序列缓冲区是以先进先出的方式进行存取操作的。
在为实现本发明的目的所采用的技术方案中,预先生成密钥序列并以之填充密钥序列缓冲区的过程可以通过对系统资源使用情况的监控来控制。
在为实现本发明的目的所采用的技术方案中,预先生成密钥序列并以之填充密钥序列缓冲区的过程可以通过调整密钥序列生成和密钥序列缓冲区填充所对应程序的优先级来控制。
在为实现本发明的目的所采用的技术方案中,预先生成密钥序列并以之填充密钥序列缓冲区的过程可以依据对密钥序列缓冲区空间的使用情况来控制。
通过本发明所提出的方法和装置,由于所需的全部或部分密钥序列已事先准备就绪,在加密请求发生时,序列密码加密功能只需异或操作的代价即可完成数据加密过程。并且,有效地将序列密码加密功能的代价分散在系统运行的整个时期内来完成;其中,生成密钥序列的代价是利用系统空闲或系统不繁忙的时候完成的。这样一来,由于系统资源竞争或由于密钥序列生成带宽不足而产生的数据延迟将显著降低,从而提高序列密码加密的性能。


说明书附图是在通常的计算机系统中,应用本发明而构造的带有密钥序列预先生成和缓存功能的序列密码加密框图。
具体实施例方式
本发明所考虑的,是通过预先生成和缓存序列密码加密所需的密钥序列而提高序列密码加密的性能。本发明所描述的对密钥序列进行预先生成和缓存的方法和装置是按照如下步骤进行的1.使用一个缓冲区以缓存预先生成的密钥序列,该缓冲区称为密钥序列缓冲区。这一缓冲区可以创建于系统通常的计算资源中,如系统内存(指CPU片外存储器)、CPU片内或片外Cache,等。也可创建于特殊的计算资源中,如专门的硬件加密模块所带有的存储器。密钥序列缓冲区的长度可以取密钥序列生成器一次生成的密钥序列长度的整数倍,或者取加密一帧数据所需的密钥序列长度的整数倍。密钥序列缓冲区的访问或存取模式是先进先出(First In First Out,FIFO)的。
2.当密钥序列缓冲区没有被填满或者有空间容纳新的密钥序列时,不管当前是否存在加密请求,序列密码的密钥序列生成器生成新的密钥序列,并将新生成的密钥序列填充到密钥序列缓冲区的剩余空间内,直到密钥序列缓冲区被填满为止。该填充密钥序列缓冲区的过程即为缓存密钥序列。这一过程的目的在于使所需的密钥序列超前于待加密数据生成而准备就绪。同时,为了使这一过程能够有效地分散序列密码加密的代价以减轻加密过程与其它应用运行过程的相互影响,采取如下所述的一种或多种控制方式1)序列密码的密钥序列生成功能与其它应用共享同样的系统资源时,通过监控共享资源的使用状态来进行控制。典型的情形是指序列密码功能是由软件完成的,而对应的软件程序与其它应用程序共享系统资源;比如,共享可用的CPU时间。此时,设置一个状态监控器对共享资源的当前使用状态实施监控,如监控当前空闲的CPU时间的百分比;并对状态监控器设置一个门限。当状态监控器所测得的资源状态满足所设置的门限时,比如所测得的当前空闲的CPU时间的百分比大于某一数值,则触发密钥序列生成器生成新的密钥序列,并以新生成的密钥序列填充密钥序列缓冲区;反之,则不启动密钥序列生成与密钥序列缓冲区填充的过程。
这种控制方式,能够利用系统空闲或者不繁忙的时期来完成预先准备密钥序列所需的代价。这种控制方式有时可以忽略依据状态监控器的控制作用即,当密钥序列缓冲区为空(或即将为空)且依然有加密请求存在时,即使状态监控器测得的资源状态不满足所设置的门限,也触发密钥序列生成与密钥序列缓冲区填充的过程。另外,当密钥序列缓冲区为空且依然有加密请求存在时,新生成的密钥序列可以不必先填入密钥序列缓冲区,而是可以直接提供给序列密码加密功能的异或操作逻辑(或其它将密钥序列与数据结合在一起的逻辑)。
2)序列密码的密钥序列生成功能与其它应用共享同样的系统资源时,通过动态调整相应过程的优先级进行控制。典型的情形是指序列密码功能是由软件完成的并与其它应用程序共享系统资源,而系统可以通过优先级调整来改变相应软件程序对系统资源的争用能力。此时,保持密钥序列生成与密钥序列缓冲区填充所对应的程序处于活动状态。但一般情况下,将密钥序列生成与密钥序列缓冲区填充所对应的程序的优先级设置为‘低’(‘低’指对系统资源的争用能力弱);当密钥序列缓冲区为空(或即将为空)且依然有加密请求存在时,则将密钥序列生成与密钥序列缓冲区填充所对应的程序的优先级调高。另外,当密钥序列缓冲区为空且依然有加密请求存在时,所生成的密钥序列可以不必先填入密钥序列缓冲区,而是直接提供给序列密码加密功能的异或操作逻辑(或其它将密钥序列与数据结合在一起的逻辑)。
使用这种控制方式,当系统中不存在加密请求时,密钥序列生成与密钥序列缓冲区填充相对应的程序处于低优先级状态,减弱了对其它应用运行的影响;同时,能够利用系统的空闲状态来完成预先准备密钥序列的过程。
3)序列密码的密钥序列生成功能使用单独的资源但密钥序列生成带宽小于待加密数据的生成带宽时,通过密钥序列缓冲区剩余空间的有无来进行控制。典型的情形是指序列密码的密钥序列生成功能是由独立于系统常规资源的特殊部件完成的(比如,由一个专门的硬件加密协处理器完成的);虽然该部件不与系统中其它应用争用系统资源,但其生成密钥序列的带宽小于待加密数据生成的带宽。此时,密钥序列生成部件的运行受密钥序列缓冲区是否有剩余空间的控制。只要密钥序列缓冲区没有被完全填满,密钥序列生成部件就保持运行状态而生成新的密钥序列,并以之填充密钥序列缓冲区。另外,若密钥序列缓冲区为空且依然存在加密请求时,所生成的密钥序列可以不必先填入密钥序列缓冲区,而是直接提供给序列密码加密功能的异或操作逻辑(或其它将密钥序列与数据结合在一起的逻辑)。
使用这种控制方式,能够消除或减少由于密钥序列生成带宽不足而引入的等待延迟。
4)其它。其它的能够使所需的密钥序列超前于待加密数据生成而准备就绪的控制方法,并且所采用的控制方法对系统中其它应用的运行不会产生明显的影响作用。
3.当序列密码加密功能对被加密的数据实施异或操作(或其它将密钥序列与数据结合在一起的操作)时,所需的全部或者部分密钥序列直接从密钥序列缓冲区获取。为了维持发送者和接收者对加密和解密过程的同步(即发送者和接收者使用同样的密钥序列来加密和解密同一数据包),发送者和接收者从各自的密钥序列缓冲区取出密钥序列和填充各自的密钥序列缓冲区的过程应保持一致性;比如,都以先进先出的模式存取密钥序列缓冲区;再比如,当新生成的密钥序列直接传送给异或逻辑(或其它将密钥序列与数据结合在一起的逻辑)时,都应先将密钥序列缓冲区中的密钥序列用完。
从上述描述可看出,本发明所提出的方法和装置能够将序列密码加密功能的代价分散到系统整个运行期间来完成。其中,密钥序列是超前于待加密数据生成而准备就绪的,并且是利用系统空闲或者系统不繁忙的时候完成的;或者,是让单独的密钥序列生成部件超前于待加密数据生成而保持运行来完成的。这样一来,序列密码加密数据的过程表现出更好的“运行时”性能;这里,“运行时”是指待加密数据生成到数据加密完成所经历的时期。其主要原因在于(1)系统的繁忙状态所造成的序列密码加密功能的“运行时”延迟减小;虽然系统繁忙时可供序列密码加密功能使用的资源减少,但通过密钥序列的预先生成和缓存,使得序列密码在加密数据时只需完成异或操作,因而序列密码加密功能在“运行时”对资源的需求亦减少。(2)序列密码加密功能的运行过程对其它应用的影响减小;一是由于序列密码加密功能准备密钥序列的工作是分散在系统空闲或不繁忙的时候完成的,而使得相应代价的完成不会显著影响其它应用的运行;二是由于序列密码加密功能在“运行时”只需与待加密数据完成异或操作,因而在“运行时”对系统资源的争用减小。(3)即便密钥序列是由单独的资源或部件生成的,通过预先生成和缓存密钥序列,也不会因为密钥序列生成带宽小于待加密数据的生成带宽而给数据加密过程带来额外的延迟。
因此,本发明通过预先生成和缓存密钥序列可以提高序列密码加密的性能。
下面对本发明所描述的方法和装置加以示例说明。
(示例)通常的计算机系统中,带有密钥序列预先生成和缓存功能的序列密码加密功能附图中,序列密码的密钥序列生成逻辑101依据输入200(即,所设定的序列密码初始向量,如初始的密钥)生成密钥序列。由密钥序列生成逻辑101输出的密钥序列被填充到密钥序列缓冲区102。当有对数据100的加密请求发生时,数据100和直接来自密钥序列缓冲区102的密钥序列一起送入异或逻辑103。异或逻辑103的输出201即为密文形式的数据;也就是,完成了数据加密过程。
附图中,控制逻辑104负责触发和停止密钥序列生成逻辑101生成新的密钥序列和填充密钥序列缓冲区102的过程。本例中,控制逻辑104实施控制的步骤为①监控CPU的使用情况,当CPU的空闲时间超过设定的阈值(如,Windows 2000操作系统中,“System Idle Process”的“CPU使用”超过95%),并且密钥序列缓冲区102有剩余空间时,则触发密钥序列生成逻辑101;否则,不触发密钥序列生成逻辑101。
②如果密钥序列生成逻辑101被触发,则进行一轮生成新的密钥序列并将新生成的密钥序列填充到密钥序列缓冲区102的过程;这里,一轮是指生成1个或n个(n为整数)新的密钥序列,并将新生成的密钥序列填充到密钥序列缓冲区102。
③如果密钥序列缓冲区102为空(或者即将为空)且依然存在加密请求时,则忽略CPU使用情况的监控结果而触发密钥序列生成逻辑101生成新的密钥序列,并将新生成的密钥序列填充到密钥序列缓冲区102。
④重复步骤①~③。
附图中,当密钥序列缓冲区102已空且仍存在未完成的加密请求时,为避免额外的缓冲区存取的代价,密钥序列生成逻辑101所生成的新的密钥序列可以旁路密钥序列缓冲区102,而直接经由路径105流入异或逻辑103。
另外,附图中密钥序列填充到密钥序列缓冲区102和从密钥序列缓冲区102取出密钥序列的方式,以及通过路径105旁路密钥序列缓冲区102的方式,应保持发送者与接收者的一致性。为此,密钥序列缓冲区102采用先进先出(FIFO)的存取模式;并且,只有在密钥序列缓冲区102为空时,才经由路径105而直接将新生成的密钥序列旁路到异或逻辑103。
还有,附图中如果发送者和接收者启用了新的序列密码初始向量(如,启用了新的初始密钥),则应清空或者作废密钥序列缓冲区102;然后按照新设定的参数,在控制逻辑104的作用下,由密钥序列生成逻辑101生成新的密钥序列,并将新生成的密钥序列填充到密钥序列缓冲区102。
采用附图所示的序列密码加密系统,可将序列密码加密的整体代价分散在系统运行的整个时期内来完成。其中,生成加密所需密钥序列的代价基本上是在系统处于空闲或不繁忙的状态时完成的;而与待加密数据实施异或操作的代价,则只占序列密码加密的整体代价的一部分。这样一来,序列密码加密功能不但能够在不影响其它应用的情况下准备好密钥序列,而且将待加密数据通过异或操作转换为密文时所需的代价减小,从而具有更好的“运行时”性能。
本发明并不局限于上述具体示例所描述的构造或实现。基于本发明所描述的内容以及所给出的示例,可以推出多种变化的形式。比如,实现可以是软件的、硬件的以及软硬件相结合的形式;控制密钥序列预先生成和缓存可以选择多种合理的方式;密钥序列缓冲区可以定义在内存中,或者定义在CPU的高速缓冲区(即Cache)中,或者定义在其它部件中;密钥序列缓冲区的存取控制,以及清空等维护性操作,可以有多种合理的控制方式;等等。
本发明适用于所有的依据本发明的内容而构造的方法和装置,以及不需其它创造性质的能力而可获得的变化形式。因此,本发明适用于同这里所描述的原理与特征相一致的最广的范围。
权利要求
1.一种在序列密码加密系统中,预先生成并缓存密钥序列的方法,其特征在于使用一个密钥序列缓冲区来存储密钥序列;超前于待加密数据准备就绪来预先生成密钥序列并以之填充密钥序列缓冲区;利用系统空闲或系统不繁忙的时候来预先生成密钥序列并以之填充密钥序列缓冲区;响应加密请求而对数据实施加密时直接从密钥序列缓冲区获取所需的全部或部分密钥序列。
2.根据权利要求1所述的密钥序列缓冲区,是按照先进先出的方式进行存取操作的。
3.根据权利要求1所述的预先生成密钥序列并以之填充密钥序列缓冲区,采用能够使所需的密钥序列超前于待加密数据生成而准备就绪,并且对系统中其它应用的运行不会产生明显影响的控制方法。
4.根据权利要求1所述的预先生成密钥序列并以之填充密钥序列缓冲区,通过对系统资源使用情况的监控进行控制。
5.根据权利要求1所述的预先生成密钥序列并以之填充密钥序列缓冲区,通过调整密钥序列生成和密钥序列缓冲区填充所对应程序的优先级进行控制。
6.根据权利要求1所述的预先生成密钥序列并以之填充密钥序列缓冲区,依据对密钥序列缓冲区空间的使用情况进行控制。
7.根据权利要求1至权利要求6中任一权利要求所述的方法,采用这些方法所构造的装置。
全文摘要
序列密码加密系统中控制密钥序列的方法与装置。本发明涉及加密或密码中的序列密码技术,其主要内容是对序列密码加密数据过程中所需的密钥序列进行预先生成和缓存。所采用的技术要点是使用一个密钥序列缓冲区来存储密钥序列;超前于待加密数据准备就绪以及利用系统空闲或系统不繁忙的时候来预先生成密钥序列,并以之填充密钥序列缓冲区;响应加密请求而对数据实施加密时直接从密钥序列缓冲区获取所需的全部或部分密钥序列。这样,序列密码实施数据加密的代价被有效分散在系统运行的整个时期内;在加密请求发生时,序列密码只需异或操作的代价即可完成加密过程。
文档编号H04L9/18GK1708004SQ20041002328
公开日2005年12月14日 申请日期2004年6月8日 优先权日2004年6月8日
发明者侯方勇 申请人:侯方勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1