암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은...

38
암호학적 해쉬함수 2013.11.05 SeoulTech Univ. CHAPTHER 11. Cryptography & Network Security Principles and Practice SeongJin Hwang

Transcript of 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은...

Page 1: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

암호학적 해쉬함수

2013.11.05 SeoulTech Univ.

CHAPTHER 11.

Cryptography & Network Security

Principles and Practice

SeongJin Hwang

Page 2: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

Contents

암호학적 해쉬 함수의 응용들

두 개의 간단한 해쉬 함수들

요구사항과 보안

암호블록(CBC)에 기반한 해쉬 함수

SHA(Secure Hash Algorithm)

2

Page 3: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

핵심정리

해쉬 함수는 다양한 길이의 메시지를 고정 길의 해쉬 값, 또는 메시지 다이제스트로 변환한다.

가상적으로 모든 암호학적 해쉬 함수들은 압축 함수를 반복적으로 사용하여 구성된다.

안전한 해쉬 알고리즘에서 사용되는 압축 함수들의 2가지 부류

해쉬 함수 전용으로 설계된 함수(SHA)

대칭 블록 암호에 기반한 알고리즘(Whirpool)

3

Page 4: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

해쉬함수

해쉬 함수 H

입력 : 가변길이 블록 데이터 M

출력 : 고정길이의 해쉬값 h = H(M)

암호학적 해쉬 함수

이미 정의된 해쉬 값에 대응하는 데이터객체를 찾는 것이 계산적으로 불가능해야 함(일방향성)

동일한 해쉬 값을 갖는 두 개의 데이터 객체를 찾는 것이 계산적으로 불가능해야 함(충돌회피성)

보안 응용에 사용됨

4

Page 5: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

암호학적 해쉬 함수의 블록도

메시지 또는 데이터 블록 M (가변 길이)

5

Page 6: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

암호학적 해쉬 함수의 응용들

6

Page 7: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

암호학적 해쉬 함수의 응용

메시지 인증 (Message Authentication)

전자서명 (Digitial Siginutures)

기타 애플리케이션들

일방향 패스워드 파일 생성

침입탐지나 바이러스 탐지에도 사용

시스템에 있는 파일의 H(F)를 저장하고 그 해쉬값을 안전하게 보호

이후에 H(F)를 다시 계산하여 파일 수정 여부 관찰

의사난수함수(pseudorandom function: PRF) 또는 의사난수 생성기

(pseudorandom number generator: PRNG) 생성에 이용

7

Page 8: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

메시지 인증(Message Authentication)

메시지의 무결성을 검증하는데 사용되는 기법이나 서비스

메시지 다이제스트 (message digest)

메시지 인증을 제공하는데 사용되는 해쉬함수 값을 메시지 다이제스트라고

메시지 인증 방법들

a) 메시지와 해쉬코드가 대칭키 암호에 의하여 암호화

b)해쉬코드만 대칭키 암호를 이용하여 암호화

c) 메시지와 공통비밀키S로부터 해쉬값 계산, 수신자도 S를 알기 때문에 검증

위한 해쉬값 계산

d) c)에 기밀성 추가 (전체 메시지와 해쉬코드를 암호화)

8

Page 9: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

메시지 인증방법 (a) (b)

a)메시지와 해쉬코드가 대칭키 암호에 의하여 암호화

b)해쉬코드만 대칭키 암호를 이용하여 암호화 9

Page 10: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

메시지 인증방법 (c) (d)

c) 메시지와 공통비밀키S로부터 해쉬값 계산, 수신자도 S를 알기 때문에 검증 위한 해쉬값 계산

d) c)에 기밀성 추가 (전체 메시지와 해쉬코드를 암호화)

10

Page 11: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

전자서명(Digital Signatures)

해쉬 코드가 송신자의 비밀키를 이용하여 공개 키 암호화가 됨

메시지와 비밀키로 암호화된 해쉬 코드가 대칭키로 암호화됨

11

Page 12: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

요구사항과 보안

12

Page 13: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

암호학적 해쉬 함수 H의 요구사항

13

Page 14: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

해쉬 함수에 대한 공격

전사적 공격 선 이미지(preimage)와 2차 선 이미지 공격

공격자는 주어진 해쉬 값 h와 같은 값을 갖는 H(y)에 대응하는 y를 찾고자 한다.

길이가 m인 코드에 대한 공격 수준: 2m에 비례 충돌 회피 공격(collision resistant attack)

공격자는 같은 해쉬 값 H(x)=H(y)를 만족하는 2개의 메시지/데이터 블록인 x와 y를 찾고자 한다

생일 역설(birthday paradox) 공격 복잡도는 생일 역설(birthday paradox) 수학적인 분석으로 설명

길이가 m인 코드에 대한 공격 수준: 2m/2에 비례 해쉬코드길이

128비트: 안전이 취약함 160비트: 사용 가능하지만 탐색기술이 발전하는 중인 만큼 안전한 것만은 아님.

