作为一个非密码学家,有一件事总是让我震惊:为什么使用质数如此重要?是什么让它们在密码学中如此特别?

有人能简单解释一下吗?(我知道有很多入门知识,应用密码学是圣经,但如我所说:我不打算实现我自己的加密算法,我发现的东西只是让我的大脑爆炸-请不要十页的数学公式)。


当前回答

这里有一个非常简单和常见的例子。

RSA加密算法通常用于安全的商业网站,它是基于这样一个事实:取两个(非常大的)素数并将它们相乘很容易,而做相反的事情则非常困难——这意味着:取一个非常大的数,给定它只有两个素数因子,并找到它们。

其他回答

这里有一个非常简单和常见的例子。

RSA加密算法通常用于安全的商业网站,它是基于这样一个事实:取两个(非常大的)素数并将它们相乘很容易,而做相反的事情则非常困难——这意味着:取一个非常大的数,给定它只有两个素数因子,并找到它们。

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

给你的另一个资源。现在安全了!第30集(约30分钟的播客,链接到文本)讨论了密码学问题,并解释了为什么质数很重要。

质数本身并不重要,重要的是处理质数的算法。特别是求一个数(任何一个数)的因式。

如你所知,任何数字至少有两个因数。质数有一个独特的性质,它只有两个因数:1和质数本身。

The reason factoring is so important is mathematicians and computer scientists don't know how to factor a number without simply trying every possible combination. That is, first try dividing by 2, then by 3, then by 4, and so forth. If you try to factor a prime number--especially a very large one--you'll have to try (essentially) every possible number between 2 and that large prime number. Even on the fastest computers, it will take years (even centuries) to factor the kinds of prime numbers used in cryptography.

事实上,我们不知道如何有效地分解一个大数字,这赋予了密码算法的优势。如果有一天,有人想出了如何做到这一点,我们目前使用的所有加密算法都将过时。这仍然是一个开放的研究领域。

我不是数学家或密码学家,所以这里有一个外行的观察(没有花哨的方程,抱歉)。

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

只有从外部看问题才能产生这样的反应;但是如果他们使用两个质数的和,为什么不创建一个列表,列出任何两个质数可以产生的所有可能的和呢?

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

计算大质数本身就是一项艰巨的任务,所以密码学家和数学家都会说,反向计算两个相互相乘的质数已经足够困难了……今天。