해쉬함수를 이용한 MAC 의 구성

44
해해해해해 해해해 MAC 해 해해 2006. 12. 21. 해 해 해 [email protected]

description

해쉬함수를 이용한 MAC 의 구성. 2006. 12. 21. 윤 아 람 [email protected]. 목 차. 1. 해쉬함수와 MAC. 2. HMAC. 3. Merkle-Damgard. 4. EMD. 5. OMD. 6. 결론. 해쉬함수를 이용한 MAC 의 구성. 1. 해쉬함수와 MAC. 2. HMAC. 3. Merkle-Damgard. 4. EMD. 5. OMD. 6. 결론. 해쉬함수란 ?. 임의 길이의 비트열을 특정 길이의 비트열로 대응시키는 함수 - PowerPoint PPT Presentation

Transcript of 해쉬함수를 이용한 MAC 의 구성

Page 1: 해쉬함수를 이용한  MAC 의 구성

해쉬함수를 이용한 MAC 의 구성

2006. 12. 21.윤 아 람[email protected]

Page 2: 해쉬함수를 이용한  MAC 의 구성

2

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

목 차

OMD

결론

55

66

Page 3: 해쉬함수를 이용한  MAC 의 구성

3

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

해쉬함수를 이용한 MAC 의 구성

OMD

결론

55

66

Page 4: 해쉬함수를 이용한  MAC 의 구성

4

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수란 ?

임의 길이의 비트열을 특정 길이의 비트열로 대응시키는 함수해쉬 값은 원래 메시지의 일종의 ‘지문’ 역할대표적인 예 : MD5, SHA-1, HAS-160 등일반적인 출력 길이 : 160 비트 , 256 비트 , 512 비트 등

용도컴퓨터에서 패스워드를 직접 저장하지 않고 그 해쉬값을 저장

패스워드를 비교하지 않고 그 해쉬값을 비교하여 사용자를 인증공격자가 저장된 패스워드 파일을 훔쳐도 무용지물

긴 메시지를 직접 전자서명하지 않고 해쉬값을 서명함서명의 계산량이 크기 때문에 짧은 해쉬값을 서명하는 것이 쉬움

Page 5: 해쉬함수를 이용한  MAC 의 구성

5

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

MAC 이란 ?

MAC = Message Authentication Code ( 메시지 인증 코드 )

특정 비밀키를 공유하고 있는 사용자들끼리 주고받는 메시지의 무결성을 확인하기 위한 수단비밀키와 임의 길이의 메시지 특정 길이의 MAC

즉 ,해쉬함수 : h = H(m)

MAC: x = Mk(m)

용도메시지 m 을 전송할 때 m 뿐만 아니라 t=Mk(m) 를 같이 전송 : (m, t) 전송 수신자는 m 을 받아본 뒤 직접 Mk(m) 를 계산하여 , 수신된 t 와 같은지 확인즉 , 메시지가 중간에 위조된 것인지의 여부를 확인하는 것이 목적K 를 모르는 공격자는 m 과 t 간의 올바른 대응관계를 찾을 수 없음

Page 6: 해쉬함수를 이용한  MAC 의 구성

6

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

MAC

MAC 이란 ?

MAC

MAC = ? MAC

KK

Page 7: 해쉬함수를 이용한  MAC 의 구성

7

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

MAC

Forger 의 시도

MAC

HAM ≠

K

MAC

K

MAC

Page 8: 해쉬함수를 이용한  MAC 의 구성

8

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC 의 차이

‘signature’ 가 다름MAC 을 ‘ keyed hash function’ 이라고 부르기도 함즉 , 해쉬함수는 비밀키가 필요 없이 누구나 메시지로부터 계산 가능MAC 은 기본적으로 비밀을 공유한 사람들만 계산 가능

목적이 다름해쉬 : 긴 메시지를 대신해서 다양한 암호학적 기능에 이용될 수 있는 ‘지문’을 채취하는 것이 목적MAC: 긴 메시지가 제대로 된 메시지라는 증명을 제공하는 것이 목적

전혀 다른 안전성 개념에 기초하고 있음

