DOI QR코드

DOI QR Code

Security Reconsideration on CRT-RSA Algorithm Against Fault Attacks using Opcode Modification

연산자 조작 공격에 대한 CRT-RSA 알고리듬의 안전성 재분석

  • Received : 2010.01.29
  • Accepted : 2010.04.14
  • Published : 2010.08.31

Abstract

Since the RSA cryptosystem based on Chinese Remainder Theorem is vulnerable to many fault insertion attacks, some countermeasures against them were proposed. Recently, Kim et al. or Ha et al. respectively proposed each countermeasure scheme based on fault propagation method. Unfortunately, Hur et al. insist that these countermeasures are vulnerable to their opcode modification fault attack. In this paper, we show that the proposed attack can not apply to almost CRT-RSA countermeasures which use multi-precision operations in long bit computation. Therefore, the countermeasure against fault attack proposed by Kim et al. or Ha et al. are still secure.

최근 오류주입 공격은 중국인의 나머지 정리(Chinese Remainder Theorem)를 이용한 RSA 암호 시스템(CRT-RSA)의 안전성에 심각한 위협이 되고 있다. 따라서 오류주입 공격에 강인한 대응 암호 알고리듬들이 개발되었고 다양한 오류 검사 방법이나 오류 확산을 이용한 대응책이 제시된 바 있다. 그러나 최근 Hur 등은 연산자 조작을 이용한 오류주입 공격 시 Kim 등이나 Ha 등이 제안한 알고리듬이 공격될 수 있다고 분석하였다. 본 논문에서는 이 연산자 조작 공격이 다정도(multi-precision) 연산을 하는 CRT-RSA 알고리듬에는 적용할 수 없으며 Kim 등이나 Ha 등이 제안한 알고리듬도 여전히 안전함을 밝히고자 한다.

Keywords

I. 서론

RSA 암호 시스템은 현재 보안과 관련된 많은 응용 분야에 사용되고 있는 공개키 암호 알고리듬이다 [1]. RSA 암호 시스템을 구현할 경우에는 계산 효율성을 고려하여 중국인의 나머지 정리(Chinese Remain­ der Theorem)를 이용한 방법 (CRT-RSA)이 널리 사용되고 있다〔2〕. 하지만 CRT-RSA는 단 한 번의 오류주입만으로도 저장된 비밀키를 쉽게 노출될 수 있음이 밝혀졌다〔3, 4). 따라서 Shamir에 의해 오류주입 공격 대응 방법〔5〕이 제안된 이후 많은 대응 기법들-이 연구되었다. 이 중에서 2008년 Ha 등은 한국정보보호학회 논문에서 오류 확산 기법을 이용한 오류주입 공격 대응책을 제시한바 있다〔6〕. 또한 Kim 등도 Yen 등의 기법〔기을 개선한 대응책을 제시하였다 〔8〕. 이 대응책들은 CRT-RSA 연산 시 오류가 주입되더라도 이 오류가 서 명문 전체에 확산되어 비밀키를 찾아내지 못하도록 하는 기법을 사용하였다. 그러나허순행 등은 연산 도중 특정 연산자를 건너뛰는 연산자 조작 오류공격 (opcode modification fault attack)을 가정하면서 이 두 알고리듬을 비롯한 많은 CRT-RSA 알고리듬들의 비밀키를 추출할 수 있다고 주장하였다〔9〕. 여기에서는 이들이 주장한 공격을 "Hur 등의 공격”이라 약칭하기로 한다. 본 논문에서는 이들이 제시한 연산자 오류 공격이 실질적으로 다정도(multi-precision) 연산을 하는 CRT-RSA 알고리듬에는 적용이 불가능하며 저자들이 비밀키를 찾을 수 있다고 주장하는 대부분의 알고리듬들이 오류 주입 공격에 여전히 안전함을 보이고자 한다.

Ⅱ. Kim 등의 CRT-RSA 오류주입 공격 대응 방식

2.1 CRT-RSA 암호 알고리듬과 오류주입 공격

RSA 암호 시스템에서는 두 큰 소수 p와 ?를 선택하여 합성 수 n = p . 0를 구하고, gcd(0(n), e) = l이 되는 공개키 e를 선택하고 e . d = l mod ©(n)을 만족하는 비밀키 d를 구한다. RSA 암호 시스템에서는 입력 메시지 mW%에 대한 서명이나 복호 연산은 다음과 같은 멱승을 수행한다. 편의상 논문에서는 이 연산을 간단히 서명 과정이라고 칭하고 최종 출력을 서명 값이라 한다.

