현대 암호학

[현대 암호학] 06. 공개 키 암호 - 1. 키 배송 문제 / 2. 공개 키 암호

Uggjjini 2021. 6. 28. 10:00

1. 키 배송 문제

 

키 배송 문제(Key Distribution Problem)

  • 대칭 암호를 사용하려면 송신자/수신자가 대칭키(공유키, 비밀키)를 사전에 공유해야 하는 문제
  • 대칭 키를 보내지 않으면 밥은 복호화 할 수 없다.

 

안전하게 키를 보내는 방법은?

 

키를 보내 버리면 도청자 이브도 복호화할 수 있다.

 

 

키 배송 문제를 해결하기 위한 방법

  • 키의 사전 공유에 의한 해결 => ex: SSH public key authentication
  • 키 배포 센터에 의한 해결 => ex: kerberos
  • Diffie-Hellman 키 교환 => ex: DH(DHE) => SSH
  • 공개 키 암호에 의한 해결 => ex: SSL/TLS => HTTPS, SMTPs, POPs, ....

 

키 사전 공유

  • "안전한 방법으로 키를 사전에 건네주는" 것
  • 직접 전달은 안전
  • 이메일/일반 메일 등은 위험
  • 인원이 많아지면 관리 해야 할 키 수 증가

 

 

키 배포 센터에 의한 키 배송 문제의 해결

 

키 배포 센터(Key Distribution Center, KDC)

  • 암호 통신 때마다 통신용의 키를 키 배포 센터에 의뢰해서 개인과 키 배포 센터 사이에서만 키를 사전에 공유
  • 키 배포 센터의 역할을 하는 컴퓨터를 지정
  • 구성원 전원의 키를 보존

 

키 배포 센터에 의한 키 배송

 

앨리스(Alice)가 밥(Bob)에게 암호 메일 보내기