Page 9: 해쉬함수를 이용한  MAC 의 구성

9

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수의 안전성

암호학적 해쉬함수는 최소한 다음의 세 가지를 만족해야 함Preimage resistance: h=H(m) 이 주어졌을 때 m 을 찾기 어려워야 함2nd preimage resistance: m 에 대해 , H(m)=H(m’) 인 m’ 을 찾기 어려워야 함

패스워드 저장 방식을 생각하면 필요함

Collision resistance: H(m)=H(m’) 인 메시지 쌍 m, m’ 을 찾기 어려워야 함서명 방식을 생각하면 필요함

Page 10: 해쉬함수를 이용한  MAC 의 구성

10

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수의 안전성

해쉬함수의 안전성 정의는 보기보다 단순하지 않음참조 : P. Rogaway, Formalizing Human Ignorance: Collision-Resistant Hashing without the Keys, Vietcrypt 2006

세 가지가 필요한 전부인가 ?‘ 지문’이 원 메시지를 대체하기 위해 가져야 할 성질은 ? 응용 따라 다른가 ?

본질적으로 ‘장볼 목록’같은 , 불만족스러운 정의임타 암호 프리미티브는 이보다 체계적인 안전성 정의를 가지고 있음

시장 가서 사올 것1. 콩나물

2. 두부

3. 세제

4. 편지 부치는 것 잊지 말기

Page 11: 해쉬함수를 이용한  MAC 의 구성

11

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

랜덤 함수로서의 해쉬 함수 ?

“ 좋은 해쉬함수는 일종의 랜덤함수처럼 행동해야 한다”즉 , 전혀 인위적인 구조가 드러나지 않아야 한다랜덤함수는 좋은 해쉬함수임은 분명함

preimage resistance, 2nd preimage resistance, collision resistance 모두 만족

하지만 , public deterministic function 이 랜덤함수처럼 행동해야 한다는 말이 대체 무슨 소리인가 ?

“abc” 의 SHA-1 값은 03cfd743661f07975fa2f1220c5194cbaff48451 임(“abc” 의 ASCII 값에 해당하는 비트열의 SHA-1 값 )

F 가 랜덤 함수일 때 F(“abc”)=03cfd743661f07975fa2f1220c5194cbaff48451 일 확률 : 2-160

F 가 SHA-1 일 때 F(“abc”)=03cfd743661f07975fa2f1220c5194cbaff48451 일 확률 : 1

Page 12: 해쉬함수를 이용한  MAC 의 구성

12

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

랜덤 함수란 ?

랜덤 함수Domain X, Codomain Y

Fun(X, Y): the set of all functions from X to Y

A random function from X to Y: an element randomly chosen from Fun(X, Y)

With uniform probability on Fun(X, Y)

랜덤 함수를 보는 다른 방법 : ‘lazy sampling’랜덤 함수 F:X Y 를 구현하는 방법

처음에는 임의의 x 에 대해 F(x)=undefined

F(x) 를 실제로 evaluate 할 때 , 만일 F(x)=undefined 이면 Y 의 원소 y 를 랜덤하게 골라 (under uniform distribution) F(x)=y 로 정의 만일 F(x) 가 정의되어 있으면 , 이미 정의된 값을 출력

Lazy sampling 은 X 가 finite domain 일 때 위의 정의와 동등X 가 infinite domain 일 때에도 엄밀하게 정의 가능 : integrability 도 필요 없음

Page 13: 해쉬함수를 이용한  MAC 의 구성

13

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Random Oracle Model

Random oracle = public random function즉 , 적법한 사용자든 공격자든 누구든 질의해볼 수 있는 함수Random oracle model: random oracle 이 주어졌다고 가정하고 , random oracle 을 이용해서 실제의 해쉬 함수를 모델링함Random oracle methodology: random oracle 을 이용해서 암호 시스템의 안전성을 증명하고 , 실제 구현 시에는 random oracle 대신 구체적인 해쉬함수로 대체

종종 , random oracle 을 가정하지 않은 대신 엄밀한 증명을 제공하는 시스템이 매우 비효율적인데 비해 , 이보다 훨씬 가볍고 최소한 random oracle model 에서 증명 가능한 암호 시스템들이 있음

