410 likes | 725 Views
Chap 5. 인증과 디지털 서명. 목 차. 1. 인증 요구 조건 2. 인증 함수 3. 암호학적 점검값 4. 해쉬 함수 5. 디지털 서명 6. 인증 프로토콜. 1. 인증 요구 조건. 네트워크를 이용한 통신하에서의 공격 형태 1. 노출 (disclosure) : 암호키 가지고 있지 않은 사람에게 메시지 내용이 노출 2. 트래픽 분석 (traffic analysis) : 통신 주체 사이의 어떤 트래픽 형태를 발견 3. 위장 (masquerade)
E N D
목 차 1. 인증 요구 조건 2. 인증 함수 3. 암호학적 점검값 4. 해쉬 함수 5. 디지털 서명 6. 인증 프로토콜
1. 인증 요구 조건 • 네트워크를 이용한 통신하에서의 공격 형태 1. 노출(disclosure) : 암호키 가지고 있지 않은 사람에게 메시지 내용이 노출 2. 트래픽 분석(traffic analysis) : 통신 주체 사이의 어떤 트래픽 형태를 발견 3. 위장(masquerade) : 부정한 출처로부터 네트워크에 메시지 삽입 4. 내용 수정(content modification) : 삽입, 삭제, 전치, 수정을 포함한 메시지 내용의 변경 5. 순서 수정(sequence modification) : 통신 상대방간의 메시지들의 순서 수정 6. 시간 수정(timing modification) : 메시지의 지연과 재전송 7. 부인(repudiation) : 메시지의 송신이나 수신 부인 메시지 기밀성 메시지 인증 디지털 서명
2. 인증 함수 • 메시지 인증, 디지털 서명 메커니즘 • 기본적으로 두 개의 단계로 고찰 • 하위 단계 • 인증자(authenticator) 생성 함수 필요 --- 하위 함수 • 상위 단계 • 하위 함수 : 수신자가 메시지의 확실 증명하기 위해 사용 • 하위 함수 • 메시지 암호화(message encryption) • 암호학적 점검값(cryptographic checksum) • 해쉬 함수(hash function)
메시지 암호화 • 메시지 전체의 암호문이 인증자로 작용 • 메시지 암호화 자체에 의해 인증 수단 제공 가능 • 관용 암호 방식 • 공개키 암호 방식 • 관용 암호 방식 K K M E D M EK(M) 송신자 수신자
관용 암호 방식 • 기밀성 및 인증 기능 제공 • 전송되는 메시지는 공유 비밀키 K에 의해 암호화 • 비밀키 K를 소유한 사람만이 복호화 ∴ 기밀성 제공 • 수신자는 메시지 M이 송신자에 의해 만들어졌음을 확인 • K에 의해서만 복구될 수 있으므로 • 문제점 • 복호문이 정당한 평문인지의 여부를 결정할 자동화된 방법이 필요 ==> 해결책 : FCS(Frame Check Sequence, 점검값) 코드 추가
관용 암호 방식 송신자 수신자 M || M M F E D F(M) F(M) EK [M || F(M)] F K K 비교 (a) 내부 에러 제어 K K EK(M) EK(M) M M D || E F 비교 F F[EK(M)] (b) 외부 에러 제어
공개키 암호 방식(1) • 단순 공개키 암호 사용 : 기밀성만 제공 • 송신자는 암호화를 위해 수신자의 공개키를 사용 • 오직 수신자만이 개인키를 이용 복호화 가능 • 인증을 제공하지 못함 KRb KUb E D M M 송신자(a) EKUb(M) 수신자(b)
공개키 암호 방식(2) • 인증 및 서명 기능 제공 방식 • 송신자의 개인키로 암호화 • KRa로 복호화 될 수 있는 암호문은 송신자만이 생성 가능 • 기밀성을 제공하지는 않음 • 즉, 누구나 암호문을 복호화 할 수 있다. KRa KUa E D M M 송신자(a) EKRb(M) 수신자(b)
공개키 암호 방식(3) • 기밀성, 인증 및 서명 • 디지털 서명과 인증을 제공하기 위해 • 송신자의 개인키로 메시지 암호화 • 기밀성을 제공하기 위해 • 수신자의 공개키로 암호화 KRa KUb KRb KUa M M E E D D EKRa(M) EKUb[EKRa(M)] EKRa(M)
3. 암호학적 점검값 • 메시지에 추가 • 암호학적 점검값 또는 메시지 인증 코드(MAC) • MAC(Message Authentication Codes), DAC(Data Authentication Codes) • key-dependent one-way hash function MAC = CK(M) • M : 가변 길이 메시지 • K : 송신자와 수신자의 공유키 • CK(M) : 고정 길이의 인증자 • 비밀키를 공유한 사람만이 메시지의 생성과 인증이 가능 • MAC 자체는 메시지 기밀성이나 서명 기능을 제공하지 않음
암호학적 점검값의 기본 사용 예 K1 EK2[M || CK1(M)] M M C || E D 비교 C K2 K2 CK1(M) K1
요구 조건 • 공격자가 CK (M’)=CK (M)인 M’을 구성한다는 것이 계산적으로 어려움 • 즉, 키를 알지 못하면서 MAC과 일치하는 새로운 메시지를 만들 수 없어야 한다. • CK(M)은 일정하게 분산되어 있어야 한다. • 즉, n이 점검값에서 비트의 수 일때 CK(M)=CK(M’)일 확률은 2-n • 메시지의 어떤 부분이나 특정 비트들에 관해서 특별히 취약해서는 안된다. • 그런 경우가 아니라면, 공격자가 “취약지점”에서 M의 변형을 시도 가능
Message • h = H(M) Message Digest (Fixed Length) 4. 해쉬함수(Hash function) • 메시지 인증 코드에 대한 변형 • 메시지의 모든 비트들에 대한 함수 • 즉, 쇄도 효과가 크다. • 정의 • 임의의 길이(M)를 취해서 정해진 크기(h)의 Message Digest를 만드는 one-way function(H) • 디지털서명, 인증, 무결성, 부인 봉쇄 등의 서비스 제공
요구 조건 • 어떤 크기의 메시지 M에도 적용 가능 • H는 고정된 크기의 hash code를 만듦 • H(M)은 어떤 주어진 M에 대해서도 계산하는 것이 쉽다. • 주어진 hash code h에 대해, • H(M) = h인 M을 찾는 것이 계산적으로 실행불가능(one-way) • H(M’) = H(M)인 어떤 (M, M’) 쌍을 찾는 것이 계산적으로 실행 불가능(collision-free)
해쉬 함수의 사용 개방통신로 키(K) 키(K) EKRa(H(M)) M H M || E’ D’ EK[M || EKRa(H(M))] 비교 H E D EKRa(H(M)) 공개키(KUa) 개인키(KRa) 송신자(a) 수신자(b)
단순 해쉬 함수 • 모든 블록의 비트 단위 배타적-OR(XOR) • 가장 단순한 해쉬 함수들 중의 하나 Ci=bi1bi2 . . . bim • 여기서, • Ci = 해쉬 코드의 i 번째 비트 • m = 입력에서 n-비트 블록 수 • bij = j 번째 블록의 i 번째 비트 • = XOR 동장
Snefru • 목적 : 32비트 프로세서에서 구현을 용이하게 하자. • 출력 : 128비트 또는 256비트 해쉬 • 입력 : 512비트 메시지 블럭 • 패딩 : 패딩은 (512의 배수)가 될 때까지 한다. • 블럭 : 출력이 128비트일 경우 : 384비트씩 블럭을 나눔 (128+384=512) 출력이 256비트일 경우 : 256비트씩 블럭을 나눔 (256+256=512) • 구성 : 2pass로 구성되어 있음
qn-1(128bit or 256bit) mn(message) (384bit or 256bit) + 512bit Function H Function E512 (S-box) qn(128bit or 256bit) Snefru
5. 디지털 서명 • 배경 1) 종이 문서 사회에서 정보화 사회로의 진전으로 다양한 서비스 요구 2) 데이타 무결성 및 사용자 인증 서비스가 필수적 • 정의 • 개인의 고유성을 주장하고 인정 받기 위해서 전자적 문서에 서명하는 방법 • 목적 • 신뢰성 확보 ( 내용의 위·변조 및 신분 확인에 사용)
적용 예 • 전자식 자금 전달의 경우 • 수신자 : 1. 전달된 자금의 양을 증가 2. 송신자로부터 해당 금액이 왔다고 주장 • 주식 매매 요청의 경우 • 송신자 : 1. 단말기를 통해 주식 매매 요청 2. 주식 값이 하락 3. 자신이 요청을 한 적이 없다고 주장 송신자와 수신자의 완벽한 신뢰가 없는 상황에서 인증 이상의 어떤 것이 필요 디지털 서명
전자서명 특징 • 위조불가(Unforgeable) • : 서명자만이 서명문을 생성 가능 • 서명자 인증(Authentic) • : 서명문의 서명자를 확인 가능 • 재사용 불가(Not Reusable) • : 서명문의 서명은 다른 문서의 서명으로 사용 불가능 • 변경 불가(Unalterable) • : 서명된 문서의 내용 변경 불가능 • 부인 불가(Nonrepudiation) • : 서명자는 후에 서명한 사실을 부인 불가능
전자서명 요구 조건 • 서명은 메시지에 의존하는 비트 형태이어야 한다. • 위조와 부인 방지 위해, 송신자의 유일한 정보 비트를 이용해야 함 • 서명문을 만들기가 쉬워야 한다. • 서명문을 인식, 확인 하기가 쉬워야 한다. • 서명문을 위조하는 것이 계산적으로 실행 불가능 • 기억장소에 서명문의 복사본을 유지하는 것이 실용적이어야 한다.
직접적 디지털 서명 • 오직 통신하는 상대방(출신, 목적지)만을 포함 • 직접적 디지털 서명 방식 • 송신자의 개인키를 가지고 전체 메시지를 암호화 • 송신자의 개인키를 가지고 메시지의 해쉬 코드를 암호화 • 기밀성을 위해 • 수신자의 공개키 또는 공유 비밀키를 가지고 서명된 메시지를 암호화 • 단점 • 구조의 정당성은 송신자의 개인키에 달려 있음 • 송신자가 개인키를 분실, 도난 당했다고 주장이 가능
중재된 디지털 서명 기법 • 관용 암호 방식(1) • 중재자에게 메시지 노출 • Alice와 Carol 간에 비밀키 공유 : KCA • Carol과 Bob 간에 비밀키 공유 : KCB 2. Verification Carol 1. M || EKCA[IDA || H(M)] 3.EKCB[IDA || M || EKCA[IDA || H(M) || T] 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) • 메시지 비밀 유지 • Alice와 Bob이 비밀키를 공유 : KAB 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) • 장점 • 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
공개키 암호 방식 • 장점 • 통신 전에 통신의 상대자간에 공유해야 할 정보가 없다. • KRx가 노출되었다고 할지라도 KRC가 노출되지 않았으면 부정확한 날짜가 매겨진 메시지가 보내질 수 없다. • Alice로부터 Bob에게 온 메시지의 내용은 Carol과 다른 모든 사람들에게 있어서 비밀이다.
6. 인증 프로토콜 • 상호 인증 프로토콜 • 통신 상대방들간의 신분확인 • 세션키 교환 • 인증된 키 교환 문제의 두 가지 문제점 • 기밀성(confidentiality) • 적시성(timeliness) 초점 : 키 분배
인증된 키 교환 문제의 두 가지 문제점 • 기밀성(confidentiality) • 신분 위장 방지 : 신원 증명이 필요 • 세션키의 손상 방지 : 암호화 형태로 통신되어야 함 • 적시성(timeliness) • 메시지 재전송의 위협 방지 • 메시지 재전송 • 공격자가 세션키를 손상 • 다른 상대방을 흉내
재전송 공격의 예 • 단순 재전송 • 메시지를 복사, 후에 재전송 • 시간 범위 내에서 재전송 • 유효한 시간 윈도우내에서 타임 스탬프가 있는 메시지 재전송 • 발견될 수 없는 재전송 • 원본 메시지의 사용의 정지, 오직 재전송 메시지만 도착 • 수정없이 역방향 재전송 • 메시지 송신자에 대한 재전송 반환 • 관용 암호 방식이 사용되고 송신자가 보낸 메시지들과 받은 메시지들의 내용적 차이를 알 수 없을 때 가능
재전송 공격에 대항하기 위한 접근 방법 • 각 메시지에 대한 일련 번호 부여 • 일련 번호가 적절한 일련 번호일 경우에만 수신 • 단점 • 마지막 메시지의 일련 번호 유지 요구 • 일반적인 접근 방법 • 타임 스탬프(Timestamp) • 다양한 참가자들 사이에 동기화된 시계를 요구 • 신청/응답(Challenge/Response) • Alice는 Bob에게 challenge값을 전송 • Bob이 보낸 메시지에 challenge값이 포함되어 있는지 검사 ∴인증과 키 교환에 일반적으로 사용하지 않음
관용 암호 방식 • 분산환경에서 통신을 위한 기밀성 제공을 위해 사용 • 신뢰되는 키 분배 센터(Key Distribution Center) 이용 • 각 통신 주체는 마스터키로 불리는 비밀키를 KDC와 공유 • KDC는 일정한 세션 동안에 사용되는 세션키를 생성 • 키 전달 • 마스터 키를 이용하여 세션키를 할당
관용 암호 방식 예 • 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 방식 제안
관용 암호 방식 예 • 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
공개키 암호 방식 • 세션키 분배의 목적(4장 참조 --- 공개키 암호화의 이용을 위한 연구 방법) • 가정 • 통신 상대방이 각각의 상대의 공개키를 가지고 있다. • 타임 스템프를 사용하는 방식 --- 동기화를 요구 1. IDA || IDB AS 2. EKRAS[IDA || KUA || T] || EKRAS[IDB || KUB || T] EKRAS[IDA || KUA || T] || EKRAS[IDB || KUB || T] || EKUB[EKRA[KS || T]] Bob Alice
공개키 암호 방식 예 • Nonce를 이용하는 방법 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
일방향 인증 • 수신자는 메시지가 합법적 송신자로부터 왔다는 보장을 요구 • 관용 암호 방식 1. IDA || IDB || N1 KDC 2. EKA[KS || IDB || N1 || EKB[KS || IDA]] 3. EKB[KS, IDA] || EKS(M) Bob Alice • 메시지의 의도된 수신자만이 해당 메시지를 읽을 수 있다는 것을 보증 • 메시지 재전송 공격에 취약
공개키 암호 방식 • 기밀성, 인증 그리고 기밀성과 인증을 위한 공개키 암호화 방법 제시(TP page 7~9) • 개선 방안 • 기밀성 • 인증 A B : EKUB(KS) || EKS(M) A B : M || EKRA(H(M)) A B : EKUB(M || EKRA(H(M))) A B : M || EKRA[H(M)] || EKRAS(T || IDA || KUB)