理论上可能的未来证明加密?

信息安全 加密 理论
2021-08-27 22:19:59

假设我有一条信息要在未来 100 年内保持安全。理论上可行吗?

假设消息是唯一的(原始图片数据、原始视频视频数据、原始文本数据)并且密钥是唯一的。有什么可以防止(近)未来的蛮力攻击吗?

4个回答

TL;DR 粗体:

我们没有水晶球来预测技术将把我们带到哪里,但密码学的目的是开发在非常基本的层面上具有这种抵抗力的算法。

从数学上讲,就“诚实地”从单个密文中暴力破解单个明文而言,除了密钥之外,知道解密明文所需的一切,256位分组密码应该被认为是不可破解的定律热力学我们的太阳在其活跃的生命中(在它变成黑矮星之前)不会发射足够的光子,以使一台在电子水平上以完美效率工作的计算机能够尝试 256 位密钥空间中的每一个可能的密钥。计算机在尝试了大约 2^218 个键值后会耗尽能量,这意味着如果它完全随机地尝试没有替换的键,并且该键也是完全随机选择的,那么它将只有 2750亿分之一在太阳变成新星之前大约 50亿年,就有机会找到正确的钥匙。

然而,使用当今存在的任何计算硬件或软件都有一个明显的缺点。它已经过时了。假设目前用于加密消息的任何二进制实现,或者用于开发或执行该二进制代码的任何计算机、语言甚至逻辑结构在 100 年后仍然存在,这是愚蠢的。我们已经遇到了可以读取或写入仅在 20 年前成为通用标准的存储设备的硬件的可用性问题,例如软盘和磁带驱动器。在过去的 50 年里,即使是电源插头也发生了根本性的变化,而这些插头和插座(以及它们使用的电源的确切规格)只是区域标准。见鬼,100 年前我们是骑马,不是开车。所以,如果您打算加密某些东西,然后存储用于生产它的设备,我几乎可以保证,在 100 年后,有关该设备的所有东西都会过时,无法使用。

鉴于这个 100 年的预期时间跨度,我将依赖人类已知的最简单但最安全的密码之一;一次性垫。

只需创建一个数字“字母表”,将数字值与您希望能够加密的每个字符符号相关联(不要忘记任何需要的标点符号,例如空格、逗号、句点、单/双引号等;您不能使用更多超过 100 个符号,但大多数完全格式的英语消息将远低于此限制,即使是大写字母)。然后,收集一系列数字,从 0 到 99。消息的每个字符都需要其中一个数字。这些数字必须是真正随机的;一次性便笺簿的认​​真用户通常从环境来源收集比特数据,例如在射电望远镜上检测到的背景辐射测量值。对于今天的目的,您可以购买一个 100 面的骰子,然后在碗内滚动以产生每个数字。使用 CSPRNG 也应该是可以接受的,前提是它是从真实熵源正确播种的(假设种子值在使用后被丢弃,您可能不需要来自 PRNG 的足够数字来让攻击者能够预测它们)。确保从任何用于生成随机数据的电子设备中完全清除内存。

要加密,请将随机键盘、数字字母表和您希望加密的消息放到其他任何人或任何监视设备都看不到的地方(您知道,以防万一)。取消息的第一个字符,查找它的字母代码编号,然后从随机填充中获取第一个数字,然后从字符代码中减去随机数。如果最终得到的数字小于零,请从 100 中减去该数字。在字母表上查找结果数字,然后记下该字符作为密文的第一个字符。重复明文的第二个字符和随机填充的第二个数字。继续阅读该消息,直到您对明文消息的每个字符都进行了编码。您必须按顺序使用随机垫的每个数字一次且仅一次。

完成后,您将烧毁或以其他方式完全销毁明文副本,并在物理上保护随机键盘和字母表。这个很重要; 没有人应该能够在 100 年内拿到随机垫,但他们必须能够在 100 年内拿到它。字母表在技术上并不是一个秘密,但它包含在密文中是使用一次性便笺簿的线索(导致人们去搜索便笺簿),因此我建议将其与便笺簿一起保存。密文本身在其加密形式中是完全安全的;如果你愿意,你可以把它凿进最高法院大楼的石雕上(并且可以做得足够快,在 DC 地铁警察把你带走之前完成)。它可以是许多字母密码中的任何一种,借一点熵来掩盖它的发现

要解密,某人必须拥有您用来加密的密文、相同的一次性密码本和相同的字母表。他们取密文的第一个字符,在字母表中查找数字,然后将一次性键盘中的数字相加并以 100 为模(简单地截断它出现的数百位)。他们使用字母将得到的数字转换回一个字符,并将其写下来。然后他们继续,一个字符一个字符,一个数字一个数字。同样,他们必须按顺序使用随机垫的每个数字,一次且仅一次。

一次性便笺本是一个非常古老的系统,最早是在 1882 年被描述并在 1917 年重新发明的,它具有最终的优势;证明是不可能破解的真正随机,随机填充的任何数字(形成密码的“密钥”)都没有数学模式,并且因为每个数字只使用一次(如果你有超过 100 个字符,你会看到相同的两位数在 pad 中出现两次,但你永远无法预测何时),pad 本身永远不会重复。因此,任何试图在没有完全相同的垫子的情况下破译消息的尝试都是徒劳的。它可能会产生乱码,或者它可能会产生完全相同数量的字符的消息,但其内容却完全不同。唯一能确保每个正确解密消息的字符是具有与最初加密事物完全相同的随机数序列。

