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/디피-헬먼_키_교환
- 암호 통신을 원하는 두 사람이 있다면 어떤 정보를 교환한다. -> 이 정보는 도청자 이브에게 노출 되어도 무방
- 두 사람은 교환한 정보를 가지고 동일한 키를 각각 생성할 수 있다. -> 하지만, 도청자 이브는 같은 키를 만들 수 없다.
공개 키 암호에 의한 키 배송 문제의 해결
공개 키 암호
대칭 암호
- "암호화 키"와 "복호화 키" 동일
공개 키 암호(비 대칭 암호)
- "암호화 키"와 "복호화 키" 다르다.
- "암호화 키"를 가지고 있는 사람이라면 누구든지 암호화 할 수 있음
- 하지만, "암호화 키"를 가지고 있어도 복호화 할 수는 없다. --> 복호화 할 수 있는 것은 "복호화 키"를 가지고 있는 사람 뿐
공개 키 암호에 의한 키 배송 문제의 해결
- 수신자는 미리 "암호화 키"를 송신자에게 알려 준다. --> 이 "암호화 키"는 도청자에게 알려져도 무방
- 송신자는 그 "암호화 키"로 암호화해서 수신자에게 전송
- 암호문을 복호화할 수 있는 자는 "복호화 키"를 가지고 있는 사람(수신자) 뿐
- 이렇게 하면 "복호화 키"를 수신자에게 배송할 필요가 없다.
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 |