I. 서론
암호 알고리즘과 암호 프로토콜은 사용되는 키들의 기밀성이 유지된다는 가정 하에서 그 안전성을 보장† 받을 수 있다. 암호시스템 안에는 전반적으로 사용되는 키들을 안전하게 관리하는 키관리 메커니즘이 필수 요소로 구현되어 있으며, 키관리 메커니즘의 내부에는 하나의 마스터키로부터 더 많은 종류의 키를 생성하는 키유도함수(key derivation function, 이하 KDF)가 존재한다. NIST SP 800-108[1]에서는 KDF에 대한 표준안으로 Counter 모드, Feedback 모드, Double–Pipe line Iteration 모드라 불리는 세 가지 형태의 PRF-기반 KDF를 표준안으로 제안하고 있다. 이 표준안에는 KDF의 핵심 함수로 HMAC이나 CMAC과 같은 알고리즘을 PRF로 사용할 것을 권고하고 있다. 한편, NIST SP 800-108[1]이 발표된 지 여러 해가 지났음에도 불구하고 이에 대한 안전성 분석 관련 연구 결과는 매우 드문 실정이다.
본 논문에서는 먼저 KDF의 증명가능 안전성을 규명하기 위해 KDF와 암호화 운영모드의 안전성 분석 관점의 차이를 분석한다. 의사랜덤성을 기반으로 한 증명가능 안전성 분석에서 기존의 암호화 운영모드의 안전성 모델을 KDF에 동일하게 적용하는 것은 적절 하지 않기 때문이다.
최근 저자들은 [2]에서 NIST가 제시한 PRF-기반 KDF를 변형한 형태인 카운터 값이 XOR 연산으로 입력되는 PRP-기반 KDF의 안전성을 분석하였다. 여기에서는 [2]에 제시된 사실보다 진전된 연구 결과로 NIST 표준안에서 권고하고 있는 형태인 카운터 값이 연접 연산으로 입력되는 PRF-기반 KDF의 안전성을 분석한다. 카운터 값의 입력 형태를 연접 연산으로 고려한 점과 핵심함수를 PRP에서 PRF로 확장했다는 점이 [2]에서 고려한 조건과 다르고, 이는 NIST의 표준안에서 권고된 사항을 충실히 따른 것이라 할 수 있다.
본 논문의 주요 연구 결과는 크게 다음 두 가지로 요약할 수 있다. 첫째, 카운터 값이 XOR 연산으로 입력되는 PRF-기반 KDF 중 Counter 모드와 Feedback 모드는 PRP-기반 하에서 분석한 [2]에서와 유사한 맥락으로 공격하였을 때, 확장된 랜덤함수족과 구별 가능하여 안전하지 않음을 밝힌다. 둘째, 카운터 값이 연접 연산으로 입력되는 PRF-기반 KDF의 Counter 모드와 Feedback 모드는 확장된 랜덤함수족과 구별 불가능함을 보임으로써 안전한 방식이라는 사실을 얻는다. 결과적으로 PRF-기반 KDF에서는 사소하게 생각할 수 있는 카운터 값의 입력 형태가 증명가능 안전성을 좌우하게 됨을 알 수 있다. 즉, PRF-기반 KDF인 Counter와 Feedback 모드는 카운터 값이 연접 연산 형태로 입력되면 안전한 반면, XOR 연산 형태로 입력되면 안전하지 않다는 사실을 얻게 된다.
II. KDF와 암호화 운영모드
카운터 값은 다중 블록의 식별 요소로 KDF와 암호화 운영모드(modes of operation)에서 자주 사용된다. KDF와 암호화 운영모드에서 카운터 값이 모두 사용되지만 카운터 값의 입력 형태에 따른 차이점은 존재한다. 핵심 함수가 블록암호와 같이 입․출력 길이가 동일한 PRP로 간주할 수 있는 환경에서는 카운터 값이 XOR 연산 형태로 삽입되는 것이 일반적이다. 암호화 운영모드 중 CTR-모드[6]와 KDF 중 Millenage[7]가 대표적인 경우이다.
한편, 핵심함수를 NIST SP 800-108[1]에서 권고하고 있는 것과 같이 입․출력 길이가 다른 PRF로 사용하는 KDF인 경우에는 카운터 값이 연접 연산 형태로 삽입된다. PRP는 PRF의 특별한 경우이므로 PRF-기반 KDF에 PRP가 적용되어도 무방하다. 하지만 PRP-기반 KDF로 한정해서 안전성을 분석할경우 카운터 값의 입력 형태가 안전성을 좌우할 수도있음을 본 논문의 결과로부터 알 수 있게 된다. 암호화 운영모드의 안전성 모델 하에서는 안전하다고 알려진 방식이 KDF의 안전성 모델에서는 안전하지 않을 수도 있는 것이다. 그러므로 먼저 KDF와 암호화 운영모드의 안전성 모델에 대한 정립이 필요하다.
2.1 KDF와 암호화 운영모드의 안전성 모델
KDF의 주된 목적은 객체들에 의해 서로 공유된 마스터키로부터 사용자 인증, 기밀성, 디지털 서명, 부인방지 등과 같이 다양한 기능의 보안 서비스를 위해 필요로 하는 여러 개의 키들을 유도해 내는 것이다. KDF의 안전성은 마스터키의 기밀성에 기반 하므로, 키 복구 공격에서 공격자의 이점으로 설명할 수 있다. 이 경우 공격자가 마스터키 값을 알아내기 위한 공격 시나리오를 생각할 수 있다. 3GPP의 보안 서비스를 위해 필요한 KDF인 Millenage[7]에서 보는 바와 같이 적용 환경이 결정되면 마스터키로부터 유도해내는 키들의 개수는 정해지는 것이 일반적이다. 그러므로 KDF의 안전성 분석은 PRF를 사용하는 하나의 확장된 함수족으로 KDF를 간주하고, 이를 확장된 랜덤함수족과 비교하였을 때의 구별가능성을 분석하는 것이 타당하다. 또한, 키 복구 공격의 이점은 이 구별가능 공격의 이점으로 상계를 정할 수 있으므로 우리는 KDF의 안전성을 확장된 랜덤함수족과 비교하였을 때의 구별가능성 관점에서 탐구하고자 한다.
한편, 블록암호의 운영모드와 같은 암호화 운영모드의 목적은 가변적인 길이의 평문을 고정된 비밀키를 사용하여 암호화 하는 것이다. 암호화 운영모드의 증명가능 안전성은 비밀키를 복구하는 키 복구 공격에 안전해야 한다. 운영모드가 키 복구 공격에만 안전하다고 해서 증명가능 안전성을 보장하는 것은 아니다. 키는 모르지만 공격자가 암호문으로부터 평문에 대한 정보의 일부분을 알아낼 수 있는 경우도 있다. 암호문으로부터 평문을 알아내기 힘들게 하기 위해 운영모드의 입력에 현재 상태에 해당하는 카운터 값이나 랜덤한 초기 벡터와 같은 값을 사용한다. 카운터 값이나 초기벡터 값으로 인해 같은 입력값에 대응되는 출력값이 다르게 되고, 이는 암호화 운영모드의 안전성 목적에 부합하는 것이다.
암호화 운영모드의 증명가능 안전성은 운영모드의 입력값의 길이가 가변적이므로 KDF의 안전성 모델과는 다르다고 할 수 있다. 공격 시나리오 상에서 공격자가 오라클에게 보낼 수 있는 질의(query)의 형식이 본질적으로 다르기 때문에 KDF와 암호화 운영모드의 안전성 모델을 동일하게 적용할 수 없는 것이다. Bellare-Rogaway[3]에서 보는 바와 같이 암호화 운영모드의 안전성은 다양한 길이의 평문 쌍들로 구성된 질의(query)를 오라클에게 보낼 수 있는 공격 모델인 IND-CPA 공격 관점에서 안전성을 규명하는 것이 일반적이다.
2.2 암호화 운영모드의 증명가능 안전성
암호학계에서 KDF에 관한 연구가 상대적으로 활발히 이루어지지 않고 있는 반면, 블록암호 관련 연구 결과는 대단히 많은 편이다. KDF의 안전성 분석을 위해 참고할만한 암호화 운영모드의 증명가능 안전성 관련 연구 결과로는 Bellare-Rogaway[3]가 대표적이다. 이들은 블록암호를 핵심함수로 사용하는 암호화 운영모드에 관한 증명가능 안전성을 규명하기 위해 CTR과 CBC 운영모드를 입력되는 카운터 값의 랜덤성 유무에 따라 각각 CTRC, CTR$, CBCC, CBC$ 모드로 구분하였다. 그리고 IND-CPA 안전성 모델 하에서 CTRC, CTR$, CBC$ 모드는 안전한 반면, CBCC 모드는 안전하지 않다는 사실을 입증 하였다.
III. PRF(pseudorandom function) 개념과 구별가능 안전성
KDF 구조의 견고성을 분석하기 위해서는 의사난 수성 개념이 필요하다. 임의의 함수족과 그 함수족과 같은 정의역 및 치역을 가지는 랜덤함수족을 비교하였을 때, 두 함수족이 구별 불가능하다면 임의의 함수족이 의사난수성을 만족한다고 하고 이를 간단히 PRF(pseudorandom function)라고 정의한다. 일반적으로 블록암호 또는 해쉬함수 등과 같은 암호시스템의 핵심 알고리즘은 키공간의 균등한 분포에 의해 유도된 함수족으로 생각하여 PRF로 간주되는 것이 일반적이다. 본 논문에서 논할 KDF의 경우 핵심함수로 랜덤함수 또는 PRF를 사용하는 하나의 확장된 함수족으로 간주할 수 있다. 여기에서는 이 KDF 함수 족을 확장된 랜덤함수족과 비교하였을 때의 구별가능성을 분석함으로써 KDF의 안전성을 논하고자 한다.
3.1 함수족(function family)
함수족은 키공간 Keys, 정의역 D, 치역 R 로 하는 하나의 사상 # : Keys × D → R 으로 키 K ∈ Keys 와 임의의 x ∈ D 를 입력값으로 하여, y ∈ R 를 출력값으로 하는 이변수 함수로 생각할 수 있다. 임의의 키 K ∈ Keys 에 대하여 #K : D → R 는 #K(x) = (K, x) 로 정의하며 #K를 함수족 # 의 인스턴스(instance)라고 한다. 그러면 키공간 Keys 에서 키를 추출한 후 함수족 # 의 한 원소인 하나의 함수가 대응되는 것으로 볼 수 있다. 함수족의 확률분포는 키공간의 확률분포에 기인한다. 본 논문에서는 특별한 언급이 없으면 키공간이 균등분포(uniform distribution)를 이루고 있다고 가정한다.
또한, 본 논문에서는 키공간, 정의역, 치역에 대한 특별한 언급이 없는 한 임의의 양의 정수 k, m, n에 대하여, Keys = {0, 1}k , D= {0, 1}m, R= {0, 1}n 으로 나타낸다. 키공간 Keys 로부터 임의의 K 를 추출하는 것을 K ←Keys 로 나타내고, 함수족 # 에서 인스턴스 하나를 선택한다는 것은 f←# 로 표현하며, 이는 K ←Keys 와 f= #K 를 의미한다.
3.2 PRF와 PRP 개념
PRF와 PRP(pseudorandom permutation)개념을 정의하기 위해 특별한 두 개의 함수족을 고려 하자. 하나는 D 에서 R 로 가는 모든 함수를 모아놓은 Func(D,R)이고, 다른 하나는 D 에서 D 로 가는 모든 치환을 모아놓은 Perm(D)이다. 균등분포를 이루고 있는 Func(D,R)에서 추출한 하나의 함수를 랜덤 함수(random function)라 하고, 균등분포를 이루고 있는 Perm(D)에서 추출한 하나의 치환을 랜덤치환(random permutation)이라 정의한다. 참고로 랜덤함수족 Func(D, R)과 랜덤치환족 Perm(D)의원소의 개수는 각각 \(2^{n∙2^m}\) 과 2m!이다.
정의역과 치역이 고정된 랜덤함수족과 특정 함수족을 비교하였을 때, 계산적으로 구별 불가능한 성질을 만족하는 특정 함수족을 PRF라 하고, 이와 유사하게 랜덤치환족과 계산적으로 구별 불가능한 특정 치환족을 PRP라고 한다.
3.3 구별가능 안전성
구별가능 안전성을 분석하기 위하여 다음과 같은 안전성 모델을 설정하자. 공격자(adversary) A를 정의역과 치역이 고정된 랜덤함수족과 특정 함수족을 구별하는 알고리즘이라고 하자. 오라클은 랜덤함수 또는 특정 함수족의 인스턴스를 정확히 1/2의 확률로한 번 선택하고, A는 오라클이 선택한 함수에 접근하여 유한개의 질의(query)를 입력할 수 있다. 오라클이 선택 가능한 함수 g 를 형식적으로 표현하기 위하여 다음과 같이 두 가지 “World”를 고려하자.
World 0 : 오라클이 랜덤함수족 Func (D, R) 에서 임의의 함수를 선택한다. 즉, g ← Func (D, R)을 통해서 함수 g 가 결정된다.
World 1 : 오라클이 함수족 # 에서 임의의 함수를 선택한다. 즉, g←# 를 통해서 함수 g 가 결정된다.
공격자 A는 오라클이 둘 중에 어떤 것을 선택하였는지 알 수 없고, 질의가 계속되는 동안 오라클의 선택은 변하지 않는다. 오라클은 입력된 질의에 대해 선택한 함수 g 의 출력을 A 에게 응답(response)해준다. 공격자 A 는 유한개의 질의와 응답의 결과를 바탕으로 g 가 어떤 World로 부터 결정되었는지를 나타내는 한 비트 값 b ∈ {0, 1}를 공격의 결과물로 출력한다. 이러한 안전성 모델은 다음과 같은 형식으로 정의할 수 있다.
정의 1. # : Keys × D → R 를 하나의 주어진 함수족이라고 하자. 오라클은 World 0과 World 1 중에서 함수 g : D →R 를 선택한다. 공격자 A 가 오라클이 선택한 g 에 접근할 수 있고 한 비트 b 를 출력하는 알고리즘일 때, 두 가지 실험(experiment)을 다음과 같이 나타낸다.
# | #
공격자 A의 이점(advantage) \(Adv^{prf}\)# (A) 는 다음과 같이 정의된다.
Advprf# (A) = Pr [Exp prf-1 # (A) = 1 ] - Pr [Exp prf-0 #(A) = 1 ] = Pr [Ag = 1|g←# ]-Pr[Ag = 1|g ←Func(D, R)] .
정의 1에서 묘사한 안전성 모델을 도식화 한 것이 Fig.1이다.
Fig. 1. prf-security model
IV. 카운터 값 입력 형태에 따른 PRF-기반 KDF
NIST는 SP 800-108[1]에서 특별한 내부 구조에대한 설명 없이 PRF를 사용하는 세 가지의 KDF를명시하고 있다. KDF의 핵심함수로 PRF의 특별한경우인 PRP를 사용할 경우 카운터 값이 XOR 연산형태로 입력되는 것이 일반적이다. 블록암호의 암호화운영모드 중 CTR-모드[6]와 KDF 중 Millenage[7]가 카운터 값이 XOR 연산 형태로 입력되는 대표적인 경우이다. PRP-기반 KDF의 안전성을 분석한 결과는 [2]에 나타나 있다. 한편, 핵심함수로 PRF가 사용되는 경우에는 카운터 값이 XOR이나 연접 연산 형태로 입력되는 경우를 모두 고려해볼수 있다. 그러므로 카운터 값이 XOR 또는 연접 연산으로 입력되는 경우 각각에 대한 안전성 분석 관점의차이를 탐구해 볼 필요가 있다. 이를 위하여 먼저 카운터 값 입력 형태 차이에 대한 두 가지 모드를 엄밀하게 정의한다.
4.1 카운터 값 입력 형태에 따른 Counter 모드
카운터 값이 XOR 연산으로 입력되는 Counter 모드는 CNT-X, 카운터 값이 연접 연산으로 입력되는 Counter 모드는 CNT-C 로 명명하자. 각각을 엄밀하게 정의하면 다음과 같다. 두 정수 m 과 n 에 대하여, G 를 정의역이 {0,1}m 이고 공역이{0,1}n 인 함수공간이라 한다.
정의 2. [CNT-X 모드] 임의의 함수 g ∈G, 정수 t≥2, c1, c2 ,..., ct∈{0, 1}m에 대하여, CNT-X 모드는 다음과 같이 정의하고, 블록도는 Fig.2에 나타나 있다.
\(CNT-X[g] : \{0,1\}^m → \{0,1\}^{nt}, \\ CNT-X[g](x) = (g(x⊕c_1) , g(x⊕c_2) , g(x⊕c_t)).\)
Fig. 2. CNT-X mode
정의 3. [CNT-C 모드] 임의의 함수 g ∈G, 정수 t≥2, α(0 < α < m), c1, c2 ,..., ct∈{0, 1}α에 대하여, CNT-C 모드는 다음과 같이 정의하고, 블록도는 Fig.3에 나타나 있다.
\(CNT-C[g] : \{0,1\}^{m-\alpha} → \{0,1\}^{nt}, \\ CNT-C[g](x) = (g(c_1||x) , g(c_2||x) , g(c_t||)x).\)
Fig. 3. CNT-C mode
4.2 카운터 값 입력 형태에 따른 Feedback 모드
카운터 값이 XOR 연산으로 입력되는 Feedback 모드는 FB-X, 카운터 값이 연접 연산으로 입력되는 Feedback 모드는 FB-C 로 명명하고 다음과 같이정의된다.
정의 4. [FB-X 모드] 임의의 함수 g ∈G, 정수 t≥2, c1, c2 ,..., ct∈{0, 1}m에 대하여, FB-X 모드는 다음과 같이 정의하고, 블록도는 Fig.4에 나타나있다.
\(FB-X[g] : \{0,1\}^{m} → \{0,1\}^{nt}, \\ FB-X[g](x) = (g(x⊕c_1) , g(x⊕c_2⊕z_1) ,\\ \qquad \qquad \qquad \qquad \qquad \qquad \qquad..., g(x⊕c_t⊕z_{t-1}).\)
Fig. 4. FB-X mode
정의 5. [FB-C 모드] 임의의 함수 g ∈G, 정수 t≥2, α(0 < α < m -n) , c1, c2 ,..., ct∈{0, 1}α, z0∈{0, 1}n에 대하여, FB-C 모드는 다음과 같이정의하고, 블록도는 Fig.5에 나타나 있다.
\(FB-C[g] : \{0,1\}^{m-\alpha - n} → \{0,1\}^{nt}, \\ FB-C[g](x) = (g(z_0 || c_1 || x) , g(z_1 || c_2 || x) , g(z_{t-1} || c_t || x).\)
Fig.5. FB-C mode
V. 카운터 값 입력 형태에 따른 PRF-기반 KDF의 안전성
NIST SP 800-108[1]에서 KDF의 핵심함수로권고하고 있는 HMAC이나 CMAC과 같은 해쉬함수는 PRF로 간주되는 것이 일반적이다. 카운터 값의입력 형태에 따른 PRF-기반 KDF의 안전성을 규명하기 위해 4장에서 정의한 CNT-X, CNT-C, FB- X, FB-C로 구분하여 확장된 랜덤함수족과의 구별가능성을 분석한다. 안전성 증명을 위하여 Patarin[5]에 의해 처음 제시된 매우 유용한 정리를인용한다. 이 장에서는 정의역 D= {0, 1}m, 치역 R= {0, 1}n 임을 다시 한 번 상기하자.
정리 1.[5] 함수족 의 한 인스턴스를 E : D →R 라 하자. 랜덤함수 F 에 대하여 E 와 F 를 구별하는 임의의 공격자를 A 라 하자. X⊂ ({0,1}m) q 가 서로 다른 x=(x(1) , x(2) , ..., x(q ) )의 집합이라 하고, 다음 두 가지 조건
\(|Y| ≥ (1-ε_1)∙2^{nq}\)(1)
# (2)
를 만족하는 집합 Y ⊆ ({0,1}n) q 와 양의 실수 ε1, ε2가 존재한다면, q개의 질의를 가지는 임의의 공격자 A 에 대하여 다음을 만족한다.
5.1 CNT-X 와 FB-X 의 비의사난수성
PRF의 입력값으로 카운터 값이 XOR 연산으로입력되는 CNT-X 와 FB-X 모드는 PRP-기반 KDF에 대한 연구 결과인 참고문헌 [4]와 [2]의 공격방법과 유사하게 PRF-기반 KDF의 경우라도 안전하지 않음을 밝힐 수 있다.
정리 2. [CNT-X 의 비의사난수성] 임의의 랜덤함수 ρ ∈Func(D, R)에 대하여 CNT-X[ρ]는 확장된 랜덤함수족과 구별가능하다.
증명. CNT-X 가 확장된 랜덤함수족과 구별 가능함을 보이기 위하여 임의의 랜덤함수 ρ 를 이용한 CNT-X[ρ]를 공격하는 특정한 공격자 하나를 구체적으로 명시하자. 정의 1의 안전성 모델에 의해 오라클은 함수 World 0과 1에서 확률 1/2로 함수 G 를 선택하고 공격자 A 는 오라클이 선택한 함수 G 에 접근하여 구동한다. World 0에서는 G 에 확장된 랜덤함수가 선택되고 World 1에서는 랜덤함수 ρ 를 사용하는 CNT-X[ρ]가 G 에 선택된다. 이 때 공격자 A 를다음과 같이 구성한다.
\(Adversary A^G \\ (z_1 ^{(1)} = z_t ^{(2)})↩G(x^{(1)}) \\ (z_1 ^{(2)} = z_t ^{(2)})↩G(x^{(2)} = x^{(1)}⊕ c_1 ⊕ c_2)\)
if \(z_1 ^{(1)} = z_2 ^{(2)}\) and \(z_2 ^{(1)} = z_1 ^{(2)}\)
then return 1
else return 0
만일 임의의 ρ 에 대하여 G = CNT-X[ρ]이면 \(z_1 ^{(1)} = z_2 ^{(2)}\)와 \(z_2 ^{(1)} = z_1 ^{(2)}\) 는 항상 성립한다. 반면에만약 G 가 확장된 랜덤 함수이면\(z_1 ^{(1)} = z_2 ^{(2)}\) 와 \(z_2 ^{(1)} = z_1 ^{(2)}\) 이 성립할 확률은 2-2n이다. 그러므로 공격자 A 의 이점은 다음과 같다.
\(Adv_{CNT-X} ^{prf} (A) = 1-2^{-2n} .\)
위와 같이 CNT-X 에 대한 공격자의 이점이 거의1에 가까운 효과적인 공격자 하나를 직접 구성할 수있으므로 CNT-X 는 확장된 랜덤함수족과 구별가능하다.
정리 3. [FB-X 의 비의사난수성] 임의의 랜덤함수 ρ ∈Func(D, R)에 대하여 FB-X[ρ]는 확장된 랜덤함수족과 구별가능하다증명. FB-X 가 확장된 랜덤함수족과 구별 가능함을 보이기 위해 임의의 랜덤함수 ρ 에 대하여 FB- X[ρ]를 공격하는 특정한 공격자를 구성하자. 정의 1의 안전성 모델에 의해 오라클은 함수 World 0과 1에서 확률 1/2로 함수 G 를 선택하고 공격자 A 는 오라클이 선택한 함수 G 에 접근하여 구동한다. World 0에서는 G 에 확장된 랜덤함수가 선택되고 World 1에서는 랜덤함수 ρ 를 사용하는 FB-X[ρ]가 G 에 선택된다. 이 때 공격자 A 를 다음과 같이 구성한다.
\(Adversary A^G \\ (z_1 ^{(1)} ,..., z_t ^{(1)})↩G(x^{(1)}) \\ (z_1 ^{(2)} ,..., z_t ^{(2)})↩G(x^{(2)} = x^{(1)}⊕ c_1 ⊕ c_2 ⊕ z_1^{(1)})\)
if \(z_1 ^{(2)} = z_t ^{(2)}\) then return 1
else return 0
두 번째 질의 x(2) 를 선택할 때 \( z_1 ^{(1)}\)의 값은 m-비트로 패딩이 되어 있는 값을 선택하여 XOR 연산을하여야 한다. 이것은 첫 번째 질의 x(1) 에서 t = 2일때 \( z_1 ^{(1)}\)값이 랜덤함수 ρ 의 패딩규칙에 따라 m-비트로 패딩되고 이 값이 다시 c2 와 x(1) 과 XOR 연산되는 것과 동일하다. 만일 위의 과정으로 질의를 선택하여 공격할 때 ρ 에 대하여 G = FB-X[ρ]이면 \( z_1 ^{(2)} = [(x^{(1)} ⊕ c_2 ⊕ z_1 ^{(1)}) = z_2^{(1)}\)이다. 반면에 G 가 확장된 랜덤함수이면 \( z_1 ^{(2)} = z_2 ^{(1)}\) 이 성립할 확률은 2-n 이다. 그러므로 공격자 A 의 이점은 다음과 같다.
\(Adv_{FB-X} ^{prf} (A) = 1-2^{-n} .\)
위와 같이 FB-X 에 대한 공격자 이점이 거의 1에가까운 공격자 하나를 구성하였으므로 FB-X 는 확장된 랜덤함수족과 구별가능하다.
5.2 CNT-C 와 FB-C 의 의사난수성
구별가능 안전성 분석에 적용한 정리 1을 이용하여 CNT-C 와 FB-C 가 확장된 랜덤함수족과 구별불가능함을 보이자. 실제적으로 HMAC이나 CMAC은 키공간에서 랜덤하게 키 K 를 추출하는암호적 함수 #K로 간주할 수 있으며 이와 같은 암호적 함수는 PRF라 가정할 수 있다. 구별가능 안전성 관점에서 PRF-기반 KDF의 안전성을 증명하기 위해서는 먼저 핵심함수로 랜덤함수가 사용되는 KDF를 확장된 랜덤함수족과 구별하는 공격자 A 의 이점을 구한다. 이를 이용하여 KDF의 핵심함수로 사용되는 #K를 랜덤함수와 구별하는 공격자 B 의 존재성을 밝히고, B 의 이점을 구하면 된다.
정리 4. [CNT-C[ρ]의 의사난수성] 임의의 랜덤함수 ρ ∈Func(D, R)를 이용한 CNT-C[ρ]에 대하여, q개의 질의를 사용하는 임의의 공격자 A 의 이점은 다음을 만족한다.
\(Adv_{CNT-C[ρ]} ^{prf} (A) ≤ \cfrac {t^2 q^2} {2^{n+1}} .\)
증명. x(i) ≠ x(j) ( 1≤i≠j≤q) 를 만족하는 x= (x(1) , x(2) , ..., x(q ) )들의 집합을 X ⊂ ({0,1}m-α) q 라하고, Z ⊂ ({0, 1}nt) q 는 서로 다른 tq개의 {0,1}n 상의 원소들인 \(z_k^{(i)}\) (1≤i≤q, 1≤k≤t)들로 구성된 z = ((\((z_1^{(1)} ,\, ...\, , z_2^{(1)} ,\,...\,, z_t^{(1)}) ,\, ... \, , (z_1^{(q)}, z_2^{(q)} ,\, ... \, , z_t^{(q)}) \) 들 의집합이라 하자. 정리 1을 적용하기 위하여 위의 집합 Z 에 대하여 다음을 만족하는 양의 실수 q1 과 ε2 가 존재함을 보이자.
#
우선 \(|Z| ≥ (1 - ε_1) ∙ 2^{ntq}\) 를 살펴보면,
\(\cfrac{ | Z | }{2^{ntq}} = \cfrac {2^n ∙ (2^n-1) ⋯ (2^n - tq + 1) }{2^{ntq}}\\ \qquad 1∙ \left (1 - \cfrac {1}{2^n} \right) ⋯ \left( 1 - \cfrac {1}{2^n} \right) \\ \qquad ≥ 1 - \cfrac{1}{2^n} (1 + 2 + ⋯ + (tq - 1)) \\ \qquad = 1 - \cfrac{1}{2^n} \left( \cfrac{(tq-1)tq}{2} \right) \\ \qquad ≥ 1 - \cfrac{t^2q^2}{2^{n + 1}} \)
이 성립하므로 ε1 = \(\cfrac{t^2q^2}{2^{n + 1}}\)이라 놓으면 첫 번째 조건을 만족한다.
두 번째 조건이 성립함을 보이기 위해 x∈X 와 z∈Z 을 고정하자. 고정된 x, z에 대하여 전환확률 # 을 고려하기 위해 PRF의 입력값의중간 값 y를 정의하자. 임의의 i 와 k 에 대하여 \(y_k ^{(i)}\)= \(c_k||x^{(i)}\) 라 두면 \(y_k ^{(i)}\)는 m-비트이고 랜덤함수 ρ의 입력값이 된다. 또한 임의의 서로 다른 i, j 에 대하여 x(i) ≠ x(j) 이므로 \(y_k ^{(i)}\)≠ \(y_k ^{(j)}\)이며, 서로 다른 k, l 에 대하여 ck≠ cl 이므로 yk (i)≠ yl (i)이다. 그러므로임의의 i 와 k 에 대하여 yk (i)는 모두 다른 값이다. \(y = \left( (y_1 ^{(1)} , y_2 ^{(1)} ,\,...\,,y_t ^{(1)}) , \,...\,,(y_1 ^{(q)} , y_2 ^{(q)} , ... , y_t ^{(q)}) \right )\)라 두면고정된 x, z에 대하여 y 역시 고정된 값이다. 따라서임의의 i 와 k 에 대하여 랜덤함수 ρ 의 고정된 tq개의입력값이 고정된 tq개의 출력값으로 가는 함수 이므로전환확률은 다음과 같다.
#
그러므로 ε2 = 0 으로 놓으면, 두 번째 조건을 만족한다. 따라서 정리 1에 의해
\(Adv_{CNT-C[ρ]} ^{prf} (A) ≤ ε_1 + ε_2 = \cfrac {t^2 q^2} {2^{n+1}} .\)
을 얻는다.
정리 5. [FB-C[ρ]의 의사난수성] 임의의 랜덤함수 ρ ∈Func(D, R)일 때, FB-C[ρ]에 대하여 q개의 질의를 사용하는 임의의 공격자를 A 라 하면 다음을 만족한다.
증명. x(i) ≠ x(j) ( 1≤i≠j≤q) 를 만족하는 x= (x(1) , x(2) , ..., x(q ) )들의 집합을 X ⊂ ({0,1}m-α-n) q라 하고, Z ⊂ ({0, 1}nt) q 는 서로 다른 tq개의 {0,1}n 상의 원소들인 \(z_k^{(i)}\) (1≤i≤q, 1≤k≤t)들로 구성된 \(z=\left (( z_1 ^{(1)} , z_2 ^{(1)} , ..., z_t ^{(1)} ), ... , (z_1 ^{(q)} , z_2 ^{(q )} , ..., z_t ^{(q)} \right)\) 들의 집합이라 하자. 정리 1을 적용하기 위하여 위의 집합 Z 에 대하여 다음을 만족하는 양의 실수 ε1 과 ε2 가존재함을 보이자.
#
우선 # 를 살펴보면, 이 성립하므로 #이라 놓으면 첫 번째 조건을 만족한다.
두 번째 조건이 성립함을 보이기 위해 x∈X, z ∈Z 을 고정하자. 고정된 x, z에 대하여 전환확률 #를 고려하기 위해 PRF의 입력값의중간 값 y를 정의하자. 임의의 i, j 에 대하여 #라 두고 임의의 i 와 k 에 대하여 # 라 두면 #는 m-비트이고 랜덤함수 ρ 의 입력값이 된다. 또한 임의의 서로 다른 i, j 에 대하여 x(i) ≠ x(j) 이므로 yk (i)≠ yk (j) 이며 서로 다른 k, l 에 대하여 ck≠ cl 이므로 yk (i)≠ yl (i) 이다. 그러므로 임의의 i, k 에 대하여 yk (i)는 모두 다른 값이다. y=((y1 (1) , ...,yt (1) ), ..., (y1 (q ) , ...,yt (q ) )) 라 두면 고정된 x, z에 대하여 y 역시 고정된 값이다. 따라서 임의의 i 와 k 에 대하여 랜덤함수 ρ 의 고정된 tq개의입력값이 고정된 tq개의 출력값으로 가는 함수이므로전환확률은 다음과 같다.
#
그러므로 ε2 = 0으로 놓으면, 두 번째 조건을 만족한다. 따라서 정리 1에 의해
#
을 얻는다.
핵심함수로 #K를 사용한 KDF와 확장된 랜덤함수족이 구별 불가능함을 보이기 위해서는 #K를 랜덤함수 ρ 와 구별하는 공격자 B 의 존재성을 밝히면된다.
정리 6. [CNT-C[#K]의 의사난수성] q개의 질의를 이용하여 CNT-C[#K]를 확장된 랜덤함수족과 구별하는 임의의 공격자를 A 라고 하면, tq개의 질의를이용하여 함수족 # 의 인스턴스 #K와 랜덤함수ρ ∈Func(D, R)를 구별할 수 있는 공격자 B 가 존재해서 다음을 만족한다.
증명. #K를 공격하는 특정한 공격자 B 를 구체적으로 명시하자. B 에 대응되는 오라클은 World 0과1에서 확률 1/2로 함수 g 를 선택하고, B 는 오라클이 선택한 함수 g 에 접근하여 구동한다. World 0에서는 g 에 랜덤함수 ρ 가 선택되고, World 1에서는키공간에서 랜덤하게 선택한 K 에 의해 유도된 K가선택된다. 공격자 B 는 공격자 A 를 서브루틴으로 이용한 시나리오에 의하여 공격한다. 이 때 A 역시 A 에 대응되는 오라클이 필요하므로 공격자 B 가 A 의오라클 역할을 시뮬레이션 한다.
위에서 구성한 시나리오에서 A 가 질의 x(i) 를 자신의오라클에게 보낼 때, 공격자 B 가 관여하여 A 의 오라클처럼 행동한다. 여기에서 B 는 A 로부터 받은 x(i) 를 CNT-C 모드의 입력 서식에 맞게 카운터 값을 연접한 후 B 의 오라클에 t개의 질의를 보낸다. 그러면 B 의 오라클은 선택된 g 로부터 계산된 g(c1 ||x(i) ) , ... , g(ct ||x(i) ) 를 응답하게 되고, 이 출력값으로부터 B 는
를 A의 오라클 응답처럼 출력한다. 정의 1에 의해 B 의 이점은 다음과 같다.
한편, Bg 가 마지막에 출력하는 b는 A 가 출력하는비트 값과 일치하므로 “Bg = 1”인 사건과 “AG = 1 ”인사건은 동일하다. 더욱이 공격 시나리오에 의하여 B 의 오라클이 g 를 # 에서 선택하는 경우는 A 의 오라클 입장에서는 G가 CNT -C[#K] 로부터 선택된 것과 같고, B 의 오라클이 g 를 Func(D,R) 에서 선택하는 경우는 A 의 오라클 입장에서는 CNT -C[ρ] 로부터 G가 선택된 것과 같으므로,
이 성립한다. 따라서 확장된 랜덤함수족을 # Func 로표시하면,
결과적으로 정리 4에 의해서
#
을 얻는다.
정리 7. [FB-C[#K]의 의사난수성] q개의 질의를이용하여 FB-C[#K]를 확장된 랜덤함수족과 구별하는 임의의 공격자를 A 라고 하면, tq개의 질의를 이용하여 함수족 의 인스턴스 #K와 랜덤함수ρ ∈Func(D, R)를 구별할 수 있는 공격자 B 가 존재해서 다음을 만족한다.
정리 7의 증명은 정리 6의 증명 과정과 매우 유사하므로 생략한다.
VI. 결론
본 논문에서는 KDF의 증명가능 안전성을 규명하기 위해 KDF와 암호화 운영모드의 안전성 관점의 차이를 밝히고, 최근 발표된 사실보다 진전된 연구 결과로 NIST 표준안에서 권고하고 있는 형태인 카운터값이 연접 연산으로 입력되는 PRF-기반 KDF의 안전성을 분석하였다. 본 논문의 주요 연구 결과는 크게두 가지로 요약할 수 있다. 첫째, 카운터 값이 XOR 연산으로 입력되는 PRF-기반 KDF 중 Counter 모드와 Feedback 모드는 PRP-기반 하에서 분석한[2]에서와 유사한 맥락으로 공격하였을 때 확장된 랜덤함수족과 구별 가능함을 보였다. 둘째, 카운터 값이연접 연산으로 입력되는 PRF-기반 KDF의 Counter 모드와 Feedback 모드는 확장된 랜덤함수족과 구별 불가능함을 보임으로써 의사난수성을 만족한다는 사실을 얻었다. 이에 따라 PRF-기반 KDF 에서는 사소하게 생각할 수 있는 카운터 값의 입력형태가 증명가능 안전성을 좌우하게 된다는 사실을알 수 있었다. 즉, PRF-기반 KDF인 Counter와 Feedback 모드는 카운터 값이 연접 연산 형태로 입력되면 안전한 반면, XOR 연산 형태로 입력되면 안전하지 않다는 사실을 밝힌 것이다.
편, NIST 표준안에 제시되어 있는 나머지 다른하나인 Double–Pipe line Iteration 모드는[2]에서 PRP-기반으로 카운터 값이 XOR 형태로입력되는 변형된 모드에 대해서 안전성이 입증되었다. 그러므로 이 변형된 모드의 경우 핵심함수를 PRF로 확장하여도 안전할 것이라 예상된다. 하지만 구조의 복잡성 때문에 안전성 규명이 단순하지는않을 것으로 보인다. 후속 연구를 통하여 이것 역시규명되어야 할 것이라 생각된다.
References
- L. Chen, "Recommendation for key derivation using pseudorandom functions," NIST Special Publication 800-108, Oct. 2009.
- Ju-Sung Kang, Nayoung Kim, Wangho Ju and Ok-Yeon Yi, "A security analysis of key expansion functions using pseudorandom permutations," Workshop in Information Security Theory and Practice 2014, LNCS 8501, pp. 10-23, June 2014.
- M. Bellare and P. Rogaway, "Introduction to Mordern Cryptography," Available at http://cseweb.ucsd.edu/mihir/cse207/classnotes.html.
- H. Gilbert, "The security of one-block-to-many modes of operation," Fast Software Encryption 2003, LNCS 2887, pp. 376-395, Feb. 2003.
- J. Patarin, "How to construct pseudorandom and super pseudorandom permutations from one single pseudorandom function," Advances in Cryptology - EUROCRYPT 1992, LNCS 658, pp. 256-266, May 1992.
- M. Dworkin, "Recommendation for block cipher modes of operation," NIST Special Publication 800-38A, Dec. 2001.
- 3rd Generation Partnership Project, "Specification of the MILENAGE algorithm set: an example algorithm set for the 3GPP authentication and key generation functions f1,f1*,f2,f3,f4,f5 and f5*," 3GPP TS 35.206 v9.0.0, Dec. 2009.