570 likes | 863 Views
Chap 9. 해쉬 알고리즘. 1. MD5 메시지 다이제스트 알고리즘. MIT 의 Ron Rivest 에 의해 개발됨 MD5 입력 : 임의의 길이의 메시지 출력 : 128비트 메시지 다이제스트 입력처리 : 512비트 불록단위로 처리. Mess. Length (K mod 2^64). 512. 512. 512. 512. Padding (1 to 512 bits). L*512 bits = N * 32 bits. K bits. Message. 100…0. Y 0. Y 1. Y q.
E N D
1. MD5 메시지 다이제스트 알고리즘 • MIT의 Ron Rivest에 의해 개발됨 • MD5 • 입력 : 임의의 길이의 메시지 • 출력 : 128비트 메시지 다이제스트 • 입력처리 : 512비트 불록단위로 처리
Mess. Length (K mod 2^64) 512 512 512 512 Padding (1 to 512 bits) L*512 bits = N * 32 bits K bits Message 100…0 Y0 Y1 Yq YL-1 512 512 512 512 HMD5 HMD5 HMD5 HMD5 128 128 128 128 IV CV1 CVq CVL-1 Digest
단계1 : 패딩 비트의 부가 하나의 ‘1’비트 뒤에 필요한 개수의 ‘0’ 비트들을 붙여서 구성 • 단계2 : 메시지 길이의 부가 512비트의 정수배가 되도록 메시지 길이 구성 • 단계3 : MD 버퍼의 초기화 Little endian 형태로 4개의 레지스터에 1부터 값을 초기화 • 단계4 : 512 비트(16단어) 블록의 메시지 처리 4개의 라운드로 구성된 압축함수 모듈 통과
Yq CVq 128 32 A B C D 512 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 + + + + Addition is mod 2^32 CVq+1
입력 : 128비트 버퍼 값 ABCD • 각 라운드 : 사인함수로 구성되는 T[1..64]의 ¼ 사용 • T의 i번째 요소는 2^32 * abs(sin(i))의 정수부분과 일치하는 값 • i는 라디안 • Abs(sin(i)) : 0과 1사이의 값 • T의 각 요소는 32비트 정수 • 테이블은 347페이지 표 9.1 참조 • 네번째 라운드의 출력은 첫번째 라운드의 입력이었던 CVq와 더해져서 CVq+1생성 • 단계5 : 출력
MD5의 과정요약 CV = IVCVq+1 = SUM32(CVq, RFI[Yq,RFH[Yq,RFG[Yq,RFF[Yq,CVq]]]]) MD = CVL • IV : 3단계에서 정의된 ABCD 초기 버퍼값 • Yq : 메시지의 q번째 512비트 블록 • L : 메시지의 블록수 • CVq : 메시지의 q번째 블록과 함께 처리되는 체인변수 • RFx : 기약 논리 함수 x를 사용하는 라운드 함수 • MD : 최종 메시지 다이제스트 값 • SUM32 : 입력 쌍의 각 단어에 제각기 수행되는 법 2^32 덧셈
MD5 압축 함수 • 각 단계의 형식은 다음과 같다 a <- b + ((a + g(b,c,d) + X[k] + T[i]) <<< s) • a,b,c,d : 버퍼의 4단어, 단계에 따라 상이한 순서로 되어있음 • g : 기약함수 F,G,H,I 중의 하나 • <<< s : s 비트에 의한 32비트 매개변수의 순환좌측쉬프트 • X[k] : 메시지의 q번째 512비트 블록 중에서 k번째 32비트단어 • T[i] : 매트릭스 T에서 i번째 32비트 단어 • + : 법 2^32 덧셈
A B C D + g X[k] + T[i] + CLSs + A B C D
MD4 • MD4는 MD5의 이전버전 • MD4의 목적 • 안전성 : 해쉬코드에 대한 일반적인 요구사항 • 속도 : 빠른 시행에 적합 -> 32비트 구조로 연산 • 단순성과 간결성 : 프로그램과 표현이 단순 • Little-endian구조의 선호
MD4 vs MD5 • 라운드 • MD4 : 16단계의 3라운드 • MD5 : 16단계의 4라운드 • 덧셈 • MD4는 첫번째 라운드에서 덧셈 사용 않고, 두번째 라운드에서 각 단계에서 같은 덧셈상수 사용, 세번째 라운드에서 각 단계에 서로 다른 덧셈 상수 사용 • MD5는 64단계의 각각에 다른 덧셈 상수 T[I]사용 • 논리함수 • MD4 : 각라운드에 한번씩 3개의 기약 함수 사용 • MD5 : 각 라운드에서 한번씩 4개의 기약 논리 함수 사용 • 이전 단계와의 연결 • MD5 : 이전 단계의 결과의 데이터 이용 =>더 큰 쇄도효과
목 차 1. 디지털 서명 개요 2. 직접적 디지털 서명 3. 중재된 디지털 서명
암호학적 점검값의 기본 사용 예 K1 EK2[M || CK1(M)] M M C || E D 비교 C K2 K2 CK1(M) K1
송신자와 수신자의 완벽한 신뢰가 없는 상황에서 인증 이상의 어떤 것이 필요 디지털 서명 해결책 1. 디지털 서명 • 적용 예 • 전자식 자금 전달의 경우 • 수신자 : 1. 전달된 자금의 양을 증가 2. 송신자로부터 해당 금액이 왔다고 주장 • 주식 매매 요청의 경우 • 송신자 : 1. 단말기를 통해 주식 매매 요청 2. 주식 값이 하락 3. 자신이 요청을 한 적이 없다고 주장
1. 디지털 서명 • 배경 1) 종이 문서 사회에서 정보화 사회로의 진전으로 다양한 서비스 요구 2) 데이타 무결성 및 사용자 인증 서비스가 필수적 • 정의 • 공개키 암호화를 사용하여 구현하며, 보낸 사람과 메시지를 연결하는 방법을 제공하고, 구매시 사이버스페이스에서 서명하는 것이다. • 목적 • 신뢰성 확보 ( 내용의 위·변조 및 신분 확인에 사용)
디지털 서명 특징 • 그 서명의 저자와 날짜와 시간을 확인할 수 있어야 한다. • 서명할 때의 내용을 인증할 수 있어야 한다. • 서명은 분쟁을 해결하기 위해서, 제3자에 의해서 확인할 수 있어야 한다.
디지털 서명 요구 조건 • 서명은 서명되는 메시지에 의존하는 비트 형태이어야 한다. • 서명은 위조와 부인을 방지하기 위해서 송신자에 대한 유일한 어떤 정보를 이용해야만 한다. • 디지털 서명을 만들기가 비교적 쉬워야 한다. • 디지털 서명을 인식하고 확인하기가 쉬워야 한다. • 기존의 디지털 서명에 대한 새로운 메시지를 구성하거나 또는 주어진 메시지에 대한 거짓 디지털 서명을 구성함으로써 디지털 서명을 위조하는 것이 계산적으로 실행 불가능해야 한다. • 기억장소에 디지털 서명의 복사본을 유지하는 것이 실용적이어야 한다.
2. 직접적 디지털 서명 • 오직 통신하는 상대방(출신, 목적지)만을 포함 • 직접적 디지털 서명 방식 • 송신자의 개인키를 가지고 전체 메시지를 암호화 • 송신자의 개인키를 가지고 메시지의 해쉬 코드를 암호화 • 비밀성을 위해 • 수신자의 공개키 또는 공유 비밀키를 가지고 서명된 메시지를 암호화 • 단점 • 구조의 정당성은 송신자의 개인키에 달려 있음 • 송신자가 개인키를 분실, 도난 당했다고 주장이 가능
KRa KUa M M E D EKRa(M) Authentication and signature • 메시지 암호화의 기본 사용법
3. 중재된 디지털 서명 기법 • 관용 암호 방식(1) • 중재자에게 메시지 노출 • Alice와 Carol 간에 비밀키 공유 : KCA • Carol과 Bob 간에 비밀키 공유 : KCB 2. Verification Carol 3.EKCB[IDA || M || EKCA[IDA || H(M) || T] 1. M || EKCA[IDA || H(M)] Bob Alice
관용 암호 방식(1) • Bob은 Alice의 서명을 직접 검사할 수 없다. • 서명은 분쟁 해결을 위해 존재 • Alice와 Bob은 Carol에게 높은 신뢰를 가지고 있어야 한다. • Carol이 KCA를 노출 시키지 않는다. • EKCA[IDA || H(M)] 형태의 거짓 서명을 만들지 않는다. • Bob은 서명이 A에 의해서만 만들어졌을 때만, • EKCB[IDA || M || EKCA[IDA || H(M) || T]를 보낸다는 것을 신뢰
2. Verification Carol 1. IDA || EKAB[M] || EKAC[IDA || H(EKAB[M])] 3.EKCB[IDA || EKAB[M] || EKAC[IDA || H(EKAB[M]), T] Bob Alice 관용 암호 방식(2) • 메시지 비밀 유지 • Alice와 Bob이 비밀키를 공유 : KAB
관용 암호 방식(2) • 장점 • Carol은 메시지 내용을 읽을 수 없다. • Carol은 Alice와 Bob의 부정을 막을 수 있다. • 단점 • Carol은 Alice와 함께 서명된 메시지를 부인할 수 있다. • Carol은 Bob과 함께 Alice의 서명을 위조할 수 있다.
2. Verification Carol 1. IDA || EKRA[ IDA || EKUB(EKRA[M])] 3.EKRC[IDA || EKUB(EKRA[M])], T] Bob Alice 공개키 암호 방식 • 메시지 비밀 유지 • 관용 암호 방식에서 발생할 수 있는 문제점 해결 가능
공개키 암호 방식 • 장점 • 통신 전에 통신의 상대자간에 공유해야 할 정보가 없다. • KRa가 노출되었다고 할지라도 KRC가 노출되지 않았으면 부정확한 날짜가 매겨진 메시지가 보내질 수 없다. • Alice로부터 Bob에게 온 메시지의 내용은 Carol과 다른 모든 사람들에게 있어서 비밀이다.
목차 • 상호인증 • 관용암호방식 • 공개키 암호화 방식 • 일방향 인증 • 관용 암호 방식 • 공개키 암호 방식
1. 상호 인증(1) • 상호 인증 프로토콜 • 신분 확인에 대해 상호 만족시킴 • 세션키를 교환할 수 있게 함 • 인증된 키 교환 문제에 있어서 두 가지 고려할 점 • 기밀성(confidentiality) • 신분 위장 방지 : 신원 증명이 필요 • 세션키의 손상 방지 : 암호화 형태로 통신되어야 함 • 적시성(timeliness) • 메시지 재전송의 위협 방지 • 메시지 재전송 • 공격자가 세션키를 손상 • 다른 상대방을 흉내 초점 : 키 분배
1. 상호 인증(2) • 재전송 공격의 예 • 단순 재전송 • 공격자가 메시지를 단순히 복사하고 후에 재전송하는 것 • 시간 범위 내에서 재전송 • 공격자는 유효한 시간 윈도우 내에서 타임 스탬프가 있는 메시지를 재전송할 수 있다. • 발견될 수 없는 재전송 • 원본 메시지의 사용을 정지시켜서 목적지에 도착하지 않고 오직 재전송 메시지만 도착할 경우에 일어날 수 있다. • 수정 없이 역방향 재전송 • 메시지 송신자에 대한 재전송 반환. 송신자가 보낸 메시지들과 받은 메시지들 사이의 내용적 차이를 쉽게 알 수 없을 때 가능.
1. 상호 인증(3) • 재전송 공격에 대항하기 위한 접근 방법 • 각 메시지에 대한 일련 번호 부여 • 일련 번호가 적절한 일련 번호일 경우에만 수신 • 단점 • 마지막 메시지의 일련 번호 유지 요구 ∴인증과 키 교환에 일반적으로 사용하지 않음
1. 상호 인증(4) • 일반적인 접근 방법 • 타임 스탬프(Timestamp) • A는 메시지가 현재 시간에 대하여 충분히 밀접하다고 판단하는 타임스탬프를 포함할 때만 메시지를 선명한 것으로 받아들인다. • 다양한 참가자들 사이에 동기화된 시계를 요구하기 때문에 어렵다. • 신청/응답(Challenge/Response) • A는 B로 부터의 선명한 메시지를 기대 • B에게 임시비표(신청)을 보냄 • B로 부터 수신되는 메시지(응답)가 정확한 임시비표 값을 포함 할 것을 요구
2. 관용 암호 방식(1) • KDC(Key Distribution Center)역할 • 각 통신 주체는 비밀키를 KDC와 공유한다. • KDC는 통신 상대방 사이의 연결에 대한 세션키를 만든다. • 키 전달 보호를 위해 마스터키를 이용하여 키들을 할당한다. • Needham과 Schroeder[NEED78] 프로토콜 • A KDC : IDA Ⅱ IDB ⅡN1 • KDC A : EKa[Ks Ⅱ IDB Ⅱ N1 Ⅱ EKb [Ks Ⅱ IDA]] • A B : EKb[KS ⅡIDA] • B A : EKs[N2] • A B : EKs[f(N2)] 이 프로토콜의 목적은 A와 B에서 세션키 Ks를 안전하게 배포하는 것이다.
2. 관용 암호 방식(2) • Needham - Schnoeder 방식 1. IDA || IDB || N1 KDC 2. EKA[KS || IDB || N1 || EKB[KS || IDA]] 3. EKB[KS || IDA] 4. EKS[N2] 5. EKS[f(N2)] Alice Bob • 재전송 공격에 대해 여전히 취약 Denning 방식 제안
2. 관용 암호 방식(3) • 각 단계 설명 비밀키 Ka 와 Kb는 각각 A와 KDC사이, B와 KDC사이에서 공유된다. • 1단계 • 세션키 요구 메시지를 보냄 • 전송 내용 - A와 B의 신원, 유일한 식별자 • 2단계 • 응답 메시지를 마스터키 Ka 로 암호화하여 전송 • 전송 내용 - 일회용 세션키 Ks, 1단계에서 전송 받은 메시지 - B에게 전송될 메시지를 Kb로 암호화 (EKb[KS ⅡIDA])
2. 관용 암호 방식(4) • 3단계 • 세션키를 저장하고, EKb[KS ⅡIDA]를 B에게 전송 • Kb로 암호화되었기 때문에 도청 불가능 A와 B는 세션키 KS를 공유 • 4단계 • B는 A에게 임시비표 N2 를 세션키로 암호화하여 전송 • 5단계 • A는 B에게 f(N2)를 세션키로 암호화하여 전송 목적 : 재전송 공격 방해하기 위해 BUT!! 여전히 재전송 공격에 취약하다. X는 과거의 키를 사용하여 단계 3을 단순히 재전송 함으로써 A인 체 하고 B를 속일 수 있다.
2. 관용 암호 방식(5) • Denning[DENN81, DENN82]프로토콜 - 타임 스탬프를 추가함으로써 Needham/Schroeder 프로토콜을 보완 • A KDC : IDA Ⅱ IDB • KDC A : EKa[Ks Ⅱ IDB Ⅱ TⅡ EKb [Ks Ⅱ IDA ⅡT]] • A B : EKb[KS ⅡIDA ⅡT] • B A : EKs[N1] • A B : EKs[f(N1)] • 네트워크 전체에 걸쳐서 동기화된 클럭에 대한 신뢰를 요구한다. • 지연-재전송 공격(suppress-replay attack)에 취약. • T는 A와 B에서 세션키가 시간에 적합하게 바로 만들어진 것이라는 것을 보장해주는 역할을 한다
2. 관용 암호 방식(6) • Denning은 단계 2와 3에 timestamp를 추가 • 가정 • 마스터 키 KA와 KB가 안전하다. 1. IDA || IDB KDC 2. EKA[KS || IDB || T || EKB[KS || IDA || T]] 3. EKB[KS || IDA || T] 4. EKS[N1] 5. EKS[f(N1)] Alice Bob
2. 관용 암호 방식(7) • [NEUM93a] 프로토콜 - 지연-재전송 공격에 강하다. • A B : IDA ⅡNa • B KDC : IDB Ⅱ Nb Ⅱ EKb [IDA Ⅱ Na ⅡTb]] • KDC A : EKa[IDB Ⅱ Na Ⅱ Ks ⅡTb] EKb[IDA Ⅱ Ks ⅡTb Ⅱ Nb] • A B : EKb[IDA Ⅱ Ks ⅡTb ]EKs[ Nb] • 각 단계 설명 • 1단계 • 인증교환 시작 • 전송 내용 - 임시비표 Na, 식별자 • 2단계 • B가 KDC에게 세션키 요청 • 전송 내용 - 임시비표 Nb, 식별자, 비밀키로 암호화된 블록
2. 관용 암호 방식(8) • 3단계 • 전송 내용 - B의 임시비표, B 와 KDC에 의해 공유되는 비밀키로 암호화한 블록(인증을 위해),A와 KDC에 의해 공유되는 비밀키로 암호화된 블록 • 4단계 • EKs[ Nb]은 메시지가 A로 부터 왔고 재전송이 아니라는 것을 인증한다. 프로토콜에 의해서 설립된 시간 범위 안에서 A가 B와의 새로운 세션을 희망한다면!!!
3. 공개키 암호화 방식(1) • 각각이 상대방의 현재 공개키를 가지고 있다고 가정. • [DENN81] 타임 스탬프를 사용하는 프로토콜 • A AS : IDA Ⅱ IDB • AS A : EKRas[IDAⅡ KUaⅡTⅡ EKRas[IDBⅡ KUbⅡT] • A B : EKRas[IDAⅡ KUaⅡTⅡ EKRas[IDBⅡ KUbⅡT]Ⅱ EKUb [EKRa [KsⅡT]] • AS는 인증서버로 간주된다. AS는 공개키 인증서를 제공한다. • 간결하지만 앞에서와 같이 클럭의 동기화를 요구한다.
3. 공개키 암호화 방식(2) 5. EKRAuth[IDA || KUA] || EKUB[NA || KS || IDA || IDB]] 1. IDA || IDB KDC 2. EKRAuth[IDB || KUB] 4. IDA || IDB || EKUAuth[NA] 3. KUB[NA || IDA] 6. EKUA[EKRAuth[NA || KS || IDA || IDB] || NB ] 7. EKS[NB] Alice Bob
3. 공개키 암호화 방식(3) • Woo와 Lam[WOO92a] 임시비표를 이용한 프로토콜 • A KDC : IDA Ⅱ IDB • KDC A : EKRauth[IDBⅡ KUb] • A B : EKUb [Na Ⅱ IDA ] • B KDC : IDB Ⅱ IDA ⅡEKUauth[Na ] • KDC B : EKUauth[IDAⅡKUa]ⅡEKUb[EKRauth[NaⅡKsⅡ IDB]] • B A : EKUa[ EKUauth [NaⅡKsⅡ IDB]ⅡNb] • A B : EKS [Nb] • 각 단계 설명 • 1단계 : A는 B와의 연결 의도를 알린다. • 2단계 : B의 공개키 인증서의 복사본을 반송 • 3단계 : A는 B에게 통신 요청, 임시비표를 보낸다
3. 공개키 암호화 방식(4) • 4단계 : B는 KDC에게 A의 공캐키 인증서를 요구, 세션키를 요구 • 5단계 : A의 공개키 인증서 사본, 정보[ NaⅡKsⅡ IDB ]를 반송 • 6단계 : [ NaⅡKsⅡ IDB ]은 KDC의 개인키로 암호화한 상태로 Nb와 함께 A에게 중계 • 7단계 : 세션키에 대한 A의 지식을 B에게 보증 위 프로토콜의 개선된 버전 • A의 식별자 IDa 가 단계 5와 6에서 KDC의 개인키로 암호화된 항목들의 집합에 추가된다. • IDa 의 포함은 A에 의해서 만들어진 모든 임시비표중에서만 유일한것이다.
4. 일방향 인증 (1) • 수신자는 메시지가 합법적 송신자로부터 왔다는 보장을 요구 • 관용 암호 방식 • 대표적인 예…… 전자 우편(e-mail) • 요구사항 • 우편처리 시스템이 복호키를 가지고 있지 않아도 되는 범위에서 전자우편 메시지가 암호화되어야 한다. • 수신측은 메시지가 합법적 송신자로부터 왔다는 것의 어떤 보장을 원한다.(인증)
4. 일방향 인증 (2) 1. IDA || IDB || N1 KDC 2. EKA[KS || IDB || N1 || EKB[KS || IDA]] 3. EKB[KS, IDA] || EKS(M) Bob Alice • 메시지의 의도된 수신자만이 해당 메시지를 읽을 수 있다는 것을 보증 • 메시지 재전송 공격에 취약
5. 관용 암호 방식 • 암호화된 전자우편 (개선된 KDC전략) A, B 동시에 온라인 일 수 없기 때문에 앞의 암호화된 전자우편과 같이 4번과 5번을 제외 삭제 된다. • A KDC : IDA Ⅱ IDB ⅡN1 • KDC A : EKa[Ks Ⅱ IDB Ⅱ N1 Ⅱ EKb Ⅱ [Ks Ⅱ IDA]] • A B : EKb[Ks ⅡIDA]ⅡEKs[M] 의도된 수신자만이 메시지를 읽을 수 있다는 것을 보증한다.
6. 공개키 암호화 방식 (1) • 비밀성이 주요 관심이라면 오직 B만이 복호 할 수 있다. • 인증이 주요 관심이라면 (디지털 서명 만족) A가 메시지를 보냈다는 것을 부인할 수 없다. A B : EKUB(KS) || EKS(M) A B : M || EKRA(H(M))
공개키 암호화 방식 (2) • 메시지와 서명 둘 다 만족 (수신자의 공개키로 암호화) • 디지털 인증서 (시기적으로 적절하다는확신이 요구 됨) A B : EKUB(M || EKRA(H(M))) A B : M || EKRA[H(M)] || EKRAS(T || IDA || KUA)