Page 14: 해쉬함수를 이용한  MAC 의 구성

14

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

MAC 의 안전성

일차적으로 , 위조 공격에 대한 안전성이 기본적인 정의임공격자 A 는 randomized algorithm 이라고 가정A 는 비밀키 k 를 몰라도 q 회의 질의를 통해 자신이 원하는 메시지 m1, …, mq 에 대한 MAC Mk(m1), …, Mk(mq) 를 얻어낼 수 있음

이 과정을 거친 후 A 가 어떤 메시지 m 과 그 MAC 값 Mk(m) 를 얻어낼 수 있으면 A 는 MAC 위조에 성공한 것으로 간주단 , m 은 A 가 query 한 m1, …, mq 와 달라야 함

Adv(A) = Pr[ A 가 위조에 성공 ]

Adv(t, q) = t 라는 계산 시간과 , q 회의 질의를 하는 모든 공격자 A 에 대한 Adv(A) 의 최대값

공격자의 능력을 과대평가하는 , 매우 보수적인 정의임

Page 15: 해쉬함수를 이용한  MAC 의 구성

15

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

MAC 의 안전성

구별 공격에 대한 안전성주장 : MAC 은 단순히 위조가 잘 안되는 것으로는 부족하다 . 랜덤 함수처럼 행동해야 한다 . 즉 , 공격자는 위조를 시도하는 Mk(m) 의 어떤 비트에 대해서도 어떤 아이디어도 얻을 수 없어야 한다 . 고작 찍는 것이 최선이어야 한다 .

예 : Mk(m) 이 위조 공격에 대해 안전한 MAC 이면 , M’k(m) = Mk(m) || 0 으로 정의

M’k(m) 도 위조 공격에 대해 안전 M’k(m) 는 좋은 MAC 임

M’k(m) 는 구별 공격에 대해 안전하지 않음 : 공격자는 M’k(m) 의 마지막 비트가 0 임을 알고 있음 . 랜덤 함수라면 마지막 비트는 단지 ½ 의 확률로 0. 즉 , 랜덤 함수 r(m) 과 M’k(m) 의 구별이 가능

Page 16: 해쉬함수를 이용한  MAC 의 구성

16

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Pseudorandom Function

PRF = Pseudorandom function비밀키 k 를 가지고 있는 사용자는 쉽게 계산할 수 있지만 , 비밀키가 없는 사용자의 관점에서는 랜덤 함수와 구별되지 않는 함수F: K x X Y 가 PRF 이고 A 가 F 에 대한 공격자이면 , A 의 목표는 자신에게 주어진 어떤 함수 g(x) 가 F(k, x) 인지 아니면 랜덤 함수 $(x) 인지 맞추는 것임Adv(A) = Pr[A(F(k,·))=1] – Pr[A($)=1]

Adv(t, q) = t 라는 계산 시간 내에 q 회의 질의를 하는 공격자 A 에 대한 Adv(A) 들의 최대값

좋은 MAC 은 단순히 위조 공격이 아니라 구별 공격에 대해서도 강해야 한다는 의미는 , 좋은 MAC 은 PRF 여야 한다는 의미임

실제로 , PRF 정의는 MAC 정의보다 더 강함 : 좋은 PRF 는 좋은 MAC임을 쉽게 증명할 수 있음

Page 17: 해쉬함수를 이용한  MAC 의 구성

17

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Why PRF than MAC?

PRF 를 사용할 때 좋은 예 : truncation가지고 있는 MAC 이 512 비트 출력 MAC 이나 , 전송 효율성 고려하여 128비트만 사용하고 싶음512 비트 출력 random function 의 상위 128 비트는 여전히 random function

따라서 , 512 비트 출력 PRF 의 상위 128 비트는 여전히 PRF

하지만 , 512 비트 출력 MAC 의 상위 128 비트는 위조 공격에 취약할 수 있음즉 , 처음에 주어진 함수가 PRF 이면 truncation 에 자유로우나 , MAC 이면 그렇지 않음

