DOI QR코드

DOI QR Code

Preimage Attacks on Reduced Steps of ARIRANG, HAS-160, and PKC98-Hash

ARIRANG, HAS-160, PKC98-Hash의 축소된 단계들에 대한 역상공격

  • Received : 2009.08.27
  • Accepted : 2010.01.25
  • Published : 2010.04.30

Abstract

In this paper, we present the preimage attacks on step-reduced ARIRANG, HAS-160, and PKC98-Hash. We applied Aoki and Sasaki's chunk serach method which they have used in the attack on SHA-0 and SHA-1. Our attacks find the preimages of 35-step ARIRANG, 65-step HAS-160, and 80-step PKC98-Hash. Our results are the best preimage attacks for ARIRANG and HAS-160, and the first preimage attack for PKC98-Hash faster than exhaustive search.

본 논문에서는 ARIRANG, HAS-160, PKC98-Hash의 단계-축소 버전에 대한 역상공격 결과를 소개한다. 이 공격에는 Aoki와 Sasaki가 SHA-0와 SHA-1의 단계-축소 버전을 공격하는데 이용한 chunk 검색 방법이 응용되었다. 본 논문에서 소개하는 공격 알고리즘들은 각각 ARIRANG, HAS-160, PKC98-Hash의 35단계, 65단계, 80단계에 대하여 전수조사보다 빠른시간내에 역상을 찾는다.

Keywords

Ⅰ. 서론

암호용 해쉬함수(Cryptographic Hash Funct- ion)는 보안서비스를 제공하는 다양한 응용물에서 사용되고 있다. 이러한 해쉬함수가 필수적으로 가져야할암호학적 성질로는 충돌저항성 (Collision Resistance). 역상저항성(Preimage Resistance). 그리고 저L2역상저항성 (2nd-Preimage Resistance) 이 있다. 어떤 해쉬함수 F가 역상저항성을 갖는다는것은 F의 임의의 이미지(출력 또는 상(像)) y에 대하여 그것을 만족시키는 역상(逆像) X를 찾거나 계산하는 것이 거의 불가능할 정도로 매우 어렵다는 것을의미한다. 즉 F가 역상저항성을 갖기 위해서는 y = F(x)를 만족시키는 k를 찾기가 어려워야한다. 역상저항성은 중요한 정보들을 해쉬하여 사용하는 다양한 암호 프로토콜에서 안전성의 근본을 이루는 핵심적인 역할을 한다.

본 논문에서는 해쉬함수 ARIRANG⑸. HAS- 160(1), PKC98-Hash"8의 역상저항성을 분석한다. ARIRANG⑸은 NIST에서 수행하고 있는 미국차세대 표준 해쉬함수 SHA-3 공모 사업의 1 라운드후보 알고리즘으로 제출되었다. 그러나 치근 2009년 7월 24일에 공시된 14개의 2 라운드 후보 알고리즘에 포함되지는 못했다’ ARIRANG의 충돌저항성에대한 기존의 분석 결과들로는 Guo 등이 발표한 ARIRANG-256과 ARIRANG-512의 26단계에 대한 충돌 공격, ARIRANG-224와 ARIRANG-384 에 대해서는 전체 단계에 대한 의사충돌(Pseudo- Collision) 공격이 있으며⑻, ARIRANG의 역상저항성에 대한 기존의 분석 결과로는 ARIRANG-256 과 ARIRANG -512의 33단계에 대한 역상공격이있다(2).

TTA 표준 해쉬함수인 HAS-160(1)은 국내 전자서명 알고리즘인 KCDSA에 탑재되었으며, 인터넷 뱅킹을 비롯하여 온라인 금융거래에 필요한 공인인증서 , 전자관인, 전자투표 시스템에도 사용되고 있다. HAS-L60의 안전성 분석 결과는 최근 몇 년간 꾸준히 발표되어왔다. 2005년, 윤아람 등은 HAS-160의 45단계에 대하여 최초로 충돌쌍을 찾는 공격을 소개했다(戚. 2006년에는 조홍수 등이 53단계에 대하여충돌쌍을 찾을 수 있음을 보였다⑺. 2007년에는 Mendel과 Rijmen이 53단계에 대하여 충돌하는 메시지 쌍을 발견하였고, 59단계까지 공격이 가능함을보였다2008년에는 Aoki오]. Sasaki가 52단계에대하여 역상을 찾는 공격을 발표하였다'戚.

