modular arithmetic and the rsa cryptosystem

Post on 24-Jan-2016

76 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Modular Arithmetic and the RSA Cryptosystem. p-1. 1. ´ p. MAX(a,b) + MIN(a,b) = a+b. n|m means that m is a an integer multiple of n. We say that “n divides m”. True: 5|25 2|-66 7|35, False: 4|5 8|2. Greatest Common Divisor: GCD(x,y) = greatest k ¸ 1 s.t. k|x and k|y. - PowerPoint PPT Presentation

TRANSCRIPT

Modular Arithmetic and the RSA Cryptosystem

Great Theoretical Ideas In Computer Science

Steven Rudich

CS 15-251 Spring 2005

Lecture 8 Feb 3, 2005 Carnegie Mellon University

p-1

´p 1

MAX(a,b) + MIN(a,b) = a+b

n|m means that m is a an integer multiple of n.

We say that “n divides m”.

True: 5|25 2|-66 7|35,False: 4|5 8|2

Greatest Common Divisor:

GCD(x,y) = greatest k¸1 s.t. k|x and k|y.

GCD: Greatest Common Divisor

What is the GCD of 12 and 18?12 = 22 * 3 16 = 2*32

Common factors: 21 and 31

Answer: 6

Least Common Multiple:

LCM(x,y) = smallest k¸1 s.t. x|k and y|k..

Prop: GCD(x,y) = xy/LCM(x,y)LCM(x,y) = xy/GCD(x,y)

GCD(x,y) = xy/LCM(x,y)LCM(x,y) = xy/GCD(x,y)

x = 22*3 = 12; y= 32*5 = 45

GCD(12,45) = 3LCM(12,45) = 22*32*5 =180

x*y = 540

GCD(x,y) * LCM(x,y) = xy

MAX(a,b) + MIN(a,b) = a+b

(a mod n) means the remainder when a is

divided by n.

If ad + r = n, 0· r < nThen r = (a mod n)and d = (a div n)

Modular equivalence of integers a and b:

a ´ b [mod n]a ´n b

“a and b are equivalent modulo n”

iff (a mod n) = (b mod n)iff n|(a-b)

31 equals 81 modulo 2

31 ´ 81 [mod 2]

31 ´2 81

(31 mod 2) = 1 = (81 mod 2)

2|(31- 81)

´n is an equivalence relation

In other words,

Reflexive: a ´n a

Symmetric: (a ´n b) ) (b ´n a)

Transitive: (a ´n b and b ´n c) ) (a ´n c)

a ´n b $ n|(a-b)“a and b are equivalent

modulo n”

´n induces a natural partition of the integers into n classes:

a and b are said to be in the same “residue class” or “congruence class”

exactly when a ´n b.

a ´n b $ n|(a-b)“a and b are equivalent

modulo n”

Define the residue class [i] to be the set of all integers that are congruent to i modulo n.

Residue Classes Mod 3:

[0] = { …, -6, -3, 0, 3, 6, ..}[1] = { …, -5, -2, 1, 4, 7, ..}[2] = { …, -4, -1, 2, 5, 8, ..}

[-6] = { …, -6, -3, 0, 3, 6, ..}[7] = { …, -5, -2, 1, 4, 7, ..}[-1] = { …, -4, -1, 2, 5, 8, ..}

Equivalence mod n implies equivalence mod any divisor of

n.

If (x ´n y) and (k|n)Then: x ´k y

Example: 10 ´6 16 ) 10 ´3 16

If (x ´n y) and (k|n)Then: x ´k y

Proof: Recall, x´ny , n|(x-y) k|n and n|(x-y)Hence, k|(x-y) Of course, k|(x-y) ) x´ky

Fundamental lemma of plus, minus, and times modulo n:

If (x ´n y) and (a ´n b)Then: 1) x+a ´n y+b

2) x-a ´n y-b 3) xa ´n yb

Equivalently,

If n|(x-y) and n|(a-b) Then: 1) n|(x-y + a-b)

2) n | (x-y – [a-b]) 3) n|(xa-yb)

