Ⅰ. 서론
Self-Shrinking 생성기(SelRShrinking Generator, 이하SSG)는 Meier와 Staffdbach가 제안한 논리로 Shrinking 생성기에서 人]용하는 두 개의 LFSR(Linear Feedback Shift Register)의 동작을 한개의 LFSR로 구현하고자 흐】는 발상을 기반으로 설계되었다(1). SSG의 구조는, 우선 LFSR 2회 동작으로 얻어진 비트쌍 (a2/, 物+i) 에서 a2i = 1이면 을 키수열로 출력하고, 아니면 키수열 출력 없이 다시 LFSR을 2회 동작한다.
SSG의 설계자들은 기본적인 전수조사 공격과 엔트로피 공격에 대한 안전성을 제시하였는데, 특히 Z을 LFSR의 길이라 할 때 SSG에 대한 엔트로피 공격의 시간복잡도가 0(2°, '眞)임을 밝혔다(1). 그러나 최근까지 제안된 여러 공격방법'mV)들에 의해 SSG의 공격에 필요한 시간복잡도는 계속적으로 낮아지고 있다. 간략하게 살펴보면, 논문 [2]에서는 0(2°-6951), 그리고 논문 [3]에서는 BDD(Binary Decision Diagram)-공격에 의해。(2*知)로 점차 개선되었다. 이 두 공격은 많은 메모리 요구량에 의해 비현실적인 것으로 인식되었으나, 최근 논문 [4]에서는 BDD-공격과 거의 같은 시간복잡도를 가지면서 002)의 메모리를 사용하는 공격 방법이 제안되었다. 물론 스트림암호에 대한 가장 일반적인 공격 방법인 TMTO(Time-Memory Trade-Off) 공격⑹의 경우 시간복잡도가 0(2°%로 가장 낮지만, 。(2°. 成)의사전계산과 함께 0(2"皿)_비트 키수열과。(2顽)의 메모리가 필요하기 때문에 현실적인 공격이라고 볼 수는 없다. TMT0 공격의 시간복잡도에 가장 근접한 공격으로 최근 Zhang과 Feng에 의해 제안된 guess-and-de-tennine 공격⑸은 £2100일 때。(2°演虹)-비트 키 수열과 0仍 메모리를 사용하여 시간복잡도。(2°方位)로 SSG를 공격할 수 있고, Z<100인 경우, 필요한 키 수열이 0(2°相地)-비트, 시간복잡도가로 약간 증가한다. 이 공격은 TMTO 공격보다 시간복잡도가 약간 더 크지만, 사전계산이 필요없고 메모리 사용량이 적은 점을 감안할 때 현실적으로 SSG에 적용 가능한 가장 효율적인 방법으로 볼 수 있다.
최근 Chang 등이 제안한 XOR을 이용한 변형 Self-Shrinking 생성기 (Self-Shrinking Generator with XOR, 이하 SSG-XOR)⑺는 SSG와 비슷한 방식으로 동작하지만, 두비트의 키수열을 한번에 출력하기 위해 LFSR 을 4회 연속으로 동작하여 얻어진 4비트를 다룬다. 각각의 4비트 LFSR 출력 (a*, a4i+l, 叫叫, 缶电)에서, SSG-XORe 山阳如+1 = 1이면 啊+2와 a4+3을 키 수열로 출력하고, 아니면 키수열 출력 없이 다시 LFSR을 4 회 동작한다. 다음[그림 1]은 SSG와 SSG-XOR의 동작 방식의 차이점을 보여준다.
[그림 1] Self-Shrinking 생성기와 SSG-XOR
SSG-XOR의 제안자들은 SSG에 대한 각종 공격 방법들을 SSG-XOR에 적용한 결과를 토대로 SSG-XOR이 엔트로피 공격(1)이나 BDD-공격(2)과 같이 짧은 키수열을 사용하는 공격에 대해 SSG보다 안전함을 주장하였다. 그러나 본 논문에서는 SSG-XOR에 guess-and- determine 공격을 적용하여 SSG-XOR의 안전성이 SSG 에 비해 크게 떨어짐을 보인다. 본 논문의 guess-and-determine 공격은。(2皿此)-비트 키수열과 메모리 002)를 사용하여 시간복잡도。(2°娅)로 SSG-XOR의 초기 상태 값(initial state)을 찾을 수 있다. 참고로 guess-and-determine 공격을 포함하여 본 논문에서 비교 대상으로 거론한 SSG에 대한 공격 방법들은 모두 LFSR을 정의하는 특성다항식은 공개되어 있다는 가정하에 비밀정보인 LFSR의 초기상태값 또는 동등한 상태값(equivalent state)을 찾는것을 목표로 한다. 이때 동등한 상태 값은 주어진 특성다항식에 의해 설정된 초기 상태 값과 동일한 키수열을 출력하는 상태값을 의미한다.
본 논문의 구성은 다음과 같다. 먼저 Ⅱ절에서는 LFSR의 기본적인 성질을 살펴보고 SSG에 대한 guess-and-determine 공격에 대해 정리한다. 이어 HI절에서는 guess-and-determine 공격에 대한 SSG-XOR의 안전성을 분석하고 실제 시뮬레이션 결과를 소개한다. 마지막 N절에서는 본 논문의 내용을 요약 정리한다.
Ⅱ. Guess-and-Determine 공격
본 절에서는 SSG에 대한 guess-and-determine 공격 ⑸ 방식을 설명한다. 이를 위해 우선 기본적인 LFSR의성질에 대해 간략하게 설명한다.
2.1. Guess-and-Determine 공격의 기반이 되는 LFSR 의 성질
유한체 GF(2)에서 정의된 차수가 Z인 다항식
#
가 LFSR을 정의한다는 것은, LFSR 출력비트 边+가 다음과 같이 표현됨을 의미한다.
#(1)
위와 같이 LFSR을 정의하는 다항식 7(x)를 일반적으로 궤환다항식 또는 특성다항식 이라고 한다. 내부상태 값 (a„ 아h, 边+1)을 가지고 있는 LFSRe 식 (1)을 통해 새로운 비트 血+r를 생성하고 내부상태값을 (아h, 아+2, <以+, )로 갱신하면서 동시에 비트 ar를 줄력한다. 그러므로 최초의 내부상태값 (a0, %, ..., 処-i)과 식 (1) 에 의해 LFSR 출력수열이 결정된다. 아래[그림 2]는 초기상태값이 (ao, ai, …, 処-i)일때, LFSR의 동작 방식을 보여준다.
(그림 2) LFSR의 동작방식
특성다항식은 LFSR의 주기와 연관성을 가지고 있다. 특성다항식 顶力가 丫 - 1을 나누는 최소의 r을;5)의 order라 하고 ord(/(x)) 라 표기하면, LFSR의 출력 수열의 주기는 일반적으로 ord(/(x))의 약수가 된다. 만일 北)가 기약이면 출력수열의 주기는 정확하게 ord(/(x)) 이며 2£ - 1의 약수이다. 또한 특성다항식이 원시일 경우, LFSR의 주기는 2£ - 1로 최대가 된다. 본 논문의 나머지에서는 원시 특성다항식 兀)에 의해 정의된 LFSR만을 고려한다.
한편 다항식 7@) 에 대한 reciprocal/*(x)은 다음과 같이 정의한다.
#
그러면 다음과 같은 연관성에 의해, LFSR의 출력 a, 는 x' mod/*(x)와 대응시킬 수 있음을 쉽게 알 수 있다.
#(2)
식 (2)의 제곱은 표수(characteristic) 2인 유한체 상에서 제곱 연산의 성질에 의해 다음과 같이 표현된다.
#
그러면, (3)는 / mod /*(x)와 대응된다는 사실로부터 다음을 알 수 있다.
#
즉, 수열 b = {爾는 원래의 수열 a = {아}와 같은 특성 다항식을 공유하는 수열임을 알 수 있다. 또한 식 (3)에 X를 곱한 식으로부터 다음을 알 수 있다.
#
그러므로 c = (a2i+i) 또한 수열 a와 b를 생성하는 동일한 LFSR에 의해 생성되는 수열로 그 초기상태값만 ((3), a3> …, 边z-i)로 다르다는 것을 알 수 있다. 다음 [그림 3]은 LFSR 출력수열 a를 기준으로 수열 b, c 사이의 관계를 보여준다.
(그림 3) LFSR 출력수열 a를 기준으로 수열 b와 c사이의 관계 표현
식 (2)를 제곱뿐만 아니라, 4제곱이나 일반적인 2*제곱을 하는 경우에도 위에서 설명한 것과 같은 논리에 의하여 각각의 수열 {囚, }나 {a戏}가 역시 초기 상태 값만 다를 뿐, 원래의 수열 a와 같은 LFSR로 생성됨을 알 수 있다. 다음 정리 1은 위[그림 3]에서 보이는 수열 b와 c사이의 정확한 간격을 제시한다.
정리 1. 길이가 Z인 LFSR에서 출력된 최대 길이를 가지는 이진수열 a = (a。, at, …)가 있을 때, 두 수열 b = {bi (= 处)}와 c = {a (= a2>+i)} 의 간격은 이다. 즉, 각 z20에 대해, 4=C; + 2S이 성립한다.
증명: 다음의 식으로부터 자명하다.
#
2.2. Self-Shrinking 생성기에 대한 Guess-and-Determine 공격
정리 1에 의해' # 초기 상태 값인 수열 b = {bt (= 纱(助)}의 2宀'번째 원소임을 알 수 있다. 또한 LFSR 출력과 reciprocal./5©)와의관계를 이용하면 번째 원소는 择s mod/*(x)에 대응된다는 사실은 이미 앞에서 설명하였다.
따라서 a2j+i을 다음과 같은 방법으로 구할 수 있다. h(x) = Z-1 mod/*(x)는 (거듭제곱을 Z-1번 반복함으로써) 쉽게 계산이 가능한 식으로 다음과 같이 표현할 수 있다.
#(3)
그러면 ㎛, bt, 을 초기상태값으로 하는 LFSR의 출력에서 2宀번째 원소는 다음과 같다.
#
여기에서 bj = £珈+丿)이므루, 板->이 바로 旳+1이다. 즉 <纺+1은(02;, a2(/+i), 边(*-1))를 이용한 선형 식으로 표현 가능함을 알 수 있다. 이러한 LFSR의 성질을 이용하여, SSG에 대한 guess-and-determine 공격은 (ao, 02, ..., a2(ZT))을 찾은 후 단순한 선형대수를 통해 초기 상태 값 (a。, <71, ..., az-i)를 찾는다.
실제 SSG에 대한 guess-and-determine 공격은 수열 {函의 초기상태값 皿, a2, …, 6却-|))의 처음 I 비트 guess = (a0, % 02(, -i))를 추정한 후 나머지를 결정한다. SSG의 구조에 의해 guess와 키수열 z = {z, } 로부터 다음의 관계가 성립함을 알 수 있다.
#
이때, ㎛+1는 앞에서 설명한 바와 같이 (a2j, 020+1), …, 边(叫-1))를 이용한 선형식으로 표현 가능하고 또한 (a2j, 02(1+1), 喚*-1))는 초기상태값이 (ao, ai, <如-1))인 LFSR의 줄력이므로, , 까+r는 (ao, ai, ant-D)의 선형식으로 표현 가능하다. 여기서 ao, a2, …, a2(, -i)은 공격자가 처음에 guess로서 주즉한 값이므로, 나머지 L-1 개의 변수를 가지는 선형방정식을 guess의 Hamming weight RKguess)개 만큼 얻을 수 있다. 그러나 효율적인 공격을 위해서 실제로는 모든 I 비트의 guess를 고려하는 것이 아니라, 공격 파라미터 a (0.5< a Ml)를 정한 후 Hw(guess)> 3」을 만족하는 guess 만 선택해서 다룬다. 이는 충분한 Hamming weight를 가지는 guess를 다루어야 선형방정식을 충분히 얻어서 초기 상태 값을 정확히 구할 수 있기 때문이다. 이러한 guess를 모아둔 집합을 G = (guess | H、, (guess)N loll , 그리고 ao = 1}라 하고, G의 크기 |G| = 2“이라고 흐[.자. 그러면 집합 G의 원소를 guess로 선택하여 얻어진 a/개의 선형방정식은 거의 선형 독립이다⑸. 따라서, 。(山) = L-1 이면 나머지 초기상태값을 결정할 수 있고, 그러면 공격자가 추측해야 할 guess의 길이 Z 은 O(Z/(a+l))임을 알 수 있다.
공격자가 키수열 z = {z;}의 처음 N 비트를 알고 있다고 가정할 때, 공격 시나리오는 다음과 같다.
1. 다항식 h(x) = ' mod/*(x)를 계산 (식 (3))하고 j = 0으로 초기화
2. 집합 G의 원소 guess를 선택하고 초기상태값 찾기
2.1. 선형방정식을 L-1개 만드는데, 키수열을 zj 부터 사용함
2.2. 선형 연립방정식의 해를 구해 초기 상태 값의 후보로 함
2.3 SSG의 결과값과 실제 키수열 z、丽, ...이 일치하는 지 확인. 맞으면 초기상태값으로 반환하고 공격 종료, 틀리면 J 를 1 증가시키고 단계 2.1 부터 반복
3. 단계 2부터 반복
즉, 집합 G의 각 원소에 대해 키수열의 시작부분을 하나씩 증가시키면서 만들어지는 선형 연립방정식의 해를 찾아서 키수열과의 비교를 통해 실제 사용된 초기 상태 값인지 확인하는 것으로, 결국 각각의 선택된 guess에 대해 약 M-Z번의 시도가 가능하다. 이때, 공격이 한 번 이상 성공할 확률이 1/2이 되도록 하려면 I에 X (N-L) >2^' 을 만족해야 한다.
정리 2. SSG에 대한 guess-and-determine 공격은 。(2°奶(曲)-비트의 키수열과 메모리 O(Z2)를 사용하여 시간복잡도.2(玖로 LFSR의 초기상태값을 찾을 수 있다. 이때 Z 은 SSG에서 人}용하는 LFSR의 길이, 0.5Ma Ml이고, 0는 G의 크기를 나타내는 파라미터로서 a에 의해 결정된다.
정리 2의 자세한 분석에 대해서는 논문 [5]를 참고하기 바란다. 다脣 절에서는 SSG-XOR에 대한 guess-and-determine 공격의 계산복잡도를 분석한다.
Ⅲ. SSG-XOR에 대한 안전성 분석
앞 절에서 다룬 SSG에 대한 guess-and-determine 공격을 이제 SSG-XOR에 적용해 보자. 우선 SSG-XOR 에서 사용하는 LFSR을 정의하는 원시 특성다항식을 fix) = 1 + C1X + 0X2 + + Cz-1XL1 + U라 하자. 앞선 정리 1과 마찬가지로 SSG-XOR에 대해서 다음의 관계가 성립한다.
정리 3. 길이가 Z인 LFSR에 의해 생성된 최대 길이 의 이진수열을 a = (a0, ai, …)라 하자. 그러 면 다음 수열 s(0) = {啊}, s(1) = {a奇+i}, s<2) = {O4J+2), S(3) = {啊+3}들은 a와 같은 특성다 항식을 공유하는 LFSR의 출력으로 볼 수 있으며, 각 / = 0, 1, 2에 대해 s©와 s'버)의 간 격은 2宀2이다.
증명: 앞서 언급한 바와 같이, 각 수열 s(i> ={社')}는 a와 같은 특성다항식을 공유한다. 그러므로 각 ,•에 대해 3와 s㎛)은 일정한 간격을 두고 떨어 져 있다. 이때 두 수열 사이의 간격은 다음 식 으로부터 알 수 있다.
#
각 ,•= 1, 2, 3에 대해 다항식 (X)= mod /*(x)를 다음과 같이 표시흐)■자.
#(4)
그러면 다음의 관계식을 얻을 수 있다.
#(5)
따라서, 수열 {<%}와 다항식 加(玖 hl(x), />3(x)을 이용하면 수열 0"+l}, (O4H-2), {<為+3}을 구할 수 있다,
공격자에게 노출된 길이가 N인 SSG-XOR의 키수열을 z = (2)}라 하자. 먼저 Z개의 변수들의 집합을 A = ㎛, 04, …, 啊宀))라 하면, SSG-XOR을 공격하기 위해서는 이 변수들을 찾는 것으로 충분하다. 하지만 A의 처음 I 비트를 직접 추측하는 방식의 SSG에 대한 공격과는 다르게, SSG-XOR의 경우 (ao$a“ 04©^5, .a” -i)©a4(/-D+i)°fl 대응하는 I 비트 길이의 guess = (go, gi, …, gi)를 추측한다. 그러면 우리는 식 (5)로부터 다음과 같은 Z개의 변수로 이루어진 Z + 가Mguess) 개의 선형방정식을 얻을 수 있다.
#
이러한 선형방정식들의 공통해를 구할 수 있다면, SSG-XOR에 사용된 LFSR의 초기상태값을 찾을 수 있다. 이를 위해서, 가능한 한 많은 선형다항식을 찾을 필요가 있다. 그러므로 SSG에 대한 공격과 마찬가지로, 모든 가능한 경우를 전수조사 하는 대신에 ^(guess) 2 Id」을 만족하는 guess에 한정해서 공격을 수행한다. 이때 a (0.5MaMl)는 실제 공격과정에서 결정할 파라미터 이다.
논문 [5]에서는 위의 과정에서 얻어지는 선형방정식들이 거의 선형 독립이라 언급하고 있다. 그러므로 우리는 Z개의 변수로부터 O(l+2aZ)개의 선형 독립인 방정식을 얻게된다. 이러한 관계식으로부터 구할 수 있는 guess의 길이 I 은 O(Z/(l+2a))이다. SSG-XOR에 대한 공격 시나리오는 다음과 같다.
1. 각각의 i = 1, 2, 3에 대해, 먼저 다항식 A, (x) = rr。' " % mod /*(x) (식 (4))를 계산하고 j = 0으로 초기화
2. 주어진 파라미터 a에 대해, j¥4guess)> 기 를만족하는 guess를 추측한 후, 키수열값을 넣을 상수항 부분을 채우지 않은 채 Z개의 변수로 이루어진 선형 표현(linear expression)을 구성하여 행렬 "에 저장
2.1. 각 j (0< j <2V-l-(l+2 LoZJ ))에 대해, Zj 에서 시작하는 키수열을 사용하여 행렬 "를구성하는 선형 표현으로부터 상수항을 채운 선형 연립방정식을 구성
2.2. 선형 연립방정식의 해를 구하여 초기 상태 값의 후보로 지정
2.3. 이 후보값을 초기상태값으로 하여 SSG-XOR 을 돌려서 나오는 키수열과 원래의 키수열 {z, }曰을 비교하여 후보값이 옳은지 검증. 검증이 성공할 경우, 공격을 중지하고 찾은 값을 SSG-XOR의 초기상태값으로 반환. 검증이 실패할 경우, 丿를 증가시키고 단계 2.1 로 이동
3. 만일 선택한 guess에서 초기상태값을 찾을 수 없을 경우, 다른 guess를 임의로 선택하고 단계 2에서부터 다시 공격을 시도
이제 위 공격이 성공하기 위해 필요한 키수열의 길이를 결정하자. 공격자가 추측하는 guess는 결국 다음 집합의 원소로 볼 수 있다.
#
그러면 G의 원소의 개수는 다음과 같다.
#
이 때, G의 크기를 I어 = 2%]라고 하자. 각각의 I 개의 비트로 이루어진 guess에 대해, 공격자는 초기 상태 값을 찾기 위해 N-Z번의 공격을 시도한다. 이 과정에서 공격자는 초기상태값을 찾아야 하므로 I이 X (N-L) 22‘t를 만족해야 하고, 이는 SSG-XOR의 공격에 필요한 키수열의 길이 0(2&㎛心祯)을 결정한다. 또한 공격에 필요한 시간복잡도는 최악의 경우 다음과 같다.
#
여기에서 0(2?)는 크기 Z인 선형 연립방정식의 해를 구하는데 필요한 복잡도를 반영한 것이다.
정리 4. SSG-XOR에 대한 guess-and-determine 공격 은 0(2*成炉祯)-비트의 키수열과 메모리 002)를 사용하여 시간복잡도 0(1) - 2(£/(1+2 6) 초기상태값을 찾을 수 있다. 이때 L SSG-XOR에서 人F용하는 LFSR의 길이, 0.5 MaMl이고, 0 G의 크기를 나타내는 파라 미터로서 a 에 의해 결정된다.
SSG와 SSG-XOR 사이의 비교 결과를[표 1]에 제시하였다. 여기에서 시간복잡도에서 다항식 요소 은 무시하였다.
[표 1) LFSR2I 길이가 100보다 큰 경우 SSG와 SSGXOR을 공격하기 위해 필요한 시간복잡도, 메모리 양, 그리고 키수열 길이
SSG-XOR에 대한 공격방법은 SSG의 경우와 동일하지만, SSG에 비해 I 의 크기가 작아졌다. 이는 추정값으로부터 얻을 수 있는 방정식의 개수가 SSG-XOR의 경우 더 많다는 사실에 기인한 것이다. 그러므로 공격에 드는 시간복잡도 또한 SSG-XOR이 훨씬 낮기 때문에 SSG에 비해 공격하기 쉬워진다.
저자들은 본 논문에서 제시한 공격의 실효성을 확인하기 위해 일반 PC에서 C 언어로 작성한 코드를 통해 다양한 실험을 실시하였다. 길이가 30인 LFSR을 사용하는 경우를 예로 들어본다. LFSR의 특성다항식은 아래와 같이 선택하였다.
#
여기에서 /(对는 원시다항식이다. 그러므로 생성되는 수열은 최대 길이를 가진다. 그러면 如>), h2(x), 그리고 方3(同는 다음과 같이 계산할 수 있다.
#
임의로 생성한 초기상태값에 대해, 본 논문에서 제안한 공격은 200비트 길이의 키수열로부터 1분 이내에 초기 상태 값을 찾는 것을 확인하였다.
Ⅳ. 결론
본 논문에서는 논문[기에서 제안한 변형 SeleShrin-king 생성기에 대해 guess-and-determine 공격을 수행하여 SelfeShrinking 생성기에 비해 안전성이 크게 떨어지는 것을 확인하였다.
References
- W. Meier, O. Staffelbach, 'The self-shrinking generator,' Advances in Cryptology-EUROCRYPT '94, Lecture Notes in Computer Science, vol. 950, pp. 205-214, 1994
- E. Zenner, M. Krause, S. Lucks, 'Improved cryptanalysis of the self-shrinking generator,' Information Security and Privacy-ACISP 2001, Lecture Notes in Computer Science, vol. 2119, pp. 21-35, 2001
- M. Krause, 'BDD-based cryptanalysis of keystream generator,' Advances in Cryptology-EUROCRYPT 2002, Lecture Notes in Computer Science, vol. 2332, pp. 222-237, 2002
- M. Hell, T. Johansson, 'Two new attacks on the self-shrinking generator,' IEEE Transactions on Information Theory, vol. 52, no. 8, pp. 3837-3843, 2006 https://doi.org/10.1109/TIT.2006.878233
- B. Zhang, D. Feng, 'New guess-and-determine attack on the self-shrinking generator,' IEEE Transactions on Information Theory, vol. 52, no. 8, pp. 3837-3843, 2006 https://doi.org/10.1109/TIT.2006.878233
- A. Biryukov, A. Shamir, 'Cryptanalytic time/memory/data tradeoffs for stream ciphers,' Advances in Cryptology - ASIACRYPT 2000, Lecture Notes in Computer Science, vol. 1976, pp. 1-13, 2000
- K.-Y. Chang, J.-S. Kang, M.-K. Lee, H. Lee, D. Hong, 'New variant of the self-shrinking generator and its cryptographic properties,' Information Security and Cryptology - ICISC 2006, Lecture Notes in Computer Science, vol. 4296, pp. 41-50, 2006