알고리즘/알고리즘 도감
공개키 암호 방식
개발 초보
2022. 6. 26. 15:29
지난 글 : [알고리즘/알고리즘 도감] - 공통키 암호 방식
공개키 암호 방식은 암호화와 복호화에 서로 다른 키를 사용하는 방식이다. 암호화와 복호화에 다른 키를 사용한다는 의미로 '비대칭 암호'라고 부르기도 한다. 암호화에 사용하는 키를 '공개키', 복호화에 사용하는 키를 '비밀키'라 한다.
1
공개키 암호 방식을 사용한 데이터 교환의 전체적인 흐름이다.
1. A가 B에게 인터넷을 통해 데이터를 전송하려 한다.
2. 먼저, 데이터를 전달받는 B가 공개키 P와 비밀키 S를 만든다.
3. 그 중 공개키를 A에게 전송한다.
4. A는 B에게서 받은 공개키를 사용해 데이터를 암호화한다.
5. A는 암호문을 B에게 전송, B는 받은 암호문을 비밀키를 사용해 복호화한다. B는 원 데이터를 얻는다.
2
공개키와 암호문 모두 인터넷을 통해 전달되므로 악의를 가진 제삼자가 훔쳐볼 가능성이 있다. 하지만 공개키로는 암호문을 복호화할 수 없기에 X는 원 데이터를 얻을 수 없다.
3
이외에도 공개키 암호 방식은 불특정다수 간 데이터 교환이 쉽다. 구체적으로 확인하자.
1. B가 미리 공개키와 비밀키를 준비했다.
2. B에게 데이터를 전송하고픈 사람이 여러 명인 경우, 데이터를 전송하는 사람은 B가 공개한 공개키를 가져온다.
3. 전송하고픈 데이터를 공개키로 암호화한다.
4. 암호문을 B에게 전송한다.
5. B는 받은 암호문을 비밀키를 사용해 복호화한다. B는 원 데이터를 얻는다.
이처럼 데이터를 전송하는 상대방 모두가 키를 가지고 있지 않아도 된다. 또, 데이터를 받는 쪽만 노출되지 않은 키를 소유하면 되므로 안전성도 높다.
4
한편, 공개키 암호 방식에서 공개키의 신뢰도에 관한 문제가 있다. B가 공개키와 비밀키를 만든 시점으로 돌아간다.
1. A가 B에게 보낸 데이터를 훔쳐보려는 X가, 공개키 Px와 비밀키 Sx를 만든다. (B가 만든 키는 P, S)
2. B가 공개키 P를 A에게 보낼 때, X가 공개키 P를 자신이 만든 Px로 바꾼다.
3. 공개키 Px를 A에게 전달한다. 공개키 자체에는 누가 작성한지 표시할 수단이 없기에 A가 받은 공개키가 바뀐
것임을 알 수 없다.
4. A는 공개키 Px로 데이터를 암호화한다.
5. A가 암호문을 B에게 보내려 할 때 X가 암호문을 가로챈다.
6. 이 암호문은 X가 만든 공개키 Px로 암호화되었기에 X가 가진 비밀키 Sx로 복호화할 수 있다.
7. 그런 후 X가 B의 공개키인 P로 데이터를 암호화 한다.
8. X는 작성한 암호문을 B에게 전달한다. 이 암호문은 B가 만든 공개키 P로 작성한 것이므로 B는 자신이 갖고 있는 S로
아무런 문제 없이 복호화할 수 있기에 도중에 데이터가 노출된 것을 모른다. 이처럼 도중에 공개키를 바꿔
데이터를 가로채는 기법을 'man-in-the-middle 공격'이라 한다.
참고 서적 :