다양한 응용 환경을 고려하면 MAC 보다는 PRF 를 염두에 두고 설계한 함수를 사용하는 것이 바람직함

PRF is more robust than MAC

Page 18: 해쉬함수를 이용한  MAC 의 구성

18

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

해쉬함수를 이용한 MAC 의 구성

OMD

결론

55

66

Page 19: 해쉬함수를 이용한  MAC 의 구성

19

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수 기반 MAC

많은 차이점에도 불구하고 , 해쉬함수를 이용하여 MAC 을 구성하려는 시도들이 있었음

일단 , 어쨌든 형태가 비슷하다고도 할 수 있음‘ keyed hash function’ 대 ‘ unkeyed hash function’

해쉬함수도 일종의 메시지 무결성 보장을 위해 쓰이기도 함예 : 오픈 소스 소프트웨어 다운로드 및 배포

가장 효율적인 방식 ?H() 가 해쉬함수일 때 , Mk(x) = H(k || x) 로 정의 (k || x 는 비트열 k 와 비트열 x 의 연접 )

H 가 random oracle 이면 위와 같이 정의된 Mk(x) 는 PRF 임 .아니 , 아예 random function 임What’s wrong with this approach?

Page 20: 해쉬함수를 이용한  MAC 의 구성

20

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Merkle-Damgard hash function

Merkle-Damgard hash function실제 대부분의 실용적인 해쉬 함수는 Merkle-Damgard 방식을 따름긴 메시지를 짧은 메시지 블록으로 분해한 번에 하나씩의 메시지 블록을 순차적으로 처리이를 위해 ‘압축 함수’를 설계즉 , 압축 함수의 직렬 연결이 Merkle-Damgard 해쉬함수

m1

IV

m2 m3 m4 m5

output

Page 21: 해쉬함수를 이용한  MAC 의 구성

21

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

메시지 확장 공격

Mk(x)=H(k || x) 는 사용된 H 가 Merkle-Damgard 이면 메시지 확장 공격을 당할 수 있음공격

랜덤 메시지 x 를 골라 , Mk(x) 값을 질의

이제 공격자는 k 는 모르지만 H(k || x) 는 알고 있음임의의 한 블록 b 를 선택하고 , x’=x || b 로 정의H 가 Merkle-Damgard 이면 , H(k || x’) = H(k || x || b) = h(H(k || x), b)여기서 h(s, b) 는 H 의 압축함수공격자는 이제 x’ 과 h(H(k || x), b) 를 출력하여 위조를 성공시킴즉 , 1 회 질의와 대략 압축 함수 1 회 계산량으로 확률 1 로 위조 가능

Page 22: 해쉬함수를 이용한  MAC 의 구성

22

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

HMAC

해쉬함수 기반 MAC 으로 , Bellare 등에 의해 제안됨해쉬함수 기반 MAC 의 사실상 표준Merkle-Damgard 해쉬함수의 확장 공격을 막을 수 있도록 설계됨

IV 대신 키 사용 (K0 이라는 1 개의 키로 두 개의 키 유도하여 사용 )

해쉬값을 그냥 출력하지 않고 , 한번 다시 압축함수를 통과시켜 출력 연결을 끊어서 확장 공격 봉쇄

M1

MAC

HashF

Mt

F

F

KI

KO

IV

K0

ipad

F

IV

K0

opad

F

Page 23: 해쉬함수를 이용한  MAC 의 구성

23

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Why HMAC?

HMAC 의 설계 원칙 ( 제가 이해하는 한에서 )기존에 이미 사용되어온 MD5, SHA-1 등의 Merkle-Damgard 해쉬함수를 blackbox 로 이용하여 구현 가능 ( 즉 , 기존 소스 코드 수정 불필요 )

Merkle-Damgard 해쉬함수의 메시지 확장 성질을 MAC 레벨에서 봉쇄안전성 증명 가능압축 함수가 PRF 이고 , 그 외에 사소한 성질을 더 만족하면 HMAC 역시 PRF

이러한 한에서 최선의 효율성 유지

