380 likes | 760 Views
제 11 장 메시지 인증 및 해쉬함수. 11.1 인증에서의 요구조건 11.2 인증 함수 11.3 메시지 인증 코드 11.4 해쉬함수 11.5 해쉬함수와 MAC 보안. 11.1 인증에서의 요구 조건. 통신 상에서 발생할 수 있는 공격들 노출 (disclosure): 암호키 가지고 있지 않은 사람에게 메시지 내용이 노출 , 도청 (eavesdropping)
E N D
제11장 메시지 인증 및 해쉬함수 11.1 인증에서의 요구조건 11.2 인증 함수 11.3 메시지 인증 코드 11.4 해쉬함수 11.5 해쉬함수와 MAC 보안
11.1 인증에서의 요구 조건 • 통신 상에서 발생할 수 있는 공격들 • 노출(disclosure): 암호키 가지고 있지 않은 사람에게 메시지 내용이 노출, 도청(eavesdropping) • 트래픽 분석(traffic analysis): 통신 주체 사이의 어떤 트래픽 형태를 발견 (연결주기, 사용시간, 메시지 개수 및 길이 등) • 위장(masquerade): 부정한 출처로부터 나온 메시지를 네트워크 상에 삽입 • 내용 수정(content modification): 삽입, 삭제, 전치, 수정을 포함한 메시지 내용의 변경 • 순서 수정(sequence modification): 통신 상대방간의 메시지들의 순서 변경 • 시간 수정(timing modification): 메시지의 지연과 재전송 • 발신처 부인(source repudiation): 발신자가 메시지의 전송 사실을 부인 • 수신처 부인(destination repudiation): 수신자가 메시지의 수신 사실을 부인
11.1 인증에서의 요구 조건 • 대처방안 • 노출, 트래픽 분석: 기밀성 • 위장, 내용수정, 순서수정, 시간수정: 메시지 인증 • 발신처 부인: 전자서명 • 수신처 부인: 전자서명과 특별히 설계된 프로토콜들의 조합
11.1 인증에서의 요구 조건 • 메시지 인증 • 수신된 메시지가 주장된 출처에서 왔고, • 변경되지 않았다는 것을 확인하기 위한 절차 • 또한, 메시지의 순서의 일치와 시간의 적합성도 검증 가능 • 디지털 서명 • 발신자가 메시지의 전송 사실을 부인하는 것을 봉쇄하기 위한 방법
11.1 인증에서의 요구 조건 - 인증 종류 • 메시지 내용 인증(message content authentication) • 메시지를 전송하는 중에 수정된 사항이 없는지를 검증 • MAC (송신자 계산 MAC값과 수신자 계산 MAC값을 비교) • 메시지 출처 인증(message origin authentication) • 메시지의 송신자가 메시지 내의 송신자 필드에 기록된 송신자와 일치하는 지를 검증 • 디지털 서명 (송신자 필드 내용 : 실제 송신자) • 실체 인증(general entity authentication) • 통신하는 개체들 사이에 상대방이 정당한지를 검증 • 인증 프로토콜 (신청자 주장 : 검증자 확인) • 단독인증(unilateral or one-way authentication) • 통신하는 개체들 사이에 실체 인증을 한쪽으로만 검증 • 상호인증(mutual authentication) • 통신하는 개체들 사이에 실체 인증을 양방향으로 모두 검증
11.2 인증 함수 • 메시지 인증과 디지털 서명에서 인증: 두 단계로 구분 • 하위단계: 인증 함수를 사용하여 인증에 사용할 인증값(authenticator) 생성 • 상위단계: 상위 프로토콜에서 인증값을 사용하여 인증성 검증 • 인증 함수의 종류: • 메시지 암호화(message encryption) : 메시지 전체 암호문이 인증값 • 메시지 인증 코드(MAC) : 메시지와 비밀키를 입력으로 하여 인증값으로 사용될 고정된 길이의 어떤 값을 생성 • 해쉬함수: 임의의 길이 메시지를 입력으로 고정된 길이의 인증값 생성
11.2 인증함수 - 메시지 암호화 메시지 암호화의 기본 사용법
11.2 인증함수 – 메시지 암호화 • (a) 대칭키 암호: A → B : EK[M] • 기밀성 제공 • A와 B만이 K를 공유하고 암.복호화 가능 • 부분적인 인증 제공 • 오직 A로부터 전송 가능함 • 수신자가 메시지 위조 가능 • 서명 제공 불가 • 송신자가 메시지 전송에 대해 부인 가능
11.2 인증함수 – 메시지 암호화 • (b) 공개키 암호: A → B : EKUb[M] • 기밀성 제공 • 오직 B만이 KRb를 소유하고 있어 복호 가능 • 인증은 제공하지 않음 • 누구나 B의 공개키 Kub를 사용해 메시지를 암호화하고 자신이 A라고 주장 가능
11.2 인증함수 – 메시지 암호화 • (c) 공개키 암호: A → B : EKRa[M] • 인증과 전자서명 제공 • 메시지를 암호화 할 수 있는 사용자는 KRa의 소유자 뿐임 • 서명을 확인하기 위하여 KUa를 사용 • 기밀성 제공 불가 • 메시지를 받은 사람이나, 도청한 사람 모두 보내는 사람의 공개키 접근 가능
11.2 인증함수 – 메시지 암호화 • (d) 공개키 암호: A → B : EKUb[EKRa[M]] • 인증과 서명 제공 • KUa로 복호될 수 있는 암호문은 KRa 소유자만 작성 가능 • 기밀성 제공 • KUb로 암호화된 메시지는 KRb 소유자만 복호 가능
11.2 인증함수 – 메시지 암호화 • 메시지 암호화의 문제점 • 암호할 메시지 • 메시지는 의미있는 문장이 되어야 한다 • 의미있는 문장 → 입력의 제한 → 메시지의 임의의 형태를 제공할 수 있는 방법의 필요 예) 암호화 전에 각 메시지에 FCS(Frame Check Sequence)라는 에러 검출 코드를 추가)
11.2 인증함수 – 메시지 암호화 • 내부 및 외부 에러 제어
11.2 인증함수 – 메시지 암호화 • FCS(Frame Check Sequence) • 에러 검출을 위한 점검값 코드 • 내부 에러제어 • FCS를 암호화 보다 먼저 수행 • M과 FCS가 함께 K로 암호화되어 있으므로 유효한 FCS 조작이 어려움(인증 제공) • 외부 에러제어 • 암호화를 FCS 보다 먼저 수행 • 암호화된 메시지를 갖고 FCS를 구성하기가 용이 • 공격자가 암호문의 실제 평문은 알 수 없더라도 인증자체의 과정에 혼란야기 가능 • TCP 세그먼트 • 내부에러 제어를 하면 • 세그먼트 지연, 메시지 순서변경, 특정 세그먼트 삭제 등 방지 가능
11.2 인증함수 – 메시지 암호화 • TCP 세그먼트
11.2 인증함수 – 메시지 인증 코드 • 메시지 인증 코드 • Message Athentication Code : MAC • 비밀키를 사용하여 생성된 작은 크기의 데이터 블록 • 메시지와 키의 함수 MAC = CK(M) MAC : 메시지 인증 코드 C : MAC 함수 K : 공유된 비밀키 M : 메시지 • 사용방법 • 송신자 A는 메시지를 입력으로 MAC을 계산 • 송신자 A는 메시지와 MAC을 함께 전송 • 수신자 B는 수신된 메시지를 입력으로 MAC를 계산 • 수신자 B는 이 값을 수신된 MAC과 비교
11.2 인증함수 – 메시지 인증 코드 • (a) 메시지 인증 : A → B : M || CK(M) • 인증제공 • 메시지 내용 인증 • K를 모르는 공격자는 메시지와 대응되는 MAC값 계산 불가 • 출처 인증 • K를 아는 A만이 올바른 MAC을 계산하여 전송 가능 • 메시지 순서 인증 • 메시지에 순서번호가 포함되어 있다면 내용 인증에 의해 메시지 순서 보장 • 기밀성 제공 못함
11.2 인증함수 – 메시지 인증 코드 • (b) 메시지 인증과 기밀성 : A → B : EK2[M || CK1(M)] • 인증 제공 • A와 B만이 K1을 공유 • 기밀성 제공 • A와 B만이 K2를 공유 • 평문으로 MAC을 계산함 • 보통 인증을 평문에 연결하기 때문에 널리 사용됨
11.2 인증함수 – 메시지 인증 코드 • (c) 메시지 인증과 기밀성 : A → B : EK2[M] || CK1(EK2[M]) • 인증 제공 • A와 B만이 K1을 공유 • 기밀성 제공 • A와 B만이 K2를 공유 • 암호문으로 MAC을 계산 모든 MAC 기법들은 디지털 서명을 제공하지 않음: 송신자와 수신자가 같은 키를 공유하기 때문
11.2 인증함수 – 해쉬함수 • 임의의 길이(M)를 입력으로 정해진 크기(h)의 Message Digest를 만드는 일방향함수(one-way function, H) • h = H(M) • H : 해쉬함수 • M : 입력값, 다양한 크기의 메시지 M • h : 출력값, 고정된 크기의 값 (해쉬코드, 메시지 다이제스트, 해쉬값이라고 함) • 특징 • MAC과 달리 키를 사용하지 않음 • 해쉬 함수 자체는 비밀 아님 → 해쉬값을 포함한 암호가 필요 • 에러 탐색 능력 제공 • 메시지의 한 비트의 변화가 해쉬코드의 모든 비트들의 변화를 가져옴 (쇄도효과: avalanche effects) • 해쉬코드의 다양한 사용 방법들이 있음
11.2 인증함수 – 해쉬함수 • (a) 해쉬함수 사용 : A → B : EK[M || H(M)] • 메시지와 해쉬코드를 모두 암호화 • 인증 제공 • A와 B만이 K를 공유하기 때문에 메시지는 A로부터 와야 함 • 기밀성 제공 • A와 B만이 K를 공유
11.2 인증함수 – 해쉬함수 • (b) 해쉬함수 사용 : A → B : M || EK[H(M)] • 해쉬코드만을 암호화 • 인증제공 • 기밀성을 요구하지 않는 응용에서 처리 부하 경감 • 해쉬함수와 암호화의 조합은 MAC과 동일한 효과
11.2 인증함수 – 해쉬함수 • (c) 해쉬함수 사용 : A → B : M || EKRa[H(M)] • 공개키 암호 및 송신자의 개인키를 이용해서 해쉬코드만 암호화 • 인증 및 디지털 서명 제공 • 디지털서명 제공: 송신자만이 암호화된 해쉬코드를 만들 수 있음 기밀성이 요구되지 않을때 (b)와 (c)의 방법은 계산이 덜 요구되어 장점을 가짐
11.2 인증함수 – 해쉬함수 • (d) 해쉬함수 사용 : A → B : EK[M || EKRa[H(M)]] • 공유된 비밀키로 (c)의 결과를 암호화 • 인증, 디지털 서명, 기밀성 모두 제공
11.2 인증함수 – 해쉬함수 • (e) 해쉬함수 사용 : A → B : M || H(M || S) • 비밀키 S공유, 그러나, 암호화 하지 않음 • 메시지와 비밀 값의 해쉬 코드를 계산 => 메시지와 해쉬코드 전송 • 인증제공 • 암호화 회피 이유 • 암호화 소프트웨어는 느리다 • 암호화 하드웨어 비용 증대(전체 네트워크에 설치 할 때) • 아주 작은 데이터 블럭에도 동일한 암호화 절차 필요 • 암호화 알고리즘의 사용권 획득 불편
11.2 인증함수 – 해쉬함수 • (f) 해쉬함수 사용 : A → B : EK[M || H(M || S)] • 공유된 비밀키로 (e)의 결과를 암호화 • 인증 제공 • 기밀성 제공
11.3 메시지 인증 코드 • 암호학적 점검값 or 메시지 인증 코드(MAC) • Message Authentication Codes, Data Authentication Codes • 메시지 인증코드(MAC)라고 알려진 암호학적 점검값은 다음과 같은 함수 C에 의해 생성됨 MAC = CK(M) • MAC : 메시지 인증 코드, CK(M)과 동일, 출력값 • M: 가변길이 메시지, 입력값 • K :는 송신자와 수신자에 의해 공유되는 비밀키, 입력값 • C : 메시지 인증 코드 함수 • MAC자체는 메시지 기밀성이나 서명 기능을 제공하지 않음
11.3 메시지 인증 코드 – MAC의 요구조건 • 공격자가 CK(M’)=CK(M)인 M’을 구성한다는 것이 계산적으로 어려워야 함 • 즉, 키를 알지 못하면서 MAC과 일치하는 새로운 메시지를 만들 수 없어야 한다. • CK(M)은 일정하게 분산되어 있어야 함 • 즉, 선택 평문 공격에 기초한 brute-force attack에 안전해야 함 • 메시지의 어떤 부분이나 특정 비트들에 관해서 특별히 취약해서는 안됨 • 그런 경우가 아니라면, M과 CK(M)을 가진 공격자는 기존의 MAC과 일치하는 새 메시지를 쉽게 발견 가능 • 또한, 공격자가 “취약지점”에서 M의 변형을 시도 가능
11.3 메시지 인증 코드 – DES에 기초한 메시지 인증코드 • 가장 널리 사용되는 MAC 중의 하나 • FIPS PUB 113과 ANSI 표준(X9.17) 두 종류 존재 • FIPS PUB 113 • O1 = EK(D1), O2 = EK(D2 O1), O3 = EK(D3 O2), ON = EK(DN ON-1) • MAC으로 ON또는 ON의 가장 왼쪽 M 비트를 사용(16<=M <=64)
11.4 해쉬함수 (Hash function) • 임의의 길이(M)를 취해서 정해진 크기(h)의 Message Digest를 만드는 일방향함수(one-way function, H) • h = H(M) • H : 해쉬함수 • M : 입력값, 다양한 크기의 메시지 M • h : 출력값, 고정된 크기의 값 (해쉬코드, 메시지 다이제스트, 해쉬값이라고 함) • 특징 • MAC과 달리 키를 사용하지 않음 • 해쉬 함수 자체는 비밀 아님 => 해쉬값을 포함한 암호가 필요 • 에러 탐색 능력 제공 • 메시지의 한 비트의 변화가 해쉬코드의 모든 비트들의 변화를 가져옴 (쇄도효과: avalanche effects) • 해쉬코드의 다양한 사용 방법들이 있음
11.4 해쉬함수 - 해쉬함수의 요구조건 • 어떤 크기의 메시지 M에도 적용 가능 • H는 고정된 크기의 hash code를 만듦 • H(M)은 어떤 주어진 M에 대해서도 계산하는 것이 쉬워야 함 • 일방향(one-way) 성질 • 주어진 해쉬값 h에 대해, H(x) = h인 x을 찾는 것이 계산적으로 어렵다. • 약한 충돌 회피성(Weak collision resistance) • 주어진 x에 대해, H(y) = H(x)인 어떤 (y x) 쌍을 찾는 것이 계산적으로 어렵다. • 강한 충돌 회피성(Strong collision resistance, collision free) • H(x) = H(y)인, 어떤 (x, y) 쌍을 찾는 것이 계산적으로 어렵다.
11.4 해쉬함수 – 단순 해쉬함수 • 단순 해쉬 함수 • 가장 단순한 해쉬 함수들 중의 하나 • 모든 블록들에 대해 비트 단위 XOR • Ci=bi1 bi2 . . . bim • Ci = 해쉬 코드의 i 번째 비트 • m = 입력에서 n-비트 블록 수 • bij = j 번째 블록의 i 번째 비트 • = XOR 동작
11.4 해쉬함수 – 생일공격(Birthday Attacks) • 전사적 공격의 일종 • 23명중에 같은 생일을 가진 사람이 두 사람이나 그 이상있을 확률이 1/2보다 크다는 결과 – Birthday Paradox • If |h| = m-bit, 임의의 두개의 메시지 충돌쌍을 얻기 위한 노력은 2m/2 • 주어진 X와 같은 h를 주는 X’를 찾기 위한 노력은 2m • 동일한 해쉬값을 갖는 올바른 변형 제공 • 128 bit인 MD5의 충돌쌍을 찾기 - 천만$, 24h • 중요한 서명을 위해서는 160 bit이상을 요구 • 알고리즘을 분석하여 보다 더 효율적인 공격 가능 • 해쉬 함수의 충돌을 발견하는데 종종 사용
11.4 해쉬함수 – 블록 체이닝 기법 • 비밀키 없는 CBC 기술의 해쉬 함수들이 많이 존재 • 예) Rabin[RABIN78] • 메시지 M을 고정된 크기의 블록 M1, M2, … , MN으로 나누고, 해쉬 코드 G를 계산하기 위해서 DES와 같은 관용 암호 시스템을 이용 H0 = 초기값 Hi = EMi [Hi -1] G = HN • 생일공격에 취약 • 알고리즘이 DES이고, 오직 64-비트 해쉬 코드를 생성 • 블록 체이닝 방법을 강화시킬 의도로 개량형들을 제안[DAVI89] • Hi = EMi [Hi -1] Hi -1 • [MEYE88]에서 제안된 다른 변형: Hi = EHi -1[Mi ] Mi • 이 두 가지 구조 모두 다양한 공격에 취약[MIYA90] • 생일 공격의 어떤 형태는 해쉬 코드가 충분히 작거나(예: 64비트 또는 미만), 큰 해쉬 코드가 독립적인 서브 코드들로 분해될 수 있다면 비밀키 없이 암호 블록 체이닝을 사용하는 어떤 해쉬구조에 대해서 성공[JUEN87]
11.5 해쉬 함수와 MAC 보안 - Brute-Force Attack • 해쉬함수 • brute-force attack에 대한 해쉬 함수의 강도는 오직 알고리즘에 의해 생성되는 해쉬 코드의 길이에 의존 • 일방향성: 어떠한 코드 h에 대해서 H(x) = h 인 x를 찾는 것은 계산상 어렵다. (2n) • 완화된 충돌 회피성: 어떠한 x에 대해서도, H(y) = H(x)로부터 y ≠ x를 찾는 것은 계산상 어렵다. (2n) • 강력한 충돌 회피성: H(x) = H(y)와 같은 (x, y)를 찾는 것은 계산상 어렵다. (2n/2) • n비트 해쉬 코드 h = H(x)와 고정된 메시지 x가 제공된 상태에서, 충돌을 찾는 brute-force 방식은 무작위 비트 열 y를 선택해 H(y)=H(x)인지 확인
11.5 해쉬 함수와 MAC 보안 - Brute-Force Attack • 메시지 인증 코드 • 요구되는 보안특성 • 계산상 강도(Computation resistance) : 하나 또는 그 이상의 문서-MAC 쌍들(xi, CK(xi))이 제공된 경우, 새로운 입력값 x ≠ xi가 되는 (x, CK(x))를 계산하는 것은 계산상 어렵다. • 두 가지 공격 방법 • 키 공간 공격 • 공격자가 문서-MAC 쌍을 알 때, 키 값 K를 알아내려는 공격: 2k (K: k bit일때) • MAC 값 공격 • 키를 알 필요 없이 제시된 MAC 값과 일치하는 메시지를 찾아내려는 공격: 2n
11.5 해쉬 함수와 MAC 보안 - 암호학적 분석 • 해쉬함수 및 MAC에 대한 암호학적 안전성 강도는 brute-force 공격에서 요구되는 노력보다 크거나 같다. • 해쉬함수들 구조 제안 • Merkle[MERL79, MERK89]에 의해 제안된 구조 • MD5, SHA-1, RIPEMD-160 등 현재 사용 대부분의 해쉬함수 구조 CV0 = IV : 초기 n 비트 값 CVi = f(CVi-1, Yi-1) 1 ≤ i ≤ L H(M) = CVL 해쉬 함수의 입력값은 Y0, ..., YL-1블록들로 구성된 메시지 M