作为非密码学家,有一件事总是让我感到震惊:为什么使用Prime数字这么重要?是什么让他们在密码学方面如此特别?
有没有人有简单的简短说明? (我知道有许多引物,应用密码学是圣经,但正如所说的:我不打算实施我自己的加密算法,我发现的东西只是让我的大脑爆炸 - 没有10页的数学公式请:))
感谢获取所有答案。我已经接受了让我对这个实际概念最清楚的那个。
答案 0 :(得分:192)
最基本和一般的解释:密码学全部都是number theory,所有整数(0和1除外)都由素数组成,所以你在数论中处理了很多素数。
更具体地说,一些重要的加密算法,如RSA,关键取决于prime factorization大数字需要很长时间的事实。基本上你有一个“公钥”,包括用于加密消息的两个大素数的乘积,以及一个由用于解密消息的两个素数组成的“密钥”。您可以公开公钥,每个人都可以使用它来加密给您的邮件,但只有您知道主要因素并且可以解密邮件。考虑到数论的当前现状,其他人都必须考虑数字,这需要太长时间才能实用。
答案 1 :(得分:133)
简单?烨。
如果将两个大素数相乘,则得到一个巨大的非素数,只有两个(大)素因子。
将该数字分解为一项非常重要的操作,而这一事实是许多加密算法的来源。有关详细信息,请参阅one-way functions。
附录: 再说一点解释。两个素数的乘积可以用作公钥,而素数本身可以用作私钥。对数据进行的任何操作只能通过了解这两个因素中的一个来解除,这对于未加密是非常重要的。
答案 2 :(得分:43)
这是一个非常简单和常见的例子。
安全商务网站中常用的RSA encryption algorithm是基于这样一个事实,即很容易取两个(非常大的)素数并将它们相乘,而相反则很难做到 - 意思是:取一个非常大的数字,只有两个素因子,并找到它们。
答案 3 :(得分:12)
因为没有人知道将整数分解为其素因子的快速算法。然而,很容易检查一组素因子是否乘以某个整数。
答案 4 :(得分:11)
有一些很好的资源可以加速加密。这是一个:
从该页面开始:
在最常用的公钥中 加密系统,由罗恩发明 Rivest,Adi Shamir和Len Adleman in 1977年,无论是公共还是私人 钥匙是从一对大的派生出来的 根据a的素数 相对简单的数学 式。从理论上讲,它可能是 可以派生私钥 从工作的公钥 公式倒退。但只有 大素数的乘积是 公开,并将其数量分解 成为素数的大小是如此之大,甚至 中国最强大的超级计算机 世界不能打破平凡 公钥。
Bruce Schneier的书 Applied Cryptography 是另一本书。我强烈推荐这本书;这很有趣。
答案 5 :(得分:11)
质数本身并不重要,而是与素数一起使用的算法。特别是,找到一个数字(任意数字)的因子。
如您所知,任何数字至少有两个因素。素数具有独特的性质,因为它们只有两个因素:1和它们自己。
因子分解如此重要的原因是数学家和计算机科学家不知道如何在不简单地尝试每种可能的组合的情况下对数字进行分解。也就是说,首先尝试除以2,然后除以3,然后除以4,依此类推。如果你试图计算素数 - 特别是一个非常大的素数 - 你必须(基本上)尝试2和那个大素数之间的每个可能数。即使在速度最快的计算机上,也需要数年(甚至数百年)的时间来计算密码学中使用的素数种类。
事实上,我们不知道如何有效地分解大量数据,从而为加密算法提供了强大的功能。如果有一天,有人想出如何做到这一点,我们目前使用的所有加密算法都将过时。这仍然是一个开放的研究领域。
答案 6 :(得分:9)
为了更加具体地了解RSA如何使用素数的属性,RSA算法关键取决于Euler's Theorem,其中指出对于相对素数“a”和“N”,a e e是全等的到1 modulo N,其中e是N的Euler's totient function。
素数在哪里?要有效地计算N的Euler函数,需要知道N的素因子分解。在RSA算法的情况下,对于某些素数“p”和“q”,N = pq,则e =(p-1)(q - 1)= N - p - q + 1.但是在不知道p和q的情况下,e的计算非常困难。
更抽象地说,许多crypotgraphic协议使用各种trapdoor functions函数,这些函数易于计算但很难反转。数论是这种陷门函数的丰富来源(如大素数的乘法),素数对数论来说绝对是核心。
答案 7 :(得分:7)
我会建议这本书A Mathematical Journey In Code。这本书具有良好的脚踏实地的感觉,这是令人惊讶的,因为它是关于密码学的。这本书总结了Sarah Flannery从小时候学习谜题到在16岁时创建Cayley-Purser(CP)算法的过程。它给出了单向函数,数论和素数以及它们如何与之相关的惊人详细解释。加密。
使本书更具体地针对您的问题的原因是Sarah尝试使用矩阵实现新的公钥算法。它比使用素数快得多,但发现了一个可以利用它的循环孔。事实证明,她的算法最好用作私有加密机制。这本书是使用素数进行加密的一个很好的证明,因为它经受住了时间的考验和非常聪明的人的挑战。
答案 8 :(得分:6)
为您提供更多资源。 Security Now! episode 30(约30分钟播客,链接到成绩单)讨论加密问题,并解释为什么素数很重要。
答案 9 :(得分:5)
我不是数学家或密码学家,所以这里是外行人的一个外部观察(没有花哨的方程式,对不起)。
这整个帖子充满了关于 HOW 素数在密码学中使用的解释,很难在这个帖子中找到任何人以简单的方式解释为什么素数。 ..很可能是因为每个人都把这些知识视为理所当然。
只有从外面看问题才会产生反应;但如果他们使用两个素数的和,为什么不创建任何两个素数可以产生的所有可能总和的列表?
在此site上有一个 455,042,511 素数列表,其中最高素数 9,987,500,000 ( 10 数字)。<登记/>
已知最大的素数(截至2015年2月) 2,功率为257,885,161 - 1 ,其中 17,425,170 位数。
这意味着有没有必要保留所有已知素数的列表,更不用说所有可能的总和。拿一个数字并检查它是否是一个素数更容易。
计算大素数本身就是一项艰巨的任务,因此逆向计算两个素数已经相互成倍增加,密码学家和数学家都会说足够强。今天。
答案 10 :(得分:3)
加密算法通常依赖于他们的安全性来解决“难题”。大多数现代算法似乎都使用非常大数的因子作为它们的难题 - 如果将两个大数相乘,计算它们的因子是“困难的”(即耗时)。如果这两个数字是素数,那么只有一个答案,这使得它更加困难,并且还保证当你找到答案时,它是正确的,而不是恰好给出相同结果的其他答案。
答案 11 :(得分:3)
我认为密码学中重要的不是素数本身,而是素数分解问题的难度
假设你有一个非常大的整数,它已知是两个素数m和n的乘积,很难找到m和n的东西。 RSA等算法取决于这一事实。
顺便说一句,有一个published paper算法可以在可接受的时间内使用量子计算机“解决”这个素数因子分解问题。因此,当量子计算机进入城镇时,密码学中较新的算法可能不再依赖于素数分解的这种“困难”:)
答案 12 :(得分:3)
因为分解算法在找到每个因素时会大大加快。使两个私钥都处于首位,确保找到的第一个因素也是最后一个因素。理想情况下,两个私钥的价值也几乎相等,因为只有较弱的密钥的强度很重要。
答案 13 :(得分:-1)
素数主要用于密码学,因为它在确定给定数字是否为素数时耗费大量时间。对于黑客来说,如果任何算法需要花费大量时间来破解代码,那么它们就变得毫无用处了