HMAC 의 아쉬운 점해쉬함수의 문제를 해쉬함수에서 해결 않고 상위 layer 에서 처리

하지만 , ‘ 기존에 이미 사용되어온’ 해쉬함수이므로 선택의 여지는 없었음

그 결과 효율성이 최선은 아님짧은 메시지에 대해서는 H(k || x) 방식보다 2배까지도 느려짐

Page 24: 해쉬함수를 이용한  MAC 의 구성

24

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

해쉬함수를 이용한 MAC 의 구성

OMD

결론

55

66

Page 25: 해쉬함수를 이용한  MAC 의 구성

25

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Merkle-Damgard Composition Scheme

해쉬함수의 디자인을 개념적으로 두 부분으로 분리메시지 1블록을 처리하는 압축함수 (compression function) 의 설계압축함수를 결합하는 결합 방식 (composition scheme) 의 설계

유사한 분업화가 암호화에도 적용됨 : 블록 암호 + 운영모드

사실상 여태까지 Merkle-Damgard 는 거의 유일한 결합 방식이었음몇 가지 변종들이 있음 . 예를 들어 :

MD strengthening: 마지막 블록에 전체 메시지 길이를 encoding 하여 입력Message as IV: 고정된 IV 대신 메시지의 첫 블록을 이용Truncation: 최종 출력 시 일부 비트를 누락하기도 함

m1

IV

m2 m3 m4 m5

output

Page 26: 해쉬함수를 이용한  MAC 의 구성

26

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Merkle-Damgard 의 장단점

장점개념적 단순성효율성On-line 처리 가능 : 모든 메시지 블록을 다 받은 뒤에야 처리를 시작할 수 있는 것이 아니라 , 데이터가 전송되는 대로 처리 가능Collision resistance 증명 가능 : 공격자가 전체 해쉬함수의 충돌쌍을 찾아낼 수 있으면 , 이를 이용해서 압축함수의 충돌쌍을 찾을 수 있음을 증명 가능

즉 , 압축함수의 충돌쌍을 찾기 어려우면 , 전체 해쉬함수의 충돌쌍도 찾기 어려움

단점메시지 확장 성질?

질문 : ‘ 메시지 확장 성질’등의 구조적인 결함 여부를 특정 결합 방식에 대해 평가하는 방법은 ?

Page 27: 해쉬함수를 이용한  MAC 의 구성

27

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Indifferentiability

Coron, Dodis, Malinaud and Puniya, Merkle-Damgard Revisited: How to Construct a Hash Function, CRYPTO 2005

Coron 등은 결합 방식의 구조적 성질을 연구하기 위해 indifferentiability framework 사용을 제안압축 함수가 고정 길이 입력의 random oracle 일 때 , 해당 결합 방식으로 이를 결합한 해쉬함수가 random oracle 과 ‘ indifferentiable’ 한가 ?

직관 :해쉬함수는 궁극적으로 random oracle 처럼 동작해야 함Random oracle 에는 어떤 구조도 없음즉 , random oracle 과 구분 불가능하다는 것은 ‘메시지 확장 성질’과 같은 구조적 성질을 발견할 수 없음을 의미함

예 : Merkle-Damgard 방식은 random oracle 과 indifferentiable 하지 않음이유 : 메시지 확장 공격이 가능하기 때문에

Page 28: 해쉬함수를 이용한  MAC 의 구성

28

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Indifferentiability

A Turing machine C with oracle access to an ideal primitive G is said to be (tD, tS, q, ε)-indifferentiable from an ideal primitive F, if there exists a

simulator S, such that for any distinguisher D it holds that: | PR[DC,G=1]-PR[DF,S=1] | < ε

CC GG FF SS

DD

This guy is C and I’m

actually G!Believe me!

Page 29: 해쉬함수를 이용한  MAC 의 구성

29

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

Indifferentiability for hash functions

Indifferentiability 의 적용 예G: 고정 길이 입력의 random oracleC: G 를 압축 함수로 하여 , 특정 결합 방식을 적용하여 만든 해쉬F: 임의 길이 입력의 random oracleS: F 가 C 라고 우기기 위해 자신이 그에 대응되는 고정 길이 입력 random oracle 이라고 주장하는 , 시뮬레이터

