제 8장 인증 및 해쉬함수

Download Report

Transcript 제 8장 인증 및 해쉬함수

Chap 9. 인증 및 해쉬함수
1
목차
1.
2.
3.
4.
5.
인증에서의 요구조건
인증함수
메시지 인증 코드
해쉬 함수
MD5, SHA-1, HMAC
2
1. 인증 요구 조건



기밀성
 노출(Disclosure) : 정확한 암호키를 소유하지 않은 사람이
나 프로세스에게 메시지의 내용이 노출되는 것
 트래픽분석 : 통신자들 사이에 트래픽 패턴을 알아내는 것
인증
 위장 : 공격자가 신뢰할 수 있는 개체를 가장해서 메시지를
생성
 내용변경 : 삽입, 삭제, 전치 및 수정을 포함한 메시지 내용
의 변경
 순서변경 : 삽입, 삭제 및 전치를 통한 쌍방간의 메시지 순
서의 변경
 시간수정 : 메시지의 지연과 재전송
부인봉쇄
 부인 : 수신자가 메시지 수신을 부인하거나 발신자가 메시
지의 발신 부인
3
2. 인증함수

메시지 인증자를 위한 함수
 메시지 암호화 : 메시지 전체의 암호문이 이
것의 인증자로 제공됨
 메시지 인증 코드(MAC) : 인증자로서 적용되
는 고정된 길이 값을 만드는 메시지 및 비밀
키의 공개함수
 해쉬함수 : 임의 길이의 메시지를 고정된 길
이의 해쉬 값으로 대응시키는 공개 함수로서
의 인증자 제공
4
2.1 메시지 암호화(비밀키 암호화)
K
K
E
D
M
M
EK(M)
Confidentiality and authentication

기밀성제공
 A와 B만이 K를 공유하고 암/복호화 가능

단순한 인증 제공
 K를 아는 A만이 해당 암호문 작성 가능

서명 제공 불가능
 수신자가 메시지 위조 가능
 송신자가 메시지 부인 가능
5
2.1 메시지 암호화(공개키 암호화)
M
KUb
KRb
E
D
M
EKUb(M)
Confidentiality

기밀성 제공
 B만이 비밀키 KRb를 통해 복호화 가능

인증제공 불가
 누구나가 B의 공개키 접근 가능
6
2.1 메시지 암호화(개인키 암호화)
M
KRa
KUa
E
D
M
EKRa(M)
Authentication and signature


인증과 서명 제공
 메시지를 암호화 할 수 있는 사용자는 KRa의 소유자
뿐임
 서명을 확인하기 위하여 KUa를 사용
기밀성 제공 불가
 메시지를 받은 사람이나, 도청한 사람 모두 보내는 사
람의 공개키 접근 가능
7
2.1 메시지 암호화(공개/개인키 암호화)
M
KRa
KUb
KRb
KUa
E
E
D
D
EKRa(M)
EKUb[EKRa(M)]
M
EKRa(M)
Confidentiality, authentication, and signature


기밀성 제공
 Kub로 암호화된 메시지는 KRb 소유자만 복호 가능
인증과 서명 제공
 KUa 로 복호될 수 있는 암호문은 KRa 소유자만 작성
가능
8
메시지 암호화의 문제점

암호할 메시지
 메시지는 의미있는 문장이 되어야 함
 의미있는 문장 => 입력의 제한
=> 메시지의 임의의 형태를 제공할 수 있는
방법의 필요
(Frame Check Sequence 이용)
EX) 에러 검출 코드
9
2.2 메시지 인증 코드

암호학적 점검 값이라는 MAC을 메시지에 추가

암호학적 점검 값
 비밀키를 사용하여 생성된 작은 크기의 데이
터 블록
 메시지와 키의 함수 : MAC = Ck(M)

메시지에 MAC을 부가하여 전송하고, 수신측에
서 계산하는 MAC과 비교하여 인증
10
2.2 메시지 인증 코드
K
M
||
C
M
C
compare
K
M||CK(M)

Message Authentication
인증제공
 메시지 내용 인증
 K를 모르는 공격자가 메시지와 대응되는 점검값 구성 불
가
 출처 인증
 K를 아는 A만이 올바른 점검값 작성하여 전송 가능
 메시지 순서 인증
 메시지에 순서번호가 포함되어 있다면 내용 인증에 의해
메시지 순서보장
11
2.2 메시지 인증 코드

만일 수신자와 송신자만이 비밀키를 알고있고
수신된 MAC과 계산된 MAC이 일치한다면
 수신자는 메시지가 변경되지 않았다고 확신
할 수 있음
 수신자는 합법적 송신자로부터 메시지가 왔
다고 확신함
 만일 메시지가 일련번호를 포함한다면, 공격