PKC98-Hash'的는 PKC'98에서 발표되었던 해쉬함수로서 설계자들이 알고리즘의 이름을 부여하지않았기 때문에 이 논문에서 우리는 이 해쉬함수를 PKC98-Hash로서 지칭한다. Full PKC98-Hash 에 대한 충돌 공격이 장동훈 등에 의하여 발표된 바있다⑹ 이는 PKC98-Hash가 충돌저항성 관점에서매우 취약한 해쉬함수임을 의미한다. 그러나 아직까지역상저항성에 관한 분석 결과는 발표된 적이 없었다. 해쉬함수의 역상을 찾는 공격은 최근 Aoki와 Sasaki에 의하여 많이 연구되어왔다]414J5.16.17). 그들은 MD5“3)와 SHA-1131 등 잘 알려져있는 해쉬함수들의 역상저항성을 분석하면서 역상공격기법들을발전시켜왔다. 특히, SHA-0와 SHA-1에 대하여 그들이 제시한 Chunk쌍 검색 기법은 MD4와 유사한해쉬과정과 압축함수 구조, 그리고 선형 메시지 스케줄을 갖는 해쉬함수들의 역상저항성이 크게 위협받을수 있음을 의미한다. 본 논문에서는 Aoki와 Sasaki 의 역상공격기법을 바탕으로, 공격 대상이되는 해쉬함수들의 특성을 분석하여 축소된 단계수에 대하여 전수조사보다 빠르게 역상을 찾는 알고리즘을 제시한다. 해쉬함수 ARIRANG, HAS-160. PKC98-Hash 또한 선형 메시지 스케줄을 사용하며 압축함수 및 해쉬과정은 MD4와 유사한 구조를 갖고 있다. 우리는 Aoki와 Sasaki가 제안한, 이진 행렬의 위수 계산 프로그램을 이용한 자동화된 chunk쌍 검색 알고리즘을만들어 각 해쉬함수에 적용하였다. ARIRANG의 경우 전형적인 MD4 유사 구조의 압축함수를 사용하지는 않으나. 압축함수의 내부에서 반복되는 단계함수를두 개의 부분함수로 분할하면 이 알고리즘을 쉽게 적용할 수 있다. 이러한 아이디어를 바탕으로 35단계의축소된 ARIRANG 압축함수에 대해 전수조사보다빠르게 역상을 찾을 수 있었다. HAS-160의 압축함수는 SHA-0의 그것과 매우 유사하다. Aoki와 Sasaki는 이미 ICISC 2008에 52단계의 HAS-160 압축함수에 대하여 역상을 찾을 수 있음을 보였는데 U5), 우리의 프로그램은 65단계의 축소된 HAS-160 의 역상공격에 적용될 수 있는 Chunk쌍을 찾아내었다.1)PKC98-Hash의 압축함수는 MD 계열 해쉬함수와는 조금 다른 방식으로 부울함수를 사용하기 때문에 보통의 chunk 쌍이 갖는 두 간격 (skipped steps) 중 공격의 시작점에서 Aoki와 Sasaki가 종종 이용해왔던 initial-structure 기법을 적용할 수없다. 우리는 80단계의 축소된 버전에 대하여 하나의간격만을 갖는 chunk 쌍을 찾았으며, 따라서 우리는 initial- structure 기법의 적용없이 공격을 수행할수 있었다. 우리는 또한 PKC98-Hash의 압축함수에서 사용되는 데이터-의존-로테이션의 성질을 이용하면 효과적인 공격이 가능함을 보인다.

논문의 구성은 다음과 같다. II절에서 해쉬함수의정의 및 기호를 설명하고, m절에서는 본 논문에서 적용된 Aoki와 Sasaki의 역상공격기법을 소개한다. IV, V. VI절에서는 각각 ARIRANG, HAS-160, PKC98-Hash에 대한 역상공격을 기술한다. 마지막으로 VD절에서 본 논문의 결론을 맺는다.

Ⅱ. 해쉬함수 정의 및 기호

본 논문에서 다루는 해쉬함수들은 고정된길이의 입출력을 가진 압축함수 "Compress”를 반복시키는 구조를 갖는다. 이를 위해서 해쉬되어야할 메시지 Me길이가 함수 , Compress가 입력받는 메시지블록의길이의 배수가 되도록 패딩된 M, = M1||...||MNS 변환되는 과정을 거치게 된다. 각 해쉬함수의 해쉬과정은 표 1과 같이 정의 된다. N 각 표기의 아래 첨자 xxxe{ARI, HAS, PKC}는 각각 ARIRANG, HAS-160, PKC98-Hash에서 사용되는 것임을 의미한다. 또한 특정한 알고리즘을 지칭하지 않을 때에는 아래첨자를 생략하기도 한다'

(표 1〕각 해쉬함수의 해쉬과정

각 해쉬함수에서 사용되는 연쇄변수 Hi의 초기값 H0은 설계자들이 설정한 상수값으로 정의된다. ARIRANG의 해쉬고}.정에서 CtrN의 값으로 사용되는 P 또한 설계자들이 설정한 상수값이다. 압축함수 Compress는 단계함수 "Step”의 반복으로 구성된다. 각 단계함수는 메시지블록 Mi로부터 메시지스케줄함수 "W"에 의해 생성되는 메시지워드들 wo, wl. ... 을 입력받는다. 각 해쉬함수의 압축함수는 표 2와 같이 정의된다.

〔표 2〕각 해쉬함수의 압축함수

더욱 자세한 설명이 필요하다면 각 해쉬함수의 제안서를 참고할 것을 권한다. 또한 공격들을 이해하기위하여 필요한 부분들은 이어지는 절들에서 설명될 것이다.

Ⅲ. 역상 공격 기법

본 논문에서는 Aoki와 Sasaki에 의하여 제안된 최신 역상공격기법을 적용한다. 이 절에서는 이러한 기법들을 간단하게 소개한다.

1. 공격의 개요

진형적인 MD4 타입의 해쉬과정을 갖는 해쉬함수들에 대해 어떤 해쉬값 HN°1 주어진다고 가정하자. 이것의 역상을 찾기 위한 첫 번째 단계로 우리는 HN을 출력한 마지막 압축함수에 대하여 Compress (Hne, Mn) = 을 만족시키는 연쇄변수 HW과 메시지 블록 孔尸을 찾는 알고리즘 Ai을 구성해야한다. 그러한 (hW, mN)을 의사역상(pseudo-preimage) 이라 한다. Ai의 복잡도가 약 2X 번의 압축함수연산에 대응되고 해쉬값 및 연쇄변수의 길이가 n비트라 하자. 우리는 Ai이 알고리즘 내부에서 사용되는 랜덤 코인만큼 랜덤한 방식으로 출력값을 생성한다고 가정한다. 그러면 Ar을 이용하여 다음과 같은 방법으로 역상을 찾는 알고리즘 A2을 구성할 수 있다.

1. Ai을 2<"W/2번 반복실행하여 생성된 의사역상 (HW, mN)들을 테이블에 저장한다.

2. 2°心)/2개의 메시지

에 대한 해쉬값 X를 구하여 테이블에 일치하는 값이있는지 체크한다. 일치하는 쌍에 대하여 M, = M'| 丨 IMN을 생성할 수 있고 이것으로부터얻어지는 메시지 M을 H14의 역상으로서 출력한다.