#

서명 문을 구하는데 있어 연산 효율성을 높이기 위해 CRT 기법을 적용하게 되는데 CRT-RSA 연산 방법은 아래와 같이 정리된다.

#

단, 电 = d mod (p—1)이고 q =d mod (q—1)이다. Garner 방법을 사용한 CRT 재결합(recombi­ nation) 단계는 다음과 같다.

#

단, 여기서 纭 =qT medp이다.

하지만 상기한 CRT-RSA 서명 시스템은 1997년 Boneh 등에 의해 오류 주입 기술을 적용하면 비밀키가 노출될 수 있음이 밝혀졌다〔3〕. 이들이 제안한 공격 방법은 CRT-RSA 연산 과정에서 叫나 % 중 어느 하나에 오류를 주입하여 오류가 주입된 서명 s'을 얻을 수 있을 경우 비밀키를 계산해 내는 공격이다. 즉, 정상 서명 값이 s이고, %를 연산할 때 오류가 주입되어 생성된 값을 %'라고 하면, GCZ, (s-s', n)을 계산함으로써 비밀 소수 q를 구할 수 있다. 또한 Lenstra 는 하나의 오류 서명만으로도 GCD括 " - m, n)와 같이 비밀 키를 찾아낼 수 있음을 보였다〔4〕. 이 Lenstra 의 공격을 흔히 Bellcore 공격이라고 부른다.

2.2 Kim 등의 오류주입 공격 대응 방법

2008년 Kim 등에 의해 Yen의 방식⑺을 개선한 오류주입 공격 대응책이 제시되었다〔8〕. 본 논문에서는 개선된 두 가지 방법을 CRT-1 과 CRT-2라고부르고 안전성과 공격 방법이 두 방법에 모두 동일하게 적용되므로 편의상 CRTT을 중심으로 설명하고자 한다. Kim 등의 대응 알고리듬 CRT-1 은〔그림 1〕과 같으며 여기에 사용되는 정의는 다음과 같고「은 작은 랜덤한 값이다.

(그림 1). Kim 등이 제안한 CRT-1 알고리듬

#(1)

그러나 원래 Yen의 방식에서 kQ 연산 과정에서 오류가 주입되어 비밀 키가 노출되는 공격〔10〕을 방지하기 위해 Kim 등의 개선안에서는 다음과 같은 수식으로 바뀌게 되었다.

#(2)

즉’ 기존의 m 값에 원본 메시지 m으로 논리적 AND 연산을 추가하였다. 이 대응 기법은 AND 연산의 특징 중 = m이 되지만 mAz = Ti0] 된다는 성질을 이용한 것이다. 이렇게 함으로써 外에 오류가 주입되어도 비밀키를 알 수 없도록 개선한 것이다.

Ⅲ. Hur 등의 연산자 조작 공격

최근 Hur 등은 한국정보보호학회 논문에서 Kim 등이나 Ha 등이 제안한 알고리듬이 연산자 오류 공격에 취약하다고 분석하였다. Hur 등은 AND나 XOR 와 같은 연산자를 사용하는 경우 어셈블리 언어를 분석하여 이를 건너뛸 수 있는 오류주입 공격이 가능하다고 제안하였다. 그리고 그 공격을 Kim 등의 방식이나 Ha 등이 제시한 방식에 적용하여 취약한 특성이 있다고 주장하였다.