Proof of 3: xa-yb = a(x-y) – y(b-a)n|a(x-y) and n|y(b-a)

Fundamental lemma of plus minus, and times modulo n:

When doing plus, minus, and time modulo n, I can at any

time in the calculation replace a number with a number in the same residue class modulo n

Please calculate in your head:

329 * 666 mod 331-2 * 4 = -8 = 323

A Unique Representation System Modulo n:

We pick exactly one representative from each

residue class. We do all our calculations using the

representatives.

Unique representation system modulo 3

Finite set S = {0, 1, 2}

+ and * defined on S:

+ 0 1 2

0 0 1 2

1 1 2 0

2 2 0 1

* 0 1 2

0 0 0 0

1 0 1 2

2 0 2 1

Unique representation system modulo 3

Finite set S = {0, 1, -1}

+ and * defined on S:

+ 0 1 -1

0 0 1 -1

1 1 -1

0

-1

-1

0 1

* 0 1 -1

0 0 0 0

1 0 1 -1

-1

0 -1

1

The reduced system modulo

n:

Zn = {0, 1, 2, …, n-1}

Define +n and *n:a +n b = (a+b mod n)

a *n b = (a*b mod n)

Zn = {0, 1, 2, …, n-1}

a +n b = (a+b mod n) a *n b = (a*b mod n)

+n and *n are associative binary operators from Zn X Zn ! Zn:

When ~ = +n or *n :

[Closure] x,y2 Zn ) x ~ y 2 Zn

[Associativity] x,y,z2 Zn ) ( x ~ y ) ~ z = x ~ ( y ~ z )

Zn = {0, 1, 2, …, n-1}

a +n b = (a+b mod n) a *n b = (a*b mod n)

+n and *n are commutative, associative binary operators from Zn

X Zn ! Zn:

[Commutativity]x,y2 Zn ) x ~ y = y ~ x

The reduced system modulo 3

Z3 = {0, 1, 2}

Two binary, associative operators on Z3:+3

0 1 2

0 0 1 2

1 1 2 0

2 2 0 1

*3 0 1 2

0 0 0 0

1 0 1 2

2 0 2 1

The reduced system modulo 2

Z2 = {0, 1}

Two binary, associative operators on Z2:

+2

0 1

0 0 1

1 1 0

*2 0 1

0 0 0

1 0 1

The Boolean interpretation ofZ2 = {0, 1}

0 means FALSE 1 means TRUE

+2

XOR

0 1

0 0 1

1 1 0

*2

AND

0 1

0 0 0

1 0 1

The reduced systemZ4 = {0, 1,2,3}

+ 0 1 2 3

0 0 1 2 3

1 1 2 3 0

2 2 3 0 1

3 3 0 1 2

* 0 1 2 3

0 0 0 0 0

1 0 1 2 3

2 0 2 0 2

3 0 3 2 1

The reduced systemZ5 = {0, 1,2,3,4}

+ 0 1 2 3 4

0 0 1 2 3 4

1 1 2 3 4 0

2 2 3 4 0 1

3 3 4 0 1 2

4 4 0 1 2 3

* 0 1 2 3 4

0 0 0 0 0 0

1 0 1 2 3 4

2 0 2 4 1 3

3 0 3 1 4 2

4 0 4 3 2 1

The reduced systemZ6 = {0, 1,2,3,4,5}

+ 0 1 2 3 4 5

0 0 1 2 3 4 5

1 1 2 3 4 5 0

2 2 3 4 5 0 1

3 3 4 5 0 1 2

4 4 5 0 1 2 3

5 5 0 1 2 3 4

* 0 1 2 3 4 5

0 0 0 0 0 0 0

1 0 1 2 3 4 5

2 0 2 4 0 2 4

3 0 3 0 3 0 3

4 0 4 2 0 4 2

5 0 5 4 3 2 1

The reduced systemZ6 = {0, 1,2,3,4,5}

+ 0 1 2 3 4 5

0 0 1 2 3 4 5

1 1 2 3 4 5 0

2 2 3 4 5 0 1

3 3 4 5 0 1 2

4 4 5 0 1 2 3

5 5 0 1 2 3 4