위와 같은 역상 공격 알고리즘 A2으I 복잡도는 약 2("x)/2 + l 번의 압축함수 연산에 대응된다. brute-force 공격으로 역상을 찾는다면 약 2"번의압축함수 연산이 소요되므로, X < n-2이어야 의미가 있다. ARIRANG에 대해서는 중간 연쇄변수에 카운터 CtF를 XOR하는 것을 고려하여 위의 방법을 응용할 수 있다. 위의 방법은 Ai의 모든 의사역상이 항상 고정된 메시지블록 수 N을 갖는다고 가정한 것이다. 그러나 공격하는 해쉬함수에 따라 Aie 출력하는 각 의사역 상들의 메시지블록 수가 변화될 수도 있다. 이런 경우, 압축함수의 고정점을 이용하여 매우 간단하게 Expandable 메시지를 구성할 수 있으므로 역시 같은 복잡도로 공격할 수 있다. 따라서. 패딩 규칙에 관한 문제는 특별히 심각하게 다루지 않기로 한다. 본 논문에서 소개되는 각 해쉬함수들에 대한 공격은 주로 Ai의 구성에 관한 설명이 될 것이다. 압축함수에서 사용되는 일련의 중간변수들 To. Ti, … 은 메시지 워드가 주어지면 Tj 값에서 Ti+i을 또는 Tj+i 값에서 Tj를 계산할 수 있다. 마지막 단계함수의 출력값을 Tfinal이라 하자. 해쉬값 HN°] 주어져 있으므로 To 로부터 Tnnar을 또는 Tfinal로부터 To을 계산할 수 있다. 그러므로 To Tfinal을 우리는 일종의 순환고리로 볼 수 있다. A1의 구성에서 가장 기본이 되는 것은 이 순환고리를 메시지워드에 관하여 서로 독립적인 두 부분으로 나누어 중간일치공격 (Meet-in -the-middle Attack)을 적용하는 것이다. 이 독립적인 부분들을 Chunk라고 부르며, 서로 반대편의 Chunk에 전혀 영향을 주지 않는 메시지 워드들을 중립 워드(Neutral word)라고 부른다. 중간일치 공격기법의 효과를 극대화하기 위해서 우리는 대상이 되는 압축함수의 모든 단계를 두 개의 독립된 Chunks. 커버하지 않는다. 따라서 두 Chunk 사이에는 두 개의 간격 (Skipped Steps)0] 존재할 수 있다. 그 두 간격 중 두 Chunk의 독립적인 계산들이 시작되는 부분을 Attack-Initializing 구간, 두 Chunk의 계산결과가 일치하는지 체크하는 부분을 Matching-Check 구간이라 부■른다. 이 두 구간을 해결하기 위한 다양한 방법들 또한 발전되어왔다. 본 논문에서는 이러한 여러가지 기법들이 함축적으로 설명될 것이다.

마지막으로, 우리는 각 해쉬함수에 대한 역상공격을 메모리 및 계산복잡도와 함께 소개할 것이다’ 계산복잡도의 단위는 그 공격의 대상이 되는 압축함수의 1 회 연산이다.

2. Chunk쌍 검색 알고리즘

주어진 해쉬값으로부터 마지막 압축함수의 의사역상을 구하는 알고리즘 Ar을 구성하기 위해서는 공격에 이용할 수 있는 서로 독립적인 Chunk의 쌍을 찾아야한다. 이것은 서로 반대쪽 Chunk에 영향을 주지않는 한 쌍의 중립워드를 찾는 것과 같다. Aoki와 Sasaki는 이것을 선형대수적인 방법으로 수행하는방법을 제시하였다(4). 압축함수에 입력된 메시지블록을 간단하게 M으로 표기하자. M을 16개의 동일한길이의 메시지워드 m0, .… mi5로 구성되는 열벡터 M = (mo mi5)T로 볼 수 있다. 메시지스케줄 알고리즘 W이 M으로부터 생성하는 메시지워드들 wo. wi, ... 에 대하여, W를 (wo.Wi, ...)T = WM을 만족하는 이진행렬로 볼 수 있다.