여기서 저자들은 Kim 등이 제안한 방식에서 단계 3의 m~ m A (*' s mod q) + . q) 연산을 어 셈블리 코드로 다음과 같이 간단히 나타낼 수 있다고 하였다.

Step 1. MOVE eax DWORD PTR (球 mod q*) +k

Step 2. MOVE ebx DWORD PTR m

Step 3. AND eax, ebx

Step 4. MOVE DWORD PTR m, eax

여기서 eax, ebx는 범용 레지스터로서 일반적으로 4바이트 크기를 가진다. 위 어셈블리 코드에 따르면 Step 1에서 eax에 (球 modg+g)값이 저장되고 Step 2에서 ebx에 m값이 저장되며 Step 3에서 논리적 AND 연산을 한다고 가정하였다. 그리고 Step 3을 오류 주입을 통해 건너뛰면 바로 Step 4의 저장과정에서 이에 (s: mod q*) +A: 이 저장되게 되고 이렇게 하면 기존 Yen 등이 제안한 방식과 동일한 취약점을 가진다고 분석하였다. Yen 등의 방식에서의 공격은 屈에 대한 피연산자 오류를 주입하는 것이므로 Hur 등의 공격에서는 如에 대한 피연산자 오류와 AND 연산자를 건너뛰는 2차 오류주입 공격을 가정하였다.

IV. 연산자 조작 공격에 대한 재분석

그러나 위에서 제시한 연산자 오류 공격은 중대한 분석 오류를 가지고 있다. 이 원인은 RSA 또는 CRT-RSA에서 사용하는 메시지나 파라미터의 길이로 인해 연산 과정이 다정도(multi-precision) 연산을 해야 한다는 점이다. 즉, 일반적으로 RSA에서는 최소의 안전도를 위해 소수 p나 ?는 512비트 이상을 사용하고 메시지 m도 약 1024비트를 사용한다. 그러므로 m 에 대한 실제 연산을 위해서는 m 을 #와 같이 여러 개의 디지트로 나누어 처리한다. 예를 들어 m이 1024비트"비트)이고 데이터의 처리 단위가 16비트6 = 160 = 如)라면 64개의 자리수伝 =, /“ = 64)를 갖게 된다. 따라서 1024비트의 메시지에 대한 AND 연산을 해야 하므로 실제로는 아래 수식에서 표현한 것처럼 연산 단위에 따라 수십 번의 단정도(single-precision) AND 연산의 반복으로 이루어지게 된다’

#(3)

따라서 CRT-RSA 시스템의 다정도 연산을 고려하면, Hur 등의 공격이 성공하기 위해서는 m의 디지트 개수 길이만큼의 논리적 AND 연산을 모두 건너뛰어야 한다.

위의 식 (3) 의 다정도 연산을 소프트웨어로 구성해보면 아래와 같은 단정도 연산의 반복문으로 구성할 수 있다. 여기서 Tigp는 S: mod q+kg . q 값을 의미하며 Tfemp机는 limp의 각 자리 값이다’

#

이와 같이 실제로 CRT-RSA에 사용하는 큰 정수에 대한 AND 연산은 Hur 등이 분석한 것처럼 하나의 디지트에 단 한번의 AND 연산으로 처리할 수 없으며 수십 번의 단정도 AND 연산의 반복으로 처리된다 N

본 논문에서는 위의 for 문을 이용한 다정도 계산과정을 어셈블리어로 작성해 분석하였으며 자세한 코드는 〔그림 2〕에 나타내었다.〔그림 2〕의 어셈블리 코드는 식 (3) 의 다정도 연산을 C-언어로 구현한 후 컴파일한 것으로 Hur 등이 제시한 컴파일러의 어셈블리 구조와 거의 유사하다. 따라서〔그림 2〕에서 음영으로 표시된 4줄의 어셈블리어 코드는 Hur 등의 분석 코드 Step 1에서 Step 4까지에 해당한다고 볼 수 있다.

(그림 2) 다정도 AND 연산에 대한 어셈블리 코드

〔그림 2〕를 분석해 보면 연산을 위해 for문이 인덱스 .값의 증가에 따라 반복되는 것을 볼 수 있다. 여기에서는 m이 1024비트(Z비트)이고 데이터의 처리 단위가 32비트이고 32개의 자리 수로 이루어져 있다고 가정하였다. 실제로 어셈블리 코드는 맨 마지막 줄(명령어 주소 004010DD)에서 for 구문의 인덱스 증가를 위한 위치(명령어 주소 004010b3)로 반복적으로 이동하는 것을 것을 볼 수 있다.

그러나 Hur 등이 제시한 어셈블리 코드를 보면 데이터 처리 단위가 DWORD 형태(32비트 혹은 64비트)의 디지트만 처리하도록 되어 있다. 그러므로 그들이 제안한 한 번의 AND 연산은 한 디지트에 대한 처리밖에 할 수 없으므로 Step 3에 오류를 주입한다고 해서 약 1024비트의 m에 (s;* mod q+g)을 그대로 저장한다는 것은 불가능하다. 즉. Hur 등의 공격의 단계 1이나 2에서와같이 하나의 레지스터 eax나 ebx에 1024 비트 정도의 (sjmodg+g)나 m을 저장할 수 없으므로 다정도 연산을 해야 하지만 모든 다정도 AND 연산을 오류 주입에 의해 건너뛸 수는 없다. 즉, 〔그림 2〕의 어셈블리 코드에서 명령어 주소 004010D4를 수십 번(예제에서는 32번의 규칙적인 AND 연산을 모두 건너뛰는 것도 불가능하다. 최악의 경우를 가정하여 〔그림 2〕의 어셈블리 코드 중 004010D4 번지 코드를 손상시켜 건너뛴다 하더라도 변수 73np同와 m風의 사용 순서를 바꾸면 m에는 (s;" mod q+g)가 아닌 m이 저장되도록 변수를 조정할 수 있다. 이 경우에는〔그림 1〕에서 사용된 r.값을 모르는 이상 오류 주입 공격은 불가능하다.

결국, Hur 등이 제안한 연산자 오류 공격은 16비트 혹은 32비트와 같은 단정도 AND 연산에만 오류주입이 가능하므로 실제로 1024비트 데이터를 사용하는 CRT-RSA에는 적용할 수 없다. 따라서, Kim 등 혹은 Ha 등의 방식을 비롯한 저자들이 공격 가능하다는 주장하던 대부분의 CRT-RSA 알고리듬들은 연산자 오류 공격에 모두 안전하다.

V. 결론

본 논문에서는 Hur 등이 제안한 연산자 오류주입 공격에 대한 가능성을 재분석하였다. 아주 정밀도를요하는 오류 주입 장비로 피연산자 공격과 연산자 공격을 가정하였지만 연산자 오류 공격은 CRl'RSA가큰 소수에 대한 다정도 연산을 수행하는한 번의 고려하면 한번의 단정도 연산자 동작을 건너뛰어 공격한다는 것은 불가능하다. 따라서 Kim 등이나 Ha 등이 제안한 CRT-RSA 방식을 비롯한 대부분의 알고리듬은 연산자 조작 공격에 안전성을 유지하고 있다.

감사의 글

이 논문은 2009학년도 경북대학교 연구교수 연구비에 의하여 연구되었음.

References

  1. R. Rivest, A. Shamir, and L. Adleman, ''A Method for Obtaining Digital Signatures and Public-key Cryptosystems," ACM, Vol. 21, pp. 120-126, 1978. https://doi.org/10.1145/359340.359342
  2. C. Couvreur, J. Quisquater, "Fast Decipherment Algorithm for RSA Public-Key Cryptosystem," Electronics Letters, Vol. 18, pp. 905-907, 1982. https://doi.org/10.1049/el:19820617
  3. D. Boneh, R. DeMillo, and R. Lipton, "On the Importance of Checking Cryptographic Protocols for Fault," EUROCRYPT'97, LNCS 1233, pp. 37-51, Springer-Verlag, 1997.
  4. A. K. Lenstra, "Memo on RSA signature generation in the presence of faults," Sept. 1996.
  5. A. Shamir, "Method and Apparatus for Protecting Public Key Schemes from Timing and Fault attacks," US Patent 5991415, 23, Nov. 1999.
  6. 하재철, 박제훈, 문상재, "오류 확산 기법을 이용한 CRT-RSA 오류주입 공격 대응방안," 한국정보보호학회 논문지, 18(2), pp. 75-84, 2008년 4월.
  7. S. Yen, S. Kim, S. Lim, and S. Moon, "RSA speedup with Chinese Remainder Theorem Immune Against Hardware Fault Cryptanalysis," IEEE Transaction on Computer, Special issue on CHES, Vol. 52, No.4, pp. 461-472, 2003. https://doi.org/10.1109/TC.2003.1190587
  8. 김성경, 김태현, 한동국, 박영호, 홍석희, "비교연산을 사용하지 않는 오류주입 공격에 안전한 CRT 기반의 RSA," 한국정보보호학회 논문지, 18(4), pp. 17-25, 2008년 8월.
  9. 허순행, 이형섭, 이현승, 최동현, 원동호, 김승주, "연산자 조작 공격과 패 연산자 조작 공격에 대한 기존 CRT-RSA Scheme의 안전성 분석," 한국정보보호학회 논문지, 19(6), pp. 185-190, 2009년 12월.
  10. S. Yen, D. Kim, and S. Moon, "Cryptanalysis of Two Protocols for RSA with CRT Based on Fault Infection," FDTC'06, LNCS 4236, pp. 53-61, Springer-Verlag, 2006.