Merkle-Damgard 는 random oracle 과 indifferentiable 하지 않음메시지 확장 공격을 통해 , 임의의 시뮬레이터 S 의 거짓말도 밝혀낼 수 있음

결합 방식의 구조적 안전성 증명1. 결합 방식의 설계2. 적절한 시뮬레이터 S 정의3. S 에 대한 임의의 ‘ differentiator’ 의 advantage 도 크지 않음을 증명

Page 30: 해쉬함수를 이용한  MAC 의 구성

30

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

새로운 결합 방식의 개발

환경구조적 특성을 갖는 Merkle-Damgard 결합 방식에 의한 해쉬함수의 경우 , HMAC 을 사용해야 안전한 MAC 을 구성할 수 있으나 , HMAC 의 효율성은 최선이 아님해쉬함수의 구조적 안전성에 대한 엄밀한 분석 기법이 Coron 등에 의해 2005년에 제시됨기존에는 Merkle-Damgard 방식이 사실상 유일한 결합 방식으로 자연스레 받아들여졌으며 이 부분에 대한 연구가 활발하지 않았으나 , 최근 이에 대한 분석 및 , 새로운 결합 방식의 개발에 대한 학계의 관심이 있음

예Lucks 의 wide pipe 방식Gauravaram 등의 3C, 3C+

Bellare, Ristenpart 의 EMD (Enveloped Merkle-Damgard)

Wang 의 해쉬함수 공격 이후 새로운 해쉬함수 개발에 대한 관심이 있음NIST 는 AES 와 유사하게 AHS(Advanced Hash Standard) 공모사업 추진 예정

Page 31: 해쉬함수를 이용한  MAC 의 구성

31

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

MAC 기능을 제공하는 새로운 결합 방식 ?

현재의 환경은 , 더 이상 기존의 Merkle-Damgard 결합 방식을 당연시할 필요가 없게 되었음따라서 , Merkle-Damgard 의 약점을 보완하기 위해 설계된 HMAC보다 더 효율적인 해쉬함수 기반 MAC 의 구성이 가능해짐

결합 방식에 대한 바람직한 특성자체의 효율성Collision resistance 증명 가능

Preimage, 2nd preimage resistance 의 경우 여태까지는 이것을 증명 가능하게 하는 스킴이 없음

구조적 결함 없음 (random oracle 과 indifferentiable)

HMAC 보다 효율적인 MAC 기능 제공 가능

Page 32: 해쉬함수를 이용한  MAC 의 구성

32

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

해쉬함수를 이용한 MAC 의 구성

OMD

결론

55

66

Page 33: 해쉬함수를 이용한  MAC 의 구성

33

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

EMD Composition Scheme

EMD (Enveloped Merkle-Damgard)M. Bellare and T. Ristenpart, Multi-Property-Preserving Hash Domain Extension and the EMD Transform, Asiacrypt 2006

앞에서 제시한 성질들을 모두 만족하는 결합 방식을 처음으로 (?) 제시EMD(M)=F(IV2, F+(IV1,m1…mk-1) || mk )

F+ 는 단순한 Merkle-Damgard iteration

m1

IV1

m2 mk-1

mk

outputIV2

n

d d

n n

d

n n d

n n

d-n

Page 34: 해쉬함수를 이용한  MAC 의 구성

34

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

EMD Composition Scheme

EMD 의 특징Merkle-Damgard 의 메시지 확장 성질을 깨기 위해 , 출력 직전에서 또 하나의 IV 를 가지고 압축 함수를 1 회 추가 적용마지막에 이전과 이질적인 조작을 해서 연쇄를 깨는 것은 암호학적 구성에서 많이 쓰이는 트릭임

하지만 이를 위해 별도로 압축 함수를 1 회 더 적용하지는 않음일반적으로 메시지 블록 길이 d > 내부 상태 크기 n 임을 이용하여 , 메시지 길이를 encoding 하는 마지막 블록 단계에서 새로운 IV 로 압축 함수 동작