서로 독립인 두 Chunk가 주어졌다고 가정하자. 그러면 우리는 W를 구성하는 행들로부터 구성되는, 두 Chunk에 대응되는 두 행렬을 만들 수 있다. 첫 번째 Chunk에 대응되는 행렬을 Wi. 두 번째 Chunk에 대응되는 행렬을 W2이라 하자. 만약첫 번째 (가iunk에서 사용되는 중립워드가 mo이고두 번째 Chunk에서 사용되는 중립워드가 mi이라면 WKO.mi, 0, .…0)T = (0, .…0尸과 W2(m0. 0, .…0)T = (0, .…0尸이 성립할 것이다. 이것은 (0, mi, 0, .., 0)T와 (mo.O 0)丁이 각각 kerWi와 kerW2의 원소이며, Wi과 W2의 위수(Rank)가 16 보다 작음을 의미한다. 즉. 서로 독립 인 Chunk 쌍을 찾는 것은 위수가 16보다 작은 W의 부분행렬들을 골라내는 작업에서 시작된다.

우리는 이 아이디어로부터 다음과 같이 Chunk 쌍의 후보들을 출력하는 알고리즘을 구성하였다. 1. 공격대상을 정한다. 즉, 공격대상의 시작되는 단계 위치 및 단계수를 정한다.

2. Chunk의 단계수의 상한을 정한다.

3. 대응되는 메시지스케줄 행렬의 부분 행렬 중에서 위수가 16보다 작은 것들을 목록에 저장한다.

4. 두 Chunk간 skipped step 수의 상한을 정한다.

5. 목록으로부터 이 상한을 만족시키는 Chunk 쌍들을 출력한다.

두 Chunk간의 간격의 상한은 공격하는 해쉬함수에 따라 다르다. 우리는 검색과정에서 Chunk간에 존재할 수 있는 두 간격의 길이 C1 과 C2 그리고 c = C1 + C2를 함께 관찰하였으며 C의 상한만 정하여 실험하였다. 위의 알고리즘으로부터 출력된 한 Chunk 쌍에대응되는 두 행렬 Wi, W2에 대하여, 우리는 kerWi 과 kerW2를 구할 수 있다. 이 때, 공통된 위치에서비트 1을 갖지 않는 서로 다른 두 벡터 uukerWi와 vWkerW2를 발견한다면, 중립워드를 결정할 수 있다. 〔4〕에서 소개된 예를 보자. Rank(Wi) = Rank(W2)= 1 이고 u = (1, 0, 1, 1, 0 0)T, v = (0, 1, 0.0. 1, 0..., 0)T이라면, 두 번째 Chunk의 중립워드는 mo = m2 = ms0] 될 것이고 첫 번째 Chunk의 중립워드는 mi = im가 될 것이다. 만약, 그러한 u. V가 없다면 중립워드는 이렇게 직접적으로결정될 수 없다. 이 문제 또한 R-'u와 R%가 공통된위치에서 비트 1을 갖지 않도록 적당한 16x16 가역행렬 日을 구성함으로써 해결할 수 있다. 이 때, W' = WR와 M' = R?*M는 R에 의해 변환된 형태의 메시지스케 줄과 메시 지 블록으로 고려 된다’

Ⅳ. ARIRANG에 대한 역상공격

1. ARIRANG의 단계함수

ARIRANG의 계열 해쉬함수로는 32비트 기반 연산으로 구성되어 256비트 해쉬값을 출력하는 ARIRANG-256과 64비트 기반 연산으로 구성되어 512비트 해쉬값을 출력하는 ARIRANG-512가 있으며 , ARIRANG-224와 ARIRANG-384는 해쉬값을 ARIRANG-256과 ARIRANG-512의 해쉬값에서각각 상위 224비트와 384비트를 취하는 형태를 갖는다. ARIRANG-256과 ARIRANG-512는 거의 같은 구조를 갖고 있다. 설명의 편의를 위하여, 공격의 대부분은 ARIANG-256에 초점을 맞추어 설명될 것이다.

표 2에서 보듯이, j번째 단계함수의 입력은 Tj이고출력은 Ti+i이다. ARIRANG-256에서 각 T)는 256 비트이며 이것은 8개의 32비트 워드로 분할되어 계산에 이용된다. 표 3은 ARIRANG-256의 단계함수를앞으로 소개될 역상공격과정의 설명과 부합되도록 기술하고 있다.

(표 3) ARIRANG-256의 단계함수

단계함수에서 사용되는 함수 G는 S-box와 MDS 코드의 조합으로 구성되는 비선형함수이다. 우리의 공격은 G함수를 블랙박스로서만 활용하기 때문에 G에대한 자세한 언급은 생략하기로 한다.

2. Chunk 쌍 및 중립워드

ARIRANG-256의 압축함수는 512비트 메시지 블록을 입력받으며, 메시지스케줄은 메시지블록을 32비트 단위로 16등분하여 메시지워드 mo mi5를 생성한 뒤, 이 16개의 메시지워드로부터 16개의 메시지 워드 mw m;n을 추가로 생성한다. 이 때. XOR 및 로테이션 연산이 사용되지만 로테이션은 공격에 아무런 영향을 미치지 않으므로 생략하기로 하자. 그러면 이 32개의 메시지워드들은 정해진 규칙에 맞추어, 단계함수에 적용되는 wo.......W79에 배정된다. 각 단계함수는 두 개의 메시지워드를 입력받는다. 그러므로, 하나의 단계함수는 우리가 Chunk 쌍 검색을 위하여 고려하는, mo mi5로부터 wo W79를 생성하는 80x16 이진행렬 W의 연속된 두 행에 대응된다.

공격의 대상이 되는 압축함수의 첫 번째 및 마지막 단계를 포함하는 Chunk를 Outer Chunk라 하고 중간 단계들만을 포함하는 Chunk를 Inner Chunk 라 하자. 공격에 이용가능한 형태로 발견되는 Chunk 쌍은 Inner Chunk와 Outer Chunk로 구성되는 경우가 거의 대부분이다. 〔2〕에서 지적되었듯이, Forward, 표 2 CompressARI의 7번째 줄)은 다음과 같이 중간일치공격을 방해하는 성질이 있다.

1. Inner Chunk가 Feedforwardi을 포함하면 공격이 불가능하다.

2. Matching-Check 구간이 Inner Chunk와 Outer Chunk의 상위 경계선을 포함하고, Outer Chunk의 하위 구간이 Feedfor- wardi을 포함하면 공격이 불가능하다.

3. Matching-Check 구간이 Inner Chunk와 Outer Chunk의 하위 경계선을 포함하고, Outer Chunk의 상위 구간이 Feedfor- wardr을 포함하면 공격이 불가능하다.

우리의 Chunk쌍 검색 프로그램을 ARIR.ANG- 256에 적용한 결과, 36단계까지 위수가 16보다 작은 W의 16행이상의 부분행렬들이 발견되었으나 위에서설명된 Feedfotwardi의 성질을 고려하면 35단계까지 공격이 가능한 것으로 분석되었다. 우리가 찾은 가장 좋은 Chunk쌍은 압축함수가 단계 2부터 단계 36까지의 35단계로 축소된 알고리즘을 공격하는데이용될 수 있다. 첫 번째 Chunk는 단계 4부터 단계 17(의 절반)를 포함하는 Inner Chunk이고 두 번째 Chunk는 단계 2부터 단계 3까지. 그리고 단계 23 (의 절반)부터 단계 36을 포함하는 Outer Chunk 이다.