앨리스는 키 배포 센터에 "밥과 통신하고 싶다"고 신청한다.
키 배포 센터는 의사난수 생성기를 써서 세션 키(K)를 만든다. 이것은 앨리스와 밥이 이번 통신만을 위한 일시적인 키이다.
키 배포 센터는 데이터베이스로부터 앨리스의 키(KA)와 밥의 키(KB)를 꺼낸다.
키 배포 센터는 앨리스의 키를 써서 세션 키를 암호화(CA=EKA(K))해서 앨리스에게 보낸다.
키 배포 센터는 밥의 키를 써서 세션 키를 암호화(CB=EKB(K))해서 밥에게 보낸다.
앨리스는 키 배포 센터로부터 온 세션 키(앨리스의 키로 암호화되어 있음)를 복호화(K=DKA(CA)해서 세션 키를 얻는다.
앨리스는 세션 키를 써서 밥에게 보낼 메일을 암호화(C=EK(M))해서 밥에게 보낸다.
밥은 키 배포센터로 부터 온 세션 키(밥의 키로 암호화되어 있음)를 복호화(K=DKB(CB))해서 세션 키를 얻는다.
밥은 세션 키를 써서 앨리스에게 온 암호문을 복호화(M=DK(C))한다.
앨리스와 밥은 세션 키를 삭제한다.

 

키 배포센터의 문제점

  • 구성원 수 증가시 키 배포 센터의 부하
  • 키 배포 센터의 컴퓨터가 고장시 조직 전체의 암호 통신 마비
  • 키 배포 센터가 공격의 대상이 될 수 있다.

 

 

 

Diffie-Hellman 키 교환에 의한 키 배송 문제의 해결

 

Diffie-Hellman 키 교환

  • https://ko.wikipedia.org/wiki/디피-헬먼_키_교환
  • 암호 통신을 원하는 두 사람이 있다면 어떤 정보를 교환한다.  -> 이 정보는 도청자 이브에게 노출 되어도 무방
  • 두 사람은 교환한 정보를 가지고 동일한 키를 각각 생성할 수 있다.  ->  하지만, 도청자 이브는 같은 키를 만들 수 없다.

 Diffie-Hellman Key 교환의 기본 원리

 

 

 

공개 키 암호에 의한 키 배송 문제의 해결

 

공개 키 암호

 

대칭 암호

  • "암호화 키"와 "복호화 키" 동일

 

공개 키 암호(비 대칭 암호)

  •  "암호화 키"와 "복호화 키" 다르다.
  • "암호화 키"를 가지고 있는 사람이라면 누구든지 암호화 할 수 있음
  • 하지만, "암호화 키"를 가지고 있어도 복호화 할 수는 없다. --> 복호화 할 수 있는 것은 "복호화 키"를 가지고 있는 사람 뿐

 

공개 키 암호에 의한 키 배송 문제의 해결

  • 수신자는 미리 "암호화 키"를 송신자에게 알려 준다. --> 이 "암호화 키"는 도청자에게 알려져도 무방
  • 송신자는 그 "암호화 키"로 암호화해서 수신자에게 전송
  • 암호문을 복호화할 수 있는 자는 "복호화 키"를 가지고 있는 사람(수신자) 뿐
  • 이렇게 하면 "복호화 키"를 수신자에게 배송할 필요가 없다.

 


2. 공개 키 암호

 

공개 키 암호(Public-Key Cryptography)

  • "암호화 키"와 "복호화 키"가 분리
  • 송신자는 "암호화 키"를 써서 메시지를 암호화하고, 수신자는 "복호화 키"를 써서 암호문을 복호화 한다.

 

공개키 암호의 암호화

  • 송신자가 필요한 것은 "암호화 키" 뿐
  • 수신자가 필요한 것은 "복호화 키" 뿐
  • 도청자에게 알려지면 곤란한 것은 "복호화 키"
  • "암호화 키"는 도청자에게 알려져도 무방

 

공개키(Public Key)

  • "암호화 키"는 일반에게 공개해도 무방
  • 수신자에게 메일로 전달해도 무방
  • 신문의 광고란에 실어도 무방
  • 간판으로 해서 길가에 세워도 무방
  • Web 페이지를 통하여 전 세계에서 읽을 수 있도록 해도 무방
  • 따라서, 도청자 이브에게 공개 키가 도청되는 것을 신경 쓸 필요가 없다.

 

개인 키(Private Key)

  • "복호화 키"는 미공개
  • 이 키는 본인만 사용
  • 개인 키는 다른 사람에게 보이거나, 건네주거나 해서는 안 됨
  • 개인 키는 자신의 통신 상대에게도 보여서는 안 됨

 

 

공개키/개인키 쌍

 

키 쌍(Key Pair)

  • 개인키 --> (always) 공개키 생성 가능
  • 공개키 --> (not) 개인키 생성 불가능

 

공개 키와 개인 키는 둘이 한쌍

  • 공개 키로 암호화한 암호문은 그 공개 키와 쌍이 되는 개인 키가 아니면 복호화 할 수 없다.

 

수학적인 관계

  • 키 쌍을 이루고 있는 2개의 키는 서로 밀접한 관계
  • 공개 키와 개인 키 쌍은 별개로 만들 수 없음(동시에 만들어 짐)

 

 

공개키 암호의 역사

 

(1976) 휫필드 디피(Whitfield Diffie)와 마틴 헬먼(Martin Hellman)

  • 공개 키 암호의 아이디어를 발표 -> 나중에 RSA 발표에 초석이 됨
  • 암호화 키와 복호화 키의 분리성
  • 공개 키가 어떠한 특성을 갖추고 있어야 하는지를 제시

 

(1977) Ralph Merkle Martin Hellman

  • 배낭(napsack) 암호

 

(1978) Ron Rivest, Adi Shamir, Leonard Adleman

  • 공개 키 암호 알고리즘 RSA 발표

 

 

공개 키를 사용한 통신의 흐름

 

 공개 키를 사용해서 앨리스가 밥에게 메시지를 보낸다

 

밥은 공개 키/개인 키로 이루어진 한 쌍의 키(KB(pub)/KB(pri)) 생성
밥은 자신의 공개 키(KB(pub))를 앨리스에게 전송
앨리스는 밥의 공개 키를 써서 메시지(P)를 암호화(C=E(KB(pub),P))
앨리스는 암호문(C)을 밥에게 전송
밥은 자신의 개인 키(KB(pri))를 써서 암호문을 복호화(P=D(KB(pri),C))

 

 

 

여러가지 용어

 

대칭 암호(Symmetric Cryptography)

  • 동일키 사용해서 암호화와 복호화 수행
  • 암호화와 복호화가 마치 거울처럼 대칭
  • 키: 비밀키(Secret Key)라고 함

 

비대칭 암호(Asymmetric Cryptography)

  • 대칭 암호와의 대비
  • 암호화와 복호화에 다른 키 사용
  • 키 : 개인키(private key)공개키(public key)

 

 

공개 키 암호로도 해결 할 수 없는 문제

 

공개 키의 인증에 관한 문제

  • 입수한 공개 키의 진위를 판단할 필요 => 메시지 인증 필요(MAC)
  • 중간자 공격(Man-In-The-Middle attack, MITM)

 

공개 키 암호의 속도

  • 대칭 암호에 비해 처리 속도가 몇 백 배나 늦음 => 하이브리드 암호 필요(+ 블럭 암호)

 

 

'현대 암호학' 카테고리의 다른 글

[현대 암호학] 06-4. RSA  (0) 2021.06.28
[현대 암호학] 06-3. 정수론  (0) 2021.06.28
[현대 암호학] 05. 실습(5)  (0) 2021.06.24
[현대 암호학] 05. 실습(4)  (0) 2021.06.24
[현대 암호학] 05. 실습(3)  (0) 2021.06.24