제 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)인 yx인 것을 찾는
것이 계산적으로 실행 불가능하다
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)
(bc)(bc)
2
G(b,c,d)
(bd)(cd)
3
H(b,c,d)
bcd
4
I(b,c,d)
c(bd)
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