첫 번째 Chunk에 대응되는 행렬 Wi과 두 번째 Chunk에 대응되는 행렬 W?의 위수는 모두 15이며, kerWi과 kerW2를 대표하는 열벡터 u, v는 다음과 같다. u = (1.0, 0, 0, 1.0, 0.0, 0, 0, 0, 0, 0.0, 0, 0)T, V = (1, 0, 0, 0, 0.0, 0, 0, 0, 0.0, 0, 1, 0, 0, 0 )T u와 7가독립이 아니旦로 다음을 만족시키는 16x16 이진행렬 日을 이용한다.

#

#

#

#

위와 같은 R에 대하여 WiR(1.0, .…0)T = W2R(0, 1, 0, .…0)T = (0…0)을 만족한다. 그러므로 RM 의해 변환된 메시지스케줄 W' = WR과 메시지블록 M' = (mo'.....mi5z)T = R-'M에 대해, 첫 번째, 두 번째 Chunk의 중립워드는 각각 mi', mo'이 된다.

3. ARIRANG의 35단계 압축함수에 대한 역상공격

위의 Chunk 쌍과 중립워드 쌍을 이용하면 35단계 압축함수로 구성되는 ARIRANG-256의 임의의 해쉬값에 대한 2■■블록 역상을 찾는 알고리즘을 구성할 수 있다. 그러므로 우리에게 해쉬값 H27} 주어진다고 가정한다. 우선’ 의사역상을 찾는 알고리즘 /、을 구성해야한다. 단계 4의 256비트 입력인 T4의 값을 랜덤하게 선택하고 메시지워드들 H12’ mi5‘의 값들을랜덤하게 선택하여 고정함으로써 35단계 압축함수의의사역상을 찾기 위한 과정이 시작된다. T4로부터 메시지워드 mj값에 따라 순방향으로 계산되는 첫 번째 Chunk의 결과값은 %丄이고 이것과 독립적으로 T4 로부터 메시지워드 mo'값에 따라 역방향으로 계산되는 두 번째 Chunk의 결과값은 T23.L이다.

(그림 1)에서 보이는대로, 우리는 丁23丄로부터 두 번째 Chunk의 계산결과들만을 이용하여 T16.L의 왼쪽 두 워드의 값을 계산할 수 있다. 이러한 방법으로 두 결과값의 64비트를 우선적으로 체크할 수 있다. ARIRANG-256의 35단계 압축함수의 의사역 상을 찾는 과정은 다음과 같이 정리된다"

[그림 1) ARIRANG-256의 35단계공격에 사용되는 부분일치성 체크 기법 T23丄부터「7丄까지 굵은선을 따라 계산 후 비교.

1. 단계 4의 256비트 입력인 T4의 값을 랜덤하게 선택한다. m/, .... mg'을 랜덤하게 선택한다. 2. mj의 232개의 모든 가능한 후보값들에 대해서 T5, T6Tn, 그리고 Tn丄을 계산하고 2% 개의 (rm', Till) 쌍을 테이블에 저장한다.

3. rm'의 232개의 각 가능한 후보에 대하여 丁4로부터 역순으로 Ts. T2를 계산하고, T37 = T2® h2로부터 역순으로 T36, T35, .… T24. 그리고 T狐L을 계산한다. 그리고 다음을 수행한다.

(a) T23.L로부터 (그림 1)에 따라 계산된 64 비트값과 일치하는 값이 테이블에 있는지 확인한다.

(b) 그러한 값이 테이블에 있으면 대응되는 mo', mi'값에 대하여 남은 모든 부분의 일치성을체크한다.

(c) 모두 일치하면 그 때의 M' = mo'll ...Ilm/로부터 M2 = RTm'을 계산하고

