作为一个非密码学家,有一件事总是让我震惊:为什么使用质数如此重要?是什么让它们在密码学中如此特别?
有人能简单解释一下吗?(我知道有很多入门知识,应用密码学是圣经,但如我所说:我不打算实现我自己的加密算法,我发现的东西只是让我的大脑爆炸-请不要十页的数学公式)。
作为一个非密码学家,有一件事总是让我震惊:为什么使用质数如此重要?是什么让它们在密码学中如此特别?
有人能简单解释一下吗?(我知道有很多入门知识,应用密码学是圣经,但如我所说:我不打算实现我自己的加密算法,我发现的东西只是让我的大脑爆炸-请不要十页的数学公式)。
当前回答
我建议你读《代码中的数学之旅》这本书。这本书有一种很好的接地气的感觉,这是令人惊讶的,因为它是关于密码学的。这本书总结了Sarah Flannery从一个孩子学习谜题到在16岁时创建Cayley-Purser (CP)算法的旅程。它对单向函数、数论、质数以及它们与密码学的关系给出了令人惊讶的详细解释。
让这本书更具体地回答你的问题的是Sarah试图使用矩阵实现一个新的公钥算法。它比使用质数要快得多,但发现了一个可以利用它的循环漏洞。事实证明她的算法更适合作为私人加密机制。这本书是使用质数进行加密的一个很好的证明,因为它经受住了时间的考验和非常聪明的人的挑战。
其他回答
我建议你读《代码中的数学之旅》这本书。这本书有一种很好的接地气的感觉,这是令人惊讶的,因为它是关于密码学的。这本书总结了Sarah Flannery从一个孩子学习谜题到在16岁时创建Cayley-Purser (CP)算法的旅程。它对单向函数、数论、质数以及它们与密码学的关系给出了令人惊讶的详细解释。
让这本书更具体地回答你的问题的是Sarah试图使用矩阵实现一个新的公钥算法。它比使用质数要快得多,但发现了一个可以利用它的循环漏洞。事实证明她的算法更适合作为私人加密机制。这本书是使用质数进行加密的一个很好的证明,因为它经受住了时间的考验和非常聪明的人的挑战。
因为每找到一个因子,分解算法的速度就会大大加快。将两个私钥设置为素数可以确保找到的第一个因子也是最后一个因子。理想情况下,两个私钥的值也几乎相等,因为只有较弱的密钥的强度才重要。
质数本身并不重要,重要的是处理质数的算法。特别是求一个数(任何一个数)的因式。
如你所知,任何数字至少有两个因数。质数有一个独特的性质,它只有两个因数: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.
事实上,我们不知道如何有效地分解一个大数字,这赋予了密码算法的优势。如果有一天,有人想出了如何做到这一点,我们目前使用的所有加密算法都将过时。这仍然是一个开放的研究领域。
因为没有人知道一个快速的算法把一个整数分解成质因数。然而,检查一组质因数是否乘以某个整数是非常容易的。
为了更具体地说明RSA如何使用素数的性质,RSA算法主要依赖于欧拉定理,该定理指出,对于相对素数“a”和“N”,a^e等于1模N,其中e是N的欧拉totient函数。
质数是怎么进来的?为了有效地计算N的欧拉totient函数,需要知道N的质因数分解。在RSA算法中,对于一些质数“p”和“q”,N = pq,那么e = (p - 1)(q - 1) = N - p - q + 1。但是如果不知道p和q, e的计算是非常困难的。
更抽象地说,许多密码学协议使用各种活板门函数,这些函数易于计算但难以反演。数论是这类活板门函数的丰富来源(例如大素数的乘法),而素数是数论的绝对中心。