04-Number Theory and Cryptography
04-Number Theory and Cryptography
Cryptography
1
Introduction to Number Theory
Number theory is about integers and their properties.
We will start with the basic principles of
• divisibility
• greatest common divisors
• least common multiples
• modular arithmetic
and look at some relevant algorithms.
2
Division
If a and b are integers with a 0, we say that
a divides b if there is an integer c so that b = ac.
When a divides b we say that a is a factor of b and that b
is a multiple of a.
The notation a | b means that a divides b.
We write a X b when a does not divide b.
(see book for correct symbol).
3
Divisibility Theorems
For integers a, b, and c it is true that
• if a | b and a | c, then a | (b + c)
Example: 3 | 6 and 3 | 9, so 3 | 15.
• if a | b, then a | bc for all integers c
Example: 5 | 10, so 5 | 20, 5 | 30, 5 | 40, …
• if a | b and b | c, then a | c
Example: 4 | 8 and 8 | 24, so 4 | 24.
4
Primes
A positive integer p greater than 1 is called prime if the
only positive factors of p are 1 and p.
A positive integer that is greater than 1 and is not prime is
called composite.
The fundamental theorem of arithmetic:
Every positive integer can be written uniquely as the
product of primes, where the prime factors are written in
order of increasing size.
5
Primes
Examples:
15 = 3·5
48 = 2·2·2·2·3 = 24·3
17 = 17
100 = 2·2·5·5 = 22·52
512 = 2·2·2·2·2·2·2·2·2 = 29
515 = 5·103
28 = 2·2·7 = 22·7
6
Primes
If n is a composite integer, then n has a prime divisor less
than or equal .
This is easy to see: if n is a composite integer, it must
have two divisors p1 and p2 such that p1p2 = n and p1 2
and p2 2.
p1 and p2 cannot both be greater than , because then
p1p2 would be greater than n.
7
The Division Algorithm
Let a be an integer and d a positive integer.
Then there are unique integers q and r, with
0 r < d, such that a = d*q + r.
In the above equation,
• d is called the divisor,
• a is called the dividend,
• q is called the quotient, and
• r is called the remainder.
8
The Division Algorithm
Example:
When we divide 17 by 5, we have
17 = 53 + 2.
• 17 is the dividend,
• 5 is the divisor,
• 3 is called the quotient, and
• 2 is called the remainder.
9
The Division Algorithm
Another example:
What happens when we divide ‐11 by 3 ?
Note that the remainder cannot be negative.
‐11 = 3(‐4) + 1.
• ‐11 is the dividend,
• 3 is the divisor,
• ‐4 is called the quotient, and
• 1 is called the remainder.
10
Greatest Common Divisors
Let a and b be integers, not both zero.
The largest integer d such that d | a and d | b is called the
greatest common divisor of a and b.
The greatest common divisor of a and b is denoted by
gcd(a, b).
Example 1: What is gcd(48, 72) ?
The positive common divisors of 48 and 72 are
1, 2, 3, 4, 6, 8, 12, 16, and 24, so gcd(48, 72) = 24.
Example 2: What is gcd(19, 72) ?
The only positive common divisor of 19 and 72 is
1, so gcd(19, 72) = 1.
11
Greatest Common Divisors
Using prime factorizations:
a = p1a1 p2a2 … pnan , b = p1b1 p2b2 … pnbn ,
where p1 < p2 < … < pn and ai, bi N for 1 i n
Example:
a = 60 = 22 31 51
b = 54 = 21 33 50
gcd(a, b) = 21 31 50 = 6
12
Relatively Prime Integers
Definition:
Two integers a and b are relatively prime if
gcd(a, b) = 1.
Examples:
Are 15 and 28 relatively prime?
Yes, gcd(15, 28) = 1.
Are 55 and 28 relatively prime?
Yes, gcd(55, 28) = 1.
Are 35 and 28 relatively prime?
No, gcd(35, 28) = 7.
13
Relatively Prime Integers
Definition:
The integers a1, a2, …, an are pairwise relatively prime if
gcd(ai, aj) = 1 whenever 1 i < j n.
Examples:
Are 15, 17, and 27 pairwise relatively prime?
No, because gcd(15, 27) = 3.
Are 15, 17, and 28 pairwise relatively prime?
Yes, because gcd(15, 17) = 1, gcd(15, 28) = 1 and gcd(17,
28) = 1.
14
Least Common Multiples
Definition:
The least common multiple of the positive integers a and
b is the smallest positive integer that is divisible by both a
and b.
We denote the least common multiple of a and b by
lcm(a, b).
Examples:
lcm(3, 7) = 21
lcm(4, 6) = 12
lcm(5, 10) = 10
15
Least Common Multiples
Using prime factorizations:
a = p1a1 p2a2 … pnan , b = p1b1 p2b2 … pnbn ,
where p1 < p2 < … < pn and ai, bi N for 1 i n
Example:
a = 60 = 22 31 51
b = 54 = 21 33 50
lcm(a, b) = 22 33 51 = 4275 = 540
16
GCD and LCM
a = 60 = 22 31 51
b = 54 = 21 33 50
gcd(a, b) = 21 31 50 =6
lcm(a, b) = 22 33 51 = 540
17
Modular Arithmetic
Let a be an integer and m be a positive integer.
We denote by a mod m the remainder when a is divided
by m.
Examples:
9 mod 4 = 1
9 mod 3 = 0
9 mod 10 = 9
-13 mod 4 = 3
18
Congruences
Let a and b be integers and m be a positive integer. We say
that a is congruent to b modulo m if
m divides a – b.
In other words:
a b (mod m) if and only if a mod m = b mod m.
a and b share the same remainders
19
Congruences
Examples:
Is it true that 46 68 (mod 11) ?
Yes, because 11 | (46 – 68).
Is it true that 46 68 (mod 22)?
Yes, because 22 | (46 – 68).
For which integers z is it true that z 12 (mod 10)?
It is true for any z{…,‐28, ‐18, ‐8, 2, 12, 22, 32, …}
Theorem: Let m be a positive integer. The integers a and b
are congruent modulo m if and only if there is an integer k
such that a = b + km.
20
Congruences
Theorem: Let m be a positive integer.
If a b (mod m) and c d (mod m), then
a + c b + d (mod m) and ac bd (mod m).
Proof:
We know that a b (mod m) and c d (mod m) implies
that there are integers s and t with
b = a + sm and d = c + tm.
Therefore,
b + d = (a + sm) + (c + tm) = (a + c) + m(s + t) and
bd = (a + sm)(c + tm) = ac + m(at + cs + stm).
Hence, a + c b + d (mod m) and ac bd (mod m).
21
The Euclidean Algorithm
The Euclidean Algorithm finds the greatest common
divisor of two integers a and b.
For example, if we want to find gcd(287, 91), we divide
287 (the larger number) by 91 (the smaller one):
287 = 913 + 14
287 ‐ 913 = 14
287 + 91(‐3) = 14
We know that for integers a, b and c,
if a | b, then a | bc for all integers c.
Therefore, any divisor of 91 is also a divisor of 91(‐3).
22
The Euclidean Algorithm
287 + 91(‐3) = 14
We also know that for integers a, b and c,
if a | b and a | c, then a | (b + c).
Therefore, any divisor of 287 and 91 must also be a divisor
of 287 + 91(‐3), which is 14.
Consequently, the greatest common divisor of 287 and 91
must be the same as the greatest common divisor of 14
and 91:
gcd(287, 91) = gcd(14, 91).
23
The Euclidean Algorithm
In the next step, we divide 91 by 14:
91 = 146 + 7
This means that gcd(14, 91) = gcd(14, 7).
So we divide 14 by 7:
14 = 72 + 0
We find that 7 | 14, and thus gcd(14, 7) = 7.
Therefore, gcd(287, 91) = 7.
24
The Euclidean Algorithm
In pseudocode, the algorithm can be implemented as
follows:
procedure gcd(a, b: positive integers)
x := a
y := b
while y 0
begin
r := x mod y
x := y
y := r
end {x is gcd(a, b)}
25
Representations of Integers
Let b be a positive integer greater than 1.
Then if n is a positive integer, it can be expressed uniquely
in the form:
where k is a nonnegative integer,
a0, a1, …, ak are nonnegative integers less than b,
and ak 0.
Example for b=10:
859 = 8102 + 5101 + 9100
26
Representations of Integers
Example for b=2 (binary expansion):
(10110)2 = 124 + 122 + 121 = (22)10
Example for b=16 (hexadecimal expansion):
(we use letters A to F to indicate numbers 10 to 15)
(3A0F)16 = 3163 + 10162 + 15160 = (14863)10
27
Representations of Integers
How can we construct the base b expansion of an integer n?
First, divide n by b to obtain a quotient q0 and remainder a0,
that is,
n = bq0 + a0, where 0 a0 < b.
The remainder a0 is the rightmost digit in the base b
expansion of n.
Next, divide q0 by b to obtain:
q0 = bq1 + a1, where 0 a1 < b.
a1 is the second digit from the right in the base b expansion
of n. Continue this process until you obtain a quotient equal
to zero.
28
Representations of Integers
Example:
What is the base 8 expansion of (12345)10 ?
First, divide 12345 by 8:
12345 = 81543 + 1
1543 = 8192 + 7
192 = 824 + 0
24 = 83 + 0
3 = 80 + 3
The result is: (12345)10 = (30071)8.
29
Representations of Integers
procedure base_b_expansion(n, b: positive integers)
q := n
k := 0
while q 0
begin
ak := q mod b
q := q/b
k := k + 1
end
{the base b expansion of n is (ak‐1 … a1a0)b }
30
Addition of Integers
How do we (humans) add two integers?
1 11 carry
Example: 7583
+ 4932
12515
1 1 carry
Binary expansions: (1011)2
+ (1010)2
(101 01 )2
31
Addition of Integers
Let a = (an‐1an‐2…a1a0)2, b = (bn‐1bn‐2…b1b0)2.
How can we algorithmically add these two binary
numbers?
First, add their rightmost bits:
a0 + b0 = c02 + s0,
where s0 is the rightmost bit in the binary expansion of a +
b, and c0 is the carry.
Then, add the next pair of bits and the carry:
a1 + b1 + c0 = c12 + s1,
where s1 is the next bit in the binary expansion of a + b,
and c1 is the carry.
32
Addition of Integers
Continue this process until you obtain cn‐1.
The leading bit of the sum is sn = cn‐1.
The result is:
a + b = (snsn‐1…s1s0)2
33
Addition of Integers
Example:
Add a = (1110)2 and b = (1011)2.
Therefore, s = a + b = (11001)2.
34
Addition of Integers
procedure add(a, b: positive integers)
c := 0
for j := 0 to n‐1 {larger integer (a or b) has n digits}
begin
d := (aj + bj + c)/2
sj := aj + bj + c – 2d
c := d
end
sn := c
{the binary expansion of the sum is (snsn‐1…s1s0)2}
35
Simple Encryption
Variations on the following have been used to encrypt
messages for thousands of years.
1. Convert a message to capitals.
2. Think of each letter as a number between 1 and 26.
3. Apply an invertible modular function to each number.
4. Convert back to letters (0 becomes 26).
L9 36
Letter Number
Conversion Table
A B C D E F G H I J K L M
1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 26
L9 37
Encryption example
Let the encryption function be
f (a) = (3a + 9) mod 26
Example: f (S)=f (19) = (3*19+ 9) mod 26 = 14 (N)
Encrypt “Stop Thief”
1. STOP THIEF (capitals)
2. 19,20,15,16 20,8,9,5,6
3. 14,17,2,5 17,7,10,24,1
4. NQBE QGJXA
L9 38