자는 일련번호를 성공적으로 변경할 수 없기
때문에 수신자는 합법적 순서를 확신할 수 있
음
12
평문과 MAC의 전송
출처 A
M
목적지 B
M
||
C
K
K
C

ºñ±³
CK(M)
인증제공

메시지 내용 인증


출처 인증


K를 모르는 공격자가 메시지와 대응되는 점검 값 구성 불가
K를 아는 A만이 올바른 점검 값 작성하여 전송 가능
메시지 순서 인증

메시지에 순서번호가 포함되어 있다면 내용 인증에 의해 메
시지 순서 보장
13
평문과 MAC의 암호화 전송
출처 A
M
목적지 B
||
E
D
K2
K2
M
C
K1
C

CK1(M)
A와 B만이 K1을 공유
기밀성 제공


ºñ±³
인증 제공


EK2[M || C K1(M)]
K1
A와 B만이 K2를 공유
평문 + 인증
14
암호문과 MAC의 전송
출처 A
M
E



D
||
K1
K2
목적지 B
EK2(M)
C
ºñ±³
C
M
CK1[E K2(M)]
K2
K1
인증 제공
 A와 B만이 K1을 공유
기밀성 제공
 A와 B만이 K2를 공유
암호문 + 인증
15
4. 해쉬 함수

해쉬 값은 다음 식과 같은 함수 H에 의해서 만들어
짐
Message
h = H(M)
Message Digest
(Fixed Length)
 M은 가변길이의 메시지
 H(M)은 고정 길이의 해쉬 값

해쉬 함수 자체는 비밀이 아님 => 해쉬 값을 포함한
암호가 필요
16
4. 해쉬 함수

해쉬 함수의 요구 조건
 H는 어떤 크기의 데이터 블록에도 적용될 수 있다
 H는 고정된 크기의 출력을 만든다
 H(x)는 실질적으로 하드웨어 및 소프트웨어에 적용하기
쉬워야 하며, 어떠한 x에 대해서도 계산하는 것이 비교적
쉬워야 한다
 어떠한 코드 h에 대해서도, H(x)=h인 x를 찾는 것은 계산
적으로 실행 불가능하다
 어떠한 블록 x에 대해서도, H(y)=H(x)인 yx인 것을 찾는
것이 계산적으로 실행 불가능하다
 H(x)=H(y)인 어떤 (x,y)짝을 찾는 것이 계산적으로 실행
불가능하다. 이는 또한 강력한 충돌 회피성으로 불리워
진다
17
메시지와 해쉬 코드의 대칭키 암호화
a) 메시지+해쉬코드


관용방식으로 암호화
인증 + 기밀성 제공
출처 A
M
목적지 B
||
E
D
K
H
M
ºñ±³
K
EK[M || H(M)]
H
H(M)
18
해쉬 코드의 대칭키 암호화
b) 해쉬코드


관용방식으로 암호화
기밀성을 요구하지 않는 응용에 적합 => MAC의
이용보다 처리의 부하를 줄일 수 있음
출처 A
목적지 B
M
||
M
K
H
K
ºñ±³
H
E
EK[H(M)]
D
19
해쉬 코드의 개인키 암호화
c) 해쉬코드
공개키 방식으로 송신자의 개인키를 이용해 암호
인증+디지털 서명 제공


출처 A
목적지 B
M
||
M
KRa
H
KUa
ºñ±³
H
E
EKRa[H(M)]
D
20
메시지와 개인키 암호화된 해쉬 코드의 대칭키 암호화
d) 메시지+공개키 암호방식의 개인키로 암호화
된 해쉬코드


관용방식으로 암호화
인증+디지털 서명+기밀성 제공
출처 A
M
목적지 B
||
E
D
M
KRa
KUa
K
H
E
H
ºñ±³
K
EK[M || E KRa[H(M)]] E [H(M)]
KRa
D
21
5. 해쉬 함수와 MAC 보안

전사적 공격방법
 전사적 공격에 대한 해쉬 함수의 강도는 오직
알고리즘에 의해 생성되는 해쉬코드의 길이
에 의존함

해쉬 함수의 특성에 따른 암호학적 강도
 일방향성 => 2n
 약충돌 회피성 => 2n
 강충돌 회피성 => 2n/2
22
MD5 메시지 다이제스트 알고리즘



MIT의 Ron Rivest에 의해 개발됨
RFC1321
MD5 로직
 입력 : 임의의 길이의 메시지
 출력 : 128비트 메시지 다이제스트
 입력처리 : 512비트 블록단위로 처리
