蛮力物理学(及其与密码学的关系)

2020-07-29 12:14:54

最近,MyDataAngel启动了一个Kickstarter项目,销售512位和768位对称密钥的专有加密算法和软件。其动机是128位和256位对称密钥不够强大,特别是当AES和OpenSSL比你的车还老的时候(这是他们会在Vlog中提到的常见批评)。早在2009年,Bruce Schneier就在博客中提到Crypteto拥有49,152位对称密钥。因此,他们的密码是100%强的,因为他们的密钥比4096位密钥大100%。Meganet显然仍然存在,它有一个100万位的对称密钥!

很难认真对待这些加密产品,因为没有关于现有原语的已发表论文,您的团队中没有安全或密码学专家,您还在销售密钥长度荒谬的产品(公平地说,512位和768位对称密钥并没有那么荒谬)。请不要忘记,您的专有加密算法没有经过同行评审,也没有免费提供给公众。任何人都可以创建他们自己无法破解的对称加密算法。诀窍是发布你的算法供同行评审,让现有的密码学专家分析设计,同时仍能拿出强大的算法(如果你自己分析现有的算法并发表论文,这不会有什么坏处)。

说到这里,我想谈一下对称密钥的长度,以及暴力破解它们所需要的条件。布鲁斯·施奈尔(Bruce Schneier)在他的“通过热力学定律的应用密码学”一书中谈到了这一点。不幸的是,他把一些常量弄错了。虽然结论基本上是相同的,但我会给你相同的论点,更新后的常量,我们会看看我们是否会得出相同的结论。

假设您想看看通过每秒以二进制数计算,一天可以翻转多少位。当然,当您开始计数时,您将从";0";开始,并且您的第一秒会将您的第一位翻转到";1";。您的第二秒会将您的第二位翻转到";1&34;,同时也会将您的第一位翻转回";0";。您的第三秒会将第一位翻转回";1";,以此类推。下面是一个简单的GIF(发音为硬字母G&34;),从0到127,每秒翻转比特。

到24小时结束时,我将达到86,400秒,它表示为一个17位数字。换句话说,每隔24小时,每秒翻转1比特,我可以翻转16比特数字中的每一个比特组合。

到一年结束时,我们最终得到一个25位的数字,这意味着每秒翻转一位可以翻转每年24位的所有组合。

因此,显而易见的问题是-我可以翻阅到精疲力竭的最大比特组合是什么?更重要的是,我需要多少台计算机来做这项工作(这需要多少钱)?

热力学第二定律的一个结果是,它需要能量来做一定量的功。这可能是任何事情,从把箱子举过头顶,到散步,甚至早上起床。这还包括计算机和硬盘。当计算机希望将数据存储在磁盘上时,需要能量来完成这项工作。这用以下公式表示:

其中k是玻尔兹曼常数1.38064852×10−,每开尔文16尔格,而T是系统的温度。我将使用ERGS作为我们的单位,因为我们正在谈论工作,而An是能量的单位。当然,开尔文是温度单位,其中0开尔文被定义为没有能量的系统,也称为绝对零度。

最有意义的是让我们的计算机尽可能地冷却,以最大化我们的输出,同时也最大限度地减少我们的能源需求。目前外层空间的背景辐射约为2.72548开尔文。要运行一台比这更冷的计算机将需要热泵,这意味着向系统添加比我们计算所需的能量更多的能量。因此,我们将以2.72548开尔文的速度运行这台理想的计算机。

因此,这意味着要用我们理想的计算机翻转一个比特,它需要:

现在我们知道了我们的能源需求,让我们开始寻找一些能源。我们的恒星每年输出的总能量大约是1.2x1034焦耳。因为1焦耳相当于1×107尔格,所以太阳每年的总能量输出约为1.2×10 41尔格。所以,做一些基本的数学运算:

3.189004374*1056位意味着我可以翻转2187位数字中的每一个位组合,如果我每年能100%利用来自太阳的太阳能输出的话。不幸的是,我们的太阳是一颗弱星。

据计算,一颗超新星释放出的能量约为1044焦耳或1051erg。计算一下:

2.657503608*1066位大约是2220位。想象一下,在疯狂的计算中翻转220位数字中的每一位。

据计算,一颗超新星释放出的能量约为1046焦耳或1053erg。计算一下:

当然,在所有三种情况下,我都必须将100%的能量投入到我理想的计算机中,来翻转这些位的每一个组合。不要介意寻找交通工具把我送到那颗超新星,那次旅行所花费的时间(它离我们有多少百万光年?),以及利用释放的能量所需的设备成本。

作为对比研究,比特币挖掘几乎已经超过了每秒2百万分之一次SHA-256次哈希。如果你不认为这件事意义重大,那它就是重要的。那就是每秒处理全部60位数字(全部260位),或每年处理全部85位数字(全部285位)。现在,这是一个大规模的256位强力计算项目的确凿证据,而且它每年几乎不会翻转85位数字中的所有位。散列率必须加倍(每秒4百万分之一的SHA-256散列)才能超过每年翻转86位数字中的所有位。

此外,我们没有任何证据表明有任何集群超级计算项目接近这个处理速度。可以说,比特币开采的速度是任何资金雄厚的组织所能承受的上限(我认为,几个资金雄厚的组织很可能正在开采比特币,这是公平的)。要想提出有效的阴谋论来反驳这一说法,你需要证明有自己的半导体芯片制造组织的证据,这些组织的制造速度比ARM、AMD、英特尔和市场上所有其他芯片制造商都快了几个数量级。

无论如何,我们展示了在256位数字中翻转每一位所需的能量,热力学定律强烈暗示这在物理上是不可能的。

在处理非对称密码术时,情况发生了变化。现在,您不用创建256位的秘密数字,而是使用数学方法,例如素数因式分解或椭圆曲线方程。这在处理密钥长度时发生了戏剧性的变化,因为即使我们假设一些数学问题很容易计算,但很难反转,我们也需要处理异常大的数字,以便给我们提供证明这种难度所需的安全裕度。

因此,它不是因为对能源的担忧,而是更多地对时间的担忧。当然,密钥长度在一定程度上很重要。我们刚刚用热力学第二定律证明了,野蛮人把你从0逼到2256在物理上是不可能的。然而,找到256位数字的素因数要容易得多,不需要太多的能量,并且只需计算不超过数字平方根量的一半(在本例中,假设我们只测试素数,则为2127)。

因此,我们需要处理难以找到的主要因素。事实证明,仅仅有一个512位的私钥来阻止坏人找到你的主要因素是不够的。这在很大程度上是因为有计算和测试素数的有效算法。所以,计算和找出那些素数肯定也很昂贵。目前,最佳实践似乎是生成21024位主因数来生成2048位RSA私钥。

固定长度的防冲突散列给暴力搜索带来了不同的转折。最大的问题来自生日袭击。这就是说,如果房间里有大约2乘以365人(约23人)的平方根,那么任何两个人拥有相同生日的可能性是50%。请注意,这句话来自房间里的任何两个人。这意味着你没有挑出一个人,房间里其他22个人生日相同的可能性是50%。这不是碰撞前搜索。这是盲目搜查。你问第一个人他们的生日是什么时候,并将其与房间里的其他22个人进行比较。然后你问第二个人他们的生日是什么时候,并将其与房间里剩下的21个人进行比较。以此类推。在研究了所有23个人将每个人的生日与其他人的生日进行比较之后,你发现随机两个人匹配的几率是50%。

为什么这很重要?假设您正在使用SHA-1(160位输出)处理数据。在从当前计算的散列中找到重复散列的几率达到50%之前,您只需要计算280SHA-1散列。正如我们刚刚了解到的比特币,这在一年内是可行的,需要大量的精心策划的努力。事实证明,SHA-1比这更弱(我们只需要计算264个哈希值,概率为50%),这就是为什么密码界一直在如此努力地推动让每个人和所有东西远离SHA-1。

现在您可能理解为什么会存在384位和512位(以及更多,最高可达1024位)密码安全的固定长度防冲突散列函数。由于生日袭击事件,我们可以把我们的工作搞得一团糟。

正如清楚地证明的那样,热力学第二定律为使用暴力搜索可以找到什么提供了一个明确的上限。当然,暴力搜索是找到您正在寻找的私钥的最低效率的方法,事实上,还有更有效的方法来获取数据。然而,如果您提供了一个使用长得离谱的私钥的封闭源代码实现的专有加密算法,那么显然您并不理解暴力背后的物理原理。如果您不能掌握这些上限的简单概念,我为什么要在其他安全和数据保密领域信任您和您的产品呢?

量子计算确实为我们提供了一些经典计算无法实现的更高效的算法,但即使到那时,256位仍然超出了虚构的量子计算的实用领域,当进行暴力搜索时。