암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은, 암호 분석적 노력이 전사적 공격에서 요구되는 노력보

다 크거나 같기를 요구

14

Page 15: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

안전한 해쉬 코드의 일반적 구성

압축 함수(compression function) f를 반복적으로 사용 해쉬코드의 공격은 이 f의 공격에 초점이 맞추어짐

15

Page 16: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

암호 블록 연결에 기반한 해쉬 함수

16

Page 17: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

블록암호 알고리즘을 해쉬함수로 이용

메시지 M을 고정된 크기의 블록 M1, M2, ⋯, MN으로 나누고, 다음과 같이 해쉬 코

드 G를 계산하기 위해서 대칭 암호 시스템을 이용

H0 = 초기 값

Hi = E(Mί, Hi-1)

G = HN

대칭암호시스템으로 DES가 사용되면 해쉬코드 길이가 64비트이므로 취약함.

여러 변종 방법들이 제안되고 있으나, 여전히 다음 공격에 의해 취약함

생일역설공격

중간자 공격 (man-in-the-middle attack)

17

Page 18: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

Secure Hash Algorithm (SHA)

18

Page 19: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA (Secure Hash Algorithm)

최근 몇 년간 가장 널리 사용된 해쉬 함수

1993년, NIST(National Institute of Standards and Technology)에서

FIPS PUB 180으로 공포 후에 SHA-0로 알려짐

1995년. 개정됨: FIPS 180-1 SHA-1

160 비트 해쉬 생성

2002년. SHA-256, SHA-384, SHA-512 공포. FIPS 180-2 SHA-2

SHA-1과 동일한 기반 구조, 모듈라 연산, 논리 이진연산 사용

따라서 암호분석은 SHA-2가 SHA-1과 동일하나, 좀더 높은 안전성을 갖고 있음

2008년. FIPS180-3 발행 224 비트 버전 추가

19

Page 20: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA versions

20

Page 21: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-512 논리

입력: 최대길이 2128 비트 미만인 메시지 출력: 512 비트 메시지 다이제스트 5단계(패딩 비트의 부가 -> 메시지 길이의 부가 -> MD 버퍼의 초기

화-> 1024비트 블록의 메시지 처리-> 출력)

21

Page 22: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-512 압축 함수

SHA-512의 중심 함수

1024-비트 블록의 메시지를 다룸

80개의 라운드로 구성됨

512 비트 버퍼를 갱신함

현재의 메시지 블록으로부터 얻은 64-비트 값 Wt와

덧셈 상수 Kt를 사용함

22

Page 23: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-512 기본 동작(80단계 중 한 단계)

23

Page 24: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-512 기본 동작(80단계 중 한 단계)

T1 = h+ Ch(e,f,g) + (∑512e) + Wt + Kt

Ch(e,f,g)= (e AND f) (NOT e AND g)

조건함수: e이면 f이고 아니면 g이다

∑512e = ROTR28(e) ROTR34(e) ROTR39(e)

T2 = (∑512a) h+ Maj(a,b,c)

Maj(a,b,c) = (a AND b) (a AND c) (b AND c)

인자 중 다수(2개 또는 3개)의 값이 참이면 결과가 참이다.

∑512a = ROTR14(a) ROTR18(a) ROTR41(a)

ROTRn(x) = 64비트 인자 x를 n비트 만큼 오른쪽으로 환형 쉬프트(순환)

Wt = 현재의 512-비트 입력 블록에서 얻은 64비트 워드

Kt = 64비트 덧셈 상수

+ = mod 264 덧셈

h = g, g = f, f = 2, e= d +T1, d = c, c = b, b = a, a = T1 + T2

24

Page 25: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-512 기본 동작(80단계 중 한 단계)

라운드 함수에 대하여 2가지 관측이 얻어질 수 있다.

라운드 함수의 출력 8개 워드 중 6개는 (b,c,d,f,g,h)를 순환을 이용하여 단순히 순서를

바꾼 것이다.

출력 워드 중 단지 2개만 (a,e)만이 치환에 의하여 생성된다. 워드 e는 입력 변수

(d,e,f,g,h)와 라운드 워드 Wt, 그리고 상수 Kt 에 대한 함수이다. 워드 a는 d를 제외한 입

력 변수 전체와 라운드 워드 Wt, 그리고 상수 Kt 에 대한 함수이다.

25

Page 26: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

단일블록의 SHA-512 처리에서 80워드 입력 생성

26

Page 27: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-512 기본 동작(80단계 중 한 단계)

처리과정의 처음 16단계에서 Wt의 값은 메시지 블록의 대응하는 워드와 동일하

다.

나머지 64단계에 대하여 Wt의 값은 선행 값 Wt 중 4개의 XOR 수행한 결과로

구성된다.

4개 중 2개는 쉬프트와 환영 쉬프트가 수행된 것이다.

이것은 압축될 메시지 블록에 임의성과 상호의존성을 많게 해주어 결과적으로 동일한

