Lecture 9: Arithmetics II 1 Greatest Common Divisor

Total Page:16

File Type:pdf, Size:1020Kb

Lecture 9: Arithmetics II 1 Greatest Common Divisor DD2458, Problem Solving and Programming Under Pressure Lecture 9: Arithmetics II Date: 2008-11-10 Scribe(s): Marcus Forsell Stahre and David Schlyter Lecturer: Douglas Wikström This lecture is a continuation of the previous one, and covers modular arithmetic and topics from a branch of number theory known as elementary number theory. Also, some abstract algebra will be discussed. 1 Greatest Common Divisor Definition 1.1 If an integer d divides another integer n with no remainder, d is said to be a divisor of n. That is, there exists an integer a such that a · d = n. The notation for this is d | n. Definition 1.2 A common divisor of two non-zero integers m and n is a positive integer d, such that d | m and d | n. Definition 1.3 The Greatest Common Divisor (GCD) of two positive integers m and n is a common divisor d such that every other common divisor d0 | d. The notation for this is GCD(m, n) = d. That is, the GCD of two numbers is the greatest number that is a divisor of both of them. To get an intuition of what GCD is, let’s have a look at this example. Example Calculate GCD(9, 6). Say we have 9 black and 6 white blocks. We want to put the blocks in boxes, but every box has to be the same size, and can only hold blocks of the same color. Also, all the boxes must be full and as large as possible . Let’s for example say we choose a box of size 2: As we can see, the last box of black bricks is not full. It’s easy to see that it wouldn’t be, since 2 isn’t a divisor of 9. We know that 3 is a divisor of both 9 and 6, so we try this size of boxes. 1 2 DD2458 – Popup HT 2008 There is no larger number that is a divisor of both 9 and 6, so there can’t be any larger size of boxes that can be completely filled. We therefore come to the conclusion that GCD(9, 6) must be 3. From the third definition above, it’s not very hard to see that the Greatest Common Divisor is equivalent to the greatest common factor (not to be confused with prime factors!), since every other common divisor is smaller than GCD(m, n). The third definition also gives us an inefficient but simpler way than the above to find the Greatest Common Divisor of two numbers. First, find the prime factorizations of m and n. Take all the common prime factors and calculate the product of them. Let’s call this product d. Since both m and n is divisible by this d, and since every common divisor is a divisor of d, we get GCD(m, n) = d. Note that we know that every common divisor is a divisor of d since every common divisor can be written as a product of common prime factors. Example Calculate GCD(60, 42) 60 = 2 · 2 · 3 · 5 42 = 2 · 3 · 7 GCD(60, 42) = 2 · 3 = 6 Since finding the prime factorization of a number in general is hard, this is obviously not a very good way to calculate GCD, especially when m and n grows larger. There are much more efficient ways to calculate it, and we will talk about two of them in a moment, but first let’s have a look at a few useful properties of GCD. 1.1 Properties of GCD m and n are positive integers, and k is any integer. GCD(m, n) = GCD(n, m) (1) GCD(m, n) = GCD(m + k · n, n) (2) GCD(m, n) = GCD(m mod n, n) (3) GCD(m, n) = 2 · GCD(m/2, n/2) if m and n are even. (4) GCD(m, n) = GCD(m/2, n) if m is even and n is odd. (5) It is not hard too see that (1) is true, but the others might need some explanation. Property (2) is the basis for (3), so let’s start with (2). If x is a common divisor of m and n, then x | m and x | n. Therefore x | k · n, and thus x | (m + k · n). Arithmetics II 3 If x is a common divisor of (m + k · n) and n, then x | m + k · n and x | n. Therefore x | k · n, and thus x | (m + k · n) − k · n ⇔ x | m. From this we conclude that the set of common divisors to m and n is equal to the set of common divisors to m + k · n and n. This means that GCD(m, n) = GCD(m + k · n, n) We’ll now use this to show (3). We are going to use the fact that m mod n is defined as an integer 0 ≤ r < n such that for some integer a, m = a · n + r. From this we get r = m − a · n, and from (2) we know that GCD(m − a · n, n) = GCD(m, n). Since m and n both being even is equivalent to m and n having a common di- visor 2, we can move this factor outside of the GCD function, and still get the same result (4). By similar reasoning, if one of m and n are even and not the other one, 2 is a non-common divisor, and the result is not affected if it’s removed (5). 1.2 Euclidean Algorithm The Euclidean Algorithm makes use of property (3) from above. The idea is to reduce m and n repeatedly until one of them is zero. The original version of the algorithm actually used property (2) from above, and looks like this: Algorithm 1: Euclidean algorithm for finding the GCD Input: Two integers, m and n Output: The GCD of m and n EuclideanOld(m,n) (1) if m = 0 (2) return n (3) while n 6= 0 (4) if n > m (5) n ← n − m (6) else (7) m ← m − n (8) return m It uses the fact that GCD(m, n) = GCD(m − n, n), and simply repeats the op- eration until n hits zero. A more efficient way of doing this is of course to use (3). 4 DD2458 – Popup HT 2008 Algorithm 2: A better version of the Euclidean algorithm Input: Two integers, m and n Output: The GCD of m and n EuclideanIterative(m,n) (1) while n 6= 0 (2) t ← n (3) n ← m mod n (4) m ← t (5) return m This is very much the same idea as the previous one. GCD(m, n) = GCD(n, m mod n), repeat until n hits zero. Since modulo basically is repeated subtraction, this is very much the same algorithm, but several subtractions are “done at once”. The recursive version of the algorithm looks like this: Algorithm 3: A recursive version of Algorithm 2 Input: Two integers, m and n Output: The GCD of m and n EuclideanRecursive(m,n) (1) if n = 0 (2) return m (3) else (4) return EuclideanRecursive(n, m mod n) 1.3 Binary GCD Algorithm When using a computer to calculate GCD, the Binary GCD Algorithm (also known as Stein’s algorithm) might be preferable, since it makes good use of the binary representation of numbers that a computer uses. The idea is to use property (4) and (5) in order to step by step decrease the number of bits in the numbers. Arithmetics II 5 Algorithm 4: Stein’s algorithm for binary GCD calculation Input: Two integers, m and n Output: The GCD of m and n BinaryGCD(m,n) (1) if m = 0 or n = 0 (2) return 0 (3) s ← 0 (4) while m and n are even (5) m ← m/2 (6) n ← n/2 (7) s ← s + 1 (8) while n is even (9) n ← n/2 (10) while m 6= 0 (11) while m is even (12) m ← m/2 (13) if m < n (14) Swap(m,n) (15) m ← m − n (16) m ← m/2 (17) return 2s · n First, all the common factors 2 are removed. Since the numbers are stored in binary on a computer, this can be done with shift-operations, which are very fast. If n still has any factors 2, they can be discarded, as they’re not common factors. The main-loop of the algorithm is then entered. At this point there are no common factors 2 that are left, since they’ve all been removed. Therefore, m can be divided by 2 until it is odd. If it then is smaller than n, they are swapped. This is done so that the next operation never gives a negative result. When row 15 is about to be executed, both m and n are guaranteed to be odd numbers. And since the difference of two odd numbers always is even, row 15 always makes m into an even number. It can therefore be divided by two once again. The loop with shifting right and making even continues until m is zero, and then n is returned, but not before multiplying with the common factors 2 that were removed on rows 4 to 7. 2 Bézout’s identity Bézout’s identity states that for every pair of non-zero integers a and b, there exists integers x and y such that ax + by = GCD(a, b). These can be found using the Extended Euclidean Algorithm. Note though that there is an infinite number of x and y that satisfies this equation.
Recommended publications
  • An Analysis of Primality Testing and Its Use in Cryptographic Applications
    An Analysis of Primality Testing and Its Use in Cryptographic Applications Jake Massimo Thesis submitted to the University of London for the degree of Doctor of Philosophy Information Security Group Department of Information Security Royal Holloway, University of London 2020 Declaration These doctoral studies were conducted under the supervision of Prof. Kenneth G. Paterson. The work presented in this thesis is the result of original research carried out by myself, in collaboration with others, whilst enrolled in the Department of Mathe- matics as a candidate for the degree of Doctor of Philosophy. This work has not been submitted for any other degree or award in any other university or educational establishment. Jake Massimo April, 2020 2 Abstract Due to their fundamental utility within cryptography, prime numbers must be easy to both recognise and generate. For this, we depend upon primality testing. Both used as a tool to validate prime parameters, or as part of the algorithm used to generate random prime numbers, primality tests are found near universally within a cryptographer's tool-kit. In this thesis, we study in depth primality tests and their use in cryptographic applications. We first provide a systematic analysis of the implementation landscape of primality testing within cryptographic libraries and mathematical software. We then demon- strate how these tests perform under adversarial conditions, where the numbers being tested are not generated randomly, but instead by a possibly malicious party. We show that many of the libraries studied provide primality tests that are not pre- pared for testing on adversarial input, and therefore can declare composite numbers as being prime with a high probability.
    [Show full text]
  • Ary GCD-Algorithm in Rings of Integers
    On the l-Ary GCD-Algorithm in Rings of Integers Douglas Wikstr¨om Royal Institute of Technology (KTH) KTH, Nada, S-100 44 Stockholm, Sweden Abstract. We give an l-ary greatest common divisor algorithm in the ring of integers of any number field with class number 1, i.e., factorial rings of integers. The algorithm has a quadratic running time in the bit-size of the input using naive integer arithmetic. 1 Introduction The greatest common divisor (GCD) of two integers a and b is the largest in- teger d such that d divides both a and b. The problem of finding the GCD of two integers efficiently is one of the oldest problems studied in number theory. The corresponding problem can be considered for two elements α and β in any factorial ring R. Then λ ∈ R is a GCD of α and β if it divides both elements, and whenever λ ∈ R divides both α and β it also holds that λ divides λ. A pre- cise understanding of the complexity of different GCD algorithms gives a better understanding of the arithmetic in the domain under consideration. 1.1 Previous Work The Euclidean GCD algorithm is well known. The basic idea of Euclid is that if |a|≥|b|, then |a mod b| < |b|. Since we always have gcd(a, b)=gcd(a mod b, b), this means that we can replace a with a mod b without changing the GCD. Swapping the order of a and b does not change the GCD, so we can repeatedly reduce |a| or |b| until one becomes zero, at which point the other equals the GCD of the original inputs.
    [Show full text]
  • Enclave Security and Address-Based Side Channels
    Graz University of Technology Faculty of Computer Science Institute of Applied Information Processing and Communications IAIK Enclave Security and Address-based Side Channels Assessors: A PhD Thesis Presented to the Prof. Stefan Mangard Faculty of Computer Science in Prof. Thomas Eisenbarth Fulfillment of the Requirements for the PhD Degree by June 2020 Samuel Weiser Samuel Weiser Enclave Security and Address-based Side Channels DOCTORAL THESIS to achieve the university degree of Doctor of Technical Sciences; Dr. techn. submitted to Graz University of Technology Assessors Prof. Stefan Mangard Institute of Applied Information Processing and Communications Graz University of Technology Prof. Thomas Eisenbarth Institute for IT Security Universit¨atzu L¨ubeck Graz, June 2020 SSS AFFIDAVIT I declare that I have authored this thesis independently, that I have not used other than the declared sources/resources, and that I have explicitly indicated all material which has been quoted either literally or by content from the sources used. The text document uploaded to TUGRAZonline is identical to the present doctoral thesis. Date, Signature SSS Prologue Everyone has the right to life, liberty and security of person. Universal Declaration of Human Rights, Article 3 Our life turned digital, and so did we. Not long ago, the globalized commu- nication that we enjoy today on an everyday basis was the privilege of a few. Nowadays, artificial intelligence in the cloud, smartified handhelds, low-power Internet-of-Things gadgets, and self-maneuvering objects in the physical world are promising us unthinkable freedom in shaping our personal lives as well as society as a whole. Sadly, our collective excitement about the \new", the \better", the \more", the \instant", has overruled our sense of security and privacy.
    [Show full text]
  • An O (M (N) Log N) Algorithm for the Jacobi Symbol
    An O(M(n) log n) algorithm for the Jacobi symbol Richard P. Brent1 and Paul Zimmermann2 1 Australian National University, Canberra, Australia 2 INRIA Nancy - Grand Est, Villers-l`es-Nancy, France 28 January 2010 Submitted to ANTS IX Abstract. The best known algorithm to compute the Jacobi symbol of two n-bit integers runs in time O(M(n) log n), using Sch¨onhage’s fast continued fraction algorithm combined with an identity due to Gauss. We give a different O(M(n) log n) algorithm based on the binary recursive gcd algorithm of Stehl´eand Zimmermann. Our implementation — which to our knowledge is the first to run in time O(M(n) log n) — is faster than GMP’s quadratic implementation for inputs larger than about 10000 decimal digits. 1 Introduction We want to compute the Jacobi symbol3 (b a) for n-bit integers a and b, where a is odd positive. We give three| algorithms based on the 2-adic gcd from Stehl´eand Zimmermann [13]. First we give an algorithm whose worst-case time bound is O(M(n)n2) = O(n3); we call this the cubic algorithm although this is pessimistic since the e algorithm is quadratic on average as shown in [5], and probably also in the worst case. We then show how to reduce the worst-case to 2 arXiv:1004.2091v2 [cs.DS] 2 Jun 2010 O(M(n)n) = O(n ) by combining sequences of “ugly” iterations (defined in Section 1.1) into one “harmless” iteration. Finally, we e obtain an algorithm with worst-case time O(M(n) log n).
    [Show full text]
  • A Binary Recursive Gcd Algorithm
    A Binary Recursive Gcd Algorithm Damien Stehle´ and Paul Zimmermann LORIA/INRIA Lorraine, 615 rue du jardin botanique, BP 101, F-54602 Villers-l`es-Nancy, France, fstehle,[email protected] Abstract. The binary algorithm is a variant of the Euclidean algorithm that performs well in practice. We present a quasi-linear time recursive algorithm that computes the greatest common divisor of two integers by simulating a slightly modified version of the binary algorithm. The structure of our algorithm is very close to the one of the well-known Knuth-Sch¨onhage fast gcd algorithm; although it does not improve on its O(M(n) log n) complexity, the description and the proof of correctness are significantly simpler in our case. This leads to a simplification of the implementation and to better running times. 1 Introduction Gcd computation is a central task in computer algebra, in particular when com- puting over rational numbers or over modular integers. The well-known Eu- clidean algorithm solves this problem in time quadratic in the size n of the inputs. This algorithm has been extensively studied and analyzed over the past decades. We refer to the very complete average complexity analysis of Vall´ee for a large family of gcd algorithms, see [10]. The first quasi-linear algorithm for the integer gcd was proposed by Knuth in 1970, see [4]: he showed how to calculate the gcd of two n-bit integers in time O(n log5 n log log n). The complexity of this algorithm was improved by Sch¨onhage [6] to O(n log2 n log log n).
    [Show full text]
  • Euclid's Algorithm
    4 Euclid’s algorithm In this chapter, we discuss Euclid’s algorithm for computing greatest common divisors, which, as we will see, has applications far beyond that of just computing greatest common divisors. 4.1 The basic Euclidean algorithm We consider the following problem: given two non-negative integers a and b, com- pute their greatest common divisor, gcd(a, b). We can do this using the well-known Euclidean algorithm, also called Euclid’s algorithm. The basic idea is the following. Without loss of generality, we may assume that a ≥ b ≥ 0. If b = 0, then there is nothing to do, since in this case, gcd(a, 0) = a. Otherwise, b > 0, and we can compute the integer quotient q := ba=bc and remain- der r := a mod b, where 0 ≤ r < b. From the equation a = bq + r, it is easy to see that if an integer d divides both b and r, then it also divides a; like- wise, if an integer d divides a and b, then it also divides r. From this observation, it follows that gcd(a, b) = gcd(b, r), and so by performing a division, we reduce the problem of computing gcd(a, b) to the “smaller” problem of computing gcd(b, r). The following theorem develops this idea further: Theorem 4.1. Let a, b be integers, with a ≥ b ≥ 0. Using the division with remainder property, define the integers r0, r1,..., rλ+1 and q1,..., qλ, where λ ≥ 0, as follows: 74 4.1 The basic Euclidean algorithm 75 a = r0, b = r1, r0 = r1q1 + r2 (0 < r2 < r1), .
    [Show full text]
  • Independence of the Miller-Rabin and Lucas Probable Prime Tests
    Independence of the Miller-Rabin and Lucas Probable Prime Tests Alec Leng Mentor: David Corwin March 30, 2017 1 Abstract In the modern age, public-key cryptography has become a vital component for se- cure online communication. To implement these cryptosystems, rapid primality test- ing is necessary in order to generate keys. In particular, probabilistic tests are used for their speed, despite the potential for pseudoprimes. So, we examine the commonly used Miller-Rabin and Lucas tests, showing that numbers with many nonwitnesses are usually Carmichael or Lucas-Carmichael numbers in a specific form. We then use these categorizations, through a generalization of Korselt’s criterion, to prove that there are no numbers with many nonwitnesses for both tests, affirming the two tests’ relative independence. As Carmichael and Lucas-Carmichael numbers are in general more difficult for the two tests to deal with, we next search for numbers which are both Carmichael and Lucas-Carmichael numbers, experimentally finding none less than 1016. We thus conjecture that there are no such composites and, using multi- variate calculus with symmetric polynomials, begin developing techniques to prove this. 2 1 Introduction In the current information age, cryptographic systems to protect data have become a funda- mental necessity. With the quantity of data distributed over the internet, the importance of encryption for protecting individual privacy has greatly risen. Indeed, according to [EMC16], cryptography is allows for authentication and protection in online commerce, even when working with vital financial information (e.g. in online banking and shopping). Now that more and more transactions are done through the internet, rather than in person, the importance of secure encryption schemes is only growing.
    [Show full text]
  • With Animation
    Integer Arithmetic Arithmetic in Finite Fields Arithmetic of Elliptic Curves Public-key Cryptography Theory and Practice Abhijit Das Department of Computer Science and Engineering Indian Institute of Technology Kharagpur Chapter 3: Algebraic and Number-theoretic Computations Public-key Cryptography: Theory and Practice Abhijit Das Integer Arithmetic GCD Arithmetic in Finite Fields Modular Exponentiation Arithmetic of Elliptic Curves Primality Testing Integer Arithmetic Public-key Cryptography: Theory and Practice Abhijit Das Integer Arithmetic GCD Arithmetic in Finite Fields Modular Exponentiation Arithmetic of Elliptic Curves Primality Testing Integer Arithmetic In cryptography, we deal with very large integers with full precision. Public-key Cryptography: Theory and Practice Abhijit Das Integer Arithmetic GCD Arithmetic in Finite Fields Modular Exponentiation Arithmetic of Elliptic Curves Primality Testing Integer Arithmetic In cryptography, we deal with very large integers with full precision. Standard data types in programming languages cannot handle big integers. Public-key Cryptography: Theory and Practice Abhijit Das Integer Arithmetic GCD Arithmetic in Finite Fields Modular Exponentiation Arithmetic of Elliptic Curves Primality Testing Integer Arithmetic In cryptography, we deal with very large integers with full precision. Standard data types in programming languages cannot handle big integers. Special data types (like arrays of integers) are needed. Public-key Cryptography: Theory and Practice Abhijit Das Integer Arithmetic GCD Arithmetic in Finite Fields Modular Exponentiation Arithmetic of Elliptic Curves Primality Testing Integer Arithmetic In cryptography, we deal with very large integers with full precision. Standard data types in programming languages cannot handle big integers. Special data types (like arrays of integers) are needed. The arithmetic routines on these specific data types have to be implemented.
    [Show full text]
  • Prime Numbers and Discrete Logarithms
    Lecture 11: Prime Numbers And Discrete Logarithms Lecture Notes on “Computer and Network Security” by Avi Kak ([email protected]) February 25, 2021 12:20 Noon ©2021 Avinash Kak, Purdue University Goals: • Primality Testing • Fermat’s Little Theorem • The Totient of a Number • The Miller-Rabin Probabilistic Algorithm for Testing for Primality • Python and Perl Implementations for the Miller-Rabin Primal- ity Test • The AKS Deterministic Algorithm for Testing for Primality • Chinese Remainder Theorem for Modular Arithmetic with Large Com- posite Moduli • Discrete Logarithms CONTENTS Section Title Page 11.1 Prime Numbers 3 11.2 Fermat’s Little Theorem 5 11.3 Euler’s Totient Function 11 11.4 Euler’s Theorem 14 11.5 Miller-Rabin Algorithm for Primality Testing 17 11.5.1 Miller-Rabin Algorithm is Based on an Intuitive Decomposition of 19 an Even Number into Odd and Even Parts 11.5.2 Miller-Rabin Algorithm Uses the Fact that x2 =1 Has No 20 Non-Trivial Roots in Zp 11.5.3 Miller-Rabin Algorithm: Two Special Conditions That Must Be 24 Satisfied By a Prime 11.5.4 Consequences of the Success and Failure of One or Both Conditions 28 11.5.5 Python and Perl Implementations of the Miller-Rabin 30 Algorithm 11.5.6 Miller-Rabin Algorithm: Liars and Witnesses 39 11.5.7 Computational Complexity of the Miller-Rabin Algorithm 41 11.6 The Agrawal-Kayal-Saxena (AKS) Algorithm 44 for Primality Testing 11.6.1 Generalization of Fermat’s Little Theorem to Polynomial Rings 46 Over Finite Fields 11.6.2 The AKS Algorithm: The Computational Steps 51 11.6.3 Computational Complexity of the AKS Algorithm 53 11.7 The Chinese Remainder Theorem 54 11.7.1 A Demonstration of the Usefulness of CRT 58 11.8 Discrete Logarithms 61 11.9 Homework Problems 65 Computer and Network Security by Avi Kak Lecture 11 Back to TOC 11.1 PRIME NUMBERS • Prime numbers are extremely important to computer security.
    [Show full text]
  • Further Analysis of the Binary Euclidean Algorithm
    Further analysis of the Binary Euclidean algorithm Richard P. Brent1 Oxford University Technical Report PRG TR-7-99 4 November 1999 Abstract The binary Euclidean algorithm is a variant of the classical Euclidean algorithm. It avoids multiplications and divisions, except by powers of two, so is potentially faster than the classical algorithm on a binary machine. We describe the binary algorithm and consider its average case behaviour. In particular, we correct some errors in the literature, discuss some recent results of Vall´ee, and describe a numerical computation which supports a conjecture of Vall´ee. 1 Introduction In 2 we define the binary Euclidean algorithm and mention some of its properties, history and § generalisations. Then, in 3 we outline the heuristic model which was first presented in 1976 [4]. § Some of the results of that paper are mentioned (and simplified) in 4. § Average case analysis of the binary Euclidean algorithm lay dormant from 1976 until Brigitte Vall´ee’s recent analysis [29, 30]. In 5–6 we discuss Vall´ee’s results and conjectures. In 8 we §§ § give some numerical evidence for one of her conjectures. Some connections between Vall´ee’s results and our earlier results are given in 7. § Finally, in 9 we take the opportunity to point out an error in the 1976 paper [4]. Although § the error is theoretically significant and (when pointed out) rather obvious, it appears that no one noticed it for about twenty years. The manner of its discovery is discussed in 9. Some open § problems are mentioned in 10. § 1.1 Notation lg(x) denotes log2(x).
    [Show full text]
  • GCD Computation of N Integers
    GCD Computation of n Integers Shri Prakash Dwivedi ∗ Abstract Greatest Common Divisor (GCD) computation is one of the most important operation of algo- rithmic number theory. In this paper we present the algorithms for GCD computation of n integers. We extend the Euclid's algorithm and binary GCD algorithm to compute the GCD of more than two integers. 1 Introduction Greatest Common Divisor (GCD) of two integers is the largest integer that divides both integers. GCD computation has applications in rational arithmetic for simplifying numerator and denomina- tor of a rational number. Other applications of GCD includes integer factoring, modular arithmetic and random number generation. Euclid’s algorithm is one of the most important method to com- pute the GCD of two integers. Lehmer [5] proposed the improvement over Euclid’s algorithm for large integers. Blankinship [2] described a new version of Euclidean algorithm. Stein [7] described the binary GCD algorithm which uses only division by 2 (considered as shift operation) and sub- tract operation instead of expensive multiplication and division operations. Asymptotic complexity of Euclid’s, binary GCD and Lehmer’s algorithms remains O(n2) [4]. GCD of two integers a and b can be computed in O((log a)(log b)) bit operations [3]. Knuth and Schonhage proposed sub- quadratic algorithm for GCD computation. Stehle and Zimmermann [6] described binary recursive GCD algorithm. Sorenson proposed the generalization of the binary and left-shift binary algo- rithm [8]. Asymptotically fastest GCD algorithms have running time of O(n log2 n log log n) bit operations [1]. In this paper we describe the algorithms for GCD computation of n integers.
    [Show full text]
  • Efficient Modular Division Implementation
    Efficient Modular Division Implementation –ECC over GF(p) Affine Coordinates Application– Guerric Meurice de Dormale, Philippe Bulens, Jean-Jacques Quisquater Universit´eCatholique de Louvain, UCL Crypto Group, Laboratoire de Micro´electronique (DICE), Place du Levant 3, B-1348 Louvain-La-Neuve, Belgium. {gmeurice,bulens,quisquater}@dice.ucl.ac.be Abstract. Elliptic Curve Public Key Cryptosystems (ECPKC) are be- coming increasingly popular for use in mobile appliances where band- width and chip area are strongly constrained. For the same level of secu- rity, ECPKC use much smaller key length than the commonly used RSA. The underlying operation of affine coordinates elliptic curve point mul- tiplication requires modular multiplication, division/inversion and ad- dition/substraction. To avoid the critical division/inversion operation, other coordinate systems may be chosen, but this implies more oper- ations and a strong increase in memory requirements. So, in area and memory constrained devices, affine coordinates should be preferred, es- pecially over GF(p). This paper presents a powerful reconfigurable hardware implementa- tion of the Takagi modular divider algorithm. Resulting 256-bit circuits achieved a ratio throughput/area improved by at least 900 % of the only known design in Xilinx Virtex-E technology. Comparison with typical modular multiplication performance is carried out to suggest the use of affine coordinates also for speed reason. 1 Introduction Modular arithmetic plays an important role in cryptographic systems. In mo- bile appliances, very efficient implementations are needed to meet the cost con- straints while preserving good computing performances. In this field, modular multiplication has received great attention through different proposals: Mong- tomery multiplication, Quisquater algorithm, Brickell method and some others.
    [Show full text]