결과적으로 , Merkle-Damgard 에 근접하는 효율성MAC 으로 사용하기 위해서는 IV1, IV2 대신에 비밀키를 이용

PRF 로서의 안전성 증명 제공

Indifferentiability 증명 제공

질문 : EMD 보다 더 효율적일 수 있나 ?

Page 35: 해쉬함수를 이용한  MAC 의 구성

35

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

해쉬함수를 이용한 MAC 의 구성

OMD

결론

55

66

Page 36: 해쉬함수를 이용한  MAC 의 구성

36

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

OMD Composition Scheme

OMD (Offset Merkle-Damgard)A. Yun and J.H. Park, A Variant of the Merkle-Damgard Scheme with a Fixed Offset, Manuscript

OMD(M)=F(C F+(IV1,m1…mk-1), mk )

C 는 고정된 0 이 아닌 상수

m1

IV

m2 mk-1

C

outputn

d d

n n

d

n n n n

n

mk

d

Page 37: 해쉬함수를 이용한  MAC 의 구성

37

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

배경

J. Kelsey, in Public Comments on the Draft Federal Information Processing Standard (FIPS) Draft FIPS 180-2, Secure Hash Standard (SHS), 2001, available at http://csrc.nist.gov/encryption/shs/dfips-180-2-comments1.pdf

John Kelsey 는 SHA-2 에 대한 public comment 에서 , SHA-1 등에 쓰인 Merkle-Damgard 방식의 메시지 확장 성질을 막기 위한 한 가지 방법으로 마지막 블록의 처리 직전에 0 이 아닌 상수를 XOR 하는 것을 제안 (2001년 )

Kelsey 에 의하면 이는 Niels Ferguson 에 의해 처음 제안되었다고 함하지만 여태까지 이 방식의 안전성에 대한 증명이나 기타 분석 결과는 전무

한 일 : 이 방식에 대해 OMD(Offset Merkle-Damgard) 라 명명하고 , 안전성을 증명함

Page 38: 해쉬함수를 이용한  MAC 의 구성

38

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

OMD 의 안전성

OMD 의 안전성압축함수가 collision resistant OMD 도 collision resistant압축함수가 고정 길이 입력 random oracle OMD 는 임의 길이 입력 random oracle압축함수가 , 비밀키 k 를 IV 로 사용했을 때 매우 약한 연관키 공격 (related-key attack) 에 안전한 PRF 비밀키 k 를 IV 로 사용했을 때 OMD 도 PRF압축함수가 , 앞의 가정 이외에 , 비밀키를 메시지 블록에 넣을 때에 PRF Mk(x) := OMD( k || x ) 가 PRF

참고압축함수 F(s, x) 에 대해

비밀키 k 를 IV 로 사용 : 함수족 kF(k, · ) 를 고려 비밀키를 메시지블록에넣기 : 함수족 kF(· , k) 를 고려

약한연관키 공격PRF F 에 대해 공격자가 질의할 때 , 비밀키 k 에 대해 Fk(·), 또는 FCk(·) 양쪽에

질의 가능 . 공격자는 최종적으로 자신이 함수 쌍 Fk(·), FCk(·) 를상대하는지 아니면 두 개의독립적인 랜덤함수 쌍 r1(·), r2(·) 를상대하는지를맞혀야 함

Page 39: 해쉬함수를 이용한  MAC 의 구성

39

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

안전성 증명의 아이디어

메시지 확장 공격은 사실상 Merkle-Damgard 의 유일한 (?) 구조적 특성임

예 : 비밀키를 IV 로 사용하는 cascade construction 은 Prefix-free PRF ( 즉 , 공격자가 한 메시지가 다른 메시지의 확장인 형태의 질의만 하지 않으면 PRF)

직관적으로Merkle-Damgard 의 chaining 과정을 offset C 가 끊을 것이다 .

더 구체적으로 , F 가 복잡하게 생겼다면 F(s, x) 가 , 이미 질의된 다른 F(s’, x’) 에 대해 F(s, x)=s’ 이거나 혹은 F(s, x)=Cs’ 일 확률은 낮다 .