5단계로 구성
23
Mess. Length
(K mod 2^64)
Padding
(1 to 512 bits)
L*512 bits = N * 32 bits
K bits
Message
100…0
512
512
512
512
Y0
Y1
Yq
YL-1
512
512
512
512
128
IV HMD5 128HMD5
CV1
128
CVq
HMD5
128
HMD5
CVL-1
Digest
24
Yq
512
CVq
A
128
32
B
C
D
F, T[1…16], X[i]
16steps
A B
C
D
G, T[17…32], X[p2i] 16steps
A B
C
D
H, T[33…48], X[p3i] 16steps
A B
C
D
I, T[49…64], X[p4i] 16steps
+
+
+
CVq+1
+
Addition is mod 2^32
25
 입력 : 128비트 버퍼 값 ABCD
 각 라운드 : 사인함수로 구성되는 T[1..64]의 ¼ 사용
 T의 i번째 요소는 2^32 * abs(sin(i))의 정수부분과

일치하는 값
 i는 라디안
 Abs(sin(i)) : 0과 1사이의 값
 T의 각 요소는 32비트 정수
 테이블은 사인함수 이용
 네번째 라운드의 출력은 첫번째 라운드의 입력이었
던 CVq와 더해져서 CVq+1생성
단계5 : 출력
26
라운드
기약함수 g
g(b,c,d)
1
F(b,c,d)
(bc)(bc)
2
G(b,c,d)
(bd)(cd)
3
H(b,c,d)
bcd
4
I(b,c,d)
c(bd)
A
B
+
X[k]
+
T[i]
+
C
D
g
CLSs
+
A
B
C
D
27
2. 안전한 해쉬 알고리즘(SHA)





Secure Hash Algorithm
NIST에서 개발
1993년 FIPS PUB 180 (Federal
Information Processing Standard)로 공
포
1995년 FIPS PUC 180-1 개정 버전 발행
(SHA-1)
SHA는 MD4 알고리즘에 기반을 두고 유
사하게 설계
28
SHA-1 논리




최대 264비트 미만의 길이 메시지 입력
512비트의 블록 단위로 처리
160비트 메시지 다이제스트 출력
512비트 메시지 블록 단위, 160비트 해쉬코드, 체
인변수를 갖고 MD5와 유사한 처리 과정을 수행
 단계 1 : 패딩 비트의 부가
 단계 2 : 메시지 길이의 부가
 단계 3 : MD 버퍼의 초기화(big endian 형태 저
장)
A=67452301 <= 워드 A : 67 45 23 01
29
 단계 4 : 1개의 블록(512비트-16워드) 처리
20단계의 4라운드 처리로 구성
 4개의 각 라운드는 f1, f2, f3, f4로 표현되는
4가지의 기약 논리함수 사용
 80개의 덧셈 상수 사용(4가지의 숫자)

0 <= t <= 19
 20 <= t <= 39
 40 <= t <= 59
 60 <= t <= 79


Kt=5A827999
Kt=6ED9EBA1
Kt=8F1BBCDC
Kt=CA62C1D6
마지막 단계의 출력에 CVq를 더하여 CVq+1
을 생성
30
31
SHA-1과 MD5의 차이점
특성
MD5
SHA-1
다이제스트 길이
처리의 기본단위
처리 단계수
최대 메시지 크기
기약 논리 함수
덧셈 상수
128비트
512비트
64(16*4)
무한대
4
64
160비트
512비트
80(20*4)
264
4
4
32
4. HMAC(Hashed-MAC)


대칭 블록 암호에 기반한 MAC계산 FIPS
PUB 113 (데이터인증)
암호 해쉬 코드를 이용한 MAC 사용 증가
이유
 암호 해쉬 함수가 대칭 블록 암호보다 빠름
 암호 해쉬 함수에 대한 라이브러리 코드의 입
수 용이
 암호 해쉬 함수에 대한 수출 제한 없음

MD5와 같은 해쉬 함수는 비밀키에 의존
하지 않음
33
HMAC 설계 목표






가용한 해쉬 함수를 변경 없이 사용 가능해야 함
해쉬 함수는 소프트웨어로 구현 가능, 무상입수
용이
내장 해쉬 함수 교체 용이(해쉬함수의 블랙 박
스화)
성능 저하 없이 해쉬 함수의 원래 성능 계속 유
지
간단한 방법으로 키 조작
인증 메커니즘의 암호학적 분석 이해가능
34
HMAC 구조
00110110을 b/8번 반복
01011010을 b/8번 반복
35
처리과정
1.
2.
3.
4.
5.
6.
7.
b비트 스트링 K+ 생성 : 비밀키 K의 왼쪽에 0을 첨가
b비트 블록 Si를 생성 : K+ 와 ipad를 XOR
M을 Si 에 추가 : Msg1=[Si||M]
3단계의 Msg1에 해쉬를 적용
b비트 블록 S0를 생성 : K+ 와 opad를 XOR
단계 4에서 만들어진 해쉬함수 적용결과에 S0를 추가
6단계의 결과에 해쉬함수를 다시 적용
HMACK(M)=H[(K+ XOR opad)||H(K+ XOR
ipad)||M]]
36