H1 = T2로 놓은 후, (H'JV*)를 质에 대한 의사역상으로서 출력한다.

위의 과정은 약 23暴2( = 232x13.5/35 + 232x (15.5+ 4)/35)의 계산복잠도를 요구한다. 이 과정으로 의사역상을 출력하는데 성공할 확률이 약 264/2256 = 2牌2이므로, 위의 과정을 2”2번 반복하면 质의 의사역상 1개를 얻을 수 있을 것으로 기대할 수 있다. 따라서 이 A1의 계산복잡도는 약 2223@이다. 皿절에서 설명된 대로 Ar을 이용하여 구성되는 역상공격 알고리즘 A2의 계산복잡도는 224爵6이며 , 약 232x9개의 32비트 워드에 해당하는 메모리가 요구된다. 이다. 같은 방식으로 ARIRANG-512의 35단계 압축함수에대하여 구성되는 역상공격 알고리즘 A2는 24旳96의 계산복잡도와 264x9 64비트 워드의 메모리를 요구한다.

Ⅴ. HAS-160에 대한 역상공격

1. HAS-1602I 단계함수

HAS-160의 단계함수는 SHA-O, SHA-1의 그것과 매우 유사하다. 표 4는 HAS-160의 단계함수를 기술하고 있다. 단계함수의 입출력 변수인 名는 160 비트이며 , 이것은 단계함수 연산 시 5개의 32비트 워드로 분할된다. 함수 F는 비선형 부울함수이며. 20단계마다 세 가지 함수 중 하나로 교체된다. 우리의 공격은 부울함수의 성질을 이용하지 않고 블랙박스로서만 활용하므로, F에 대한 설명은 생략하기로 한다’ 단계함수의 로테이션 수 si, s2는 공격 과정에서 설명된다. kj는 각 단계마다 적용되는 상수이다.

(표 4) HAS-160의 단계함수

2. Chunk 쌍 및 중립워드

HAS-160의 압축함수는 512비트 메시지블록을

StepHAS(Tj.wj)

1: Parse Tj to (to.........where |헤 =.“비니 =32; 2: t4 — t4 + to<S1+F(tl, t2, t3)+Wj + kj;

3; Tj + l *— (to, tl<b2, t2.t3, t4)>'i2;

4: return Tj+i:

입력받으며, 메시지스케줄은 메시지블록을 32비트 단위로 16등분하여 메시지워드 mo ms를 생성하고 이것으로부터 메시지스케줄 함수에 의하여 선형적인 방식으로 wo W79 를 생성한다. 우리는 HAST60의 메시지스케줄 함수를 mo rry로부터 W0 W79를 생성하는 80x16 이진행렬 W로 고려 한다.

우리의 Chunk쌍 검색 프로그램을 HAS-160에적용한 결과, Chunk 쌍을 구성할 수 있는 최대 단계수는 65인 것으로 분석되었다. 발견된 가장 좋은 Chunk쌍은 단계 0....... 64로 구성된 65단계 압축함수를 공격하는데 이용될 수 있다. 첫 번째 Chunk 는 단계 16 36을 포함하는 Inner Chunk이고두 번째 Chunk는 단계 0, .… 15, 그리고 단계 44. .... 64를 포함하는 Outer Chunk이다.

첫 번째 Chunk에 대응되는 행렬 Wi과 두 번째 Chunk에 대응되는 행렬 W2의 위수는 모두 15이며, kerWi과 kerW2를 대표하는 열벡터 u. v는 다음과 같다. U = (1, 0, 0.0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0)T, V = (0, 0, 0.0, 0, 0, 0.0.0.0.0, 0, 1, 0, 1, 0 )T. U와 V가 독립이므로, 우리는 u와 V에 따라 첫 번째 Chunk의 중립 워드를 mi2 = mu로, 두 번째 Chunk의 중립 워드를 mo = mio으로 결정할 수 있다.

3. HAS-160의 65단계 압축함수에 대한 역상공격

위의 Chunk 쌍과 중립워드 쌍을 이용하면 65단계 압축함수로 구성되는 HAS-160의 임의의 해쉬값에대한 역상을 찾는 알고리즘을 구성할 수 있다. 해쉬값가 주어졌다고 가정하자. 우선, 의사역상을 찾는 알고리즘 Ar을 구성해야한다.

T"과 T44간에 부분일치성을 체크하기 위하여, m"=mi4)의 15-0 번째 비트들을 고정시킨다n 0 림 2)에서와 같이 굵은 선을 따라 T44 로부터 mi2( = mi4)의 고정된 비트에 대하여 T41의 가장 오른쪽 워드의 15-0번째 비트를 계산한다. 그러면 이값과 T37의 가장 왼쪽 워드의 15-0번째 비트와 일치하는지를 체크할 수 있다.

(그림 2) HAS-16021 65단계 공격에 사용되는 부분 일치성 체크 기법. T37, T44부터 각각 丁 41까지 굵은 선을 따라 계산 후 비교.

HAS-160의 65단계 압축함수의 의사역상을 찾는과정은 다음과 같이 정리된다. 1 2 3 * * * *

1. 단계 16의 160비트 입력인 T16의 값을 랜덤하게 선택한다. mo, mio, mi2....... mi5> 제외한 메시지워드들을 랜덤하게 선택하여 고정한다. mi2( = mi4)의 15-0번째 비트들을 랜덤하게 선택하여 고정한다. mi3과 U115는 패딩 규칙을 만족시키도록 결정한다.

2. mi2(= mG의 상위 16비트에 대한 2的개의 모든 가■능한 후보값들에 대해서 T17, .... T37올계산하고 2郁개의 (mi2, T37)쌍을 테이블에 저장한다.

3. m0(= rm。)의 개의 각 가능한 후보에 대하여 T16으로부터 역순으로 T15. .…To을 계산하고, T64 = To田HN으로부터 역순으로 T63, …, T44를 계산하고 다음을 수행한다.

(a) (그림 2)와 같이 T44로부터 皿2의 고정된비트들을 이용하여 T41의 가장 오른쪽 워드의 하위 16비트를 계산하고. 테이블에 저장된 (11U2.T37) 중 그것과 일치하는 값이 있는지 확인한다.

(b) 약 2处개의 쌍이 (a)의 체크를 통과할 것으로 기대되며, 이것들에 대하여 나머지 부분의 일치성을 체크한다.

(c) 모두 일치하면 그 때의 Mn = mo Ⅱ... II mi5, = To로 놓은 후. (HNt.M14)를 IF1 에 대한 의사역상으로서 출력한다.

위의 과정은 약 2314*(= 216x21/65 + 232x(37 + 1.5)/65 + 232x(4+1.5)/65)의 계산복잡도를 요구한다. 이 과정이 의사역상을 출력하는데 성공할 확률이 약 248/2160 = 尸以이므로, 위의 과정을 아省번 반복하면 1개의 의사역상을 기대할 수 있다. 따라서 Ai 의 계산복잡도는 2皿・44이므로, 入2의 계산복잡도는 2戚如2이다. 이 공격에는 2®<6개 32비트 워드에 해당하는 메모리가 요구된다.

Ⅵ. PKC98-Hash에 대한 역상공격

1. PKC98-Hash의 단계함수

표 5는 PKC98-Hash의 단계함수를 기술하고 있다. 단계함수의 입출력 변수인 Tj는 160비트이며, 이것은 단계함수 연산 시 5개의 32비트 워드로 분할된다. 함수 F는 비선형 부울함수이다. PKC98-Hash 의 단계함수는 부울함수를 전형적인 MD4 타입 해쉬함수들과는 다르게’ Tj 전체를 입력받아 32비트를 출력하는 형태를 갖고 있다. 부울함수는 24단계마다 세 가지 함수 중 하나로 교체된다. 우리의 공격은 부울함수의 성질을 이용하지 않고 블랙박스로서만 활용하므로. F에 대한 설명은 생략하기로 한다.

〔표 5) PKC98-Hash의 단계함수

〔표 6) 함수 p의 입출력표

