52 Things: Number 37: The Number Field Sieve
52 Things: Number 37: The Number Field Sieve
52件事:数字37:数字字段筛选
This is the latest in a series of blog posts to address the list of '52 Things Every PhD Student Should Know To Do Cryptography': a set of questions compiled to give PhD candidates a sense of what they should know by the end of their first year. In this week, we continue the mathematical attacks with the NFS algorithm.
这是一系列博客文章中的最新一篇,旨在解决“每个博士生在做密码学时应该知道的52件事”:这是一组问题,旨在让博士生在第一年结束时了解他们应该知道什么。本周,我们将继续使用NFS算法进行数学攻击。
这是一系列博客文章中的最新一篇,旨在解决“每个博士生在做密码学时应该知道的52件事”:这是一组问题,旨在让博士生在第一年结束时了解他们应该知道什么。本周,我们将继续使用NFS算法进行数学攻击。
The Number Field Sieve (NFS) is currently the most efficient known factoring algorithm. Its running time depends on the size of the number to be factored but not the size of its factors. NFS based on the idea of factoring by congruent squares: given a large integer N, we want to find two integers x and y such that x2=y2(mod N). Then hopefully we have gcd(x−y,N) is a non-trivial factor of N.
数字域筛(NFS)是目前已知的最有效的因子分解算法。它的运行时间取决于要考虑的数字的大小,而不是因素的大小。NFS基于全等平方分解的思想:给定一个大整数 N ,我们想找到两个整数 x 和 y ,这样#3。那么希望我们有#4,这是 N 的一个不平凡的因素。
We roughly outline how NFS works. The first step of the algorithm is to choose two monic, irreducible polynomials f1 and f2 of small degrees d1 and d2. Let m∈Z be a common root of the two polynomials such that f1(m)=f2(m)=0(mod N). Let θ1,θ2∈C be two complex roots of f1 and f2 respectively, we construct two algebraic number fields Z[θi]=Q(θi), where i=1,2. Actually this gives us two number rings with multiplication defined as polynomial multiplication. Then we define the homomorphisms ϕi: Z[θi]→ZN, which maps θi to m (where i=1,2). The NFS algorithm aims to find two squares γ21 and γ22 from each of the two number rings, such that γ21=∏(a,b)∈S(a−b⋅θ1) and γ22=∏(a,b)∈S(a−b⋅θ2), where γ1∈Z[θ1], γ2∈Z[θ2] and S is a finite set of coprime integer pairs (a,b). In order to find such a set S, we will sieve the elements of the form a−b⋅θi for pairs of (a,b) such that a−b⋅θi is smooth over some algebraic factorbase. How fast we can find the set S is the key to the efficiency of the algorithm. Next, we need to extract the square root of γ2i to obtain γi, where i=1,2. The methods of Couveignes [1] and Montgomery [2] can be used here. Once the two square roots are calculated, we apply the homomorphisms to have ϕ1(γ1)2=ϕ2(γ2)2(mod N) and expect to have gcd(N,ϕ1(γ1)−ϕ2(γ2))≠1 or N is a non-trivial factor of N.
我们大致概述了NFS的工作原理。该算法的第一步是选择两个单次不可约多项式 f1 和 f2 ,分别为小次 d1 和 d2 。设#4是两个多项式的公根,使得 f1(m)=f2(m)=0(mod N) 。设 θ1,θ2∈C 分别是 f1 和 f2 的两个复数根,我们构造了两个代数数域 Z[θi]=Q(θi) ,其中 i=1,2 实际上这给了我们两个乘法定义为多项式乘法的数环。然后我们定义同态 ϕi: Z[θi]→ZN ,它将 θi 映射到 m (其中 i=1,2 )。NFS算法旨在从两个数字环中的每一个找到两个正方形 γ21 和 γ22 ,使得 γ21=∏(a,b)∈S(a−b⋅θ1) 和 γ22=∏(a,b)∈S(a−b⋅θ2) ,其中 γ1∈Z[θ1] 、 γ2∈Z[θ2] 和 S 是互质整数对 (a,b) 的有限集合。为了找到这样的集合 S ,我们将对 (a,b) 的对筛选形式为 a−b⋅θi 的元素,使得 a−b⋅θi 在一些代数阶基上是光滑的。我们能多快地找到集合 S 是算法效率的关键。接下来,我们需要提取 γ2i 的平方根来获得 γi ,其中 i=1,2 。这里可以使用Couveignes[1]和Montgomery[2]的方法。一旦计算出两个平方根,我们将同态应用于具有 ϕ1(γ1)2=ϕ2(γ2)2(mod N) ,并期望具有 gcd(N,ϕ1(γ1)−ϕ2(γ2))≠1 或 N 是 N 的非平凡因子。
数字域筛(NFS)是目前已知的最有效的因子分解算法。它的运行时间取决于要考虑的数字的大小,而不是因素的大小。NFS基于全等平方分解的思想:给定一个大整数 N ,我们想找到两个整数 x 和 y ,这样#3。那么希望我们有#4,这是 N 的一个不平凡的因素。
We roughly outline how NFS works. The first step of the algorithm is to choose two monic, irreducible polynomials f1 and f2 of small degrees d1 and d2. Let m∈Z be a common root of the two polynomials such that f1(m)=f2(m)=0(mod N). Let θ1,θ2∈C be two complex roots of f1 and f2 respectively, we construct two algebraic number fields Z[θi]=Q(θi), where i=1,2. Actually this gives us two number rings with multiplication defined as polynomial multiplication. Then we define the homomorphisms ϕi: Z[θi]→ZN, which maps θi to m (where i=1,2). The NFS algorithm aims to find two squares γ21 and γ22 from each of the two number rings, such that γ21=∏(a,b)∈S(a−b⋅θ1) and γ22=∏(a,b)∈S(a−b⋅θ2), where γ1∈Z[θ1], γ2∈Z[θ2] and S is a finite set of coprime integer pairs (a,b). In order to find such a set S, we will sieve the elements of the form a−b⋅θi for pairs of (a,b) such that a−b⋅θi is smooth over some algebraic factorbase. How fast we can find the set S is the key to the efficiency of the algorithm. Next, we need to extract the square root of γ2i to obtain γi, where i=1,2. The methods of Couveignes [1] and Montgomery [2] can be used here. Once the two square roots are calculated, we apply the homomorphisms to have ϕ1(γ1)2=ϕ2(γ2)2(mod N) and expect to have gcd(N,ϕ1(γ1)−ϕ2(γ2))≠1 or N is a non-trivial factor of N.
我们大致概述了NFS的工作原理。该算法的第一步是选择两个单次不可约多项式 f1 和 f2 ,分别为小次 d1 和 d2 。设#4是两个多项式的公根,使得 f1(m)=f2(m)=0(mod N) 。设 θ1,θ2∈C 分别是 f1 和 f2 的两个复数根,我们构造了两个代数数域 Z[θi]=Q(θi) ,其中 i=1,2 实际上这给了我们两个乘法定义为多项式乘法的数环。然后我们定义同态 ϕi: Z[θi]→ZN ,它将 θi 映射到 m (其中 i=1,2 )。NFS算法旨在从两个数字环中的每一个找到两个正方形 γ21 和 γ22 ,使得 γ21=∏(a,b)∈S(a−b⋅θ1) 和 γ22=∏(a,b)∈S(a−b⋅θ2) ,其中 γ1∈Z[θ1] 、 γ2∈Z[θ2] 和 S 是互质整数对 (a,b) 的有限集合。为了找到这样的集合 S ,我们将对 (a,b) 的对筛选形式为 a−b⋅θi 的元素,使得 a−b⋅θi 在一些代数阶基上是光滑的。我们能多快地找到集合 S 是算法效率的关键。接下来,我们需要提取 γ2i 的平方根来获得 γi ,其中 i=1,2 。这里可以使用Couveignes[1]和Montgomery[2]的方法。一旦计算出两个平方根,我们将同态应用于具有 ϕ1(γ1)2=ϕ2(γ2)2(mod N) ,并期望具有 gcd(N,ϕ1(γ1)−ϕ2(γ2))≠1 或 N 是 N 的非平凡因子。
The Working Class Must Lead!