为什么素数在密码学中很重要?

您所在的位置:网站首页 素数的理论中,最重要的结论是什么 为什么素数在密码学中很重要?

为什么素数在密码学中很重要?

2024-07-17 04:46| 来源: 网络整理| 查看: 265

作为非密码学家,我总是感到一件事:使用素数为何如此重要? 是什么使它们在密码学上如此特别?

有人有简单的简短解释吗? (我知道有很多入门书籍,而《应用密码学》是圣经,但是正如我所说:我并不是要实现自己的密码算法,而我发现的东西却使我的大脑爆炸了-没有10页的数学公式 请 :))

感谢所有的答案。 我已经接受了使我最清楚实际概念的那个。

相关讨论 一些观察:1.下面的人提到"大量的素数分解需要很长时间"。 实际上,对于任何因式分解都是如此。 重要的是,任何整数!= 0都具有作为质数乘积的唯一因式分解(包括1,其分解长度为0)。 2.请检查我的解释为什么质数对哈希函数很重要:stackoverflow.com/questions/1145217/它与系数属于一个字段的多项式的性质有关(这可能不是简短的解释)。 过于简单的简短说明→解决:a * b = 91。 现在,解决:13 * 7 = x。 第二个方程式求解起来更快(对于人或计算机)。

最基本和最笼统的解释:密码学完全是关于数论的,所有整数(0和1除外)都由质数组成,因此您在数论中处理质数很多。

更具体地说,一些重要的密码算法(例如RSA)严重依赖于以下事实:大量的素数分解需要很长时间。基本上,您有一个"公用密钥",由两个用于加密邮件的大素数组成;另一个"秘密密钥",由两个用于加密消息的素数组成。您可以将公钥公开,每个人都可以使用它来加密给您的消息,但是只有您知道主要因素并可以解密消息。鉴于当前数论的最新水平,其他所有人都必须考虑这个数,这花了太长时间才实用。

相关讨论 随着我们进入量子计算时代,似乎应该注意到,使用量子计算机对质数进行因子分解可以在多项式时间内使用肖尔算法(Shors算法)实现。可能是已经存在的计算机可以像RSA一样解密公钥加密 @stujo:您大大高估了量子计算的状态。实际上可以肯定不存在这样的计算机。在量子硬件中使用Shors算法和前沿研究成果得出的最大数字是21。不是21位,而是数字21,素数3和7。 我不确定是什么最新数据,很难获得最新的工作信息,我认为那是在2012年,这篇文章来自2014年(m.phys.org/news/2014-11-largest-factored-quantum- device.html)我们是否见过2016年的任何公开数据?不排除可能分类的内容。尽管它无法运行Shors算法,但D-Wave现在已超过1000 qbits @stujo:当所有人都使用Quantum CPU时,将遵循相同的原则,因为素数会不断增长,这全都在于寻找更大,对量子CPU不切实际的问题,如果有人使用常规CPUS创建密钥,而有人使用Quantum CPU来存在,则会出现问题。打破那些。据我了解,量子CPU的功能是使用qbit,每个qbit可以有3个值,因此新技术是以3为基数而不是以2为基数。一个64 qbit的CPU在一个单词中将具有3 ^ 64个组合。不知道它如何影响性能。 @stujo椭圆曲线密码学 @juanmf:您对量子计算的理解是完全错误的。它与拥有3个值绝对无关,这完全是没有意思的。细节非常复杂,但是结果是,某些量子算法可以以比非量子硬件上的"常规"算法低的Big-O复杂性解决问题。 感谢@MichaelBorgwardt的注意,我想理解为什么。如果您有任何链接,我非常感谢您分享。问候。 @juanmf:如果您真的想了解,则必须学习一些相当复杂的物理和数学。 Wikipedia将是一个很好的起点:en.wikipedia.org/wiki/Quantum_computing一个简短的简化解释是,量子算法可以同时对整个qbit寄存器的所有可能值进行计算。 非常感谢。我会仔细看看。 @juanmf-qbit是一个令人惊奇的谜:1)qbit可以具有无限数量的值{0,1或0..1}之间的任何值2)您不知道qbit值,直到您对其进行检查3)最有趣的部分-检查qbit值的变化它的价值

简单?对。

如果将两个大质数相乘,则只有两个(大)质数会得到一个巨大的非质数。

