加密数据的方法

文档序号:7792589阅读:212来源:国知局
加密数据的方法
【专利摘要】加密数据的方法包括以下步骤:创建一次性密码本;以及使用一次性密码本加密数据以产生输出数据,其中一次性密码本是使用所述数据来生成的。
【专利说明】加密数据的方法
[0001] 本发明涉及加密和解密数据的方法。具体地而非排它地,本发明涉及具有或者几 乎具有完美保密性的经改善的方法。
[0002] 即使当对手具有无限计算能力时,完美安全的密码体系也是安全的。其使用加密 算法,该加密算法不取决于其对于与计算机硬度有关的未经证实的假设的有效性。该算法 不易受到例如量子计算的未来发展的攻击。
[0003] 在密码术中,存在有两种类型的加密:对称密钥密码术和非对称密钥(也称为公 钥)密码术。通过前一种类型,非常相关或等同的密码学密钥被用于纯文本加密和密文解 密。通过后一种类型,使用两个不同的但数学上相关的密钥:公钥和私钥。即使在私钥和公 钥相关的情况下,私钥的计算也旨在通过公钥"在计算上不可行"。
[0004] 传统的对称加密包含数据的复杂替换和置换。目前,不论它们的流行程度,尚不知 道是否存在有在不知晓加密过程中所使用的密钥的情况下可逆转这些转换的密码分析方 法。对称密码易受多种类型的攻击,并且在发展这种密码分析方法的方面显示出持续的进 止 /J/ O
[0005] 例如,通常的对称算法的一个例子为AES。直至2009年5月,对于完整AES唯一成 功的公开攻击是在一些具体实现方案上的侧信道攻击。在2009年12月,公开了使用差分 故障分析的、对于一些硬件实现方案的攻击。在2010年11月,公开的论文描述了在无需密 文或纯文本的情况下通过AES-128对于机密密钥的"近实时"恢复的实践方法。在2011年 公开了对于完整AES的第一密钥恢复攻击。
[0006] 对称加密的另一显著缺点是需要密钥管理以安全地使用该对称加密。理想地,每 对不同的通信方必需共享不同的密钥,并且每个密文也通常被交换。因此,所需的密钥数量 与网络成员的数量的平方相关地增加。
[0007] 非对称加密依赖于被认为是难以解决的数学问题,诸如整数分解或离散对数。然 而,没有证据表明使现有的系统容易受到攻击的数学上的突破不会发生。与具有相同安全 性的大部分对称密钥算法相比,已知的非对称加密方法在计算上也成本昂贵并且更慢。
[0008] 因此,这两种类型的密码术均存在缺陷,因此大部分实际加密系统为混合系统。共 享的机密密钥(或者会话密钥)由一方生成,并且这种非常短的会话密钥随后通过每个接 收者的公钥加密。每个接收者使用对应的私钥来解密会话密钥。一旦各方已获得了会话密 钥,他们可使用更快的对称加密算法对消息进行加密和解密。
[0009] 期望提供一种经改善的加密数据的方法,其中该方法具有或者几乎具有完美安全 性。
[0010] 传统的数据加密包含作为整体地加密数据。这减少了潜在可能的输入组。例如, 如果个体的银行对账单被加密,则输出的大小将与原始银行对账单的大小大致相同。另外, 使用单个算法加密的整块数据的安全性取决于该单个算法未被破解。一种可能的解决方法 是对文件的字节进行加密。然而,这需要许多口令或算法。
[0011] 在对称密钥加密算法中,无论多大的计算能力是可用的,仅"一次性密码本 (one-time pad)"被证明是安全的、事实上完全安全的。在一次性密码本(OTP)中,来自纯 文本的每个字节或字符通过添加有来自长度与纯文本的长度相同的机密随机密钥的字节 或字符的模块进行加密,从而产生了密文。
[0012] 已证明,如果密钥确实是随机的与纯文本一样大或更大,绝不会以整体或部分重 复使用,并且保持机密,则在不知道密钥的情况下,密文不可能解密或破解。该方法可以被 实现为使用数据文件作为输入(纯文本)、输出(密文)和密钥数据(所需的随机序列)的 软件程序。因为XOR操作通常是本机指令并因此非常快速,所以其通常被用于结合纯文本 和密钥元素。
[0013] 然而,实际的问题阻止了一次性密码本被广泛使用。必须存在密钥的安全生成和 交换,而密钥必须至少与消息一样长。并且,重要的是,难以使用计算机生成充分随机数。在 大部分编程语言中的随机数生成器不适于密码学使用。即使适于正常的密码学使用的那些 生成器也包含其安全性未被证实的密码学函数。
[0014] 期望提供一种经改善的加密数据的方法,其中该方法利用一次性密码本的概念, 但克服了现有的实现方案的限制中的一个或多个。
[0015] 根据本发明,提供了一种加密数据的方法,该方法包括以下步骤:
[0016] 创建一次性密码本;以及
[0017] 使用一次性密码本对数据进行加密以产生输出数据,其中一次性密码本是使用数 据生成的。
[0018] 该方法可以包括将数据分割成多个数据部分。该方法可以包括获取每个数据部分 的哈希。
[0019] 该方法可以包括混淆数据。该方法可以包括混淆每个数据部分。该方法可以包括 通过连结一个或多个其他数据部分的哈希来混淆每个数据部分。
[0020] 该方法可以包括使用一次性密码本对被混淆的数据进行加密。
[0021] 一次性密码本可以包括通过加密数据生成的密钥数据。用于生成密钥数据的加密 处理可以包括来自于数据的一个或多个加密参数。一个或多个加密参数可以来自于一个或 多个数据部分。加密参数可以包括加密密钥。加密参数可以包括初始化矢量。
[0022] 密钥数据的长度可以至少与数据的长度相同。
[0023] 加密数据可以使用被加密的数据的哈希来命名,并且随后被存储。
[0024] 该方法可以包括生成用于对输出数据进行解密的数据映射。数据映射可以包括一 个或多个加密参数。
[0025] 该方法可以包括通过多个数据映射生成数据图集。数据图集可以包括多个被连结 的数据映射。
[0026] 该方法可以包括移除重复信息。该方法可以包括至少减少相同数据部分的多个版 本的数量。
[0027] 现在将仅以举例的方式对本发明的实施方式进行描述。
[0028] 本发明可以提供无需用户干预或口令的加密系统。然后,得到的数据项必须被保 存或存储在某处,如同在所有传统的方法中一样。与已知的加密密码法相反,本发明的加密 方法涉及创建在可逆性方面极强且几乎完美的密文(加密的)对象。该方法基于对称加密, 并且增强了这种方法以产生高度安全的数据。
[0029] 在本说明书中,使用了以下符号:
[0030] H =哈希函数,诸如SHA、MD5等;
[0031] Symm =对称加密,诸如AES、3DES等;
[0032] PBKDF2 =基于口令的密钥衍生函数或类似函数;
[0033] f;=文件内容;
[0034] =文件元数据;
[0035] fh = H (f。)或者 fh = H (H (C1) +H (C2) +· · · H (Clri),其中,Cn 是数据块;
[0036] 下面的实施方式将使用AES作为对称加密算法的示例,因此将使用密钥和初始化 矢量以及纯文本输入数据。
[0037] 难以猜测和可解压缩的输出相当于基于随机输入数据和随机的、不相关的算法输 入(在现代对称密码法的情况下为纯文本、密钥和iv)的随机结果。
[0038] 理想的密码学哈希函数具有四个主要的或显著性质。容易(但不一定快)地计算 用于任意给定消息的哈希值;生成具有给定哈希的消息是不可行的;在不改变哈希的情况 下修改消息是不可行的;以及找到具有相同哈希的两个不同的消息是不可行的。
[0039] 作为单向函数的密码安全的哈希将创建具有均匀分布并且可以以多项式时间计 算出的输出。虽然输出会受到输入的大小影响,但是输出实际上应该是随机的。考虑到充 分大的输入,输出将是随机的(在限制范围内)。所需的输入大小取决于所采用的哈希函数 的强度。在本质上,输出可以被认为是均匀分布且随机的。在加密安全哈希中,对数据进行 分析,并且产生了称为数据的哈希的固定长度的密钥。哈希不能透露原始数据。
[0040] 哈希函数可被认为是唯一的数字指纹。然而,可能存在具有相同哈希结果的两个 数据段。这被称为碰撞,并且降低了哈希算法的安全性。算法越安全,碰撞的可能性越小。
[0041] 早期的哈希算法诸如MD4、MD5以及甚至早期的SHA认为被破解,因为在某种意义 上它们容易允许太多的碰撞发生。因此,几乎总是需要较大描述符(密钥长度)和更有效 的算法。
[0042] 下面是用于进行本发明的加密方法的一种方法。
[0043] 数据被分成若干数据部分或数据块(Cn)。获取每个块的哈希(HJ。在AES或类 似密码法的情况下,[keysize] (Clri)([密钥大小](Clri))被用作密钥,并且[next bytes iv size] (Clri)([接下来的字节iv大小](Clri))被用作IV(对于AES而言,0至32 ==密钥, 32 至 48 = = iv)。
[0044] 然后,通过连结其他块的哈希([unused part of] (Clri) (Cn_2) (Cn) ((Clri) (Cn_2) (Cn) 的[未使用部分])来创建混淆块(OBFCn)。
[0045] 随后在(Cn)上运行加密密码法或类似的可逆方法,以产生随机数据(Crandrail) (Csi 机)。
[0046] 数据现在可被认为是随机的,并且具有与输入数据的长度相同的长度。混淆块 (OBFCn)也是随机输出,但具有比输入数据的长度短的长度。
[0047] 然后,采取操作(OBFCn) (r印eated(重复的DXOlUC^dJ以产生输出数据。每个 输出数据通过新内容的哈希重命名,并且这些哈希被保存。
[0048] 如由香农(Shannon)定义的一次性密码本(One Time Pad)被视为理论上具有完 美保密性的唯一的密码体系。其预先假定以下内容:密码本不能被重复使用;对于香农实 现方式(与早期的循环密码本相反),密码本必需与待被加密的消息一样长(即,密码本必 需是非重复的);以及密码本必须仅包含随机数据。
[0049] 如香农系统建议的,真正的一次性密码本需要比待被加密的数据长的一次性随机 密码本。在本说明书中,对称加密密码法(AES作为示例,具有CFB)被用于介绍什么可被描 述为对于数据本身的随机性。如果这真是随机的,则其是自身条件的完美密码本。另外,使 用了混淆密码本,这几乎创建了可用作一次性密码本的密码本,然而,该密码本不与待被加 密的消息一样长(当其比待被加密的数据短时重复)。
[0050] 然而,数据自身可被认为是密码本,并且混淆块现在为重复数据(由香农密码本 的定义所允许的)。虽然这是相当大量的重复数据,但也是重复的随机数据。这可以被认为 是一次性密码本的形式。此外,对数据采取的、以包括随机性以及密码本随机性的行为带来 了增加的保密性。
[0051] f件分块
[0052] 获取文件的大小(f. sizeO)并计算块的数量(η)。块的数量取决于期望的实现方 案,例如可期望块的最大数量或者最大块大小。
[0053] 创建长度为256ΚΒ (可设置)的块,随后进行哈希处理。获取每个块的哈希,随后 对这些进行哈希处理,并且创建将被称为数据映射(data map)的结构。
[0054] 以固定大小创建块以确保重建文件所需的设置几乎与在任意数据存储中的可用 块的数量一样大。数据映射使用fh被映射到文件元数据。
[0055] 加密步骤
[0056] 在加密阶段中,需要两个分离的非确定数据部分:加密密钥(或口令)和初始化矢 量(IV)。为了确保所有数据加密成相同的最终结果,通过可被认为是非确定性数据的那些 来确定IV,其中非确定性数据是其中一个块的哈希。
[0057] 用密钥和IV加密数据(Enc [key劃(data)) (Enc f密钥屬(数据))。假设对于块η的 密钥和IV从块η-1的哈希的分离部分得到。例如在AES的情况下,该哈希的首先的32字 节为密钥,而接下来的16字节为IV^nctiKCM [first32bytes]) ] [H (Crrl [32t048bytes]) ] [Qin) - Qfen) (Enc [H (Crrl [首先的 32 字节])][H (Crrl [32 至 48 字节])][Cxn) - Cxen)。
[0058] 因此,这些项选自随机数据,虽然在例如密码学哈希(如讨论的那样)的单向函 数的情况下,随机性可以是确定性的(如果诸如AES的算法的输出可以通过猜测输入参数 (即,暴力(brute force))进行猜测)。
[0059] 数据现在被表现为高度混淆块的块。随后再次获取每个块的哈希H(Cxen),并且用 其内容的哈希重命名每个块。
[0060] 混渚步骤
[0061] 在混淆步骤中,每个块用来自其他块的数据污染(pollute)。对于Cn,通过对块n+2 的哈希重复地进行再哈希处理并且附加结果(H(C n_2)+H(H(Cn+2))+H(H(H(Cn+2)))+…)来创 建相同大小的数据块。这被称为XOR块n (CXORn),并且用块η进行X0R。虽然XOR已用于 混淆数据,但以任何方式均不是限制性的,并且可以由其他混淆方法取代。
[0062] 数据映射
[0063] 数据映射被用于逆转上述处理以从密文块重获纯文本。
[0064] 加密处理可使用通过以上描述的以下步骤获得的数据逆转:将数据分割成若干 块(Cn) ;[keysize] (Clri)作为密钥并且[next bytes iv size] (Clri)作为 IV ;以及混淆块 (OBFCn)。该数据被存储在被称为数据映射的结构中。在下表中进行描述。
[0065]
【权利要求】
1. 一种加密数据的方法,包括以下步骤: 创建一次性密码本;以及 使用所述一次性密码本加密所述数据以产生输出数据,其中所述一次性密码本是使用 所述数据而生成的。
2. 如权利要求1所述的方法,包括:将所述数据分割成多个数据部分。
3. 如权利要求2所述的方法,包括获取每个数据部分的哈希。
4. 如任一前述权利要求所述的方法,包括:混淆所述数据。
5. 如在引用权利要求2或3时的权利要求4所述的方法,包括:混淆每个数据部分。
6. 如权利要求5所述的方法,包括:通过连结一个或多个其他数据部分的哈希来混淆 每个数据部分。
7. 如权利要求4至6中的任一项所述的方法,包括:使用所述一次性密码本加密被混 淆的数据。
8. 如任一前述权利要求所述的方法,其中,所述一次性密码本包括通过加密所述数据 生成的密钥数据。
9. 如权利要求8所述的方法,其中,用于生成所述密钥数据的加密处理包括来自于所 述数据的一个或多个加密参数。
10. 如在引用权利要求2或3时的权利要求9所述的方法,其中,所述一个或多个加密 参数来自于一个或多个数据部分。
11. 如权利要求9或10所述的方法,其中,所述加密参数包括加密密钥。
12. 如权利要求9至11中的任一项所述的方法,其中,所述加密参数包括初始化矢量。
13. 如权利要求8至12中的任一项所述的方法,其中,所述密钥数据的长度至少与所述 数据的长度相同。
14. 如任一前述权利要求所述的方法,其中,被加密的数据使用所述被加密的数据的哈 希来命名,并随后被存储。
15. 如任一前述权利要求所述的方法,包括:生成用于解密所述输出数据的数据映射。
16. 如在引用权利要求9至12中的任一项时的权利要求15所述的方法,其中,所述数 据映射包括所述一个或多个加密参数。
17. 如权利要求15或16所述的方法,包括:通过多个数据映射生成数据图集。
18. 如权利要求17所述的方法,其中,所述数据图集包括多个被连结的数据映射。
19. 如任一前述权利要求所述的方法,包括:移除重复信息。
20. 如权利要求19所述的方法,包括:至少减少相同数据部分的多个版本的数量。
21. -种用于加密数据的装置,包括: 处理器,其被配置成创建一次性密码本并且使用所述一次性密码本加密所述数据以产 生输出数据, 其中,所述处理器被配置成使用所述数据生成所述一次性密码本。
【文档编号】H04L9/06GK104396182SQ201380020106
【公开日】2015年3月4日 申请日期:2013年4月11日 优先权日:2012年4月16日
【发明者】大卫·欧文 申请人:迈德安全基金会
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1