로테이션 수 s(j)는 메시지워드값에 따라 바뀌는값이다. 이것은 함수 p와 日에 의하여 정의된다. 먼저 , 함수 p는 다음과 같이 정의된다«

함수 p에 대하여 , 함수 Re 24 단계마다 p3, p2, p, id로 정의된다. s(j)는 s(j) = wr(j mod 24)mod 32 로서 정의된다.

2. Chunk 쌍 및 중립워드

PKC98-Hash의 압축함수는 512비트 메시지블록을 입력받으며, 메시지스케줄은 메시지블록을 32비트단위로 16등분하여 메시지워드 mo mi5를 생성한 뒤, 이 16개의 메시지워드로부터 8개의 메시지워드 mw m23을 주가로 생성한다. 이 때, XOR 및로테이션 연산이 사용되지만 로테이션은 Chunk쌍검색에 아무런 영향을 미치지 않으므로 생략한다. 그러면 이 24개의 메시지워드들은 정해진 규칙에 맞추어. 단계함수에 적용되는 W0....... W95에 배정된다n 따라서, 메시지스케줄 함수는 mo mi5로부터 wo.......W95를 생성하는 9(X16 이진행렬 W로 고려된다.

우리의 Chunk쌍 검색 프로그램을 PKC98-Hash 에 적용한 결과. Chunk 쌍을 구성할 수 있는 최대단계 수는 80인 것으로 분석되었다. 우리가 찾은 가장 좋은 Chunk쌍은 단계 0....... 79로 구성된 80단계 압축함수를 공격하는데 이용될 수 있다. 첫 번째 Chunk는 단계 15 44를 포함하는 Inner Chunk이고 두 번째 Chunk는 단계 0....... 14, 그리고 단계 54 79를 포함하는 Outer Chunk0] 다.

첫 번째 Chunk에 대응되는 행렬 Wi과 두 번째 Chunk에 대응되는 행렬 W2의 위수는 모두 15이며, kerWj.과 kerW2를 대표하는 열벡터 u. v는 다음과 같다. u = (0.0.0.0.0, 0, 0.0, 0, 1.0.0, 0.0, 1, 0)T, V = (0, 0, 0, 0.0.0.0, 0, 0, 0, 0, 0.0, 0.0.1)T. 따라서, 첫 번째 Chunk의 중립워드를 nm로, 두 번째 Chunk 의 중립워드를 H19 = mi4로 결정할 수 있다.

3. PKG98-Hash의 80단계 압축함수에 대한 역상 공격 위의 Chunk 쌍과 중립워드 쌍을 이용하면 80단계 압축함수로 구성되는 PKC98-Hash의 임의의 해쉬값에 대한 역상을 찾는 알고리즘을 구성할 수 있다. 해쉬값 HN이 주어졌다고 가정하자’ 우선, 의사역 상을 찾는 알고리즘 Ai을 구성해야한다.

T45와 T54간의 부분일치성을 체크하기 위하여 단계 45. 46. 47의 로테이션수를 각각 s(45) = 0, s(46) = 10, s(47) = 12로 고정시켜야한다. s(45)는 W22의 하위 5비트에 의해 결정되지만 W9 = W14이므로 W22는 중립워드의 영향을 받지 않는다. Wg( = W14) 와 W15의 하위 16비트를 고정시킨다면. (그림 3) 에서와 같이 각각 T45와 T54로부터 중립워드의 고정된 비트들을 이용하여 T49의 세 번째 워드의 하위 16비트를 독립적으로 계산하여 비교할 수 있다. 이 때, 단계 47에서의 계산에서는 캐리비트 1개에 대한 두 가지 가능성을 고려해야 한다.

PKC98-Hash의 80단계 압축함수의 의사역상을찾는 과정은 다음과 같이 정리된다.

1. 단계 15의 160비트 입력인 1%의 값을 랜덤하게 선택한다. ms mi3, mu, nm를 제외한 메시지 워드들의 값들을 랜덤하게 선택하여 고정한다. ng(= mu) 및 irw의 하위 16비트를 랜덤하게 선택한 값으로 고정시킨다. im3은 패딩 규칙을 만족하도록 결정한다’

2. 1典)(=皿4)의 상위 16비트에 대한 邪개의 모든 가능한 후보값들에 대해서 T16. .... T45를 계산하고 잉6개의 (m9, T45)쌍을 테이블에 저장한다. 또한. (그림 3)에 따라 앙7개(캐리비트 포함)의 T49의 세 번째 워드의 하위 16비트값을계산하여 테이블에 저장한다.

(그림 3) PKC98-Hash의 80단계 공격에 사용되는 부분일치성 체크 기법. T45, T54부터 각각 T49까지 굵은 선을따라 계산 후 비교.

3. nm의 하위 16비트에 대한 2弟개의 각 가능한 후보에 대해 T15으로부터 역순으로 T15, .…To 을 계산하고, Tso = To$HN으로부터 역순으로 T79, .... T54를 계산하고 다음을 수행한다.

(a) (그림 3)에 따라 T54로부터 T49의 세 번째 워드의 하위 16비트를 계산하여 테이블에 일치하는 것이 있는지 확인한다’

(b) 그러한 쌍이 테이블에 있으면 대응되는 mu(= mg), mm값에 대하여 나머지 부분

의 일치성을 체크한다.