保持它被更普遍使用的缺点是它理想情况下需要一个无限长度的填充(以处理任意长度的任意数量的消息),并且存在很大的偏移错误的可能性;某人可能会错过其他人发送的部分或全部消息,因此一个人在其键盘上划掉的数字更少,导致双方之间的所有进一步消息都无法辨认,并且如果不更换新的键盘就无法恢复。在您的情况下,这些都没有实际意义,但过去 100 年来发明的几乎所有其他密码系统都试图减轻这些缺点(主要是无限长密钥),同时尽可能少地交易系统的理想安全性。

未来的问题是你不知道会发生什么。当然,我们可以猜测,但您永远无法得到保证。

AES 被认为是安全的,算法中不存在已知故障。事实上,DES(原始政府认可的密码)在算法中也没有已知的缺陷,唯一的问题是密钥长度太短。

假设从现在起 100 年后,针对算法的最著名的攻击仍然是蛮力攻击,那么是的,您可以在这么长时间内保护您的数据。Bruce Schneier 在应用密码学(第 157-158 页)中解释了为什么 256 位密钥与物理学一样安全。要点是这样的:

假设宇宙背景温度为 3.2 开尔文,年太阳能输出为 1.21x10^41 尔格,并且玻尔兹曼常数为 1.38x10^-16 尔格/开尔文:因此我们可以确定,如果 100% 的太阳能量输出进入一台 100% 高效且速度极快的计算机,除了计数之外什么都不做,它每年只能获得足够的功率来表示 2^187 个值。给定一个 256 位密钥,这意味着表示该范围内的所有值需要 5.9 * 10^20 年。

施奈尔的结论:

这些数字与设备的技术无关;它们是热力学允许的最大值。他们强烈暗示,在计算机不是由物质以外的东西构成并占据空间以外的东西之前,对 256 位密钥的暴力攻击将是不可行的。

因此,您所要做的就是确保 100 年后最好的攻击仍然是蛮力。最好的方法是使用尽可能多的算法。例如,使用一个随机密钥使用 AES 加密,然后选择另一个随机密钥并使用 Twofish 加密该结果,然后使用 Serpent 使用另一个密钥加密该结果,依此类推。如果 100 年后,至少有一种算法仍然有效,那么您的数据就是安全的。

具有关键假设的现代强加密将安全一百年,甚至可以预见更长的时间;例如,数百万/数十亿年的暴力破解. 也就是说,如果您使用高熵密码短语(例如,熵约为 260 位的 20 个随机 diceware 单词)使用适当强的加密方案(例如 AES256)加密消息(其中密码短语创建 256 位对称加密密钥)。暴力破解一点也不合理。想象一下,100 亿人每人制造了 100 万台计算机(10^16 台计算机),每台计算机在接下来的一百万年(3x10^13 秒)内每秒尝试十亿个密钥(10^9/秒),你只会尝试大约 3x10^38 ~ 2^128 个密钥,当您预计需要尝试 2^256 个密钥才能有相当大的机会强制加密时。(您还可以看到,这是暴力破解 128 位加密的粗略限制——在接下来的一百万年里,有 1000 万台计算机每秒尝试十亿个密钥)。

但是,我做出了关键假设:

  1. 密码是高熵的,被需要使用和解密消息的人记住,
  2. 密码对所有攻击者保密(密码不会在其他地方重复使用;没有键盘记录或写下来;没有在强行审讯下放弃
  3. 在接下来的 100 年中,您使用的特定加密算法没有任何基本缺陷使其易于处理(例如,现在对 AES256 的最佳攻击将其降低到 2^254(容易 4 倍;但仍然超出可行性),
  4. 特定的实现不易受到比暴力破解更容易的其他攻击(旁道攻击/相关密钥攻击/已知明文攻击),
  5. CS 中没有任何根本性的进步,例如 P=NP 的简单证明使 NP 问题变得容易,或者使实际的大规模量子计算以某种方式使这个棘手的问题变得易于处理。(我不知道量子计算会如何破坏 AES,但我确实看到 Shor 的整数分解量子算法如何破坏 RSA)。

1和2是您最大的担忧。您如何保持正确的人知道但其他人不知道 100 年的消息的密钥(大概是您希望某人能够解密或删除它)?出于这个原因,One Time Pad (OTP) 的解决方案虽然在理论上完全安全,但在实践中却很糟糕。这就是说,如果您的加密消息有 100 万个字符长,那么您需要对每个人(除了需要解密消息的人)保密相同长度的一次性密码本一百年。如果你能做到这一点,为什么没有 您是否以明文形式留下消息,然后将您对 OTP 所做的任何保护应用于明文消息?(虽然说隐藏一个 20 字的随机短语 100 年是半可行的,但如果通过一些助记符和隐藏的提醒信息代代相传。)

我认为 AES-256 将(甚至 128 个可能是可行的),(尚未考虑量子计算机)证明在未来 100 年内是可行的。

也不要忘记 RSA 是在 70 年代创建的,我们现在仍在使用它。

编辑:通知

RSA 实际上并不是一个很好的例子。早期被吹捧为牢不可破的密钥大小现在非常弱,早期实现中的错误或缺少填充也会导致问题。| 也很难比较不对称和对称原语。它们具有完全不同的安全特性。– CodesInChaos