Ⅰ. 서론
유료 TV 방송, 온라인 데이터베이스, 그리고 소프트웨어 분배와 같은 응용분야에서 인가되지 않은 사용자에 대한 접근 통제를 하기 위해서는, 데이터 공급자(data supplier)는 데이터에 접근할 수 있는 암호화 된 세션키 (encrypted session key) 를 브로드캐스트 또는 멀티캐스트 방식으로 전송하고, 인가된 사용자 (authorized user) 들은 자신의 개별 복호화 7] (personal decryption key)를 이용하여 세션키를 획득할 수 있다. 하지만, 문제는 몇명의 인가된 사용자들이 공모하여 그들의 개별 복호화 키를 인가되지 않은 사용자들 (pirates)에게 전달 해 줌으로써, 그들이 불법적인 복호기(decoder)를 제작하여 유포할 수 있는 가능성을 제공할 수 있다는 데에 있다. 이러한 문제점을 해결할 수 있는 방법 중의 하나는 공모에 참여한 즉, 자신의 개별 복호화 키를 제공한 사용자의 신원 파악을 압수된 불법적인 복호기에 대한 분석을 통해 가능하게 함으로써, 인가된 사용자들이 자신의 키를 다른 사용자에게 유포하는 것을 사전에 억제하는 것이다. 이러한 공모자 추적기법(traitor tracing scheme)은 Chor와 NaoF에 의해서 처음 제시 되었는데, 기본적인 개념은 개별 복호화 키의 원래 소유자를 추적할 수 있게 각각의 인가된 사용자들의 키에 식별 (fingeiprinting) 기능을 내장 시키는 것이다.
최근, Reed-Solomon 부호를 이용한 공개키 기반의 공모자 추적기법이 Boneh와 FrankliiP에 의해서 제안되었다. 그들이 제안한 공개키 기반의 브로드캐스트 암호화 기법의 특징은, 암호화를 위한 한 개의 공개키가 주어졌을 때, 복호화에 소요될 각 사용자들의 서로 다른 개인키는 t개의 오류를 수정할 수 있는 Reed-Solomon 부호를 통해서 생성된다는 데에 있다. 이렇게 생성된 개인키는 개별 복호화 키를 의미하는데, 이를 기반으로 최대 t명의 공모자들에 의해서 제작되어 불법 복호기 안에 내장된 각각의 공모자들의 개인 키가 식별되어 공모자들을 색출할 수 있게 된다. 여기서 임계치 t는 Reed-Solomon 부호의 오류 수정 능력 (error-correcting capability)으로부터 도출되어 진다. 또한, 그들은 t뉘명 이상 ( 그러나 2t 명 미만 )의 공모자가 공모했을 경우에도 Guruswami와 Sudan""] 의해서 제안된 리스트 복호 알고리즘(List Decoding Algorittai)을 이용하여 일부 공모자들에 대한 부분적인 신원 파악이 가능함도 언급하였다.
본 논문에서는 t뉘명 이상의 공모자가 공모했을 경우에 대한 내용을 조합론적인 측면에서 분석한다. t+1 명 이상의 공모 발생은 결국 오류수정부호의 복호화 과정에서 복호화 오류(decoding error)가 발생한다는 것이고, 따라서 다른 일부 무고한 사용자가 공모자로 오인될 가능성이 있다. 이와 관련하여, 특정 공모자 그룹 U에 의해서 만들어진 불법적인 복호화키가 주어졌을 때, 이와 동일한 키 값을 만들어낼 수 있는 다른 사용자 그룹들 F의 존재 여부, 그리고 존재한다면 어떠한 방식으로 동일한 키 값을 만들어낼 수 있는지 등을 분석한다. 특히, u n v = 0 조건을 만족하는 그룹에 초점을 맞춤으로써 t+1 명 이상의 공모가 발생했을 경우에 이들 공모자 그룹 U와는 독립적인 별개의 t명 이하의 무고한 사용자 그룹이 공모자로 오인될 수 있음을 보인다. 2장에서는 Boneh와 Franklin의 기법을 수정한 공개키 기반의 공모자 추적 시스템同에 대해서 소개를 하고, 3장에서는 1개 이상의 그룹에 속할 수 있는 불법적인 개별 복호화 키의 구축방식을 소개함으로써 무고한 사용자들이 어떻게 공모자로 오인될 수 있는지를 보인다.
Ⅱ. 선형부호를 이용한 공개키 기반 공모자 추적 기법
이번 장에서는 본 논문에서 사용되는 기호와 용어를 정의하는 의미에서 오류수정부호에 대한 간략한 내용과, 이에 기반을 두고 제안되어진 공모자 추적기법에 대해 소개한다. 특히, 여기서 소개되는 공모자 추적기법은 원래의 Boneh-Franklin 방식을 간소화한 기법으로써, 3장의 분석에서도 이 간소화된 Boneh-Franklin 방식을 이용한다.
2.1 오류수정부호
소수 q에 대해서 C를 r개의 오류를 수정할 수 있는 GF(g) 상의 (% k) 선형부호(linear code), 그리고 G 와 H를 각각 이에 대응되는 k X n 생성행렬(generator matrix), (n k) x n 패러티 검사행렬(parity-check matrix)이라고 하자. GF(g) 상의 메시지 벡터 me 생성행렬을 통해서 코드워드(codeword) c = m . G로 부호화된다. 특히, 생성행렬과 패러티 검사행렬 간에는 G Ht= 0이 성립하기 때문에 c -HT = 0가 된다. 채널 상에서 발생되는 오류벡터 (error vector) e는 코드 워드에 첨가되고 수신자는 수신된 c+e를 패러티 검사행렬을 기반으로 복호화 작업을 수행한다. 만약, 오류벡터 e의 해밍무게 (Hamming wei앙it)가 t 이하일 경우에는 계산된 오증벡터 (syndrome vector) s = (c+e) .1「= 厂1「으로부터 오류벡터를 도출하게 되어 오류를 수정할 수 있게 된다.
오증벡터로부터 오류벡터를 도출해 내기 위한 간단한, 하지만 비효율적인 방식은 표준배열(stamdard array)을 이용하는 것이다. 즉, 표준배열은 수정 가능한 오류벡터와 그에 대응되는 오증벡터들로 구성된 표를 의미한다. 표준배열은 GF0)상의 g"개의 벡터를 q k 개의 coset으로 분할을 한다. 또한, 각각의 coset 은 寸개의 벡터로 구성된다. ci을 영 코드워 드(zero codeword)라 정의하면, 첫번째 coset | a, ci, ..., c做 ) = 10, C2, …, cqk }은 선형부호 C의 모든 가능한 코드 워드를 포함하게 되고, 그 이후의 X번째 coset (2 <x<q" ')은 { ex, C2 + ex, ..., c“ + ex }와 같이 구성이 된다. 여기서, ex 는 coset leader, 즉 수정 가능한 오류벡터를 의미하는데, 이전의 x-1개의 coset들을 구축하는 데에 사용이 안된 나머지 벡터들 중에서 해밍무게가 가장 작은 벡터로 선정이 된다μ
특정 오류수정부호가 가지는 오류수정 능력 f는 그 부호의 최소거리 d > 力+1에 의해서 결정된다. 이 최소거리의 의미는 r개의 오류를 수정할 수 있는 특정 부호에 존재하는 모든 코드워드 중에서 임의의 2개의 코드워드를 선정하여 해밍무게를 검사했을 경우에 그 값이 적어도 2t+l이상이 됨을 의미한다.
2.2 공개키 기반 공모자 추적 기법
Kurosawa와 Yoshida'"는 Boneh-Franklin 기법에서의 개별 복호화 키 생성방식이 필요 이상의 복잡한 구성방식을 채택하여 공개키 암호화 및 복호화에 불필요한 부하를 가중시킨다고 주장하고, 이를 간소화한 기법을 제안하였다. 하지만, Boneh-Franklin 기법에서의 추적 알고리즘은 그대로 유지하였다. 본 절에서는 Kurosawa와 Yoshida가 제안한 기법을 중심으로 설명을 한다.
데이터 공급자는 시스템 전반적으로 사용할, f개의 오류를 수정할 수 있는 GF(g) 상의 («, k) 선형부호의 패러티 검사행렬 H와, 시스템 비밀키 a = ( a2, a„.k ), aj eR 爲를 선정하고, 이를 기반으로 사용자 i W { 1, 2, .... n }의 개별 복호화 키 버 = ( a2, an k )® 써를 계산하여 안전하게 사용자, 에 게 전달한다. 이때, 血 = ( 如, 知, hMi )는 행렬 H의 i 번째 열(column)이고 @, 는 2개 벡터간 내적(inner product)을 의미한다. 또한, g를 為의 생성자라 할 때, 공개키(yi=g", yi=g\ .... *) 를 H와 함께 공개한다. 세션키 农를 암호화하기 위해서 데이터 공급자는 먼저, 임의의 난수 rM爲을 생성한 후에(必 ・ 矿 yi; yi, y“*‘)을 계산하여 브로드캐스트 한다. 이를 전송 받은 사용자, 는 자신이 계산한 bi' - 血을 기반으로 다음과 같이 복호화 과정을 수행하여 세션 키 虹를 획득한다.
#(1)
T(Mf)명의 공모자들 ix, 如 ir 이 공모하여 불법 복호화 키 s = ( Sl, S2, Set ) = . hn + 8 2(皈') . ha + ... + 庆(b『) . hm를 내장한 불법 디코더를 만들었다고 가정흐!■자. 이때, 两 + 辰 + … + 伤 = 1. 이 불법적인 복호화 키를 이용한 세션키 획득과정은 다음과 같다.
#(2)
불법적인 복호기 안에 내장된 S가 압수되었을 때, 그 공모에 참여한 각각의 공모자를 색출해내기 위한 공모자 추적 알고리즘은, 결국 S를 생성하는 데에 이용된 공모자들의 개별 복호화 키 { 虹 ba, .... biT I 를 식별해 내는 것이다. 실제로, 개별 복호화 키 ba ( z = 1, 2, ..., T )은 시스템 비밀키에 행렬 H의 해당 열 벡터 方“을 곱해서 만들어지기 때문에 그 열 벡터의 위치 값을 파악하는 것으로 충분하다.
여기서의 공모자 추적 알고리즘은 오류 수정 부호의 복호화 과정 (decoding process)에 기반을 두고 있다. 오류 수정 부호의 복호화 과정과 관련하여, s는 오류 벡터(error vector) e = (ei, e2, ..., 아)에 대응되는 오증벡터 (syndrome vector)로 간주되어질 수 있다.
#(3)
만약 C가 BCH 또는 Reed-Solomon 부호와 같은 순환 부호(cyclic code)이고 7宫일 경우에는 Berlekamp- Massey 알고리즘이나 확장된 Euclidean 알고리즘을 이용하면 s로부터 오류벡터 e를 도출할 수 있게 된다. 도출되는 오류벡터 e 내에서 0이 아닌 오류값(error magnitude)을 가지는 구성요소 e, 丰0의 위치 i를 오류 위치(error location)라고 하며, 이것이 결국 오류가 어디에서 발생 했는지에 대한 근거가 된다. s = e ■ Ht 에서 오류벡터 내의 오류값이 0인 구성요소는 s를 생성하는 데에 아무 영향을 미치지 않기 때문에, 예를 들어 ei 이외의 다른 구성요소가 모두 0이면 s = e . HT = ei . 伯이 된다. 이 사항을 공모자 추적 알고리즘에 대응시키면, 결국 오류위치가 공모자에 대한 신원을 파악하게 해 준다. 즉, 오류위치 隹 IZ={ i1; i2, ■■■> ir |, ( Z = 1, 2, T )에 대해서 오류값은 eu ( = Pibu' ) #0. 여기서 he &을 만드는 데에 사용된 행렬 日의 위치 同 일치하게 된다. 특히, 발생된 오류의 개수는 전체 공모자 수와 일치한다.
Ⅲ. 공모자 추적기법의 임계치와 조합론적 특성
什1이상의 공모가 이루어질 경우는 결국 计1 이상의 오류가 발생한 경우인데, 오류수정부호의 복호화 오류(decoding error)에 의해서 어떤 공모자는 색출이 되지만 반면에 무고한 사용자(innocent user)가 공모자로 오인될 수가 있게 된다. 따라서, 임계치 t는 공모자 추적 알고리즘이 정확히 동작하기 위한 일종 의상계 (uppxr bound)를 의미한다. 이번 장에서는 2장에서 소개된 간소화된 Boneh-Franklin 기법"을 기반으로, 그룹의 규모에 관계없이 동일한 복호화 키를 만들어 낼 수 있는 그룹의 존재 여부 그리고 그 개수 등을 파악해 봄으로써 선형부호를 이용한 공개키 공모자 추적기법의 조합론적인 특성을 분석해 본다.
3.1 표준배열과 공모자 그룹
정리 1에서는 불법 복호화 키 s가 주어졌을 때, 그것과 동일한 키를 만들어 낼 수 있는 사용자 그룹의 총 개수를 표준배열(standard amay)을 기반으로 계산한다.
[정리 1] 7명 이하의 공모자에 의해서 생성된 불법 복호화 키 s가 주어졌을 때, 그것과 동일한 키를 생성할 수 있는 모든 가능한 공모자 그룹의 총 개수는 /개 이다.
<증명>불법 복호화 키 s는 2장의 끝에서 언급한 것처럼 오증벡터이기 때문에 특정 오류벡터와 패러티 검사 행렬 日의 곱에 의해서 생성이 된다. 부연하면, 해당 오류벡터는 q '개의 coset으로 구성된 표준 배열의 특정 coset과 연계된 coset leader가 된다. 표준 배열의 특성상, 동일 coset에 속하는 모든 벡터는 해당 coset의 coset leader와 동일한 오증벡터를 가진다. 따라서, 1개의 cosete 寸개의 벡터로 구성이 되기 때문에, 동일한 키를 생성할 수 있는 모든 가능한 공모자그룹의 총 개수는 寸개이다.
Coset leader인 오류벡터에서 0이 아닌 값을 가지는 오류의 위치는 공모자의 신분을 나타낸다. 즉, H 의 열 벡터 (column vector)들의 선형결합(linear combi- nation)의 형태인 불법 복호화 키 s는 공모자 추적 알고리즘의 입력자료가 되며, 그것의 출력자료는 해당 열 번호(column number)가 된다. 또한, 동일한 coset에 속하는 오류벡터이외의 다른 벡터들, 즉 코드 워드에 오류 벡터가 첨가된 벡터들의 경우도 0이 아닌 값을 가지는 위치가 결국 가능성 있는 공모자들의 신분으로 간주되어질 수 있다. 따라서, 동일한 coset에 속하는 각각의 벡터들에 해당하는 공모자들의 신분들의 집합을 Ui(i= 1, 2, ... qk )라고 정의하면 정리 1에서 언급한 동일한 키를 만들어 낼 수 있는 그룹들은 대부분의 경우 서로 공통된 공모자들이 포함될 수 있는 즉, S n %。0 ( i X 丿 )한 경우에 해당한다. 이와 관련하여 본 연구의 기본적인 취지는 [/, n Uj= 0 (i j )한 조건을 만족하는 경우가 존재하는 지를 확인하는 데에 있다.
동일한 복호화 키를 만들 수 있는 다음과 같은 조건을 만족하는 상호 독립적인 2개의 사용자 집합 〃 와 P가 존재한다고 가정하자.
#(4)
만약, u와 y가 동일한 불법적인 복호화 키를 생성할 수가 있다면, 오류수정부호의 복호화 작업을 통해서는 항상 집합 u에 속한 사용자들을 공모자로 판별하게 된다. 이것이 의미하는 바는, 비록 V7} 실제 공모자들의 집합이라 할지라도 복호화 작업은 u를 공모자들의 집합으로 오인할 수가 있고, 반대로 17가실제 공모자들의 집합일 경우에 V 역시 공모자로 볼 수 있는 근거가 있기 때문에 그들, 즉 "가 공모자로 누명을 쓰고 있다고 주장을 해도 이를 반박할 근거가 없게 된다. 따라서, 임계치가 가지는 의미가 단지추적 알고리즘의 복호화 오류가 발생하지 않게 하기위한 것 이상의 의미를 가지고 있음을 확인한다. 다음 절에서 특정 조건 하에서 동일한 복호화 키를 가지는 2개의 상호 독립적인 사용자 집합이 존재함을 증명함으로써, 이와 같은 분쟁의 여지가 있음을 보일 것이다.
3.2 상호 독립적인 공모자 그룹
특정 그룹 "에 의해서 생성된 복호화 키가 주어졌을 때, 그와 동일한 키 값을 생성할 수 있는 그룹 v(v n v= 0)의 존재 가능성에 대해서 논의하기로 한다. 먼저, 특정 공모자 그룹이 생성할 수 있는 불법 복호화 키는 식 2에서와 같이 그들이 가지고 있는 각자의 개별 복호화 키를 0"員+ ... +屁=1을 만족하게 조합하면 된다. 따라서, 回의 값의 선정방식에 따라서 다양한 불법 복호화 키를 만들 수가 있다. T <t 인 경우에 U= { <1, 认 ir }를 공모자들의 집합이라 하고 다음을 정의한다.
#(5)
위의 값을 S = ( Si, S2, s* « ) = 01(術') . hll + 0 2(皈"加2 + ... + 底©疽) . 臨에 대입하면, 공모자들은 다음과 같은 불법 복호화 키 S를 생성할 수가 있다. 이때, &+& + ...+ 庆 = 1 역시 만족된다.
#(6)
즉, ex = ( eiW, fi2W, , , , , e„w )를 x번째 0.<x<q ~k) coset의 오류벡터라 하고, 오류위치e [/ (Z = 1, 2, ..., 7)에 대해서 e評 =。㎛, 心顷을 만족하기 때문에 $ = 多费가 성립된다. 반대로, V= ( if, 12, 订 }을 U Cl 丫= 0그리고 0 2 t+1 을 만족하는 임의의 무고한 사용자들의 집합이라고 하고, bv = biv + ba- + … + 如 그리고 hv = h* + M + … + 毎일 경우에 s' = M . 如라고 하자. 이때, s = s, 이 성립하기 위해서는 다음이 만족되어야 한다. 즉, $ = 이기 때문에 e*와 동일한 coset에 속하는 어떤 (*) Cy+e 에 대해서 s' =(C*) y+e . Ht, ( l<y<qk )로 표현된다. 公와 * Cy+e 에서 0이 아닌 구성요소의 위치 값이 각각 〃와 f에 속하는 사용자들을 지칭하기 때문에, unr=0의 의미는 e*에서 0이 아닌 구성요소의 위치 값에 해당하는 C* y+e 에서의 구성요소는 0이어야 한다. 즉, 必>, = Cy+e, = (d陳, d舟, d*) 라고 정의하면 舟 老 0을 만족하는 모든 此U에 대해서 猝 =。이 된다. 정리 2는 t Mk조건 하에서 해당 오증벡터 s와 s, 이 동일한, j/n μ=。을 만족하는 昭 μ가 존재한다는 것을 보인다. 소수 g 와 r <M 대해서, GF(g) 상의 r 개의 오류를 수정할 수 있는 (», k) Reed-Solomon 부호를 고려한다.
[정리 2] GF(g) 상의 t (左 k)개의 오류를 수정할 수 있는 (n, k) Reed-Solomon 부호에서, 오류벡터 e* = ( eiW, e2W, 必)를 포함하는 X번째 coset에는 必老 0을 만족하는 모든 에 대해서 i번째 구성요소가 모두。인 벡터 cy+纭가 적어도 한개 이상 존재한다.
<증명>c* y+e 의 i(任S번째 구성요소가 0이되기 위해서는 코드워드 $의 i번째 구성요소와 e*의 i번째 구성요소의 합이 0이되어야 한다. G를 기반이 되는 부호의 생성행렬이라고 하면, 코드워드 Cy의 i번째 구성요소는 /«.&가 된다. 이때, g, 는 G의 i번째 열 벡터이다. 다음과 같은 k개의 미지수 그리고 r개의 방정식으로 구성된 선형 시스템 m . A = (eu\ ei2w, eir(x) )을 정의한다. 여기서 r<r 그리고 U= { !i, 如 Z'r }에 대해서 A = [gn, ga, …, 即]. 행렬 G의 임의의 k개의 열벡터는 Vandermonde 행렬이기 때문에 그 개의 열 벡터는 선형 독립 이다. 따라서, Rank(A) = t < k. 결국 선형 시스템의 해가 적어도 한 개 이상이 존재한다.
위의 정리 2를 만족하는 코드워드와 오류 벡터를 컴퓨터 검색을 통해서 찾은 결과가 아래의 예 1에 나타나 있다. 이 예제는 정리 2의 정당성을 보여주는 예제이지, 실제 구현에 사용될 수 있는 것은 아니다.
[예 1] £=5개의 오류를 수정할 수 있는 GF(17) = { 0, 1, a1, a2, a15 ) 상의 (16, 6) Reed-Solomon 부호와 그에 대응되는 생성 다항식
#
을 고려해 보자. 이때, a=3는 원시원소가 된다. 생성행렬 G는 생성 다항식 g(x)를 기반으로 구축되어질 수가 있고, 또한 이에 대응되는 패러티 검사행렬은 다음과 같다.
#
본 예제의 부호는 조건 f M k을 만족한다. 시스템 비밀키는 a = ( s, 02, az, ■■- , a9, 叩 ) = ( a14, a 4, a12, a5, a16, 扌, a'°, 决, d3 ) 그리고 〃 = { 1, 2, 3, 4, 5 } 라고 하자. 이 경우는 f = 7 = 5을 의미한다. 이때, />i = a2, fo = cf3, fe = a11, = a10, b; = a1 그리고 bu' = a”이기 때문에 ex = ( a15, a15, a15, a", a I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )가 된다. m = ( a”, 1, d, a12, a'5, a14 )일 경우에, 財] 대응되는 코드 워드는 cy = m . G = ( a", a15, a15, a15, a15, a2, 0, a4, a % a5, a12, 0, a11, <?, a8, a5 )이다. e*와 q* +e 는 동일한 coset에 속하기 때문에, 동일한 오증벡터를 가지게 된다. 따라서, 丫 = ( 6, 8, 9, 10, 11, 13, 14, 15, 16 | 의 복호화 키는 U의 복호화 키와 동일하게 된다.
2개의 상호 독립적인 사용자 집합 〃와 K가 주어졌을 때 [정리 3]은 만약 둘 중의 하나가 f이하의 규모라면, 다른 하나는 항상 t뉘이상의 규모임을 증명하고 있다.
[정리 3] 만약 I I시 M f 이면, 항상 丨 μ I 2 r+1.
<증명>만약 I 〃 I M t 조건하에서 I μ I M r 라고 가정하자. e와 c+e를 각각 U와 丫에 해당하는 동일 coset에 속하는 2개의 벡터라고 할때, 이를 해밍무게로 표시하면 wt(e) < r와 wt(c+e) < r가 된다. 따라서, wt(c) < wt(e) + wt(c+e) < 2t 이 성 립하게 된다. 하지만, 코드워드의 최소거리가 2t+l 이상이 되어야 하기때문에, 가정이 모순이 된다.
Ⅳ. 결론
선형부호를 이용한 공개키 기반 공모자 추적 기법에서의 임계치는 해당 추적 알고리즘이 정상적으로 동작하기 위한 공모 규모에 대한 상계이다. 만약, 공모 규모가 임계치 값을 넘어서게 되면 공모자 추적 알고리즘을 통해서는 공모에 참여한 모든 공모자들을 유일하게 색출해 낼 수가 없다. 본 논문에서는 임계치 값을 넘어서는 공모가 발생했을 경우에, 어떠한 조건 하에서 무고한 사용자들의 집합이 오류 수정 부호의 복호화 오류의 결과로 인하여 공모자로 오인될 수 있는지를 분석하였다. Reed-Solomon 부호를 이용한 공모자 추적 기법과 연관하여, 동일한 복호화 키를 가지는 2개의 상호 독립적인 사용자 집합을 구축하는 방식과 그 그룹의 규모를 논의하였다. 현실적으로, 우리가 임계치의 크기를 높게 잡는다 할지라도 어떤 그룹이 공모에 참여했는지에 대한 분쟁의 가능성은 항상 존재하게 된다.
References
- Theory and Practice of Error Control Codes R.E.Blahut
- Proc. Crypto'99;Lecture Notes in Computer Science 1666 An efficient public key traitor schime D.Boneh;M.Franklin
- Proc. Crypto'94;Lecture Notes in Computer Science 839 Tracing traitors B.Chor;A.Fiat;M.Naor
- IEEE Trans.Inform.Theory v.45 no.6 Improved decoding of Reed-Solomon and algebraic-geometry codes V.Guruswami;M.Sudan
- Proc. Public Key Cryptography Linear code implies public-key traitor tracing K.Kurosawa;T.Yoshida