수간호사의 감성 리더십이 간호사의 직무만족과 조직몰입에 미치는 영향 · 역량을 분석해 본 결과 역량중의 75%가 감성적 특성으로 이루
암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은...
Transcript of 암호학적 해쉬함수 · 2013-12-04 · 암호해독(Cryptanalysis) 암호해독 방법은...
암호학적 해쉬함수
2013.11.05 SeoulTech Univ.
CHAPTHER 11.
Cryptography & Network Security
Principles and Practice
SeongJin Hwang
Contents
암호학적 해쉬 함수의 응용들
두 개의 간단한 해쉬 함수들
요구사항과 보안
암호블록(CBC)에 기반한 해쉬 함수
SHA(Secure Hash Algorithm)
2
핵심정리
해쉬 함수는 다양한 길이의 메시지를 고정 길의 해쉬 값, 또는 메시지 다이제스트로 변환한다.
가상적으로 모든 암호학적 해쉬 함수들은 압축 함수를 반복적으로 사용하여 구성된다.
안전한 해쉬 알고리즘에서 사용되는 압축 함수들의 2가지 부류
해쉬 함수 전용으로 설계된 함수(SHA)
대칭 블록 암호에 기반한 알고리즘(Whirpool)
3
해쉬함수
해쉬 함수 H
입력 : 가변길이 블록 데이터 M
출력 : 고정길이의 해쉬값 h = H(M)
암호학적 해쉬 함수
이미 정의된 해쉬 값에 대응하는 데이터객체를 찾는 것이 계산적으로 불가능해야 함(일방향성)
동일한 해쉬 값을 갖는 두 개의 데이터 객체를 찾는 것이 계산적으로 불가능해야 함(충돌회피성)
보안 응용에 사용됨
4
암호학적 해쉬 함수의 블록도
메시지 또는 데이터 블록 M (가변 길이)
5
암호학적 해쉬 함수의 응용들
6
암호학적 해쉬 함수의 응용
메시지 인증 (Message Authentication)
전자서명 (Digitial Siginutures)
기타 애플리케이션들
일방향 패스워드 파일 생성
침입탐지나 바이러스 탐지에도 사용
시스템에 있는 파일의 H(F)를 저장하고 그 해쉬값을 안전하게 보호
이후에 H(F)를 다시 계산하여 파일 수정 여부 관찰
의사난수함수(pseudorandom function: PRF) 또는 의사난수 생성기
(pseudorandom number generator: PRNG) 생성에 이용
7
메시지 인증(Message Authentication)
메시지의 무결성을 검증하는데 사용되는 기법이나 서비스
메시지 다이제스트 (message digest)
메시지 인증을 제공하는데 사용되는 해쉬함수 값을 메시지 다이제스트라고
함
메시지 인증 방법들
a) 메시지와 해쉬코드가 대칭키 암호에 의하여 암호화
b)해쉬코드만 대칭키 암호를 이용하여 암호화
c) 메시지와 공통비밀키S로부터 해쉬값 계산, 수신자도 S를 알기 때문에 검증
위한 해쉬값 계산
d) c)에 기밀성 추가 (전체 메시지와 해쉬코드를 암호화)
8
메시지 인증방법 (a) (b)
a)메시지와 해쉬코드가 대칭키 암호에 의하여 암호화
b)해쉬코드만 대칭키 암호를 이용하여 암호화 9
메시지 인증방법 (c) (d)
c) 메시지와 공통비밀키S로부터 해쉬값 계산, 수신자도 S를 알기 때문에 검증 위한 해쉬값 계산
d) c)에 기밀성 추가 (전체 메시지와 해쉬코드를 암호화)
10
전자서명(Digital Signatures)
해쉬 코드가 송신자의 비밀키를 이용하여 공개 키 암호화가 됨
메시지와 비밀키로 암호화된 해쉬 코드가 대칭키로 암호화됨
11
요구사항과 보안
12
암호학적 해쉬 함수 H의 요구사항
13
해쉬 함수에 대한 공격
전사적 공격 선 이미지(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
안전한 해쉬 코드의 일반적 구성
압축 함수(compression function) f를 반복적으로 사용 해쉬코드의 공격은 이 f의 공격에 초점이 맞추어짐
15
암호 블록 연결에 기반한 해쉬 함수
16
블록암호 알고리즘을 해쉬함수로 이용
메시지 M을 고정된 크기의 블록 M1, M2, ⋯, MN으로 나누고, 다음과 같이 해쉬 코
드 G를 계산하기 위해서 대칭 암호 시스템을 이용
H0 = 초기 값
Hi = E(Mί, Hi-1)
G = HN
대칭암호시스템으로 DES가 사용되면 해쉬코드 길이가 64비트이므로 취약함.
여러 변종 방법들이 제안되고 있으나, 여전히 다음 공격에 의해 취약함
생일역설공격
중간자 공격 (man-in-the-middle attack)
17
Secure Hash Algorithm (SHA)
18
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
SHA versions
20
SHA-512 논리
입력: 최대길이 2128 비트 미만인 메시지 출력: 512 비트 메시지 다이제스트 5단계(패딩 비트의 부가 -> 메시지 길이의 부가 -> MD 버퍼의 초기
화-> 1024비트 블록의 메시지 처리-> 출력)
21
SHA-512 압축 함수
SHA-512의 중심 함수
1024-비트 블록의 메시지를 다룸
80개의 라운드로 구성됨
512 비트 버퍼를 갱신함
현재의 메시지 블록으로부터 얻은 64-비트 값 Wt와
덧셈 상수 Kt를 사용함
22
SHA-512 기본 동작(80단계 중 한 단계)
23
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
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
단일블록의 SHA-512 처리에서 80워드 입력 생성
26
SHA-512 기본 동작(80단계 중 한 단계)
처리과정의 처음 16단계에서 Wt의 값은 메시지 블록의 대응하는 워드와 동일하
다.
나머지 64단계에 대하여 Wt의 값은 선행 값 Wt 중 4개의 XOR 수행한 결과로
구성된다.
4개 중 2개는 쉬프트와 환영 쉬프트가 수행된 것이다.
이것은 압축될 메시지 블록에 임의성과 상호의존성을 많게 해주어 결과적으로 동일한
압축 함수 출력으로 사상되는 다른 메시지 블록을 찾는 작업을 어렵게 한다.
27
SHA-3
NIST 해쉬함수 대회, 2007년 공표 (목표: 2012년)
요구사항
간단한 대체만으로 SHA-2를 SHA-3로 교체가능
SHA-2의 온라인 특성 유지
NIST가 제안한 새 해쉬함수의 평가기준
보안: SHA-3의 보안강도는 요구되는 여러 해쉬 크기에 대하여 그리고 선이미지
회피성 및 충돌 회피성 모두에 대하여 이론적인 최대치에 가까워야한다.
비용: SHA-3은 다양한 하드웨어 플랫폼 상에서 기간과 메모리 모든 면에서 효율
적이어야한다.
알고리즘과 구현 특성: 유연성(보안 성능 조절을 위하여 조정이 가능한 인자 등)
와 간결성(알고리즘의 보안 특성 분석을 수월하게 해줌)을 가져야한다.
28
Secure Hash Algorithm -1(SHA-1)의 논리
29
SHA-1
264 비트 미만의 길이를 갖는 메시지 x를 160 비트 메시지 다이제스트를 출력
h
h(x)
x 264비트 미만 메시지
160 비트 메시지다이제스트
SHA-1
30
SHA-1(1단계)
패딩비트 첨가
메시지 X의 크기가 |x| 448 mod 512 이 되도록 x 의 끝에 한 비트 1 과
적당한 수의 비트 0을 추가 한다.
추가 되는 비트의 수는 1 이상 512이하
100 000 x
512k - 64
31
SHA-1(2단계)
길이 첨가
패딩이 추가된 메시지 뒤에 원래 메시지 길이를 64비트로 표현한 값이 첨부
메시지 X의 크기가 264 를 초과하면 최하위 64비트만이 메시지에 첨가
새로 만들어진 메시지는 정확히 512배수, 따라서 16의 배수
이 메시지를 M[0 1 … n-1]라고 나타낸다(n은 16의 배수
32
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
SHA-1(4단계)
16단어(512비트) 블록 단위로 메시지 처리하기
논리함수 열 f0, f1, f3, …,f79를 사용
각각의 fi는 3 개의 32비트 워드를 입력으로 취하며, 한 개의 32비트 단어를
출력
X: 메시지의 한 16단어 블록
X[i]= X의 인덱스가 i 인 단어
M[i]= n단어 메시지에서 인덱스가 i 인 단어
34
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
SHA-1(4단계)
20단계의 4라운드 처리로 구성
4개의 각 라운드는 f1,ff2,f3,f4,
로 표현되는 4가지 기약 논리함
수 사용
80개의 덧셈 상수 사용
마지막 단계의 출력에 CVq를 더
하여 CVq+1을 생성
36
SHA-1(5단계)
출력
CV0 = IV
CVq+1 = SUM32(CVq, ABCDEq)
MD = CVL
IV : ABCDE 버퍼의 초기값
ABCDEq: q번째 메시지의 블록 처리의 마지막 라운드에서의 출력
L: 메시지의 블록 수(패딩과 길이 필드 포함)
SUM32 : 입력쌍의 각 워드에 대해 분리하여 실행하는 법 232에서의 덧셈
MD: 메시지 다이제스트
37