공개키의 정의
- 공개키 암호화는 두개의 키를 사용. (공개키와 개인키)
A라는 키로 암호화했으면 B로 복호화하고, B라는 키로 암호화했으면 A로 복호화하는 형태
공개키: 모든 사람이 접근할 수 있는 키(공개)
개인키: 키 소유자만 접근할 수 있는 키(비밀)
공개키의 특징
- 두개의 키 중하나는 암호화에, 다른 하나는 복호화에 사용됨
- 알고리즘과 암호키(공개키)를 알아도 복호키(개인키)를 계산하는 것은 계산상 불가능해야 함.
공개키 암호화 방식에서의 암,복호화 시나리오
사용자 A가 사용자 B에게 비밀 메시지를 보내려하며, 비밀메시지는 사용자B만 알아 볼 수 있어야하는 과정을 살펴보자.
1. 사용자 A는 사용자B의 공개키를 가지고 평문 M를 암호화하여 C이라는 암호문을 만든다.
(사용자 B의 공개키는 말 그대로 공개키이기 때문에, SNS로 전파되었다고 가정. A뿐만아니라 모든 사람들이 획득할
수 있는 키.)
2. 사용자 A는 암호문 C를 사용자 B에게 전송한다.
3. 사용자 B는 수신된 암호문 C를 자신의 개인키(사용자 B의 개인키)로 C를 복호화한다.
(B의 개인키는 자기 자신만 가지고 있을 수 있다.)
4. 사용자 B는 복호화된 평문 M를 획득한다.
즉, 사용자 B의 공개키로 암호화된 암호문은 사용자 B만이 복호화가 가능하단 소리이다.
또한, 대칭키 암호화 시스템에서는 키 분배를 위한 안전한 채널(KDC)의 구성이 핵심이었고, 키 관리에 있어서 KDC를 전적으로 신뢰해야는 문제점이 존재했었지만, 공개키 암호화 시스템에서는 이러한 문제들을 일정부분 해결을 했다 볼 수 있다.
Who can see the B's public key?
B의 공개키는 모두가 볼 수 있다. B의 개인키만 노출되지 않으면, 상관이 없음.
Who can see the B's private key?
B의 개인키는 자기 자신만 볼 수 있다.
Only B can decrypt the ciphertext C. Why?
사용자 B의 공개키로 암호화 했기 때문에, 사용자 B의 개인키로만 복호화 할 수 있다.
공개키 암호화 방식에서의 문제점
지금까지 공개키 암호화 시나리오를 통해 공개키 암호화 방식에서의 암복호화를 살펴보았다. 일단 사용자 B의 입장에서 생각해보자. 앞에서 사용자 B는 사용자 A로부터 암호문 C를 수신하고 자신의 개인키로 복호화하여 평문 M을 얻어냈다.
하지만 여기서 문제가 발생한다. 사용자 A로부터 온 암호문C에서 얻어낸 평문 M이, 진짜 사용자 A로부터 온 것임을 확신 할 수 있냐는 얘기다. 정답은 No다. 왤까?
그 이유는 공개키가 갖는 특성 때문에 그렇다. 공개키는 모든 사람들이 접근할 수 있고 알려질 수 있는 키다. C라는 암호문이 B에게 전달이 됬을 때, B의 개인키로 암호문을 풀어볼 순 있지만, A가 암호화한것인지 다른 제3자인 D혹은 E라는 사용자가 암호화한것인지를 모른단 소리다.
즉, 공개키의 모든 사람들이 접근할 수 있다는 특성 때문에, B에게 보낼수 있는 암호문은 모두가 될 수 있다는 것이다.
공개키 암호화 방식에서의 전자서명
바로 앞에서 공개키 암호화방식에서 발생하는 문제점에 대해 설명하였다. 이러한 문제점을 해결할 수 있는 방법은 전자서명을 하는 것이다. 이 메시지는 내가 만들었고, 내가 보냈다라는 것을 다른 사람에게 입증시키고 다른 사람이 봤을 때도 아, 이 메시지는 000가 만든 메시지구나라고 알게 하는 것이다.
공개키 암호화 방식에서의 전자서명 생성과 검증 방법을 알아보자.
일단 공개키 암호화 방식에서의 전자서명 생성과정이다.
1. 사용자 A는 원문M을 사용자 B의 공개키로 암호화하여 암호문 C를 만든다.
2. 사용자 A는 암호문 C를 자신의 개인키로 암호화해 전자서명 S를 만든다.
3. 사용자 A는 사용자 B에게 전자서명 S를 보낸다.
4. 전자서명 S를 수신한 사용자 B는 사용자 A의 공개키로 복호화한 다음, 자신의 개인키로 또 복호화를 해 평문 M을
획득한다.
하지만, 여기서 끝이 아니다. 사용자 A가 사용자 B에게 전자서명 S를 보냄으로써 사용자 B는 두 번의 복호화를 통해 평문 M을 획득할 수 있겠지만, 진짜 사용자 A로부터 온 메시지인지 검증을 하지 않았다. 전자서명 검증을 하려면 사용자 A가 사용자B에게 전자서명 S뿐만 아니라 암호문 C도 함께 보내주어야 한다.
공개키 암호화 방식에서의 전자서명 검증
전자서명 검증을 하려면 사용자 A가 사용자B에게 전자서명 S뿐만 아니라 암호문 C도 함께 보내주어야 한다. 전자서명 검증 과정을 포함한 순서를 살펴보자.
1. 사용자 A는 원문 M를 사용자 B의 공개키로 암호화하여 암호문 C를 만든다.
2. 사용자 A는 암호문 C를 자신의 개인키로 암호화해 전자서명 C를 만든다.
3. 사용자 A는 사용자 B에게 전자서명 S와 암호문 C를 함께 보낸다.
4. 전자서명 S와 암호문 C를 수신한 사용자 B는 전자서명 S를 사용자 A의 공개키로 복호화하고 자신의 개인키로 한번
더 복호화 하여 평문 M을 획득한다.
4-1. 또한 사용자 B는 아까 전자서명 S과 함께 얻은 암호문 C도 자신의 개인키로 복호화 하여 M` 을 얻는다.
5. 전자서명 S로부터 얻은 M과 암호문 C로부터 얻은 M`을 대조해 일치하는지 확인한다.
6. 두개의 값이 일치해야만 비로소 전자서명 검증에 성공한 것이다.
'Cyrpto > ECSEC' 카테고리의 다른 글
[암호학] 디지털서명 (0) | 2021.10.18 |
---|---|
[암호학] 사용자 인증 (0) | 2021.10.17 |
[암호학] 메시지 인증 (0) | 2021.10.17 |
[암호학] 대칭키 암호 (0) | 2021.10.15 |
[암호학] 암호학 개요 (0) | 2021.10.15 |