티스토리 뷰
공개 키 암호 (Public key encryption)
1. 공개 키 암호
- 공개 키 암호 = 비대칭 암호
- 공개 키, 개인 키 각각 분리되있음 (대칭 암호는 공개 키, 개인 키가 동일함. 하나의 '비밀 키')
- 암호화 키, 복호화 키 각각 분리되있음
(암호화, 복호화 키의 위치에 공개 키, 개인 키 중 어떤 것을 암호화에 넣느냐에 따라 복호화 할 키 값이 정해짐/ 4.에서 설명)
- 공개 키는 누구나 알 수 있음 / 비밀 키는 키의 소유자만이 알 수 있음
- 송신자는 [암호화 키] 를 써서 메시지를 암호화
- 수신자는 [복호화 키] 를 써서 암호문을 복호화
- 사전에 비밀 키를 모두 가지는 것이 아니므로 사용자들이 안전하게 통신 할 수 있음
- 공격자에게 알려지면 곤란한 키는 [복호화 키] / [암호화 키]는 누구에게나 공개 가능
2. 공개 키 암호 비유
- 열쇠로 잠겨 있고 넣는 입구가 좁은 편지함 또는 군대 다녀온 남성분들은 소원수리함과도 같다
- 편지함의 위치(공개키)만 알면 누구든지 편지를 넣을 수 있음
- 넣은 편지는 열쇠(개인키)를 가진 사람만이 열어서 확인 가능
3. 공개 키 암호라고 불라는 이유
- 공개 키 / 개인 키 둘 중 하나의 키는 반드시 공개되어야 통신적인 사용이 가능하기 때문에
- 공개 키와 개인 키는 둘이 한 쌍 (key pair)
- 공개 키로 암호화한 암호문은 그 공개 키와 쌍이 되는 개인 키가 아니면 복호화할 수 없음
- 공개 키와 개인 키 쌍은 별개로 만들 수 없음
4. 공개 키 암호를 이용하는 두가지 방법
1) 개인키로 암호화 - 공개키로 복호화
: 데이터 암호화가 목적
2) 공개키로 암호화 - 개인키로 복호화
: 데이터 무결성 보전이 목적
5. 공개 키를 사용한 통신흐름 - 송신자(A)가 수신자(B)에게 메시지 보내는 방법
1) B는 공개 키 / 개인 키로 이루어진 한 쌍의 키 생성
2) B는 자신의 공개 키를 A에게 전송
3) A는 B의 공개 키를 써서 메시지를 암호화
4) A는 암호문을 B에게 전송
5) B는 자신의 개인 키를 써서 암호문을 복호화
6. 키 배송 문제해결
● 키 배송문제란?
- 대칭 암호를 사용하려면 송신자와 수신자가 대칭 키를 사전에 공유해야 하는 문제
- 대칭 키를 보내지 않으면 수신자는 복호화 할 수 없음
● 키 배송 문제 해결 방법
1) 키의 사전 공유
* 키 사전 공유
- 직접 전달
- 이메일은 위험
- 인원 증가시 키 관리 필요 증가
2) 키 배포 센터 이용
- 암호 통신 때마다 통신용의 키를 키 배포 센터에 의뢰해서 개인과 키 배포 센터 사이에서만 키를 사전에 공유
- 키 배포 센터의 역할을 하는 컴퓨터를 지정
- 구성원 전원의 키를 보존
> 센터 문제점
* 구성원 수 증가 시 키 배포 센터의 부하
* 키 배포 센터의 컴퓨터가 고장시 조직 전체의 암호 통신 마비
* 키 배포 센터가 공격의 대상이 될 우려
3) Diffie-Hellman 키 교환
- 암호 통신을 원하는 두 사람이 있다면 정보를 교환함 (이 정보는 공격자에게 노출되어도 됨)
- 두 사람은 교환한 정보를 가지고 동일한 키를 각각 생성 (공격자는 같은 키를 만들 수 없음)
4) 공개 키 암호 적용
* 공개 키는 [암호화 키] ≠ [복호화 키]
* [암호화 키] 를 가지고 있는 사람이라면 누구든지 암호화 할 수 있음
* 하지만 [암호화 키] 를 가지고 있어도 복호화 할 수는 없음
* 복호화 할 수 있는 것은 [복호화 키] 를 가지고 있는 사람 뿐임
* 수신자는 미리 [암호화 키] 를 송신자에게 알려줌 (공격자에게 알려져도 무방)
* 송신자는 그 [암호화 키] 로 암호화해서 수신자에게 전송
* 암호문을 복호화할 수 있는 자는 [복호화 키] 를 가지고 있는 사람(수신자)뿐
이렇게하면 [복호화 키] 를 수신자에게 배송할 필요가 없음
-> 키 배송 문제 해결
7. 공개 키 암호의 문제점
:공개 키 암호(비대칭암호)는 대칭 암호의 문제점을 해결하기 위해 고안된 암호방식이다. 하지만 공개 키 암호로도 해결할 수 없는 문제들이 있다.
● 공개 키의 인증에 관한 문제
- 입수한 공개 키의 진위를 판단할 필요
- 중간자 공격 (man-in-the-middle attack)
ex) 중간자 공격 절차
1) 송신자는 수신자의 공개 키 요청
2) 공격자는 송신자의 요청을 도청
3) 수신자는 자신의 공개 키를 송신자에게 전송
4) 공격자는 수신자의 이 메일이 송신자에게 도달하지 못하도록 하고, 수신자의 공개 키를 보존
5) 공격자는 자신의 공개 키를 수신자의 공개 키라고 속여서 송신자에게 전송
6) 송신자는 자신의 메시지를 수신자의 공개 키(실은 공격자의 공개 키) 로 암호화
7) 송신자는 암호화한 메시지를 수신자에게 전송
8) 공격자는 송신자의 암호 메일을 갈취해서 자신의 개인 키로 복호화하고 평문을 확보
9) 공격자는 송신자의 행세를 하며 위조 메일을 만들고 위의 단계 4)에서 보존해 둔 수신자의 공개 키를 써서 이 위조 메일을 암호화하여 수신자에게 전송
10) 수신자는 받은 암호 메일을 자신의 개인 키로 복호화하고 메일을 읽게 됨
● 공개 키 암호의 속도
- 대칭 암호에 비해 처리 속도가 몇 백배나 늦음 (목적에 따라 대칭 암호와 공개 키 암호 두가지 혼합하여 사용)