공개 키 암호

공개 키 암호 방식은 보통 공개 키로 암호화 하고 개인 키로 복호화 하는 알고리즘이다. (반대의 경우도 가능)

공개 키는 말 그대로 모두에게 공개할 수 있는 키이고 개인 키는 오로지 자신만 가지고 있어야 하는 키이다.
대표적인 공개 키 암호 알고리즘으로는 공인인증서나 전자 서명에 사용하는 RSA 가 있다.

간단히 예를 들어보자.

CEnA라는 회사가 세금계산서를 국세청에 전송하려고 한다.
이 때 세금계산서는 타 회사에 들키고 싶지 않은 원자재 가격 거래 명세가 들어 있다고 하자.
CEnA는 세금계산서를 암호화 하기로 하고 국세청의 홈페이지에서 국세청 공개 키를 다운받아 세금계산서를 암호화 한다.
이 암호화된 세금계산서를 인터넷을 통해 국세청으로 전송한다.
국세청은 자신의 공개 키로 암호화된 세금계산서를 자신의 개인 키로 복호화 하고 실제 내용을 데이터베이스에 기록한다.
이 과정에서 CEnA의 원자재 거래 가격을 궁금해 했던 경쟁 회사 해커가 인터넷으로 전송된 패킷을 엿보았지만 국세청의 개인 키로만 암호문을 해독할 수 있어서 그 내용을 알아내지 못한다.

이렇게 공개 키 기반 암호 방식은 전송자가 비밀스런 내용을 수신자의 공개 키로 암호화하여 안전하게 전송하고자 할 때 쓰인다.
또한, 부인 방지 기능도 있는데 이 것도 간단히 예를 들어 보자.

CEnA의 co.kr 도메인을 빼앗긴데 대해 앙심을 품은 좀 세나(Johm cena)는 CEnA에게 피해를 주기 위해 CEnA 이름으로 가짜 세금계산서를 작성해서 국세청에 허위로 신고했다.
CEnA가 국세청에 뭔가 잘 못 됐다고 하자, 국세청은 세금계산서를 보낼 때 CEnA가 보낸 것이 확실하고 그 내용에 대해 부인할 수 없는 부인 방지 기능을 넣어서 전송하라고 한다.
CEnA는 그 지침에 따라 세금계산서를 암호화 할 때 국세청 공개 키가 아닌 CEnA 개인 키로 암호화를 한다.
그리고 암호화된 데이터에 CEnA의 공개 키를 첨부한 후 다시 국세청의 공개 키로 암호화 하여 국세청에 전송한다.
이를 받은 국세청은 국세청 개인 키로 복호화 하여 세금계산서 암호문과 CEnA의 공개 키를 추출한다.
그리고 CEnA의 공개 키로 세금계산서 암호문을 복호화한다.

이렇게 하면 CEnA 개인 키로 암호화된 암호문은 CEnA 공개 키로만 복호화 할 수 있고 CEnA 개인 키는 CEnA 본인만 가지고 있기 때문에 타인이 조작해서 전송했다고 거짓을 말할 수 없다.

그런데 어떻게 공개 키로 암호화 한 것을 개인 키로 복호화 할 수 있을까?

바로 소수의 특성을 이용한 수학적 방법 덕분이다.
공개 키와 개인 키는 수학적 연관이 있도록 계산되어지며 RSA 알고리즘으로 예를 들면
공개 키나 개인 키 둘 중 하나로 원문 값에 승수를 구한 후 mod N (공개 키와 개인 키를 생성하기 위하여 어떤 두 소수를 곱한 값)을 하여 나온 값을, 반대로 다른 키로 승수를 구한 후 mod N을 계산하면 원문 값과 같은 값이 나온다.

N은 어떤 두 소수 p 와 q를 곱한 값이고 (N = pq)
공개 키(e)와 개인 키(d)는 수학적 연관이 있도록 계산되어진 값이라고 하자. 이 원리는 너무나도 수학적인 방법이므로 내 수준으로는 이해 불가이다.
암호문(c) = (원문(m) ^ e) mod N
원문 = (암호문(c) ^ d) mod N
이런 공식으로 메시지를 암호화 하고 복호화 할 수 있다.

국세청이 다음과 같은 공개 키와 개인 키를 생성했다고 하자.
N = 119 (p=17, q=7 즉 17 * 7)
e = 5, d = 77 (p와 q 그리고 N에 의해 계산되어진 수학적 연관이 있는 값)
공개 키는 이며 CEnA가 국세청에 20 이란 숫자를 암호화하여 보내기 위해 아래와 같이 c를 계산한다.
c = (m ^ e) mod N에 의해 c = (20 ^ 5) mod 119 즉, 90 이 나온다.

이 c를 받은 국세청은 자신의 개인키 d를 이용하여 아래와 같이 복호화 한다.
m = (c ^ d) mod N에 의해 m = (90 ^ 77) mod 119 즉, 20이 나온다.

부인 방지 기능에서처럼, 반대로 개인 키로 암호화하고 공개 키로 복호화 계산도 해보자.
[암호화] c = (20 ^ 77) mod 119 = 97
[복호화] m = (97 ^ 5) mod 119 = 20

m에 다른 값을 넣어 윈도우 계산기로 각자 계산해보자. 단 m은 N보다 작은 수여야 한다.

]]>

도큐멘트 에 올린 글

댓글 남기기