An operator has the

permutation property if

each row and each column

has a permutation of the elements.

For every n, +n on Zn has the permutation property

+ 0 1 2 3 4 5

0 0 1 2 3 4 5

1 1 2 3 4 5 0

2 2 3 4 5 0 1

3 3 4 5 0 1 2

4 4 5 0 1 2 3

5 5 0 1 2 3 4

An operator has the

permutation property if

each row and each column

has a permutation of the elements.

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8..

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 8 distinct multiples of 3 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 2 distinct multiples of 4 modulo 8.

7

5 3

1

0

6 2

4

There are exactly 2 distinct multiples of 4 modulo 8

7

5 3

1

0

6 2

4

There is exactly 1 distinct multiple of 8 modulo 8

7

5 3

1

0

6 2

4

There are exactly 4 distinct multiples of 6 modulo 8

7

5 3

1

0

6 2

4

There are exactly 4 distinct multiples of 6 modulo 8

7

5 3

1

0

6 2

4

There are exactly 4 distinct multiples of 6 modulo 8

7

5 3

1

0

6 2

4

There are exactly 4 distinct multiples of 6 modulo 8

7

5 3

1

0

6 2

4

There are exactly 4 distinct multiples of 6 modulo 8

7

5 3

1

0

6 2

4

There are exactly ? distinct multiples of ? modulo ?

Can you see the general rule?

There are exactly LCM(n,c)/c distinct

multiples of c modulo n

There are exactly LCM(n,c)/c distinct

multiples of c modulo n

There are exactly n/(nc/LCM(n,c)) distinct multiples of c modulo n

There are exactly n/GCD(c,n) distinct

multiples of c modulo n

The multiples of c modulo n is the set:{0, c, c +n c, c +n c +n c, ….}

= {kc mod n | 0· k · n-1}

7

5 3

1

0

6 2

4

Multiples of 6

Theorem: There are exactly k= n/GCD(c.n) = LCM(c,n)/c

distinct multiples of c modulo n: { c*i mod n | 0· i < k }

Clearly, c/GCD(c,n) ¸ 1 is a whole number

ck = n [c/GCD(c,n)] ´n 0There are · k distinct multiples of c mod

n: c*0, c*1, c*2, …, c*(k-1)

k is all the factors of n missing from c

cx ´n cy $ n|c(x-y) ) k|(x-y) ) x-y¸ kThere are ¸ k multiples of c

Is there a fundamental lemma of division modulo n?

cx ´n cy ) x ´n y ?

Is there a fundamental lemma of division modulo n?

cx ´n cy ) x ´n y ? NO!

If c=0 [mod n], cx ´n cy for any x and y. Canceling the c is like

dividing by zero.

Repaired fundamental lemma of division modulo n?

c 0 (mod n), cx ´n cy ) x ´n y ?

6*3 ´10 6*8, but not 3 ´10 8.2*2 ´6 2*5, but not 2 ´6 5.

When can I divide by c?

Theorem: There are exactly n/GCD(c.n) distinct multiples of c modulo n.

Corollary: If GCD(c,n) > 1, then the number of multiples of c is less than n.

Corollary: If GCD(c,n)>1 then you can’t always divide by c.

Proof: There must exist distinct x,y<n such that c*x=c*y (but xy)

Fundamental lemma of division modulo n.

GCD(c,n)=1, ca ´n cb ) a ´n b

mod

| ( )

| ( )

| since ( , ) 1

mod

ab ac n

n ab ac

n a b c

n b c a n

b c n

Corollary for general c: cx ´n cy ) x ´n/GCD(c,n) y

cx ´n cy ) cx ´n/(c,n) cy and ( c, n/GCD(c,n) )=1

) x ´n/(c,n) y

Fundamental lemma of division modulo n.

GCD(c,n)=1, ca ´n cb ) a ´n b

Zn* = {x 2 Zn | GCD(x,n) =1}

Multiplication over Zn* will have the

cancellation property.

Z6 = {0, 1,2,3,4,5}Z6

* = {1,5}

+ 0 1 2 3 4 5

0 0 1 2 3 4 5

