* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Principles of Public Key Cryptography Applications of
Survey
Document related concepts
Transcript
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Principles of Public Key Cryptography
Chapter 2: Security Techniques Background
• Secret Key Cryptography
• Public Key Cryptography
• Hash Functions
• Authentication
Chapter 3: Security on Network
and Transport Layer
Chapter 4: Security on the Application Layer
2.2: Public Key Cryptography
• Principles of public key
cryptography
• Number theory and
algebraic foundations
• Classical public key
cryptography
• Newer public key
cryptography
Chapter 5: Security Concepts for Networks
Also called asymmetric cryptography
• Different from secret key cryptography, algorithms for encoding and decoding
differ considerably
• Working with two keys
→ A private key d (known only to the owner)
→ A public key e (known by possibly everyone)
• Public key cryptography principle (e.g. RSA):
plaintext
encryption
cipher text
public key e
private key d
cipher text
decryption
plaintext
• More easily configurable than secret key cryptography, but slower
• Often combined with secret key: authentication and distribution of a secret key
(e.g. Diffie-Hellman for establishment of a shared secret)
Page 1
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Security in Public Key Algorithms
Digital signatures (e.g. RSA, ElGamal, DSS)
• Associate a value with a message, like a checksum
• This value can only be generated by using the private key d ( = decryption)
• It is readable for everyone knowing the public key e ( = encryption)
• Similar to hand-written signature (authenticity without the chance to forge it)
Security in many public key algorithms is based on the difficulty to
factorise and compute discrete logarithms
Factorising
→ Find the prime factors for a given number
→ One of the oldest problems in number theory, very time consuming
→ Most popular method: Quadratic Sieve
signing
signed message
private key d
public key e
signed message
verification
plaintext
Authentication (zero knowledge proof systems)
• A generates a random number and encrypts it with the public key of B
• B decrypts the message with its private key and sends back the random number to A
• If A gets back the original random number, B is authenticated
Chapter 2.2: Public Key Cryptography
Page 2
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Applications of Public Key Cryptography
plaintext
Chapter 2.2: Public Key Cryptography
Page 3
Discrete logarithm
→ Problem to find the inverse to modular exponentiation:
Find an x with ax = b mod n for given a and b
→ Not all discrete logarithms have solutions
→ Very time consuming process to find solutions for big numbers
→ Frequently used method: Index-Calculus method
Chapter 2.2: Public Key Cryptography
Page 4
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Basics for Public Key Cryptography:
Number Theory / Modular Arithmetic
Arithmetic Operations modulo n
Arithmetic computing modulo n
• Arithmetic operations are performed as usual, but the result is replaced by its
remainder when divided by n (e.g. 3 + 9 = 12 ≡ 2 mod 10)
Number theory provides basic knowledge to understand how and why public key
algorithms work
→ Necessary concepts for understanding public key algorithms
→ Most public key algorithms are based on modular arithmetic
Modular addition
• Given: c = x + k mod n, with c, x, k ∈ Zn
→ if x + k < n :
c=a+b
→ if x + k ≥ n :
c = j,
where x + k = i ⋅ n + j and j < n
• Can be used to encrypt digits:
each number x out of a range of numbers is
unambiguously mapped onto another
number c from this range
• Caesar Cipher: add a constant k to each number
• Decryption needs subtraction. This can be replaced
by an addition of the inverse value
Modular arithmetic
→ Operates on a ring (Zn, +, ⋅), where
Zn is a set of non-negative integers smaller than some positive integer n
+: Zn × Zn → Zn is a function that
• is associative and commutative
• has a neutral element 0 ∈ Zn
• has a inverse element x-1 to each x ∈ Zn, i.e. x + x-1 = 0
⋅: Zn × Zn → Zn is an associative function (it is not necessarily commutative)
+ and ⋅ have left and right exchangeability
→ Needed for public key cryptography: addition, multiplication, exponentiation
→ Computations of these functions are performed modulo n
Page 5
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Chapter 2.2: Public Key Cryptography
0
0
1
2
3
4
5
6
7
8
9
1
1
2
3
4
5
6
7
8
9
0
2
2
3
4
5
6
7
8
9
0
1
3
3
4
5
6
7
8
9
0
1
2
4
4
5
6
7
8
9
0
1
2
3
5
5
6
7
8
9
0
1
2
3
4
6
6
7
8
9
0
1
2
3
4
5
7
7
8
9
0
1
2
3
4
5
6
8
8
9
0
1
2
3
4
5
6
7
9
9
0
1
2
3
4
5
6
7
8
Page 6
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Arithmetic Operations modulo n
* 0 1 2 3 4 5 6
Modular multiplication
0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6
• Given: c = x ⋅ k mod n, with c, x, k ∈ Zn
2 0 2 4 6 8 0 2
→ if x ⋅ k < n :
c=x⋅k
3 0 3 6 9 2 5 8
→ if x ⋅ k ≥ n :
c = j,
4 0 4 8 2 6 0 4
5 0 5 0 5 0 5 0
where x ⋅ k = i ⋅ n + j and j < n
6 0 6 2 8 4 0 6
• Encryption only works with special keys k
7 0 7 4 1 8 5 2
Example for n = 10: only k ∈{1, 3, 7, 9} is
8 0 8 6 4 2 0 8
usable as (simple) cipher key
9 0 9 8 7 6 5 4
→ only for these values the mapping is unambiguous
→ for other values of k, an information loss occurs
• Only use keys k relatively prime to n
→ k and n share no other common factor than 1
• Decryption works by multiplication of cipher text c with the multiplicative
inverse k-1, i.e. k ⋅ k-1 = 1 mod n (e.g. 7-1 = 3 mod 10, because 7 ⋅ 3 = 1 mod 10)
→ Multiplicative inverse for n = 10 only exists for 1,3,7, and 9
+
0
1
2
3
4
5
6
7
8
9
Arithmetic Operations modulo n
7
0
7
4
1
8
5
2
9
6
3
8
0
8
6
4
2
0
8
6
4
2
9
0
9
8
7
6
5
4
3
2
1
Page 7
Modular exponential
• Given: c = xk mod n, with c, x, k ∈ Zn
→ if xk < n : c = xk
→ if xk ≥ n : c = j,
where xk = i ⋅ n + j and j < n
• Note: difference to modular multiplication:
xk mod n ≠ xk+n mod n
• Encryption only works with special keys k
-1
• Decryption needs an inverse k-1 with xk⋅k = 1
• But: inverse k-1 does not exist in each case
Chapter 2.2: Public Key Cryptography
xy
0
1
2
3
4
5
6
7
8
9
0 1
0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2
0
1
4
9
6
5
6
9
4
1
3
0
1
8
7
4
5
8
3
2
9
4
0
1
6
1
6
5
6
1
6
1
5
0
1
2
3
4
5
6
7
8
9
6
0
1
4
9
6
5
6
9
4
1
7
0
1
8
7
4
5
6
3
2
9
8
0
1
6
1
6
5
6
1
6
1
9
0
1
2
3
4
5
6
7
8
9
Page 8
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Finding Modular Inverses
•
•
•
•
The Euclidean Algorithm
Finding multiplicative inverses to x is a very time consuming process
If x has 100 digits, no Brute Force attack is possible
Useful: x relatively prime to n → a multiplicative inverse x-1 mod n exists
Computing multiplicative inverse by the Euclidean Algorithm
Euclidean algorithm
→ Determines the greatest common divisor (gcd) of x and n
→ Given x and n, it finds an y with x ⋅ y = 1 mod n (if one exists)
→ If x is relatively prime to n: gcd(x, n) = 1
→ Idea: Replace x and n with smaller numbers with the same gcd
If one number becomes zero, the other one is the gcd
→ Faster algorithm: the smaller the numbers are, the faster
the computation of gcd is. Replace the bigger number
with its remainder divided by the smaller number
Chapter 2.2: Public Key Cryptography
Example:
gcd(6, 14)?
→ gcd(6, 14-6)
→ gcd(6,8)
→ gcd(6,2)
→ gcd(4,2)
→ gcd(2,2)
→ gcd(2,0)
→=2
Page 9
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
function int gcd(int x, int y)
begin
int r2 = x;
int r1 = y;
int q;
int help;
while (r1 > 0)
begin
q = r2 / r1;
help = r1;
r1 = r2 % r1 // (r2 mod r1)
r2 = help;
end
return r2;
end
Page 10
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Multiplicative Inverse by Euclidean Algorithm
Computing the Multiplicative Inverse
Initialisation:
u-2 = 1, v-2 = 0,
u-1 = 0, v-1 = 1,
r-2 = x, r-1 = y, i=0
How to find a multiplicative inverse x-1 to x mod n, such that
x ⋅ x-1 = 1 mod n, with the euclidean algorithm?
Multiplicative inverse for x mod n: a u exists with u ⋅ x = 1 mod n
⇒ u ⋅ x differs from 1 by a multiple of n
⇒ There is a v with u ⋅ x + v ⋅ n = 1
Computing gcd(x, n) can compute such a v and a u, if gcd(x, n) = 1
⇒ If gcd(x, n) = 1, u is the multiplicative inverse to x
Repeat:
if rn-1 = 0 ⇒ gcd(x, y) = rn-2
else divide rn-2 by rn-1 to get quotient qn and remainder rn
Keep track of:
ui = ui-2 - qi ⋅ ui-1,
vi = vi-2 - qi ⋅ vi-1
Could there be more than one u mod n with u ⋅ x = 1 mod n?
→ Suppose: m ⋅ x = 1 mod n
⇒ m ⋅ x ⋅ u = u mod n
But u ⋅ x = 1 mod n
⇒ m ⋅ 1 = u mod n
⇒m=u
Chapter 2.2: Public Key Cryptography
The algorithm
• Note: gcd(0, y) = y
• In general:
if d denotes a divisor of x and y
⇒ x = i ⋅ d, y = j · d
⇒ x - y = i ⋅ d - j ⋅ d = (i - j) ⋅ d
⇒ If x > 0, replace gcd(x, y)
with gcd(x-y, y)
• Efficiency: x and y should be
as small as possible
• Assume, d is the maximum of all
divisors (achieved by division x mod y)
⇒ gcd(x, y) = gcd(x mod y, y)
• If y > x, exchange x and y
Example:
r5 = 0 ⇒ gcd(407, 595) = r4 = 1,
multiplicative inverse u4 (= 407-1 mod 595) = 288
Page 11
Chapter 2.2: Public Key Cryptography
i
-2
-1
0
1
2
3
4
5
qi
0
1
2
6
15
2
ri
ui
vi
407
1
0
595
0
1
407
1
0
188 -1
1
31
3
-2
2
-19 13
1
288 -197
0 -595 407
Page 12
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
The Euler Function Φ(n)
Finding Prime Numbers
Computing Φ(n)
• If n is prime ⇒ all numbers 1, ..., n - 1 are relatively prime to n
⇒ Φ(n) = n - 1
Problem with Euclidean algorithm: how to find x mod n with gcd(x, n) = 1?
Naive method: divide x by all numbers ≤ n
⇒ Takes too long of your lifetime
Practical solutions: there is no hundred percent that large number is prime
But: there are tests for determining that a number is probably prime
→ Use properties
1.) gcd(x, n) = 1, if x and n are relatively prime
(x and n are relatively prime, if there are integers u and v with u ⋅ x + v ⋅ n = 1)
2.) Φ(n), the totient function, denotes the number of integers relatively prime to n
Chapter 2.2: Public Key Cryptography
Page 13
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
• If n is a prime or a product of different primes
⇒ x·y mod n = x·y mod Φ(n) mod n
• Example for n = 10 (= 5 ⋅ 2)
Relatively prime to n: {1, 3, 7, 9}
⇒ Φ(n) = (5 - 1) ⋅ (2 - 1) = 4
⇒ Column i + 4 is the same as column i
• Important special case: y = 1 mod Φ(n)
⇒ for any
x·yKey
= xCryptography
mod Φ(n) = x mod n
Chapter
2.2: x:
Public
xy
0
1
2
3
4
5
6
7
8
9
0 1
0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2
0
1
4
9
6
5
6
9
4
1
3
0
1
8
7
4
5
8
3
2
9
4
0
1
6
1
6
5
6
1
6
1
5
0
1
2
3
4
5
6
7
8
9
6
0
1
4
9
6
5
6
9
4
1
7
0
1
8
7
4
5
6
3
2
9
8
0
1
6
1
6
5
6
1
6
1
9
0
1
2
3
4
5
6
7
8
9
Page 14
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Euler's Theorem and Fermat's Theorem
Prime Tests
Euler's Theorem
• For any a relatively prime to n holds: a·Φ(n) = 1 mod n
If n is prime: Φ(n) = n - 1. In this case:
• If the simple prime test fails:
A cryptosystem like RSA might fail, a message cannot be decrypted
An attacker might be able to compute keys easier
• "Solution": test n with other values for a
Problem: Carmichael numbers (very rare)
Some Carmichael numbers:
No primes, but for all a holds: an - 1 = 1 mod n
561 = 3 ⋅ 11 ⋅ 17
• Enhanced prime test is needed:
1105 = 5 ⋅ 13 ⋅ 17
41041 = 7 ⋅ 11 ⋅ 13 ⋅ 41
Miller-Rabin prime test
825265 = 5 ⋅ 7 ⋅ 17 ⋅ 19 ⋅ 73
• Improved method to find prime numbers
Fermat's Theorem
• If n is a prime and 0 < a < n ⇒ a·n - 1 = 1 mod n
→ Good rule for determining primes
→ But: what about n with an - 1 = 1 mod n, where n is no prime?
→ Find primes by a simple prime test
• Choose an a with a < n and compute an - 1 mod n.
• If the result is not 1, n is no prime
• If the result is 1, n may be a prime
(e.g., if n has 100 digits, the probability for n to be no prime is 10-13)
Chapter 2.2: Public Key Cryptography
• If n is a product of primes p and q
⇒ There are p·q candidates {(j·p + i·q)| i=1..q, j=1..p} for numbers relatively prime to n
⇒ But from them, there are p multiples of q and q multiples of p
⇒ (p + q - 1) numbers are not relatively prime to n
⇒ Φ(n) = p·q - (p + q - 1) = (p - 1)·(q - 1)
i=2
i+4
• Probabilistic prime test
• Basic foundation: for a prime n holds:
1.) n - 1 can always be expressed by 2b ⋅ c, where c is an odd number
2.) Each square root (modulo n) of 1 can only be ±1
(e.g. 4 is a square root of 1 mod 15, because 4 ⋅ 4 = 16 = 1 mod 15, thus 15 can
not be a prime)
Page 15
Chapter 2.2: Public Key Cryptography
Page 16
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Miller-Rabin Algorithm
•
•
•
•
Miller-Rabin Algorithm - Example
Use Fermat's theorem: an - 1 = 1 mod n
Pick a random number n and test if it is prime
Test n with the division by smaller primes to speed up the process
If you think a prime has been found: pick an a by random
Miller-Rabin algorithm:
compute r = ac mod n
if r = 1 mod n
⇒ n is prime
else for i = 0 to b - 1 do
if r = -1 mod n
⇒ n is prime
else
r = r2 mod n
⇒ n is not prime
// is the first mod n-square root 1?
// else: an-1 only can become 1 by squaring -1 in
// one of the b square operations
// now: test on allowed square root. Because the
// result before was not 1, it only can become
// 1 by squaring -1. Search for a -1
// prepare testing the next square root
// only non-allowed square roots found
Chapter 2.2: Public Key Cryptography
Page 17
Choose n = 15 as a possible prime
→ n - 1 = 14 = 2 ⋅ 7
→ b = 1, c = 7
→ Pick randomly a = 5
→ Compute ac = 57 = 78125 = 5 mod 15
(this is not 1 nor -1,
and: 52 = 25 = 10 mod 15)
→ no prime found
Choose n = 13 as a possible prime
→ n - 1 = 12 = 22 ⋅ 3
→ b = 2, c = 3
→ Pick randomly a = 5
→ Compute 53 = 125 = 8 mod 13
→ Compute 82 = 64 = -1 mod 13
→ -1 is an allowed square root of 1,
thus 13 is (possibly) prime
Other variant: pick randomly a = 4
→ Compute 47 = 16384 = 4 mod 15
(this is not 1 nor -1, and:
42 = 16 = 1 mod 15)
→ This means, 4 is a square root of
1 mod 15
→ no prime found
Other try: pick randomly a = 3
→ compute 33 = 27 = 1 mod 13
→ 13 is (possibly) prime
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Page 18
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Classical Public Key Cryptography
RSA
Developed by Rivest, Shamir, and Adleman
Purpose: encryption and decryption of data
• Variable key length
→ Long key used for high security needs
→ Short key used for efficient encryption processes
→ Common key length: 512 bit
• Variable plaintext length
→ Must be shorter than the key
• Cipher text blocks
→ Length of the key
• RSA
• Public-key cryptography standard (PKCS)
• Rabin cryptosystem
• Diffie-Hellman cryptosystem
• ElGamal cryptosystem
• Merkle-Hellman cryptosystem
Much slower than secret key algorithms like DES or IDEA
• Only used for short messages
• Important purpose: transmission of secret keys
Chapter 2.2: Public Key Cryptography
Page 19
Chapter 2.2: Public Key Cryptography
Page 20
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
RSA Key Generation
Usage Scenarios for RSA
Generate a public key and a corresponding private key
1.) Choose two large primes p and q of 256 bit each
(p and q must be a secret!)
n is public, but factorisation into
2.) Compute n = p ⋅ q
p and q is computationally infeasible
3.) Compute Φ(n) = (p - 1) ⋅ (q - 1)
4.) Choose e relatively prime to Φ(n)
5.) Find d with d ⋅ e = 1 mod Φ(n)
(d is the multiplicative inverse to e)
⇒ <e, n> is public key
⇒ <d, n> is private key
Digital signatures
• Similar to encryption/decryption process
• Sender encrypts message m with his private key:
s = md mod n
• Each receiver can read the signed message using the public key of the sender:
m = se mod n
Why do these keys work?
• We use modular arithmetic (mod n) with p ⋅ q = n
• d and e were chosen to be d ⋅ e = 1 mod Φ(n)
• Because n is product of distinct primes, for all x:
⇒ xd ⋅ e = x1 mod Φ(n) = x mod n
Chapter 2.2: Public Key Cryptography
Page 21
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Chapter 2.2: Public Key Cryptography
Page 22
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Why is RSA (relatively) secure?
How to determine p, q, e and d
1.) Finding big primes p and q
• For a 10-digit number, the chance of finding a prime is 1 in 23
• For a 100-digit number, the chance is only 1 in 230
→ Pick random numbers until you find a prime
→ Use Fermat's theorem and the Rabin-Miller algorithm to test if a random
number is prime
Breaking RSA means finding d from knowing e and n…
• Attacker only knows: d is the exponential inverse to e mod Φ(n)
• Simple approach: knowing p and q you can compute Φ(n)
(this is a kind of trapdoor)
• However: an attacker does not know p and q
• Attacker needs to factorise n to obtain p and q
→ Factorising large numbers is difficult
→ The best algorithms are too slow
→ And: Brute Force attack is less efficient than factorising
2.) Finding d and e for p and q
• Choose e as relatively prime to (p - 1) · (q - 1)
a.) by choosing e at random and test if it is relatively prime to (p - 1) · (q - 1)
b.) by choosing e first and then determine matching p and q
→ RSA is not less secure if always the same e is chosen
→ If e is small or its binary representation has few '1's, the operations for
encryption and signature verification will become much more efficient
→ Use Euclidean algorithm to determine d with e ⋅ d = 1 mod Φ(n)
Note: do not choose a small d; d is a secret, thus it should be hard to determine
But it is possible to misuse RSA!
• Assume that an attacker knows the context of a message from A
• The attacker could encrypt messages with the public key eA
• If a match is found, the attacker has found the message
Chapter 2.2: Public Key Cryptography
Encryption and decryption
• Encrypt message m using the public key of the receiver:
c = me mod n
• Decrypt cipher text c with the private key of the receiver:
m = cd mod n
Page 23
Chapter 2.2: Public Key Cryptography
Page 24
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Using small public keys
Using small public keys
Let “e” be a small constant
→ Public key operations become faster, while leaving private key operations unchanged
→ Popular values for “e” are 3 and 65537
Case of “e = 3”
→ Maximizes performance
→ Apparently it does not weaken security of RSA
(when some practical constraints on its use are considered)
→ Problems with e = 3
• Small messages m with m3 mod n = m3.
→ Problem: it only takes the cubic root to decrypt
→ Solution: padding message with a random number before encryption
• If a message is sent to 3 or more receivers, m can be derived from the three
encrypted values and the public keys of the receivers
• Find p and q so that 3 is relatively prime to (p - 1) · (q – 1)
(practical problem: there are many numbers which 3 is not relatively prime to)
Chapter 2.2: Public Key Cryptography
Page 25
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Case of “e = 65537”
• Is equivalent to 216 + 1, and it is prime
• The binary representation contains only two 1s
→ Only 17 multiplications are necessary to to compute any me
→ Much faster than the 768 (on the average) multiplications necessary for a
randomly chosen 512 bit value
• The problems mentioned for e = 3 are avoided
Page 26
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Public Key Cryptography Standard (PKCS)
Example: PKCS#1
How could different implementations interwork?
→ Standards for encoding of information that will be encrypted or signed
PKCS#1 (encryption)
• Standard format for messages to be encrypted with RSA
Public Key Cryptography Standard
→ Set of standards PKCS#1 - PKCS#9
→ Definition of encoding RSA public keys, RSA private keys, RSA signatures, short
RSA-encrypted messages (typically secret keys), and short RSA-signed messages
(typically a message digest)
→ Designed to deal with
• Encrypting guessable messages
• Signing smooth numbers
• Multiple recipients of a message for e = 3
• For e = 3, encrypting messages that are less than a third of the length of n
• For e = 3, signing messages where the information is in the high-order part
Consists of
• Preceding 0: the message remains smaller than the modulus
• 2: denotes a message which is to be encrypted
• Random bytes (padding):
– Each byte is chosen independently to make it harder to
guess the message
– Independent padding for each recipient
– Make message long enough to avoid problems with
m3 < n for e = 3
• Next 0: marks the beginning data
0
Chapter 2.2: Public Key Cryptography
Page 27
2
≥ 8 random non-zero bytes
Chapter 2.2: Public Key Cryptography
0
data
Page 28
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Example: PKCS#1
Rabin Cryptosystem
PKCS#1 (signature)
• Standard format for messages to be signed with RSA
• Data are typically a Message Digest of 128 Bit
→ Padding is required
Rabin cryptosystem
• “Secure” because of the difficulty to find square roots
modulo a composite number
• Nearly as difficult as factorising large numbers
Consists of:
• Preceding 0: the message remains smaller than the modulus
• 1: denotes a message which is to be signed
• Random bytes (padding): make the data bigger than 128 byte
• Next 0: marks the begin of data
• Digest type standardises, how to tell another party which
digest function was used
0
1
≥ 8 bytes of ff16
0
Rabin algorithm
• Choose primes p and q, both congruent to 3 mod 4
→ p and q form the private key
→ n = p ⋅ q is the public key
• Encryption of message m in the range {0, ..., n - 1}
c = m2 mod n
digest type and message digest
Chapter 2.2: Public Key Cryptography
Page 29
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Chapter 2.2: Public Key Cryptography
Page 30
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Decryption in the Rabin Cryptosystem
Decryption is more complex
• Receiver knows p and q
• Solve the two congruencies using the so-called Chinese remainder problem
• Compute: t1 = c(p + 1) / 4 mod p
t2 = p - c(p + 1) / 4 mod p
t3 = c(q + 1) / 4 mod q
t4 = q - c(q + 1) / 4 mod q
• Choose integers a = q ⋅ (q-1 mod p) and b = p ⋅ (p-1 mod q)
• Possible solutions are
m1 = (a ⋅ t1 + b ⋅ t3) mod n
m2 = (a ⋅ t1 + b ⋅ t4) mod n
m3 = (a ⋅ t2 + b ⋅ t3) mod n
m4 = (a ⋅ t2 + b ⋅ t4) mod n
• One of these results equals m…
• If m is normal text, it is no problem to find the right mi
• Otherwise, add a known header to m before encryption
Chapter 2.2: Public Key Cryptography
Diffie-Hellman Cryptosystem
Oldest public key cryptosystem
• Offers better performance than RSA
• Less general than RSA (does neither encryption nor signatures)
Purpose: two persons can agree upon a secret number (e.g. a shared key), which
cannot be computed by intercepting the publicly exchanged messages
• After the exchange of two public messages both communication partners know a
secret number
• Having agreed on a secret number, they can use e.g. DES for communication
→ Diffie-Hellman actually used for key establishment
→ Remaining problem: no authentication between the partners
Page 31
Chapter 2.2: Public Key Cryptography
Page 32
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Diffie-Hellman Algorithm
Bucket-Brigade Attack on Diffie-Hellman
Problem in Diffie-Hellman: no authentication between A and B
→ If A obtains Tb, he cannot know for sure if B has sent it
Algorithm for key establishment
• Choose a prime p with 512 bit
• Choose a number g < p with some restrictions
→ p and g are public!
• A randomly chooses a 512 bit number Sa and computes Ta = gSa mod p
• B randomly chooses a 512 bit number Sb and computes Tb = gSb mod p
→ Sa and Sb are secret
• A and B exchange Ta and Tb
• A computes kAB = TbSa mod p = gSa ⋅ Sb mod p
• B computes kAB = TaSb mod p = gSa ⋅ Sb mod p
→ A and B both compute the same secret key gSa ⋅ Sb
Bucket-Brigade attack
An attacker O obtains Ta and establishes a common secret with A
Attack method: p and q are known publicly
O
A
• A sends gSo to O (but believes it is sent to B)
S
S
a
g o = 5876
g = 8389
• O computes gSx and sends it to B
•
•
•
•
Page 33
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
shared key kAO
=
8389So
9267
shared key kBO
9267So = 5876Sb
Chapter 2.2: Public Key Cryptography
Page 34
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Diffie-Hellman for Encryption
ElGamal Cryptosystem
Encryption algorithm using Diffie-Hellman
• Each participant chooses a private key Si
• Each participant computes a public key <p, g, Ti> with Ti = gSi mod p
• Publish all public keys at a trusted public place
• Assume, B publishes <p, g, Tb>
• A computes kAB = TbSa mod p
• A uses kAB as secret key with B to compute a cipher text
• A transmits the cipher text and gSa mod p to B
• B computes kAB to decrypt the message
→ The secret key is transmitted only together with the message
• Mainly used for digital signatures
• Secure because of the difficulty to calculate discrete logarithms in a finite field
• Uses same kind of key as Diffie-Hellman
For a better security, p and g should have these properties:
• p should be a strong prime number, i.e. (p-1)/2 is prime, too
• It is desirable to have gx ≠ 1 mod p, x = 0 mod (p - 1) [if p is a strong prime number, this is
true for all g ≠ -1 mod p with g(p - 1) / 2 = -1 mod p)
• But: this is a costly way for choosing p and g!
Chapter 2.2: Public Key Cryptography
5876
→ Diffie-Hellman is only secure against
passive attacks (i.e. just watching messages)
→ Protection against active attacks: use trustful and public
location to publish gSi for all persons I in advance
= 9267
5876
8389
5876Sa
Note: It is impossible to compute gSa ⋅ Sb fast enough knowing only Ta and
Tb due to the difficulty to compute discrete logarithms, i.e. to compute Sa
from knowing gSa
Chapter 2.2: Public Key Cryptography
B computes gSb and sends it to O
O sends gSo back to A
O establishes kAO and kBO
A and B communicate via O
B
gSb
Page 35
Additionally provides a scheme for signatures
• Each person has a long-time key
– public key: <g, p, T>
– private key: S with gS mod p = T
• For each message m to be signed, a new key pair Sm, <g, p, Tm> has to be generated
• For the message m to be signed, compute a message digest dm = MD(m|Tm)
• Compute the signature X = Sm + dm · S mod (p - 1)
• Transmit m together with X and Tm
• To verify signature, compute gX, dm, and Tm · Tdm mod p
Check: gX = gSm + dm ⋅ S = gSm · gdm ⋅ S = Tm · Tdm mod p
Chapter 2.2: Public Key Cryptography
Page 36
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Digital Signature Standard (DSS)
Digital Signature Algorithm
Digital Signature Algorithm
• Generate and publish a 512-bit prime p and a 160-bit prime q with p = k · q + 1
• Generate and publish a g with gq = 1 mod p (use Fermat's theorem)
Note: g must not be 1
• Generate a long-term public/private key pair <T, S> as in ElGamal
• For each message m generate a separate key pair <Tm, Sm> by choosing Sm and
compute Tm = ((gSm mod p) mod q)
• For m, compute the message digest dm
• Compute the signature X = Sm-1 · (dm + S · Tm) mod q
• Transmit m, Tm, and X
Digital Signatures with DSS
• DSS algorithm is called Digital Signature Algorithm (DSA)
• Algorithm to create digital signatures based on ElGamal
• Difference to ElGamal is the speed of operations (3 times faster):
Instead using a p of 512 bit, for some operations only use a prime q of 160 bit,
for which holds: p = k ⋅ p + 1
Note: using ElGamal means to generate a key pair <Sm, Tm> for each message
m which has to be signed
• If a pair of keys is used only for two different messages, it would expose the
signer's private key:
→ With only two uses, Sm can be deducted
→ By knowing Sm, the secret key S easily can be computed
Chapter 2.2: Public Key Cryptography
Page 37
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Chapter 2.2: Public Key Cryptography
Page 38
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Merkle-Hellman Cryptosystem
Merkle-Hellman in Cryptography
Principle:
Use a simple Knapsack problem as private key and transform it into a hard one which is used
as public key. A message m = (m1, m2, ..., mn, ...) is seen as a solution for the problem, i.e.
if mi = 1, mi is in the knapsack
Knapsack Problem
• Pack a knapsack optimally with n objects of different weights a1, ..., an and
overall size g
n
• Search for an order (ki), ki ∈ {0, 1} for i = 1, ..., n with ∑ ai ⋅ ki = g
i =0
• This is an NP hard problem
Merkle-Hellman cryptosystem
• Based on the knapsack problem
• Special type of knapsack problem:
i
The sizes of the objects form a fast growing sequence with a j +1 > ∑ ai
j =1
There is a solution in O(n):
Start with the biggest object and find a new smaller knapsack
with one object less
Chapter 2.2: Public Key Cryptography
Signature verification
• Calculate the mod q inverse of the signature, X-1
• Calculate the message digest dm
• Calculate x = dm · X-1 mod q and y = Tm · X-1 mod q
• Calculate z = (gx · Ty mod p ) mod q
• If z = Tm, the signature is verified
Page 39
Example:
• A chooses a Knapsack problem a with a = (ai) = (2, 5, 9, 21, 45, 103, 215, 450, 946) as key
• A chooses a prime p = 2003 and a number k = 1289
• A generates a hard Knapsack problem e = (ei) with ei = k ⋅ ai mod p
→ e = (575, 436, 1586, 1030, 1921, 569, 721, 1183, 1570)
• B encrypts a message m = (1, 0, 1, 1, 0, 0, 1, 1, 1) to A by using e
→ c = 1 ⋅ 575 + 0 ⋅ 436 + 1 ⋅ 1586 + 1 ⋅ 1030 + 0 ⋅ 1921
+ 0 ⋅ 569 + 1 ⋅ 721 + 1 ⋅ 1183 + 1 ⋅ 1570 = 6665 (this value is transmitted)
• A computes g = k-1 ⋅ c mod p = 317 ⋅ 6665 mod 2003 = 1643
• A solves 1643 for (ai) by choosing the biggest fitting number in (ai) till 1643 is reached:
(2, 5, 9, 21, 45, 103, 215, 450, 946)
→1 0 1 1 0 0
1
1 1
Page 40
Chapter
Public message
Key Cryptography
→ The2.2:
original
is given by the elements of a
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Modern Public Key Cryptosystems
Elliptic Curves – Definition
Definition: Let p > 3 be prime. The elliptic curve y2 = x3 + ax + b over
Zp is the set of solutions (x,y) ∈ Zp×Zp for the congruence
y2 ≡ x3 + ax + b (mod p),
where a, b ∈ Zp are constants, so that
4a3 + 27 b2 ≡ O (mod p),
together with a special point O called the point of infinity.
Classic public key cryptosystems are well analysed
• The performance of classic public-key cryptosystems is acceptable
• Security: classic public key cryptosystems are not perfectly secure, but
computationally secure
Modern public key cryptosystems improve the classic ones:
• Performance: modern public key cryptosystems have a better
performance than the classic ones
• Security: modern public key cryptosystems also offer better security (with
the same key length)
• Example: Elliptic Curve Cryptosystem
→ Provide security equivalent to classical public key schemes
→ Shorter key lengths, resulting in faster computing, less complex chips
Chapter 2.2: Public Key Cryptography
Page 41
Page 42
Chapter 2.2: Public Key Cryptography
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Addition Operation
Elliptic Curve - Example
Points on the elliptic curve E: y2=x3+x+6 in Z11
Let E be an elliptic curve over Zp, P = (x1, y1), Q = (x2, y2).
If x2 = x1 and y2 = -y1, then Q = -P, P + Q := O; otherwise P + Q := (x3, y3), with
x3 = λ2 – x1 – x2
y3 = λ(x1 – x3) – y1
and
⎧ y 2 - y1
, if P ≠ Q
⎪x - x
⎪ 2 1
λ=⎨ 2
⎪ 3 x1 + a , if P = Q
⎪
⎩ 2y1
Finally, P + O = O + P = P.
Chapter 2.2: Public Key Cryptography
Page 43
x
x3+x+6 mod 11
0
6
in QR(11)?
y
no
[no solution]
→ E = {O, (2,4), (2,7), (3,5), (3,6), (5,2), (5,9),
(7,2), (7,9), (8,3), (8,8), (10,2), (10,9)}
Let α = (2,7). Then α is a primitive element:
1
8
no
2
5
yes
4, 7
3
3
yes
5, 6
4
8
no
5
4
yes
6
8
no
7
4
yes
2, 9
8
9
yes
3, 8
9
7
no
10
4
yes
2, 9
α =
(2,7)
2α = (5,2) = α + α
3α =
(8,3)
4α = (10,2)
5α =
(3,6)
6α =
(7,9)
7α =
(7,2)
8α =
(3,5)
9α = (10,9)
10α =
(8,8)
12α =
(2,4)
11α =
(5,9)
2, 9
i.e. (x,y) = (3,5) and (x,y) = (3,6) are points on the elliptic curve
Chapter 2.2: Public Key Cryptography
Page 44
Lehrstuhl für Informatik 4
Kommunikation und verteilte Systeme
Example: ElGamal Encryption with Elliptic Curves
Let α = (2,7) and a = 5, so β = 5 α = (3,6)
(a is secret and for large numbers can‘t be obtained from α and β in reasonable time)
The encryption operation is
ek(x,r) = (r α, x + r β) = (y1, y2),
ek(x,r) = (r (2,7), x + r (3,6)), where x ∈ E and 0 ≤ r ≤ 12
and the decryption operation is
dk(y1,y2) = y2 – ay1 = y2 – 5 y1
Alice wants to send x = (7,9) to Bob; she chooses the random value r = 7. She then
computes
y1 = 7(2,7) = (7,2)
y2 = (7,9) + 7(3,6) = (7,9) + (10,9) = (5,2)
Bob receives y = ((7,2),(5,2)) and obtains
x = (5,2) – 5(7,2) = (5,2) – (10,9) = (5,2) + (10,2) = (7,9)
Chapter 2.2: Public Key Cryptography
Page 45