(c) 모두 일치하면 그 때의 Mn = moll... linns, HN4 = T(로 놓은 후, (HE.mN)

를 에 대한 의사역상으로서 출력한다.

위의 과정은 최대 약 2心3(= 아頌(31 + 1.5)/80 + 216x(41+ 1)/80 + 앙七6.5/80)의 계산복잡도를 요구한다. 이 과정으로 의사역상을 출력하는데 성공할 확률은 232/2160 = 2「"8이므로, 위의 과정을 아 28번 반복하면 1개의 의사역상을 기대할 수 있다. 따라서 Ai의 계산복잡도는 약 2地局이며, A?의 계산복잡도는 아53.07이다. 이 공격에는 216x7개의 32비트 워드에 해당하는 메모리가 요구된다.

Ⅷ. 결론

본 논문에서 우리는 ARIRANG. HAS-160, PKC98-Hash에 대한 역상공격을 소개하였다. 세 해쉬함수는 유사한 메시지스케줄을 갖고 있다. 그 메시지 스케줄들은 또한 모두 선형적이고 단순한 구조를 갖는다는 공통점이 있다. 본 논문에서는 이러한 특징을 이용하여 메시지스케줄을 분석함으로써 Aoki 와 Sasaki의 역상공격기법을 적용할 수 있었다. 이와 같은 유형의 공격에 대하여 안전하게 설계하는 한 가지 방법은 메시지스케줄을 비선형적이며 복잡한 구조로대처] 하는 것이며 , 효율적이고 안전한 해쉬함수 구조를 위한 많은 연구가 필요하다.

References

  1. 한국정보통신기술협회, "해쉬함수표준 - 제2부: 해쉬함수알고리즘표준(HAS-160)," 정보통신단체 표준 TTAS.KO-12.0011/R1, 2000년 12월.
  2. 홍득조, 김우환, 구본욱, "해쉬함수 ARIRANG의 축소된 단계에 대한 역상공격," 정보보호학회논문지, 19(5), pp. 143-148, 2009년 10월.
  3. U.S. Department of Commerce, National Institute of Standards and Technology, "SECURE HASH STANDARD (SHS)," FIPS 180-3, Oct. 2008.
  4. K. Aoki and Y. Sasaki, "Meet-in-the- Middle Preimage Attacks Against Reduced SHA-0 and SHA-1," In S. Halevi, editor, Advances in Cryptology - CRYPTO 2009, Springer-Verlag, LNCS 5677, pp. 70-89, 2009.
  5. D.H. Chang, S.H. Hong, C.H. Kang, J.K. Kang, J.S. Kim, C.H. Lee, J.S. Lee, J.T. Lee, S.J. Lee, Y.S. Lee, J.I. Lim, and J.C. Sung, "ARIRANG: SHA-3 Proposal," available at http://csrc.nist. gov/groups/ ST/hash/sha-3/Round1/
  6. D.H. Chang, J.C. Sung, S.H. Sung, S.J. Lee, and J.I. Lim, "Full-Round Differential Attack on the Original Version of the Hash Function Proposed at PKC'98," In K. Nyberg and H. Heys, editos, SAC 2002, Springer-Verlag, LNCS 2595, pp. 160-174, 2003.
  7. H.S. Cho, S.W. Park, S.H. Sung, and A.R. Yun, "Collision Search Attack for 53-Step HAS-160," In M.S. Rhee and B.C. Lee, editors, Information Security and Cryptology - ICISC 2006, Springer-Verlag, LNCS 4296, pp. 286-295, 2006.
  8. J. Guo, K. Matusiewicz, L.R. Knudsen, S. Ling, and H. Wang, "Practical Pseudo-Collisions for Hash Functions ARIRANG-224/384," ePrint Archive 2009/197, 2009.
  9. D.J. Hong, B.W. Koo, and Y. Sasaki, "Improved Preimage Attack for 68-Step HAS-160," ICISC 2010, to appear.
  10. J. Kelsey and B. Schneier, "Second Preimages on n-bit Hash Functions for Much Less Than 2n Work," In R. Cramer, editor, Advances in Cryptology - EUROCRYPT 2005, Springer-Verlag, LNCS 3494, pp. 474-490, 2005.
  11. F. Mendel and V. Rijmen, "Collision Message Pair for 53-Step HAS-160," In K.H. Nam and G.S. Lee, editors, Information Security and Cryptology - ICISC 2007, Springer-Verlag, LNCS 4817, pp. 324-334, 2007.
  12. A.J. Menezes, P.C. van Oorschot, and S.A. Vanstone, Handbook of Applied Cryptography, CRC Press, Oct. 1996.
  13. R.L. Rivest, "The MD5 Message Digest Algorithm," Request for Comments 1321, Apr. 1992.
  14. Y. Sasaki and K. Aoki, "Preimage Attacks on Step-Reduced MD5," In Y. Mu, W. Susilo, and J. Seberry, editors, ACISP 2008, Springer-Verlag, LNCS 5107, pp. 282-296, 2008.
  15. Y. Sasaki and K. Aoki, "Preimage Attacks on 3, 4, and 5-Pass HAVAL," In J. Pieprzyk, editor, Advances in Cryptology - ASIACRYPT 2008, Springer-Verlag, LNCS 5350, pp. 253-271, 2008.
  16. Y. Sasaki and K. Aoki, "A Preimage Attack for 52-Step HAS-160," In P.J. Lee and J.H. Cheon, editors, Information Security and Cryptology - ICISC 2008, Springer-Verlag, LNCS 5461, pp. 302-317, 2008.
  17. Y. Sasaki and K. Aoki, "Finding Preimages in Full MD5 Faster Than Exhaustive Search," In A. Joux, editor, Advances in Cryptology - EUROCRYPT 2009, Springer-Verlag, LNCS 5479, pp. 134-152, 2009.
  18. S.U. Shin, K.H. Rhee, D.H. Ryu, and S.J. Lee, "A New Hash Function Based on MDx-Family and Its Application to MAC," In H. Imai and Y. Zheng, editors, PKC'98, Springer-Verlag, LNCS 1431, pp. 234- 246, 1998.
  19. A.R. Yun, S.H. Sung, and S.W. Park, "Finding Collision on 45-Step HAS-160," In D.H. Won and S.J. Kim, editors, Information Security and Cryptology - ICISC 2005, Springer-Verlag, LNCS 3935, pp. 146-155, 2007.