将此数字分解是一项不平凡的运算,而这一事实是许多密码算法的来源。有关更多信息,请参见单向功能。

附录: 只是更多的解释。两个质数的乘积可以用作公钥,而质数本身可以用作私钥。仅通过知道两个因素之一就可以对数据进行的任何操作对解密来说都是不平凡的。

相关讨论 还值得注意的是,除了因式分解问题外,许多现代加密货币还(或替代地)依赖于离散对数问题。两者都是"单向"功能:易于接受已知输入并计算答案,但难以获得答案并计算这些输入。 将此解释链接到术语"单向功能"将很有帮助:en.wikipedia.org/wiki/单向功能 但是如果可以使用公共密钥进行加密,为什么不能使用相反的方法呢?

这是一个非常简单且常见的示例。

RSA加密算法通常用于安全的商务网站,其基于以下事实:很容易取两个(很大)质数并将它们相乘,而反之则非常困难-意思是:取一个给定它只有两个主要因素,并找到它们。

相关讨论 仅供参考,您将两个素数相乘得到的数字称为半素数。 不知道,谢谢:)

重要的不是素数本身,而是与素数一起工作的算法。特别是,找到一个数(任意数)的因子。

如您所知,任何数字至少都有两个因素。质数具有独特的属性,因为它们恰好具有两个因素:1和自身。

原因分解是如此重要,是数学家和计算机科学家不简单尝试每种可能的组合就不知道如何分解数字。也就是说,首先尝试除以2,然后除以3,再除以4,依此类推。如果尝试分解质数(尤其是很大的质数),则必须(基本上)尝试2和该较大质数之间的每个可能数。即使在最快的计算机上,也要花费数年(甚至几个世纪)来考虑密码学中使用的素数的种类。

事实是,我们不知道如何有效地分解大量数据,这使得密码算法无处不在。如果某一天有人弄清楚该怎么做,那么我们当前使用的所有加密算法都将过时。这仍然是一个开放的研究领域。

相关讨论 实际上,您只需要测试素数,直到测试因子的平方根即可。 我知道。我以简单性的名义"忽略"了这一细节。 @MatthewBrubaker你介意解释为什么吗?我真的不明白。 @KartikChughヅ说n不是素数&n = a * b。如果a > sqrt(n),b必须较小,反之亦然,否则a * b > n本身将否定我们的最初主张。因此,要检查素数,我们只检查直到sqrt。

因为没有人知道将整数分解为素数的快速算法。但是,检查一组素数是否乘以某个整数非常容易。

相关讨论 没人知道:) 有趣的是,已经有可能快速找出IF是否为质数。 这里缺少"如果主要因素很大"。 @本:它不丢失。这个问题通常很难解决。请注意,通常很难解决的问题可能很容易解决。在这种情况下,小素数绝不是唯一容易的情况。 没有人知道"公开"。世界各国政府的情报机构有可能拥有他们无法共享的技术。他们雇用了大量的数学毕业生。例如,国家安全局(NSA)通过"双EC_DRBG"秘密地促进了随机素数生成,他们知道这很薄弱,作为公共使用的标准加密方案的一部分。 bits.blogs.nytimes.com/2013/09/10/ 唐:积雪的文件似乎表明事实并非如此。他们得出了一个非常明确的结论,即(大体上可能会出现弯道),NSA只能通过他们知道的特殊数学魔术来解密加密的数据。施耐尔广泛讨论了这个问题。

有一些很好的资源可以增加加密货币。这是一个:

http://research.microsoft.com/en-us/groups/crypto/firstcrypto.aspx

从该页面:

In the most commonly used public-key cryptography system, invented by Ron Rivest, Adi Shamir, and Len Adleman in 1977, both the public and the private keys are derived from a pair of large prime numbers according to a relatively simple mathematical formula. In theory, it might be possible to derive the private key from the public key by working the formula backwards. But only the product of the large prime numbers is public, and factoring numbers of that size into primes is so hard that even the most powerful supercomputers in the world cant break an ordinary public key.

布鲁斯·施耐尔(Bruce Schneier)的书《应用密码学》是另一本。我强烈推荐那本书;阅读很有趣。

为了更具体地说明RSA如何使用质数的属性,RSA算法主要取决于Euler定理,该定理指出,对于相对质数" a"和" N",a ^ e等于1模N,其中e是N的欧拉上位函数。