따라서 이 확률을 무시하면 공격자는 indifferentiability 문제의 경우 , 시뮬레이터를 구분하기 위해 유용한 정보를 전혀 얻을 수 없다시뮬레이터는 F(s, x) 를 그냥 랜덤하게 고르는 것이 아니라 , 위와 같은 경우가 생기지 않도록 피해서 제공해야 한다 .

Page 40: 해쉬함수를 이용한  MAC 의 구성

40

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

OMD is a PRF

Bellare, Canetti, Krawczyk 의 96년도 논문 ‘ Pseudorandom Functions Revisited’ 는 비밀키를 IV 로 하는 cascade construction 이 Prefix-free PRF 임을 증명함OMD 가 PRF 임은 위 논문의 증명을 연관키 버전으로 바꾸어 증명Key lemma

Fk(x) 가 약한 연관키 공격에 강한 PRF 이면 , 즉 ( Fk(·), FCk(·) ) 와 랜덤함수 쌍 (r1(·), r2(·) ) 를 구별할 수 없으면 , 다음의둘도 구별할 수 없음 :

Fk1(·), FCk1(·), Fk2(·), FCk2(·), … , Fkq(·), FCkq(·)

r1(·), r’1(·), r2(·), r’2(·), …, rq(·), r’q(·)

Page 41: 해쉬함수를 이용한  MAC 의 구성

41

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

OMD 대 EMD

유사 제품 간에 비교 필요함EMD 와 OMD 가 둘 다 메시지 확장 공격을 막기 위해 압축함수의 domain을 분리하지만 , EMD 는 아예 별도의 IV 를 , OMD 는 offset 을 통한 확률적 분리를 이용OMD 의 구조가 EMD 보다 더 단순함 : 이 결과 OMD 가 EMD 보다 다소 빠름 . SHA-1 과 같은 파라미터에서 압축함수 동작 횟수가 평균 0.3 회 적음MAC 기능의 경우 , EMD 는 단지 PRF 가정만 필요로 하지만 , OMD 는 연관키 공격을 고려한 다소 강한 가정이 필요반대로 , EMD 는 IV 두 개에 대응되어 , 두 배로 더 긴 비밀키가 필요하지만 키 전수조사 관점에서 divide-and-conquer 공격이 가능하여 OMD 만큼의 안전성만을 제공1 개의 비밀키를 이용하고 키 유도 방식을 통해 두 개로 불리면 되지만 , 이 경우 OMD 와 마찬가지로 연관키 공격에 대한 가정 필요EMD 는 해쉬함수를 블랙박스로 사용하는 H( k || x ) 와 같은 구성에 대한 PRF 안전성 증명이 되어있지 않음

Page 42: 해쉬함수를 이용한  MAC 의 구성

42

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

해쉬함수와 MAC

HMAC

Merkle-Damgard

EMD

11

22

33

44

해쉬함수를 이용한 MAC 의 구성

OMD

결론

55

66

Page 43: 해쉬함수를 이용한  MAC 의 구성

43

h t t p : / / w w w . n s r i . r e . k r

즐기자 변화를 꿈꾸자 최고를

결론

해쉬함수와 MAC 은 피상적인 유사함에도 불구 , 전혀 다른 대상임해쉬함수 기반 MAC 은 많이 연구되어 왔으며 , HMAC 이 대표적이전에는 해쉬함수의 결합 방식에 대한 연구가 미진하였으나 , 현재는 분석이 이루어지고 있으며 Merkle-Damgard 를 뛰어넘는 결합 방식에 대해 학계의 관심이 있음또한 기존 표준 해쉬들에 대한 회의론과 더불어 , 새로운 해쉬함수의 개발에 대한 실제적인 수요와 관심이 있음따라서 , 안전성을 잃지 않고도 Merkle-Damgard 방식과 HMAC을 동시에 더 효율적인 구성으로 대치할 수 있는 기회가 주어짐OMD(Offset Merkle-Damgard) 방식이 그러한 구성의 한 예임

Page 44: 해쉬함수를 이용한  MAC 의 구성

감사합니다 .