820 likes | 1.07k Views
Introduction to Modern Cryptography. 7.4~8.2 Cryptographic Applications of Number-Theoretic Assumptions 이광 우 2009 년 9 월 5 일 kwlee @security.re.kr. 7.4 Cryptographic Applications of Number-Theoretic Assumptions 7.4.1 One-Way Functions and Permutations
E N D
Introduction to Modern Cryptography 7.4~8.2 Cryptographic Applications of Number-Theoretic Assumptions 이광우 2009년 9월 5일 kwlee@security.re.kr
7.4 Cryptographic Applications of Number-Theoretic Assumptions 7.4.1 One-Way Functions and Permutations 7.4.2 Constructing Collision-Resistant Hash Functions 8.1 Algorithms for Factoring 8.1.1 Pollard’s p-1 Method 8.2.2 Pollard’s Rho Method 8.2.3 The Quadratic Sieve Algorithm 8.2 Algorithms for Computing Discrete Logarithms 8.2.1 The Baby-Step/Giant-Step Algorithm 8.2.2 The Pohling-Hellman Algorithm 8.2.3 The Discrete Logarithm Problem in ZN 목 차
Chapter 7.4 Cryptographic Applications of Numter-Theoretic Assumptions
Cryptographic Applications of Numter-Theoretic Assumptions • One-way Functions and Permutations • n-bit string을 n-bit string에 대응하는 함수 • 단순히 을 의미하는 것은 아님
Cryptographic Applications of Numter-Theoretic Assumptions • The inverting experiment InvertA,f (n) : • 1. Choose input x{0,1}n. Compute y:=f(x) • 2. A is given 1n and y as input, and outputs x’ • 3. The output of the experiment is defined to be 1 if and only if f(x’)=y.
Cryptographic Applications of Numter-Theoretic Assumptions • One-way Definition 7.66 A function f :{ 0, 1 }*→{ 0, 1 }* is one-way if the follwing two conditions hold: 1. (Easy to compute: ) There exists a polynomial-time algorithm that on input x outputs f(x) 2. (Hard to invert: ) For all probabilistic polynomial-time algorithms A there exists a negligible function negl such that Pr[InvertA,f (n)=1]≤negl(n).
Cryptographic Applications of Numter-Theoretic Assumptions • ??? Theorem 7.68 If the factoring problem is hard relative to Gen, then fGEN is a one-way function.
Cryptographic Applications of Numter-Theoretic Assumptions • *One-Way Permutations
Cryptographic Applications of Numter-Theoretic Assumptions • Family of functions Definition 7.69 A tuple =(Gen, Samp, f) of probabilistic polynomial-time algorithms is a family of functions if the following hold: 1. The parameter generation algorithm Gen, on input 1n, outputs parameters I with | I | n. Each value of I output by Gen defines set DI and RI that constitute the domain and range, respectively, of a function fI defined below. 2. The sampling algorithm Samp, on input I, outputs a uniformly distributed element of DI (except possibly with probability negligible in |I | ) . 3. The deterministic evaluation algorithm f, on input I and xDI, outputs an element yRI. We write this as y:=fI(x). is a family of permutations if, for each value of I output by Gen(1n), it holds that DI=RI and the function fI : DIDI is a bijection.
Cryptographic Applications of Numter-Theoretic Assumptions • The inverting experiment InvertA,(n) : • 1. Gen(1n) is run to obtain I, and then Samp(I) is run to obtain a random x DI. Finally, y:=fI(x) is computed. • 2. A is given I and y as input, and output x’. • 3. The output of the experiment is defined to be 1 if fI(x’)=y, and 0 otherwise.
Cryptographic Applications of Numter-Theoretic Assumptions • ??? Definition 7.70 A family of functions/permutations =(Gen, Samp, f) is one-way if for all probabilistic polynomial-time algorithms A there exists a negligible function negl such that Pr[InvertA,(n)=1] negl(n)
Cryptographic Applications of Numter-Theoretic Assumptions • A family of One-waypermutations (assuming the RSA problem is hard relative to GenRSA) • Construction 7.71 • Let GenRSA be as in Section 7.2.4. Define a family of permutations as follows: • Gen : on input 1n, run GenRSA(1n) to obtain (N, e, d) and output I=<N, e>. Set I = *N . • Samp: on input I=<N ,e>, choose a random element of *N. • f : on input I = <N,e> and x *N, output [xe mod N].
Constructing Collision-Resistant Hash Functions • A Fiexed-length hash function • Construction 7.72 • Let be as described in the text. Define a fixed-length hash function (Gen, H) as follows: • Gen : on input 1n, run (1n) to obtain (, q, g) and then select h. Output s:=<, q, g, h> as the key. • H : Given a key s=<, q, g, h> and input (x1, x2)qXq, output Hs(x1, x2):=gx1hx2
Constructing Collision-Resistant Hash Functions • ??? • Proof : Let =(Gen, H) as in Construction 7.72, and let A be a probabilistic polynomial-time algorithm with Theorem 7.23 If the discrete logarithm problem is hard relative to , then Construction 7.72 is a fixed-length collision-resistant has function (subject to the discussion regarding compression, above).
Constructing Collision-Resistant Hash Functions • Algorithm’ : • The algorithm is given , q, g, h as input. • 1. Let s:=<,q,g,h>. Run A(s) and obtain output x and x’.
Constructing Collision-Resistant Hash Functions • ??? Theorem 7.24 If there exists a probabilistic polynomial-time algorithm relative to which the discrete logarithm problem is hard, then there exists a collision resistant has function.
Chapter 8.1 Algorithms for Factoring
Algorithm for factoring • One-way Functions and Permutations • n-bit string을 n-bit string에 대응하는 함수 • 단순히 을 의미하는 것은 아님
Cryptographic Applications of Numter-Theoretic Assumptions • One-way Functions and Permutations • n-bit string을 n-bit string에 대응하는 함수 • 단순히 을 의미하는 것은 아님
Cryptographic Applications of Numter-Theoretic Assumptions • One-way Functions and Permutations • n-bit string을 n-bit string에 대응하는 함수 • 단순히 을 의미하는 것은 아님
Constructing CPA-Secure Encryption Schemes • Pseudorandom Function • Keyed Function • 두 개의 입력을 가지는 함수(Two-Input Function) • 첫 번째 입력은 Key를 나타내며, 이후 k로 표시 • 두 번째 입력은 일반적인 입력값 • 일반적으로 Key k는 선택된 이후 고정되기 때문에 본 교재에서는 고정된 k를 가진, 하나의 입력값을 지닌 Keyed Function에 초점을 맞춤; • 일반적으로 Keyed Function은 Length-Preserving을 가정함
Constructing CPA-Secure Encryption Schemes • Pseudorandom Function Length-Preserving • 따라서, 으로 고정하면 는 n-bit string에서 n-bit string으로 대응하는 함수 • k와 x가 주어졌을때를 deterministic polynomial time안에 계산할 수 있는 알고리즘이 존재할 때, F는 효율적이다고 정의하며, 교재에서는 효율적인 F만 다룸
Constructing CPA-Secure Encryption Schemes • Pseudorandom Function • 만약 Fk(무작위로 선택한 key k)와 f(n-bit string에서 n-bit string으로 대응하는 모든 함수의 집합에서 무작위로 추출한 함수)를 polynomial-time adversary가 구별할 수 없을 때, keyed function F는 pseudorandom function이라 함 F( k, x )의집합 n-bit string에서 n-bit string에 대응하는 모든 함수 집합 무작위로 k를 선택하여 결정한 함수 Fk 임의로 선택한 함수 f Indistinguishable
Constructing CPA-Secure Encryption Schemes • Pseudorandom Function • Distinguisher D • Random function f와 Random하게 선택한 k로 인해 결정되는 Function F를 Distinguisher가 구분할 수 없으면, F는 Pseudorandom Function • D는 오라클에 접근이 가능함 • F 또는 f에 대해서 모두 접근이 가능 • 오라클은Black-box로 취급되며, 공격자 A에게도 오라클은 동일하게 제공됨 • 오라클은Deterministic Function으로 동일한 입력에 대해서는 동일한 값을 출력
Constructing CPA-Secure Encryption Schemes • Pseudorandom Function Definition 3.23 Let F : { 0, 1 }* X { 0, 1 }* → { 0, 1 }* be an efficient, length-preserving, keyed function. We say that F is a pseudorandom function if for all probabilistic polynomial-time distinguisher D, there exists a negligible function neglsuch that | Pr[DFk(∙)(1n) = 1] – Pr[Df(∙)(1n) = 1 | ≤ negl(n), where k ← { 0, 1 }n is chosen uniformly at random and f is chosen uniformly at random from the set of functions mapping n-bit strings to n-bit strings.
Constructing CPA-Secure Encryption Schemes • On the Existence of Pseudorandom Functions • Pseudorandom Function은 실존하는가? • 실제로 블록 암호 알고리즘이 Pseudorandom Function과 유사하게 동작하는 것으로 여겨짐 • 3.6.3에서 블록 암호에 대해 간략히 다루며 더 상세한 내용은 5장에서 다룸
Constructing CPA-Secure Encryption Schemes • Using Pseudorandom Function in Cryptography • 암호의 구성(Cryptographic Construction)과 Pseudorandom Function • Pseudorandom Function은 암호문 블록을 구성하는데 매우 효율적인 방법임이 다양한 암호 구성을 통해 밝혀졌음 • 본 절에서는 Pseudorandom Function을 CPA-Secure 특성을 갖는 암호 구성에 적용하며, 4장에서는 MAC(Message Authentication Code)를 구성하는데 사용함 • Pseudorandom Function을 사용하는 가장 큰 이유 중 하나는 Pseudorandom Function을 사용한 구성은 깔끔하고(Clean) 우아한(Elegant) 분석이 가능하기 때문
Constructing CPA-Secure Encryption Schemes • Using Pseudorandom Function in Cryptography Step 1 • Pseudorandom Function 대신 실제 Random Function을 사용한다고 가정하고 암호의 안전성을 증명 Step 1 • Random Function 대신 Pseudorandom Function을 사용해도 공격자가 암호를 파괴(break)할 수 없음을 증명 It must implicitly be distinguishing the function from random !!
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Pseudorandom Function을 사용한 Encryption Scheme • Enck(m) = Fk(m) • Pseudorandom Function을 사용한 가장 단순한 Encryption Scheme은 위와 같이 Pseudorandom Function을 그대로 암호화에 적용하는 방법 • 그러나 Fk(m)은 Deterministic Function이기 때문에 CPA-Secure하지 않음(3.5절 참조)
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions Fresh random String r • Random String R • Deterministic Function을 Probabilistic으로 변경하기 위해 사용 • R을 사용하면, 매번 다른 Pad값이 사용되기 때문에 Probabilistic Function • 물론, 확률적으로 같은 r값이 여러 번 반복해서 사용될 수도 있음 Pseudorandom Function Pad Plaintext Ciphertext XOR
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Construction 3.24 • Let F be a pseudorandom function. Define a private-key encryption scheme for message of length n as follows. • Gen : on input 1n, choose k ← { 0, 1 }n uniformly at random and output it as the key • Enc : on input a key k ∈ { 0, 1 }n and a message m ∈ { 0, 1 }n, choose r ← { 0, 1 }n uniformly at random and output the ciphertext • c := < r, Fk(r) XOR m > • Dec : on input a key k ∈ { 0, 1 }n and a ciphertext c = < r, s >, output the plaintext message • m := Fk(r) XOR s
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Construction 3.24는 Pseudorandom Function을 사용한 CPA-Secure Encryption Scheme을 나타냄 • Construction 3.24의 안전성은 Pseudorandom Function Fk(r)와 Random Function f를 공격자가 구별할 수 없음(Indistinguishable)을 바탕으로 함 • Random value r이 반복되어 사용되지 않는다고 가정하면 One-time Pad와 유사함
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions Theorem 3.25 If F is a pseudorandom function, then Construction 3.24 is a fixed-length private-key encryption scheme for messages of length n that has indistinguishable encryption under a chosen-plaintext attack.
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • Construction 3.24에서 Pseudorandom Function 대신 실제 Random Function을 사용하는 Encryption Scheme • q(n)을 공격자가 오라클에 시도할 수 있는 최대 query 횟수라하면모든 공격자 A에 대해 아래 식이 성립 (3.4)
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • (3.4)의 유도과정 • 메시지 m이 암호화 될 때에는 항상 임의의 r←{0, 1}n을 선택하여 <r, f(r) XOR m >으로 암호화 • c:= < rc, f(rc) XOR mb >라 하면, 두 가지 경우가 발생함 • Case 1: rc가 A의 query에 대한 암호문을 생성할 때 한번 이상 반복되어 사용되는 경우 • Case 2: rc가 A의 query에 대한 암호문을 생성할 때 한번도 반복되지 않는 경우
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • Case 1 • 만약, 이전에 사용된 rc가반복되어 사용되는 경우 공격자는 어떤 평문이 암호화되었는지 알 수 있음 • 메시지 m의 암호문 <r, s>에서 < s XOR m >을통해 f(r)을 알 수 있으므로, 이 f(r)을 바탕으로 암호화된 m을 결정할 수 있음 • q(n)을 공격자 A에게 허용된 최대 query 횟수라고 하면, 반복된 r을 획득할 수 있는 최대 확률은 q(n)/2n
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • Case 2 • rc가 반복되어 사용되지 않는 경우, 공격자 A는 f(rc) 값을 알 수 없기 때문에, 공격에 성공할 확률(b’=b)은정확히 ½ • Repeat를 rc가 오라클에서 한번 이상 사용되는 사건이라고 하면, Repeat가 발생할 최대 확률은 q(n)/2n • Case 2에서는 Repeat가 한번도 발생하지 않으므로 발생할 확률은 0
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • Case 1과 Case 2를 고려하여 (3.4)를 유도
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • 이제 공격자를 PPT에 한정하고 를정의 (3.5)
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • 공격자 A는 PPT이므로, 최대 query 횟수는 다항식 q(.)로 표현가능 • (3.4)가 이를 반영하고 있으므로, PPT 공격자 A의 성공확률은 아래와 같이 나타낼 수 있음 • (3.5)에 의해 아래 식도 유도 가능
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • 만약 이 negligible하지 않으면, 두 수식의 차이 역시 negligible하지 않으므로, 직관적으로 Pseudorandom Function과 Random Function을 구별할 수 있음 • 공격자 A는 Pseudorandom Function과 Random Function을 구별하기 위해 Distinguisher D를 사용
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions Distinguisher D: D is given input 1n and access to an oracle O : {0, 1}n→{0, 1}n Run A(1n). Whenever A queries its encryption oracle on a message m, answer this query in the following way:(a) Choose r←{0, 1}n uniformly at random.(b) Query O(r) and obtain response s’.(c) Return the ciphertext <r, s’ XOR m > to A. When A outputs message m0, m1 ∈ {0, 1}n, choose a random bit b←{0, 1} and then:(a) Choose r←{0, 1}n uniformly at random.(b) Query O(r) and obtain response s’.(c) Return the ciphertext <r, s’ XOR mb > to A. Continue Answering any encryption oracle queries of A as before. Eventually, A outputs a bit b’. Output 1 if b’=b, and ouput 0 otherwise.
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • Case 1: D의 오라클이 Pseudorandom Function인 경우 • 이 경우 D가 Pseudorandom Function을 인지할 확률은 의 시험과 동일 • Case 2: D의오라클이RandomFunction인경우 • 이 경우 D가 Pseudorandom Function을 인지할 확률은 의 시험과 동일
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Proof : • (3.4), (3.5) 및 위의 수식들을 연합하면, 아래와 같음 • F를 Pseudorandom Function이라고 가정하였으므로, 는 반드시 negligible해야 함 • q는 다항식이므로, 은 negligible • 따라서 는 CPA-Secure
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • 임의의 길이의 m에 대한 CPA-Secure • 앞서 3.5절에서 언급했던 바와 같이 Fix-lengthm에 대해 CPA-Secure한 scheme은 임의의 길이에 대해서도 CPA-Secure • m = m1, m2, … , ml이라고 하고 각 mi는 n-bit block이라고 하면, < r1, Fk(r1) XOR m1, r2, Fk(r2) XOR m2, … , rl, Fk(rl) XOR ml >로 나타낼 수 있음 COROLLARY 3.26 If F is a pseudorandom function, then the scheme sketched above is a private-key encryption scheme for arbitrary-length messages that has indistinguishable encryption under a chosen-plaintext attack.
Constructing CPA-Secure Encryption Schemes • CPA-Secure Encryption Scheme from Pseudorandom Functions • Efficiency of Construction 3.24 • Construction 3.24에서언급하고 있는 scheme은 암호문의 길이가 평문의 길이의 두 배에 이르는 문제점을 지니고 있음 • Section 3.6.4에서 암호문의 길이를 획기적으로 줄이는 방법에 대해 소개함
Constructing CPA-Secure Encryption Schemes • Pseudorandom Permutation and Block Ciphers • Keyed Permutation • Keyed Function이 모든 k에대해 일대일 대응인 경우 • Keyed Function은 Length-Preserving이기 때문에, Keyed Permutation은 Keyed Function 중 전단사 함수인 것을 의미 • 일반적으로 Keyed Permutation은 key, input, output의 길이가 모두 동일하다고 가정 • 실제 구현상에서는 input과 output의 길이만 동일하고(block size) key는 이에 비해 짧아도 되고 길어도 됨 • Efficient Keyed Permutation • k와 x가 주어졌을 때, Fk(x)와 Fk-1(x)를 Polynomial Time 안에 계산할 수 있는 알고리즘이 존재하면, Keyed Permutation은 Efficient하다고 함
Constructing CPA-Secure Encryption Schemes • Pseudorandom Permutation and Block Ciphers • Pseudorandom Permutation & Pseudorandom Function • Pseudorandom Function의 정의에서 Random Function 대신 Random Permutation을 사용하면 Pseudorandom Permutation을 정의할 수 있음 • 직관적으로 Pseudorandom Function과 Pseudorandom Permutation은 동일함 • 만약 f(x) = f(y)를 충족하는 쌍을 발견할 수 있다면, Pseudorandom Function과 Pseudorandom Permutation을 구별할 수 있음 • 그러나, 이를 충족하는 x, y를 Polynomial Time안에 찾아낼 확률은 negligible하기 때문에, 직관적으로 Pseudorandom Function과 Pseudo Permutation은 동일함