Lecture03-modarith

Lecture03-modarith - This work is licensed under a Creative...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. CS 312: Algorithm Analysis Lecture #3: Algorithms for Modular Arithmetic, Modular Exponentiation Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warnick Announcements § HW #1 Due Now § FERPA and waiver § Issue: if you can’t run VS in the CS lab, § § Backup important data in ~/.windows_profile Then remove it (from a Linux machine on the command line) Objectives § Add the Max Rule to your asymptotic analysis toolbox § Review modular arithmetic § Discuss and analyze algorithms for: § § modular arithmetic modular exponentiation Max. rule § Another useful rule for Asymptotic analysis. O( f(n) + g(n) ) = O( max( f(n), g(n) ) ) § Examples: Max. rule § Another useful rule for Asymptotic analysis. O( f(n) + g(n) ) = O( max( f(n), g(n) ) ) § Examples: Goal for Ch. 1 § § Appreciate the role of theoretical analysis in the security of RSA. Requires: Solve, analyze, and use (!) two important and related problems: § § Factoring: Given a number N, express it as a product of its prime numbers Primality Testing: Given a number N, determine whether it is prime Algorithms for Integer Arithmetic Algorithms for Integer Arithmetic § Addition § Multiplication § Division Algorithms for Integer Arithmetic Modular Arithmetic Congruency An important distinction § Congruency § Equality, using the modulus operator Properties § Associativity: § Commutativity: § Distributivity: Substitution Rule Substitution Rule Useful Consequence xy (x mod z)y § (mod z) xy mod z = (x mod z)y mod z Example: Useful Consequence xy (x mod z)y § (mod z) xy mod z = (x mod z)y mod z Example: Modular Addition Modular Addition Modular Multiplication Modular Multiplication Goal: Modular Exponentiation § We need to compute xy mod N for values of x, y, and N that are several hundred bits long. § Can we do so quickly? Sequential Exponentiation Describe a simple algorithm for doing exponentiation: function seqexp (x, y) Input: An n-bit integer x and a non-negative integer exponent y (arbitrarily large) Output: xy if y=0: return 1 r=x for i = 1 to y-1 do r=rx Analysis of Sequential Exponentiation function seqexp (x, y) Input: An n-bit integer x and a non-negative integer exponent y (arbitrarily large) Output: xy if y=0: return 1 r=x for i = 1 to y-1 do r=rx return r Modular Exponentiation, Take I function modexp (x, y, N) Input: Two n-bit integers x and N, a non-negative integer exponent y (arbitrarily large) Output: xy mod N if y=0: return 1 r = x mod N for i = 1 to y-1 do r = (r x) mod N return r Modular Exponentiation, Take I function modexp (x, y, N) Input: Two n-bit integers x and N, a non-negative integer exponent y (arbitrarily large) Output: xy mod N if y=0: return 1 r = x mod N for i = 1 to y-1 do r = (r x) mod N return r Another Idea § § § § Represent y (the exponent) in binary Then break down xy into factors using the non-zero bits of y Also: compute the factors using repeated squaring Reduce factors using substitution rule Modular Exponentiation, Take II function modexp (x, y, N) Input: Two n-bit integers x and N, a non-negative integer exponent y (arbitrarily large) Output: xy mod N Recursive call if y=0: return 1 z = modexp(x, floor(y/2), N) if y is even: return z2 mod N else: return x z2 mod N Right shift Multiplication Analysis of Modular Exponentiation § § § § Each multiplication is Θ(n2) Each modular reduction is Θ(n2) There are log(y)=m of them Thus modular exponentiation is in Θ(n2 log y) = Θ(n2 m) function modexp (x, y, N) if y=0: return 1 z = modexp(x, floor(y/2), N) if y is even: return z2 mod N else: return x z2 mod N Modular Exponentiation (II), Iterative Formulation function modexp (x, y, N) Input: Two n-bit integers x and N, a non-negative integer exponent y (arbitrarily large) Output: xy mod N if y = 0: return 1 i = y; r = 1; z = x mod N while i > 0 if i is odd: r = r z mod N z = z2 mod N i = floor(i/2) Modular Exponentiation § § xy mod N Key Insights: 1. 2. 3. Exponent y can be represented in binary Problem can be factored into one factor per binary digit Each factor can be reduced mod N (substitution rule) Example We’re employing a little more cleverness than the algorithm. Example We’re employing a little more cleverness than the algorithm. Example worked by Strictly Tracing the Algorithm function modexp (x, y, N) Input: Two n-bit integers x and N, an integer exponent y (arbitrarily large) Output: xy mod N 2^125 mod 127 modexp(2,125,127) x=2, y=125, N=127 if y = 0: return 1 i = y; r = 1; z = x mod N while i > 0 if i is odd: r = r z mod N z = z2 mod N i = floor(i/2) return r i=125, r=1, z = 2 mod 127 = 2 r = 1*2 mod 127 = 2 z = 2^2 mod 127 = 4 i = 62 z = 4^2 mod 127 = 16 i = 31 r = 2 * 16 mod 127 = 32 z = 16^2 mod 127 = 2 * 128 mod 127 = 2 i = 15 r = 32 * 2 mod 127 = 64 z = 2^2 mod 127 = 4 i=7 Example #2 function modexp (x, y, N) Input: Two n-bit integers x and N, an integer exponent y (arbitrarily large) Output: xy mod N 310 mod10 if y = 0: return 1 i = y; r = 1; z = x mod N while i > 0 if i is odd: r = r z mod N z = z2 mod N i = floor(i/2) return r z = 32 mod10 = 9 x = 3, y = 10, N = 10 i = 10, r = 1, z = 3mod10 = 3 i=5 r = 1× 9 mod10 = 9 z = 92 mod10 = 81mod10 = 1 i=2 z = 12 mod10 = 1 i =1 r = 9 ×1mod10 = 9 z =1 i=0 return 9 Strictly tracing the algorithm. Example #2 function modexp (x, y, N) Input: Two n-bit integers x and N, an integer exponent y (arbitrarily large) Output: xy mod N 310 mod10 if y = 0: return 1 i = y; r = 1; z = x mod N while i > 0 if i is odd: r = r z mod N z = z2 mod N i = floor(i/2) return r z = 32 mod10 = 9 x = 3, y = 10, N = 10 i = 10, r = 1, z = 3mod10 = 3 i=5 r = 1× 9 mod10 = 9 z = 92 mod10 = 81mod10 = 1 i=2 z = 12 mod10 = 1 i =1 r = 9 ×1mod10 = 9 z =1 i=0 return 9 Example 20 3 mod 10 Needed: two volunteers: Volunteer A: use our final modexp() to compute it. Volunteer B: compute 320 then reduce mod 10 Exponentiation in Mod Arithmetic § The key point is that xy mod N is easy § modexp is in Θ(n2 log y) § § § seqexp required y-1 multiplications When x, y, and N are 200 digit numbers § § § § In fact, it requires about 1.5 log2 y multiplications for typical y Assume 1 multiplication of two 200 digit numbers takes 0.001 seconds modexp typically takes about 1 second seqexp would require 10179 times the Age of the Universe! Only works when y is an integer. Assignment § § § Read: Section 1.4 HW #2: 1.25, then redo 1.25 but replace 125 with 126 for the exponent Recommended: Implement modular exponentiation now as a step to finishing Project #1 Next § Primality Testing ...
View Full Document

This note was uploaded on 03/02/2012 for the course C S 312 taught by Professor Jones,m during the Winter '08 term at BYU.

Ask a homework question - tutors are online