专利名称:用于最高安全性应用的加密方法
技术领域:
本发明涉及一种用于最高安全性应用的加密方法,更具体地,
涉及一种改进的一次性密码本(One-Time-Pad)的加密方法。
背景技术:
一次性密码本的发明被认为是美国电话电才艮公司(AT&T)的 Gilbert Vernam详口上篇t Joseph Mauborgne的耳关合工作。在一次'l"生密石马 本中,将需要加密的明文和同明文长度一样的随机密钥(key )或"密 码本(pad)"相结合。报文中的每个字符与来自(随机的、机密的、 以及仅使用一次的)密码本中的一个字符相结合。因此,该密码本 必须至少具有报文的长度。
理论上,如果不知道密码本的内容,使用强力进攻是不可能石皮 译报文的。由于这个缘故,密码本的保护(例如,机密的)、随机性
(例如,任何人不可预知的)、以及仅使用一次是非常重要的,以免 密码轻易地泄露。当明文和相应的密文都已知的时候,密码本是很 容易被确定的。在现代密码学中,存在一些反对使用一次性密码本
(OTP)的异议。第一种异议涉及对于安全地分布所需的巨大数量 的随机数据的困难以及该随机数据存储的可靠性的困难,而第二种 异议涉及在不安全的传输信道(例如,7>共因特网)上进行传输的 期间更改才艮文的可能性。第一种异议可以通过^吏用适于生成高质量随枳4t的合适的随枳J 数发生器来克服。对于解决第二个问题,使用现代信息鉴别算法中 的一种算法似乎是合理的解决方案。这样的结合在原则上保证了牢 不可破的安全性。然而,在某些领域的应用中,特别地,在许多通 信报文(像电子银行)在所有报文中非常频繁地使用相同标准的且 已知的小文本片段的应用中,进一步加强由加密方法赋予的保护是 值得关注的。
发明目的
本发明的目的是提供一种改进的一次性密码本的加密方法。
发明内容
这个目的通过如权利要求1中所主张的加密方法来实现。本方 法的进一步变形在从属权利要求中给出。
所提出的用于加密/矿位长的报文M的方法,包括以下步骤a) 提供/w-位长的第一随机位序列,/^/m; b )将所述报文M细分为 位的单位报文串,其中/^/m; c)对于每一单位报文串,对所述单 位才艮文串与所述第 一 随才几位序列的/5-位4丸行异或运算 (XOR-operation ),用于生成加密的单位串;以及d)将所述加密的 单位串汇编(assembling)成密文。根据本发明,密文的汇编是这样 的,相对于相应的单位报文串在所述报文中的位置而随机置换所述 加密的单位串在所述密文中的位置,该位置的置换基于第 一随才几位 序列。换句话i兌,将所述加密的单位串汇编成密文的步-骤包括以下 步骤基于第 一随机位序列来相对于相应的单位报文串在所述报文 中的位置而随机置换所述加密的单位串在所述密文中的位置。
在加密的才艮文中,单位串(例如,原始明文的字节)以随才几的 方式改变其位置。这意p未着即使在需要反复加密和传输相同简短标准报文的应用中,可能的攻击者将面对以随机位序列的形式出现的 位串。
在本方法的优选实施例中,报文M包括总计/尸-位的明文和//r 位长的散列值,所述散列值由所述明文的位来确定,其中,/p+/w/m。 可以由任意合适的散列算法(诸如,例如MD5算法)生成的散列 值允许在接收者一边鉴别报文,并因此允许确定报文在传输期间是 否已经4皮更改。
应当注意,在加密之前以及在随机置换字节位置之前,报文鉴 别的信息被加到明文。因此在最后得到的加密的报文中,甚至报文 鉴别代码(16字节=128位)的位置是未知的,所以对该信息进行 攻击是不可能的。
在第 一加密步骤以及随后将加密的单位串汇编成密文之后,最 后得到的密文最好是用不同的随才几位序列再次加密的。因此,本方 法最好还包括以下步骤提供长度相应于密文长度的第二随机位序 列;以及对所述密文与所述第二随才几位序列扭^亍异或运算,用于生 成所述加密的报文。
应当注意,组成一次性密石马本的随扭j立序列可以由适于生成高 质量随机数的任意合适的随机数发生器生成。在本方法的优选实施 例中,提供第一和/或第二随机位序列的步骤包括以下步骤
a )提供具有ws^个可寻址位BTj的随机位表(BFT ),其中, 0y^m胖r-1,所述随机位表包含随机分布的相当数量的"0" 4立和"1" 4立;以及
b) 对于所述第一和/或第二随机位序列的每一位i)在0和 wwr- 1之间的范围内生成地址FA, ii)从所述随机位表中选择具有地址FA的位BTFA,以及iii)将所述第一和/或第二随才几位 序列的所述位i殳置为等于来自所述随机位表中的所述位BTFA。
用于生成随机位序列的这个方法通过从包含随机分布的相当数 量的"0"位和"1"位的随机位表中随机地选择一位,再现了石更币 抛掷原理的结果。然后,从这个"硬币抛掷模拟"的连续结果中一 ^M立i也汇编需要生成的随扭W立序列。
将要从随机位表BFT中选择的位的地址FA可以通过任意合适 的方法随才几地生成,此方法确保得到在给定范围内的地址的高质量 的随机性。为了得到分布得很好的随机数,产生的最终地址FA也 必须是在位-查询-表(Bit-Fishing-Table) BFT的整个地址空间上随 一几地分布的。实现这个目标的适当的措施可以包括根据专用复合的 最终地址汇编参数,将来自大量基础随机值的选中的位中的FA地
后面的一皮之前生成的预定lt目的位所影响。
因此,这种方法生成了非常高质量的随机数,同时还在任意的 标准计算机(诸如,例如简单的个人计算机)上容易地实施。
具体实施例方式
应当注意,根据本发明的方法可以在任意的标准个人计算机上 或甚至在诸如智能卡或具有例如32-位处理器的USB令牌的小型物 理载体上容易地实施。从以下的一个特定的实施方式的描述中,这 将变得更显而易见。
不仅为了允许文件的安全传输,而且为了力良务于全双工实况通 信(像电子银行),所提出的方法将所要加密的明文报文断开为具有 1000个字节长度的明文块。然后,将每个明文块转换成1024字节 长的密文块。这个密文块包含关于(文件或会话的)块数目、存储在数据报中的文本的长度的信息以及报文鉴别的信息。在可行的实
施例中,才艮文鉴别的信息可以由诸如MD5型算法来生成。
术语"随^L置换的位置"暗示了这样的事实,在加密期间,原 始文本的每个字节老卩以随才几的方式改变其在密文中的^f立置,例i口, 第一明文块的字节5可以在第一密文块中处于4立置844,而第二明 文块的字节5可以在第二密文块中处于位置45,等等。
以该方式加密的动机是基于这样的事实许多通信报文(像电 子4艮行)在所有净艮文中非常频繁地^吏用相同标准的且已知的小文本 片段。最后得到的密文给任何可能的攻击者留下了 8192完全随才几位 的位串,其中,在该最后得到的密文中,每一字节都随才几地改变了
其位置并且每一位都与不同的随4几位进行了两次异或运算。
甚至才艮文鉴别代码(16字节=128位)的4立置是未知的,所以 对该信息进行攻击是不可能的。
加密包4舌以下步驶A:
a) 生成具有8192随机位的第一序列,在存储区域中,基数 (base)是以字节来编组的
b) 预备具有1024个标记的空列表以及具有1024个字节的密 文存4诸空间以存4诸密文
c) 预备具有1024字节的明文存储空间,该明文存4诸空间可以 细分为8字节(64位)的头部、1000字节的文本部以及16字 节的散列部
d) 在明文存储空间的头部中存储明文块的块数目(54位)以 及数据报的长度(IO位)e) 在明文存4诸空间的文本部中存<诸明文直到1000字节(如果 明文小于1000字节,则剩余字节为0)f) 计算报文摘要(message digest)作为鉴别并且将最后得到 的16字节存储到明文存储空间的散列部,所以现在我们有1024 字节的原始文本要加密g )通过将0存储到密码-位置-计数器和原始-文本-计数器来初 始化密码-位置-计数器和原始-文本-计数器h) 从基数中提取来自由密码-位置-计数器指示的字节的最低5 位(0到31 )并将这5位加到密码-位置-计数器,注意如果结果 是1024或以上,则在对该计数器进行所有加法之后必须减去 1024i) 检查相应于密码-位置-计数器的标记是否为空,如果不是, 则将密码-位置-计数器增加1,直到我们找到空位置(如果计数 器达到了 1024,则为了在4立置0处重新启动,必须减去1024)j )对来自原始-文本-计数器所参考的(referenced )原始文本的 字节与密码_位置_计数器所参考的基数的字节执行异或运算,并且将异或运算的结果存储在密码块中的相同字节位置处k ) 将标记列表中相同的位置标记为已占有1) 将原始-文本-计数器和密码-位置-计数器增加1,再次注意 如果结果是1024或以上,则在对该计凄t器进4于所有加法之后必 须减去1024m) 将步骤h)到1)重复1023次n) 生成具有8192随枳W立的第二序列o)对密码块与该8192位-串执行异或运算,得到密文用于传 送在4妄收者 一 边的解密通过#丸4于以下步骤来颠倒加密a) 对密文与具有8192随机位的第二序列4丸行异或运算b) 使用具有8192随机位的第一序列、基数,以找回原始文本 的位置,并且对密码与来自基数的对应字节执行异或运算以得 到原始文本c) 为了发觉可能的错误,在完成原始文本的1024字节之后, 检查数据报的长度和块数目d) 保存最后的16字节,报文鉴别,并且将这些字节替换为Oe) 再计算报文摘要并且将结果与保存的16字节相比较,允许 我们发觉通过任意手革殳所做的任何更改,例如,通过传输4昔误 或通过攻击者尽管以上描述的方法似乎是个漫长的过程,^f旦我们不应该忘记, 是计算才几负责加密和解密净艮文。运4亍在3 GHz的具有64位英特尔 内存扩展技术的英特尔@奔腾@1¥能够处理大约6000块/秒,所包括 的如上所述的随才几数的生成,给出了 6兆字节/秒的吞吐量。当然,本方法不是用于10千兆比特/秒《连*接的解决方案,^怛与 对称加密的结合,如高级加密标准(AES)与所4是出的方法的结合 用于密钥交换,将保证与使用所谓的量子密码具有相同的高保密性,作为优势,具有低成本和易于长距离(如欧洲和澳洲)链接的可能 性。应当注意,可以轻松地利用生成随机数的机密的随机位表成对地对包含具有被保护存储器的纟鼓处理器(MPU)的小型物理载体进 行编程。由于存储在被保护存储器中,在物理传输到远距离同伴的 期间进4亍复制是不可能的,因此,在通过CD或》兹带交换用于一次 性密码本的随机数的情况下,避免了信息泄露的可能来源。如果上 述的随机数发生器集成在这种微处理器(MPU)内,则还可以执行 对称加密应用中将要^f吏用的新密钥的生成。如果我们考虑(例如)用于鉴别和注册的小报文,则本发明所 提出的方法的安全性变得更显而易见。因为现在这些报文可以总是 被隐藏在8192随机位中,对于攻击者而言对传输的报文进行密码分 析就变得不可能了。如果使用上述的随机数发生器,对于生成的数的随机性,命名 为位-查询-表(BFT)的随机位表是决定要素。这意味着如果在密码 机应用中使用该随机数发生器,只有BFT(而非启动源(seed))是 需要机密保存的要素。因此,可以公开指出(在电子邮件的主题中 或在全双工信道的同步中)要4吏用启动源来解密。为了避免相同随 才几凄t的二次使用,在全双工通信中,应答器可以〗吏用第一启动源加 L为了扩展点对点通信之外的使用,存在两种可能性。在适当的 地方我们可以创建可信的并且安全的邮局来与每个参与者分享不同 的随才几位表BTF。现在,组内的每个成员都有发送和4妄收来自该组 内任意其他成员的机密报文的可能性,因为邮局在内部解密接收到 的报文(具有鉴别)并且在利用适当的BFT进行新的加密后将其发送给收报人。这似乎是用于地方当局、较大公司等等的最好的解决 方案。用于较小的保密组的不同的解决方案是共享公共的随机位表BFT,但授权每个加密单位仅仅使用受限制的具有264个可能启动源 的凄t空间。才艮据本方法,那么加密才艮文的第一加密块应该包括希望 将报文发送给的一个或多个收报人。如果自己的成员号没有包括在 第一块的收净艮人列表中,那么其他成员的单元解密程序可以拒绝解 密该才艮文。其他的应用可以涉及组织内部才几密文件的分布,通过包括计算 机与印刷机之间的解密单元,强制收报人使用他自己的带有口令保 护的智能卡来打印公司的IT-网络内部的明文中从来没有出现过的 公文。以相同的方式,可以組织可信的/^司范围的计算才几网络,其中, 所有敏感的计算机都通过根据本发明的加密系统防护起来,尽管如 此还是允许在英特网上的所有内部通信。这可以应用到律师事务所、 专利代理所、银行业等等。
权利要求
1.一种用于加密lM-位长的报文M的方法,包括以下步骤提供lR-位长的第一随机位序列,lR≥lM;将所述报文M细分为lS-位的单位报文串,其中lS≤lM;对于每个单位报文串,对所述单位报文串与所述第一随机位序列的lS-位执行异或运算,用于生成加密的单位串;将所述加密的单位串汇编成密文;其特征在于,相对于相应的所述单位报文串在所述报文中的位置而置换所述加密的单位串在所述密文中的位置,其中,所述位置的置换基于所述第一随机位序列。
2. 根据权利要求1所述的方法,其中,将所述加密的单位串汇编 成密文的步艰《包括以下步-骤基于所述第一随4几位序列来相对 于相应的所述单位报文串在所述报文中的位置而随机置换所 述加密的单位串在所述密文中的位置。
3. 根据权利要求1或2中任一项所述的方法,其中,所述报文M 包括总计/f-位的明文和/矿位长的散列值,所述散列值由所述 明文的所述位来确定,其中,/p+//^/m。
4. 根据权利要求1到3中任一项所述的方法,还包括以下步骤提供长度对应于所述密文的长度的第二随机位序列;以及对所述密文与所述第二随机位序列执行异或运算,用于生 成加密的所述才艮文。根据权利要求1到4中任一项所述的方法,其中,才是供第一和 /或第二随枳"立序列的步-骤包4舌以下步艰艮a ) 提供具有w^r个可寻址位BTj的随机位表(BFT ), 其中,O^^w^r-1,所述随机位表包含随机分布的相当数量 的"0" ^立和"1" <立,以及b) 对于所述第一和/或第二随机位序列的每一位i. 在0和w胖r - 1之间的范围内生成地址FA,ii. 从所述随才几位表中选4奪具有所述地址FA的位 BTfa,以及iii. 将所述第 一和/或第二随4几位序列的所述位i殳置 为等于来自所述随才几位表的所述位BTFA。
全文摘要
一种用于加密l<sub>M</sub>-位长的报文M的方法,包括以下步骤a)提供l<sub>R</sub>-位长的第一随机位序列,l<sub>R</sub>≥l<sub>M</sub>;b)将所述报文M细分为l<sub>S</sub>-位的单位报文串,其中l<sub>S</sub>≤l<sub>M</sub>;c)对于每一单位报文串,对所述单位报文串与所述第一随机位序列的l<sub>S</sub>-位执行异或运算,用于生成加密的单位串;以及d)将所述加密的单位串汇编成密文。根据本发明,密文的汇编是这样的相对于相应的单位报文串在所述报文中的位置而随机置换所述加密的单位串在所述密文中的位置,该位置的置换基于第一随机位序列。换句话说,将所述加密的单位串汇编成密文的步骤包括以下步骤相对于相应的单位报文串在所述报文中的位置而随机置换所述加密的单位串在所述密文中的位置。
文档编号G06F7/58GK101411114SQ200780011471
公开日2009年4月15日 申请日期2007年3月29日 优先权日2006年3月31日
发明者阿兰·舒马赫 申请人:阿兰·舒马赫