1 / 37

제 11 장 메시지 인증 및 해쉬함수

제 11 장 메시지 인증 및 해쉬함수. 11.1 인증에서의 요구조건 11.2 인증 함수 11.3 메시지 인증 코드 11.4 해쉬함수 11.5 해쉬함수와 MAC 보안. 11.1 인증에서의 요구 조건. 통신 상에서 발생할 수 있는 공격들 노출 (disclosure): 암호키 가지고 있지 않은 사람에게 메시지 내용이 노출 , 도청 (eavesdropping)

Download Presentation

제 11 장 메시지 인증 및 해쉬함수

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제11장 메시지 인증 및 해쉬함수 11.1 인증에서의 요구조건 11.2 인증 함수 11.3 메시지 인증 코드 11.4 해쉬함수 11.5 해쉬함수와 MAC 보안

  2. 11.1 인증에서의 요구 조건 • 통신 상에서 발생할 수 있는 공격들 • 노출(disclosure): 암호키 가지고 있지 않은 사람에게 메시지 내용이 노출, 도청(eavesdropping) • 트래픽 분석(traffic analysis): 통신 주체 사이의 어떤 트래픽 형태를 발견 (연결주기, 사용시간, 메시지 개수 및 길이 등) • 위장(masquerade): 부정한 출처로부터 나온 메시지를 네트워크 상에 삽입 • 내용 수정(content modification): 삽입, 삭제, 전치, 수정을 포함한 메시지 내용의 변경 • 순서 수정(sequence modification): 통신 상대방간의 메시지들의 순서 변경 • 시간 수정(timing modification): 메시지의 지연과 재전송 • 발신처 부인(source repudiation): 발신자가 메시지의 전송 사실을 부인 • 수신처 부인(destination repudiation): 수신자가 메시지의 수신 사실을 부인

  3. 11.1 인증에서의 요구 조건 • 대처방안 • 노출, 트래픽 분석: 기밀성 • 위장, 내용수정, 순서수정, 시간수정: 메시지 인증 • 발신처 부인: 전자서명 • 수신처 부인: 전자서명과 특별히 설계된 프로토콜들의 조합

  4. 11.1 인증에서의 요구 조건 • 메시지 인증 • 수신된 메시지가 주장된 출처에서 왔고, • 변경되지 않았다는 것을 확인하기 위한 절차 • 또한, 메시지의 순서의 일치와 시간의 적합성도 검증 가능 • 디지털 서명 • 발신자가 메시지의 전송 사실을 부인하는 것을 봉쇄하기 위한 방법

  5. 11.1 인증에서의 요구 조건 - 인증 종류 • 메시지 내용 인증(message content authentication) • 메시지를 전송하는 중에 수정된 사항이 없는지를 검증 • MAC (송신자 계산 MAC값과 수신자 계산 MAC값을 비교) • 메시지 출처 인증(message origin authentication) • 메시지의 송신자가 메시지 내의 송신자 필드에 기록된 송신자와 일치하는 지를 검증 • 디지털 서명 (송신자 필드 내용 : 실제 송신자) • 실체 인증(general entity authentication) • 통신하는 개체들 사이에 상대방이 정당한지를 검증 • 인증 프로토콜 (신청자 주장 : 검증자 확인) • 단독인증(unilateral or one-way authentication) • 통신하는 개체들 사이에 실체 인증을 한쪽으로만 검증 • 상호인증(mutual authentication) • 통신하는 개체들 사이에 실체 인증을 양방향으로 모두 검증

  6. 11.2 인증 함수 • 메시지 인증과 디지털 서명에서 인증: 두 단계로 구분 • 하위단계: 인증 함수를 사용하여 인증에 사용할 인증값(authenticator) 생성 • 상위단계: 상위 프로토콜에서 인증값을 사용하여 인증성 검증 • 인증 함수의 종류: • 메시지 암호화(message encryption) : 메시지 전체 암호문이 인증값 • 메시지 인증 코드(MAC) : 메시지와 비밀키를 입력으로 하여 인증값으로 사용될 고정된 길이의 어떤 값을 생성 • 해쉬함수: 임의의 길이 메시지를 입력으로 고정된 길이의 인증값 생성

  7. 11.2 인증함수 - 메시지 암호화 메시지 암호화의 기본 사용법

  8. 11.2 인증함수 – 메시지 암호화 • (a) 대칭키 암호: A → B : EK[M] • 기밀성 제공 • A와 B만이 K를 공유하고 암.복호화 가능 • 부분적인 인증 제공 • 오직 A로부터 전송 가능함 • 수신자가 메시지 위조 가능 • 서명 제공 불가 • 송신자가 메시지 전송에 대해 부인 가능

  9. 11.2 인증함수 – 메시지 암호화 • (b) 공개키 암호: A → B : EKUb[M] • 기밀성 제공 • 오직 B만이 KRb를 소유하고 있어 복호 가능 • 인증은 제공하지 않음 • 누구나 B의 공개키 Kub를 사용해 메시지를 암호화하고 자신이 A라고 주장 가능

  10. 11.2 인증함수 – 메시지 암호화 • (c) 공개키 암호: A → B : EKRa[M] • 인증과 전자서명 제공 • 메시지를 암호화 할 수 있는 사용자는 KRa의 소유자 뿐임 • 서명을 확인하기 위하여 KUa를 사용 • 기밀성 제공 불가 • 메시지를 받은 사람이나, 도청한 사람 모두 보내는 사람의 공개키 접근 가능

  11. 11.2 인증함수 – 메시지 암호화 • (d) 공개키 암호: A → B : EKUb[EKRa[M]] • 인증과 서명 제공 • KUa로 복호될 수 있는 암호문은 KRa 소유자만 작성 가능 • 기밀성 제공 • KUb로 암호화된 메시지는 KRb 소유자만 복호 가능

  12. 11.2 인증함수 – 메시지 암호화 • 메시지 암호화의 문제점 • 암호할 메시지 • 메시지는 의미있는 문장이 되어야 한다 • 의미있는 문장 → 입력의 제한 → 메시지의 임의의 형태를 제공할 수 있는 방법의 필요 예) 암호화 전에 각 메시지에 FCS(Frame Check Sequence)라는 에러 검출 코드를 추가)

  13. 11.2 인증함수 – 메시지 암호화 • 내부 및 외부 에러 제어

  14. 11.2 인증함수 – 메시지 암호화 • FCS(Frame Check Sequence) • 에러 검출을 위한 점검값 코드 • 내부 에러제어 • FCS를 암호화 보다 먼저 수행 • M과 FCS가 함께 K로 암호화되어 있으므로 유효한 FCS 조작이 어려움(인증 제공) • 외부 에러제어 • 암호화를 FCS 보다 먼저 수행 • 암호화된 메시지를 갖고 FCS를 구성하기가 용이 • 공격자가 암호문의 실제 평문은 알 수 없더라도 인증자체의 과정에 혼란야기 가능 • TCP 세그먼트 • 내부에러 제어를 하면 • 세그먼트 지연, 메시지 순서변경, 특정 세그먼트 삭제 등 방지 가능

  15. 11.2 인증함수 – 메시지 암호화 • TCP 세그먼트

  16. 11.2 인증함수 – 메시지 인증 코드 • 메시지 인증 코드 • Message Athentication Code : MAC • 비밀키를 사용하여 생성된 작은 크기의 데이터 블록 • 메시지와 키의 함수 MAC = CK(M) MAC : 메시지 인증 코드 C : MAC 함수 K : 공유된 비밀키 M : 메시지 • 사용방법 • 송신자 A는 메시지를 입력으로 MAC을 계산 • 송신자 A는 메시지와 MAC을 함께 전송 • 수신자 B는 수신된 메시지를 입력으로 MAC를 계산 • 수신자 B는 이 값을 수신된 MAC과 비교

  17. 11.2 인증함수 – 메시지 인증 코드 • (a) 메시지 인증 : A → B : M || CK(M) • 인증제공 • 메시지 내용 인증 • K를 모르는 공격자는 메시지와 대응되는 MAC값 계산 불가 • 출처 인증 • K를 아는 A만이 올바른 MAC을 계산하여 전송 가능 • 메시지 순서 인증 • 메시지에 순서번호가 포함되어 있다면 내용 인증에 의해 메시지 순서 보장 • 기밀성 제공 못함

  18. 11.2 인증함수 – 메시지 인증 코드 • (b) 메시지 인증과 기밀성 : A → B : EK2[M || CK1(M)] • 인증 제공 • A와 B만이 K1을 공유 • 기밀성 제공 • A와 B만이 K2를 공유 • 평문으로 MAC을 계산함 • 보통 인증을 평문에 연결하기 때문에 널리 사용됨

  19. 11.2 인증함수 – 메시지 인증 코드 • (c) 메시지 인증과 기밀성 : A → B : EK2[M] || CK1(EK2[M]) • 인증 제공 • A와 B만이 K1을 공유 • 기밀성 제공 • A와 B만이 K2를 공유 • 암호문으로 MAC을 계산  모든 MAC 기법들은 디지털 서명을 제공하지 않음: 송신자와 수신자가 같은 키를 공유하기 때문

  20. 11.2 인증함수 – 해쉬함수 • 임의의 길이(M)를 입력으로 정해진 크기(h)의 Message Digest를 만드는 일방향함수(one-way function, H) • h = H(M) • H : 해쉬함수 • M : 입력값, 다양한 크기의 메시지 M • h : 출력값, 고정된 크기의 값 (해쉬코드, 메시지 다이제스트, 해쉬값이라고 함) • 특징 • MAC과 달리 키를 사용하지 않음 • 해쉬 함수 자체는 비밀 아님 → 해쉬값을 포함한 암호가 필요 • 에러 탐색 능력 제공 • 메시지의 한 비트의 변화가 해쉬코드의 모든 비트들의 변화를 가져옴 (쇄도효과: avalanche effects) • 해쉬코드의 다양한 사용 방법들이 있음

  21. 11.2 인증함수 – 해쉬함수 • (a) 해쉬함수 사용 : A → B : EK[M || H(M)] • 메시지와 해쉬코드를 모두 암호화 • 인증 제공 • A와 B만이 K를 공유하기 때문에 메시지는 A로부터 와야 함 • 기밀성 제공 • A와 B만이 K를 공유

  22. 11.2 인증함수 – 해쉬함수 • (b) 해쉬함수 사용 : A → B : M || EK[H(M)] • 해쉬코드만을 암호화 • 인증제공 • 기밀성을 요구하지 않는 응용에서 처리 부하 경감 • 해쉬함수와 암호화의 조합은 MAC과 동일한 효과

  23. 11.2 인증함수 – 해쉬함수 • (c) 해쉬함수 사용 : A → B : M || EKRa[H(M)] • 공개키 암호 및 송신자의 개인키를 이용해서 해쉬코드만 암호화 • 인증 및 디지털 서명 제공 • 디지털서명 제공: 송신자만이 암호화된 해쉬코드를 만들 수 있음  기밀성이 요구되지 않을때 (b)와 (c)의 방법은 계산이 덜 요구되어 장점을 가짐

  24. 11.2 인증함수 – 해쉬함수 • (d) 해쉬함수 사용 : A → B : EK[M || EKRa[H(M)]] • 공유된 비밀키로 (c)의 결과를 암호화 • 인증, 디지털 서명, 기밀성 모두 제공

  25. 11.2 인증함수 – 해쉬함수 • (e) 해쉬함수 사용 : A → B : M || H(M || S) • 비밀키 S공유, 그러나, 암호화 하지 않음 • 메시지와 비밀 값의 해쉬 코드를 계산 => 메시지와 해쉬코드 전송 • 인증제공 • 암호화 회피 이유 • 암호화 소프트웨어는 느리다 • 암호화 하드웨어 비용 증대(전체 네트워크에 설치 할 때) • 아주 작은 데이터 블럭에도 동일한 암호화 절차 필요 • 암호화 알고리즘의 사용권 획득 불편

  26. 11.2 인증함수 – 해쉬함수 • (f) 해쉬함수 사용 : A → B : EK[M || H(M || S)] • 공유된 비밀키로 (e)의 결과를 암호화 • 인증 제공 • 기밀성 제공

  27. 11.3 메시지 인증 코드 • 암호학적 점검값 or 메시지 인증 코드(MAC) • Message Authentication Codes, Data Authentication Codes • 메시지 인증코드(MAC)라고 알려진 암호학적 점검값은 다음과 같은 함수 C에 의해 생성됨 MAC = CK(M) • MAC : 메시지 인증 코드, CK(M)과 동일, 출력값 • M: 가변길이 메시지, 입력값 • K :는 송신자와 수신자에 의해 공유되는 비밀키, 입력값 • C : 메시지 인증 코드 함수 • MAC자체는 메시지 기밀성이나 서명 기능을 제공하지 않음

  28. 11.3 메시지 인증 코드 – MAC의 요구조건 • 공격자가 CK(M’)=CK(M)인 M’을 구성한다는 것이 계산적으로 어려워야 함 • 즉, 키를 알지 못하면서 MAC과 일치하는 새로운 메시지를 만들 수 없어야 한다. • CK(M)은 일정하게 분산되어 있어야 함 • 즉, 선택 평문 공격에 기초한 brute-force attack에 안전해야 함 • 메시지의 어떤 부분이나 특정 비트들에 관해서 특별히 취약해서는 안됨 • 그런 경우가 아니라면, M과 CK(M)을 가진 공격자는 기존의 MAC과 일치하는 새 메시지를 쉽게 발견 가능 • 또한, 공격자가 “취약지점”에서 M의 변형을 시도 가능

  29. 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)

  30. 11.4 해쉬함수 (Hash function) • 임의의 길이(M)를 취해서 정해진 크기(h)의 Message Digest를 만드는 일방향함수(one-way function, H) • h = H(M) • H : 해쉬함수 • M : 입력값, 다양한 크기의 메시지 M • h : 출력값, 고정된 크기의 값 (해쉬코드, 메시지 다이제스트, 해쉬값이라고 함) • 특징 • MAC과 달리 키를 사용하지 않음 • 해쉬 함수 자체는 비밀 아님 => 해쉬값을 포함한 암호가 필요 • 에러 탐색 능력 제공 • 메시지의 한 비트의 변화가 해쉬코드의 모든 비트들의 변화를 가져옴 (쇄도효과: avalanche effects) • 해쉬코드의 다양한 사용 방법들이 있음

  31. 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) 쌍을 찾는 것이 계산적으로 어렵다.

  32. 11.4 해쉬함수 – 단순 해쉬함수 • 단순 해쉬 함수 • 가장 단순한 해쉬 함수들 중의 하나 • 모든 블록들에 대해 비트 단위 XOR • Ci=bi1 bi2  . . .  bim • Ci = 해쉬 코드의 i 번째 비트 • m = 입력에서 n-비트 블록 수 • bij = j 번째 블록의 i 번째 비트 •  = XOR 동작

  33. 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이상을 요구 • 알고리즘을 분석하여 보다 더 효율적인 공격 가능 • 해쉬 함수의 충돌을 발견하는데 종종 사용

  34. 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]

  35. 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)인지 확인

  36. 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

  37. 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

More Related