素数从何而来?为了有效地计算N的欧拉函数,需要知道N的素因数分解。在RSA算法的情况下,对于某些质数" p"和" q",N = pq,则e =(p-1)(q -1)= N-p-q +1。但是,如果不知道p和q,则很难计算e。

更抽象地讲,许多低温照相协议使用各种活板门功能,这些功能易于计算但难以反转。数论是此类活板门函数(例如大质数的乘法)的丰富来源,并且质数绝对是数论的核心。

我建议写《代码中的数学之旅》一书。这本书具有与众不同的感觉,这令人惊讶,因为它是关于密码学的。这本书总结了莎拉·弗兰纳里(Sarah Flannery)从童年时期学习难题到16岁时创建Cayley-Purser(CP)算法的历程,它给出了关于单向函数,数论和质数以及它们之间的关系的惊人详细解释。加密。

是什么让本书更加针对您的问题,是Sarah尝试使用矩阵算法实现新的公共密钥算法。这比使用质数要快得多,但是发现了可以利用它的漏洞。事实证明,她的算法最好用作私有加密机制。这本书很好地证明了使用质数进行加密,因为它经受了时间的考验和聪明人的挑战。

我不是数学家或神秘主义者,所以这是外行人的外在观察(没有花哨的方程式,很抱歉)。

整个线程充满了关于如何在密码学中使用素数的解释,很难在此线程中找到任何人以简单的方式解释为什么使用素数的解释...最有可能的原因是,每个人都认为这是理所当然的。

仅从外部看问题会产生类似的反应。但是,如果他们使用两个素数之和,为什么不创建任何两个素数可以生成的所有可能总和的列表?

此站点上有455,042,511个素数的列表,其中最高素数为9,987,500,000(10位数字)。 已知的最大质数(截至2015年2月)是257,885,161的乘方2。 1,即17,425,170位数字。这意味着没有必要列出所有已知质数的列表,更不用说所有可能的和了。取一个数字并检查它是否是素数更容易。

计算大素数本身是一项艰巨的任务,因此反向计算已经被密码学家和数学家相互乘以的两个??素数就足够了……今天。

相关讨论 只有您的最后一段真正有效。总数的论点也可以针对任何复合数(存在很大的范围[技术上无限大],所有和的存储都是不可行/愚蠢的)。另外,素数的总和在密码学中没有太大的意义,更重要的是(通常在RSA的情况下)是它们的乘积。另外,通过反向计算,您可能意味着分解。 Thatll可能有助于您在那里的意思。

为您提供另一种资源。立即安全!第30集(约30分钟的播客,链接至笔录)讨论了密码学问题,并解释了素数为何重要的原因。

我认为在密码学中重要的不是素数本身,而是素数分解问题的难点

假设您有一个非常大的整数,已知该整数是两个素数m和n的乘积,要找出m和n是不容易的。 RSA之类的算法取决于这一事实。

顺便说一句,有一篇有关算法的已发表论文,可以使用量子计算机在可接受的时间内"解决"这一素因分解问题。因此,当量子计算机出现时,新的密码学算法可能不再依赖于素数分解的这种"困难" :)

密码算法通常出于其安全性而依赖于"困难的问题"。大多数现代算法似乎都将大数分解作为他们的难题-如果将两个大数相乘,则计算它们的因数是"困难的"(即费时)。如果这两个数字是质数,那么只有一个答案,这将使难度更大,并且还可以保证,当您找到答案时,它是正确的,而不是其他碰巧得出相同结果的答案。

因为分解算法对找到的每个因子都大大加快了速度。将两个私钥设为素数可确保找到的第一个因素也将是最后一个。理想地,两个私钥的值也将几乎相等,因为仅弱密钥的强度很重要。

相关讨论 这对我来说有点多余。较弱的关键部分的一部分可以注释为最佳答案:)

质数主要用于密码术,因为它在确定给定数是否为质数时会花费大量时间。对于黑客来说,如果有任何算法花费大量时间来破坏代码,对他们来说就变得毫无用处

相关讨论 弄清楚数字是否为质数是很便宜的,我们需要便宜。我们还怎么知道在RSA中选择素数作为我们的素数因子,还是在有限域加密中选择素数作为模数?昂贵的是将大量的复合因素分解为大量的主要因素。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3