1 1 2 3 4 5 0

2 2 3 4 5 0 1

3 3 4 5 0 1 2

4 4 5 0 1 2 3

5 5 0 1 2 3 4

* 0 1 2 3 4 5

0 0 0 0 0 0 0

1 0 1 2 3 4 5

2 0 2 4 0 2 4

3 0 3 0 3 0 3

4 0 4 2 0 4 2

5 0 5 4 3 2 1

Suppose GCD(x,n) =1 and GCD(y,n) =1

Let z = xy and z’ = (xy mod n)

It is obvious that GCD(z,n) =1

It requires a moment to convince ourselves that GCD(z’,n) =1

Zn* = {x 2 Zn | GCD(x,n) =1}

*n is an associative, binary operator. In particular, Zn

* is closed under *n :

x,y 2 Zn* ) x *n y 2 Zn

* .

Proof: Let z = xy. Let z’ = z mod n. z = z’ + kn. Suppose there exists a prime p>1 p|z’ and p|n. z is the sum of two multiples of p, so p|z.

p|z ) that p|x or p|y. Contradiction of x,y 2 Zn*

Z12* = {1,5,7,11}

*12 1 5 7 11

1 1 5 7 11

5 5 1 11 7

7 7 11 1 5

11 11 7 5 1

Z15*

* 1 2 4 7 811

13

14

1 1 2 4 7 811

13

14

2 2 4 814

1 711

13

4 4 8 113

214

711

7 714

13

4 11 2 1 8

8 8 1 211

413

14

7

11

11

714

2 13 1 8 4

13

13

11

7 1 14 8 4 2

14

14

13

11

8 7 4 2 1

The column permutation property is equivalent to the right cancellation

property:

[b * a = c * a] ) b=c

* 1 2 a 4

b 1 2 3 4

2 2 4 1 3

c 3 1 4 2

4 4 3 2 1

The row permutation property is equivalent to the left cancellation

property:

[a * b = a *c] ) b=c

* b 2 c 4

1 1 2 3 4

2 2 4 1 3

a 3 1 4 2

4 4 3 2 1

Z5* = {1,2,3,4}

*5 1 2 3 4

1 1 2 3 4

2 2 4 1 3

3 3 1 4 2

4 4 3 2 1

Euler Phi Function

(n) = size of zn*

= number of 1<=k<n that are relatively prime to n.

p prime ) Zp*= {1,2,3,…,p-1}

) (p) = p-1

Z12* = {1,5,7,11}12) = 4

*12 1 5 7 11

1 1 5 7 11

5 5 1 11 7

7 7 11 1 5

11 11 7 5 1

(pq) = (p-1)(q-1) if p,q distinct primes

pq = # of numbers from 1 to pqp = # of multiples of q up to pqq = # of multiples of p up to pq1 = # of multiple of both p and q up to pq

(pq) = pq – p – q + 1 = (p-1)(q-1)

Let’s consider how we do arithmetic in Zn and in Zn

*

The additive inverse of a2 Zn is the unique b2 Zn such that a +n b ´n 0. We denote this inverse by “–

a”.

It is trivial to calculate: “-a” = (n-a).

The multiplicative inverse of a2 Zn* is

the unique b2 Zn* such that

a *n b ´n 1. We denote this inverse by “a-1” or “1/a”.

The unique inverse of a must exist because the a row contains a permutation of the

elements and hence contains a unique 1.* 1 b 3 4

1 1 2 3 4

2 2 4 1 3

a 3 1 4 2

4 4 3 2 1

Zn = {0, 1, 2, …, n-1}Zn

* = {x 2 Zn | GCD(x,n) =1}

Define +n and *n:

a +n b = (a+b mod n) a *n b = (a*b mod n)

c *n ( a +n b) ´n (c *n a) +n (c*n b)

<Zn, +n>1. Closed2. Associative3. 0 is identity4. Additive Inverses5. Cancellation6. Commutative

<Zn*, *n>

1. Closed2. Associative3. 1 is identity4. Multiplicative Inverses5. Cancellation6. Commutative