압축 함수 출력으로 사상되는 다른 메시지 블록을 찾는 작업을 어렵게 한다.

27

Page 28: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-3

NIST 해쉬함수 대회, 2007년 공표 (목표: 2012년)

요구사항

간단한 대체만으로 SHA-2를 SHA-3로 교체가능

SHA-2의 온라인 특성 유지

NIST가 제안한 새 해쉬함수의 평가기준

보안: SHA-3의 보안강도는 요구되는 여러 해쉬 크기에 대하여 그리고 선이미지

회피성 및 충돌 회피성 모두에 대하여 이론적인 최대치에 가까워야한다.

비용: SHA-3은 다양한 하드웨어 플랫폼 상에서 기간과 메모리 모든 면에서 효율

적이어야한다.

알고리즘과 구현 특성: 유연성(보안 성능 조절을 위하여 조정이 가능한 인자 등)

와 간결성(알고리즘의 보안 특성 분석을 수월하게 해줌)을 가져야한다.

28

Page 29: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

Secure Hash Algorithm -1(SHA-1)의 논리

29

Page 30: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1

264 비트 미만의 길이를 갖는 메시지 x를 160 비트 메시지 다이제스트를 출력

h

h(x)

x 264비트 미만 메시지

160 비트 메시지다이제스트

SHA-1

30

Page 31: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(1단계)

패딩비트 첨가

메시지 X의 크기가 |x| 448 mod 512 이 되도록 x 의 끝에 한 비트 1 과

적당한 수의 비트 0을 추가 한다.

추가 되는 비트의 수는 1 이상 512이하

100 000 x

512k - 64

31

Page 32: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(2단계)

길이 첨가

패딩이 추가된 메시지 뒤에 원래 메시지 길이를 64비트로 표현한 값이 첨부

메시지 X의 크기가 264 를 초과하면 최하위 64비트만이 메시지에 첨가

새로 만들어진 메시지는 정확히 512배수, 따라서 16의 배수

이 메시지를 M[0 1 … n-1]라고 나타낸다(n은 16의 배수

32

Page 33: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(3단계)

버퍼의 초기화

160 비트 버퍼 사용

버퍼는 5개의 32비트 레지스터 A,B,C,D,E 로 표현

이값들은 big-endian 바이트 형식으로, 즉 상위 바이트를 먼저 저장하는 방

식으로 저장된다.

32비트 정수(16 진수값) Big-endian 초기화(16진수로)

A = 67 45 23 01 B = ef cd ad 89 C = 98 ba dc fe D = 10 32 54 76 E = c3 d2 e1 f0

단어 A : 67 45 23 01 단어 B : ef cd ad 89 단어 C : 98 ba dc fe 단어 D : 10 32 54 76 단어 E : c3 d2 e1 f0

33

Page 34: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(4단계)

16단어(512비트) 블록 단위로 메시지 처리하기

논리함수 열 f0, f1, f3, …,f79를 사용

각각의 fi는 3 개의 32비트 워드를 입력으로 취하며, 한 개의 32비트 단어를

출력

X: 메시지의 한 16단어 블록

X[i]= X의 인덱스가 i 인 단어

M[i]= n단어 메시지에서 인덱스가 i 인 단어

34

Page 35: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(4단계)

fi 의 정의

상수 단어열 K0, K1, …, K79 를 사용

fi i

fi(x,y,z) =(x y) (~x z) 0 i 19

fi(x,y,z)= x y z 20 i 39

fi(x,y,z) =(x y) (x z) (y z) 40 i 59

fi(x,y,z)= x y z 60 i 79

Ki i

Ki = 5a827999 0 i 19

Ki = 6ed9eba1 20 i 39

Ki = 8f1bbcdc 40 i 59

Ki = ca62c1d6 60 i 79

35

Page 36: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(4단계)

20단계의 4라운드 처리로 구성

4개의 각 라운드는 f1,ff2,f3,f4,

로 표현되는 4가지 기약 논리함

수 사용

80개의 덧셈 상수 사용

마지막 단계의 출력에 CVq를 더

하여 CVq+1을 생성

36

Page 37: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

SHA-1(5단계)

출력

CV0 = IV

CVq+1 = SUM32(CVq, ABCDEq)

MD = CVL

IV : ABCDE 버퍼의 초기값

ABCDEq: q번째 메시지의 블록 처리의 마지막 라운드에서의 출력

L: 메시지의 블록 수(패딩과 길이 필드 포함)

SUM32 : 입력쌍의 각 워드에 대해 분리하여 실행하는 법 232에서의 덧셈

MD: 메시지 다이제스트

37

Page 38: 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은 해쉬함수 알고리즘의 취약성을 분석해 내는 것 이상적인 해쉬 알고리즘은,

Contact.

H.P. 010-6754-0123

E-Mail: [email protected]

Name: Seongjin Hwang

Q & A Thank you