存储器加密 【技术领域】
本发明涉及加密/解密数据字以便于安全存储在存储器中,其中数据字是通过相应的地址来识别的。
背景技术
密码术正变得日益重要。主要方面是内容加密/解密和访问管理功能。重要的是保护整个供应链,包括通过网络进行的传输或诸如CD的存储介质上的供应,以及再现设备上内容的实际使用。这也意味着在再现设备的固态随机存取存储器或智能卡中存储数据亦需要受到保护。原则上,基于块密码器的加密可被用于这种保护。在密码术上强有力的块密码器一次加密字的多于一个的分量(分量典型地是字节)。这样地字通常被称为块,块密码器因此而得名。例如,DES将8个字节加密在一起,AES将16个字节加密在一起。即使很小的块密码器亦加密一个块中的4个字节。将几个字节加密在一起是必要的,这是因为它使可能的密码本字的数量大得多并且它平坦化了统计分布。DES是最众所周知的块密码器之一并且使用十六个密码术舍入(round)。通过在ECB模式(电子密码本模式)下使用DES,八个字节的每个明码文本字被单独加密,从而给出经加密的八字节字。
在例如用于再现数据的应用水平,许多简单的设备一次对一个字节进行运算。在常规ECB模式下使用块密码器对于这样的系统具有缺点。对字的字节之一的改变导致了对经加密的字的所有字节的改变。因此不直接有可能改变经加密的字的仅一个字节。有必要首先检索明码文本形式的字的所有其它字节。对于8字节块密码器,这意味着改变一个字节包含了从存储器读取对应的经加密的八字节字,解密该字,改变八个字节之一并重新加密更新的字。对于DES,这包含了三十二倍消费的密码术舍入。作为结果,对经加密的存储器的访问明显慢于对未加密的存储器的访问。这对于消费者电子设备尤其是问题,在其中价格压力使得难以借助附加的硬件来克服或减小附加的延迟。而且,亦需要将功耗保持为低。因此,对于需要快速存储器访问的应用,可能需要减小许多舍入,从而导致了较弱的保护。
在所谓的计数器模式(CTR)下使用块密码器来进行存储器加密是已知的。这被说明于图1中。每个字D通过相应的地址A来识别。在ECB模式下使用块密码器将地址A加密成经加密的地址A’=B(A)。数据字D被与经加密的地址A’组合以给出经加密的字D’。该组合是使用XOR函数:D’=XOR(D,B(A))来进行的。取代ECB模式下的块密码器,其它合适的单向函数(散列)亦可被使用。由于地址识别字的所有分量(如字节),经散列的地址对于所有分量是有效的。一个分量的改变可通过以下来实现:重新计算经加密的地址A’=B(A),检索原始数据字(D=XOR(D’,B(A))),改变给出新明码文本字D1的字的分量,以及重新组合D1与经加密的地址(D1’=XOR(D1,B(A)))。以这种方案,仅进行了一个加密步骤(对于DES,需要16个舍入)。然而,已知的是,当被用于加密随机存取存储器时,CTR模式在密码术上是弱的。而正常情况下对于用于强力攻击的四字节字,总共2564对的字及其经加密的计数器部分需要被收集,在此各个字节可被攻击。因此,可通过收集仅4*256对就可攻破系统。
本发明的目的是提供一种存储器加密体系结构,其使能快速访问同时维持足够的安全。进一步的目的是这样的体系结构可被有效地实施于硬件和软件中以允许在消费者电子应用中的广泛使用。
【发明内容】
为达到本发明的目的,所述系统包括如在权利要求1中描述的加密器和解密器。散列函数被用于加扰(scramble)地址,并且经加扰的地址和数据字的组合被进一步使用块密码器来加密。该最后步骤克服了CTR模式存储器加密的弱点。通过使用二步骤加密(地址散列和组合的加密),最后的排列(permutation)的加密强度可被减小,因此CTR模式的速度优点的大部分可被维持。
依照从属权利要求2的措施,所述体系结构使能用于读取的两个密码术步骤的并行安排。这增加了存储器访问的速度。进一步的优点是读取速度可被增加,这是因为在许多系统中,可能需要暂停处理直到数据被读取,而在后台发生的写入期间,处理可被继续。
依照从属权利要求3的措施,相同的块密码器舍入被用于地址散列和用经散列的地址进行的数据的加扰。这具有的优点是仅一个密码术功能需要被实施。
依照从属权利要求4的措施,预定块密码器的缺省舍入数(例如DES使用16个舍入)被划分于对地址的散列以及经散列的地址和数据字的组合的加密上。同样,舍入的总数可被保持与在存储器加密的CTR模式下所使用的相同,同时与CTR相比,增加了密码术的强度。
依照从属权利要求5的措施,对地址的散列以及对经散列的地址和数据字的组合的加密两者的运算使用至少三个舍入,从而确保了排列的合理水平。
在如被描述于从属权利要求6的优选实施例中,所述两个运算使用相同的舍入数。这特别使并行运算为最优的快速。
依照从属权利要求7的措施,所述体系结构使能快速更新字的一个或多个分量,其中该整个字不可用于明码文本形式。
本发明的目的亦由分别在独立权利要求8和9中要求的加密器和解密器以及如在独立权利要求10到13中要求的加密的方法和计算机程序产品来实现。
【附图说明】
从附图中所示的实施例来看,本发明的这些和其它方面将是显然的,并且将参照所述实施例被描述。
图1示出现有技术CTR存储器加密体系结构;并且
图2说明依照本发明的存储器加密体系结构。
【具体实施方式】
图2示出依照本发明的密码术系统。该系统包括具有加密器20和解密器40的密码术单元10。单元10典型地被连接于直接存取存储器60以便于以安全的方式来存储数据。将理解,程序(即任何形式的计算机指令,如可执行代码)亦意味着数据。在本说明书中,假定存储器是读和写类型的。然而,系统亦可被用于只读。优选地,密码术单元10被实施于安全模块中以减小篡改(tamper)的机会。
加密器20通过输入26从处理单元接收由多个分量组成的数据字D。典型地,一个分量是一个字节,但其它大小,如四位字节或16位的分量亦可被使用。加密器20亦通过输入22接收地址A,其识别存储器60中的字的存储位置。优选地,提供字D和地址A的处理单元亦被引入到相同的安全模块中。加密器20包括散列函数B1,用于将地址转换成经散列的地址B1(A)。优选地,散列函数B1是以块密码器的舍入的形式而实施的键控散列函数。DES或TEA是众所周知的,并且是将在依照本发明的系统中使用的适当密码器。加密器20亦包括组合器24,用于组合经散列的地址B1(A)与所接收的字D。优选地,组合器24被实施为逐位XOR(异或)函数。这给出了XOR(D,B1(A))的中间结果。组合器24的输出通过加密器20的块密码器B2来馈送以给出经加密的字D’。写入器30在地址A的控制下将经加密的字D’写给存储器。该写入可处于地址A的直接控制下。然而,特别是如果存储器60位于安全模块之外,则优选的是加密器包括附加的加扰函数28,用于将地址A加扰成经加扰的地址A’,其被用于访问存储器60。然后经加扰的地址A’而不是地址A被提供给写入器30。加扰函数不应与散列函数B1相同,从而确保没有信息从安全模块泄漏。将理解,在正常情况下,地址将识别字的单独分量。通常可从分量地址以简单的方式得到字地址(例如,如果忽略字节水平地址的两个最低有效位,其中一个字中有四个字节)。
解密器40执行加密器20的逆运算。通过输入42,解密器40从处理单元接收地址A。解密器任选地包括加扰函数48,用于将地址A加扰成经加扰的地址A’,其被用于访问存储器60。加扰函数48与加密器20的加扰函数28相同。读取器50在地址A(或任选地,经加扰的地址A’)的控制下从存储器60读取经加密的字D’。经加密的字D’通过作为B2的颠倒的解密器B2-1来馈送。对于许多块密码器,如Feistel块密码器,逆密码器的舍入与加密密码器的舍入相同,其中舍入键以逆序被提供。地址A通过与加密器20用来将该地址转换成经散列的地址B1(A)相同的散列函数B1来馈送。分解器44被用于使用经散列的地址B1(A)从部分解密的字B2-1(D’)提取明码文本字D。在优选实施例中,XOR函数24在亦使用用于分解器44的XOR函数中被映射。则该分解是:D=XOR(B2-1(D’),B1(A))。D通过输出46被提供给处理单元。
处理单元典型地亦将用于密码术函数B1和B2的键提供给加密器/解密器。
将理解,在加密和解密以时间顺序进行的系统中,加密器和解密器的对应运算仅需要被实施一次。具体而言,优选的是,B1和B2使用相同块密码器的密码术舍入。如果B2是其本身的颠倒(舍入键以逆序被提供),则仅一个舍入函数需要被实施以支持加密和解密两者。
在优选实施例中,解密器40并行地执行逆运算B2-1和地址散列B1。如果B2-1和B1基于相同的舍入函数,则这的确意味着这样的函数需要被实施两次,但它减小了解密所需的时间。
优选地,散列函数B1使用具有n个舍入的缺省数量的预定块密码器的k个舍入(k<n),而加密器(B1)的块密码器使用所述预定块密码器的n-k个舍入。以这种方式,n个舍入被划分于散列地址的B1运算和加密中间结果XOR(D,B1(A))的B2(或者用于读取,B2-1运算)上。在维持足够强度的同时,可使用所述并行安排来快速进行读取。在并行安排中,读取需要执行max(k,n-k)个舍入的时间,而在常规系统中,这取的是n个舍入。特别是如果n=k,则并行运算使计算时间的量减半,并因此亦可显著减小功耗(或使能通过使用较多的舍入来提高安全性,同时维持类似水平的功耗)。
对于应合理地强有力的由B1实现的对地址的散列和由B2实现的加密,优选的是对于典型地使用总共16个舍入的常规块密码器,如DES,k>=3且n-k>=3。将理解,尽管对于现有块密码器,有使用至少3个舍入的好的密码术上的理由,但一般而言,对于讨论中的特定块密码器,一样多的舍入应被使用以确保加扰的合理水平。
在优选实施例中,地址散列B1和加密/解密B2使用相同数量的舍入(n=k)。除了平衡两个部分上的密码术强度以外,这亦如以上所述最优化了读取速度。
使用依照本发明的体系结构使能迅速更新较大合成字(块)的各个分量,如四位字节、字节或16位的部分。作为实例,假定字D由四个分量d0到d3组成并且分量d0需要被更新。首先,字D的地址A被加载(通常由处理单元提供)。接下来,读取器50被用于在与该字关联的地址A的控制下从存储器读取对应的经加密的字D’。如果任选的地址加扰被使用,则地址加扰器48被用于产生用来访问存储器60的经加扰的地址A’。接下来,散列函数B1被用于将字的地址A转换成经散列的地址B1(A)。块密码器B2-1将经加密的字D’解密成中间形式。如较早时所述,对于这些读取活动,B1和B2-1优选地被并行执行。现在,成分(B1(A)、B2-1(D’)和d0)全部可用于形成更新的中间结果。该更新由分量更新器进行,其在经散列的地址(B1(A))的控制下组合新的分量值(d0’)与解密的经加密的字(B2-1(D’)),从而形成更新的经组合的字/经散列的地址。该分量更新器未在图中示出。在优选实施例中,组合24是通过XOR运算进行的。对于这样的系统,分量d0的更新可通过以下来进行:从经散列的地址B1(A)中提取最低有效分量并使用分量宽XOR函数将其与新值d0’组合。所得到的经组合的分量值然后被加载于B2-1(D’)的最低有效分量位置。在完成这样的分量更新之后,块密码器B2被用于将更新的经组合的字/经散列的地址加密成更新的经加密的字。然后使用写入器30将该字写给存储器60。如果任选的地址加扰被使用,则最初被用于读取所述字的相同的经加扰的地址现在可再次被用于写该更新的字。
将理解,优选地使用专用的加密/解密设备来实施存储器加密。所述的密码术运算可被实施于专用的硬件中或由密码术处理器来进行。该处理器可基于常规的处理器核心,但亦可基于具有为密码术运算而最优化的专用密码术处理核心。所述处理器通常在适当的程序(固件)的控制下运行以执行依照本发明的算法的步骤。优选的是,这样的计算机程序产品以安全的方式被实施于依照本发明的存储器加密系统中。如果需要,其亦可从后台存储被加载,如硬盘或ROM,在其中程序优选地被用密码术保护(例如使用DES)以不受恶意用户的攻击。在已在存储介质如CD-ROM上分配或通过网络如公共互联网而分配之后,所述计算机程序产品可被存储于后台存储上。敏感信息如加密键优选地以安全方式被分配和存储。用于此的技术通常是已知的并且不做进一步的描述。所述密码术系统可部分或整体地被实施于智能卡上。