The multiplicative inverse of a2 Zn* is the unique b2

Zn* such that

a *n b ´n 1. We denote this inverse by “a-1” or “1/a”.

Efficient algorithm to compute a-1 from a and n.

Execute the Extended Euclid Algorithm on a and n (previous lecture). It will give two

integers r and s such that:ra + sn = (a,n) = 1

Taking both sides mod n, we obtain:rn ´n 1

Output r, which is the inverse of a

Fundamental lemma of powers?

If (a ´n b) Then xa ´n xb ?

If (a ´n b) Then xa ´n xb ?

NO!

(16 ´15 1) , but it is not the case that: 21 ´15 216

Calculate ab mod n:

Except for b, work in a reduced mod system to keep all intermediate results less than b log2 (n) c + 1 bits long.

Phase I (Repeated Multiplication)

For log b stepsmultiply largest so far by a(a, a2, a4, … )

Phase II (Make ab from bits and pieces)Expand n in binary to see how n is the

sum powers of 2. Assemble ab by multiplying together appropriate powers of a.

Two names for the same set:

Zn* = Zn

a

Zna = {a *n x | x 2 Zn

*}, a2 Zn*

* b 2 c 4

1 1 2 3 4

2 2 4 1 3

a 3 1 4 2

4 4 3 2 1

Two products on the same set:

Zn* = Zn

a

Zna = {a *n x | x 2 Zn

*}, a2 Zn*

x ´n ax [as x ranges over Zn* ]

x ´n x (asize of Zn*) [Commutativity]

1 = asize of Zn* [Cancellation] a(n) = 1

Euler’s Theorem

a2 Zn*, a(n) ´n 1

Fermat’s Little Theorem

p prime, a2 Zp*) ap-1 ´p 1

Fundamental lemma of powers.

Suppose x2 Zn*, and a,b,n are naturals.

If a ´(n) b Then xa ´n xb

Equivalently,xa mod (n) ´n xb mod (n)

Defining negative powers.

Suppose x2 Zn*, and a,n are naturals.

x-a is defined to be the multiplicative inverse of

Xa

X-a = (Xa)-1

Rule of integer exponents

Suppose x,y2 Zn*, and a,b are integers.

(xy)-1 ´n x-1 y-1

Xa Xb ´n Xa+b

Lemma of integer powers.

Suppose x2 Zn*, and a,b are integers.

If a ´(n) b Then xa ´n xb

Equivalently,xa mod (n) ´n xb mod (n)

Zn = {0, 1, 2, …, n-1}Zn

* = {x 2 Zn | GCD(x,n) =1}

Quick raising to power.

<Zn, +n>1. Closed2. Associative3. 0 is identity4. Additive Inverses

Fast + amd -5. Cancellation6. Commutative

<Zn*, *n>

1. Closed2. Associative3. 1 is identity4. Multiplicative Inverses

Fast * and /5. Cancellation6. Commutative

Euler Phi Function

(n) = size of zn*

p prime ) Zp*= {1,2,3,…,p-1}

) (p) = p-1

(pq) = (p-1)(q-1) if p,q distinct primes

The RSA Cryptosystem

Rivest, Shamir, and Adelman (1978)

RSA is one of the most used cryptographic protocols on the net. Your browser uses it to establish a

secure session with a site.

Pick secret, random k-bit primes: p,q “Publish”: n = p*q (n) = (p) (q) = (p-1)*(q-1)

Pick random e Z*(n)

“Publish”: eCompute d = inverse of e in Z*

(n)

Hence, e*d = 1 [ mod (n) ]

“Private Key”: d

n,e is my public key.

Use it to send a message to

me.

p,q random primes, e random Z*(n)

n = p*qe*d = 1 [ mod (n) ]

n,e

p,q prime, e random Z*(n)

n = p*qe*d = 1 [ mod (n) ]

m

n,e

p,q prime, e random Z*(n)

n = p*qe*d = 1 [ mod (n) ]

m

me [mod n]

n,e

p,q prime, e random Z*(n)

n = p*qe*d = 1 [ mod (n) ]

m

me [mod n]

(me)d ´n m

top related