PKI

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

1. PKI?

PKI란 Public-Key Infrastructure 의 약자로, 공개키 암호 시스템을 이용한 보안서비스를 효율적이고 광범위하게 이용할 수 있도록 해주는 제반 환경으로, 기술, 서비스, 사회문화적 파급 효과, 법, 제도, 교육 등을 포함하는 인증 메커니즘을 일컫는다.

2. 왜 공개키 암호방식인가?

기존의 DES등의 비밀키 암호방식으론 N명의 사용자들이 안전한 통신을 하기 위해선 2^N개의 비밀키가 안전하게 교환이 되어야 가능하지만, 공개키 암호방식을 이용하면 2N (공개키 + 비밀키)개의 키만 교환되면 안전한 통신이 가능하다. 암호화 방식에 관해선 암호을 읽어보자.

3. 인증서란 무엇인가?

공개키를 이용한 통신을 하기 위해선 상대방의 공개키를 입수하여 암호화를 수행해야 한다. 이때 공개되어 있는 공개키가 과연 정당한 공개키인가 라는 점이 문제가 된다. 즉, C라는 사람이 인터넷에서 A란 사람의 공개키를 구해다가 정보를 암호화해서 전송했는데 알고보니 그 공개키는 B란 해커가 자신의 공개키랑 바꿔치기 한 것이라면 그 해커가 암호화된 정보를 몰래 빼내서 자신의 비밀키로 해독 할 수 있다는 얘기가 된다. 여기에 공개되어 있는 공개키가 정당한 공개키인가 인증해 주는 인증서의 필요성이 있다. 인증서에는 사용자를 특정할 수 있는 이름을 포함한 신상정보와 공개키가 포함되어 있으며 인증기관에 의해 서명되어 있다.

4. 인증서를 이용한 통신


이제 인증서만 확실한 것이라면 상대방의 공개키를 믿을 수 있게 되었다. 이제 마지막 문제는 이 인증서가 인증기관이 발행한 것이 맞다고 확신할 수 있느냐라는 것이다. 이 문제를 해결 하기 위해 인증기관에서는 인증서를 발행할 땐, 인증기관의 비밀키로 인증서를 암호화해서 보내게 된다. 이 암호화된 인증서를 인증기관의 공개키로 해독하면 되는데 이 공개키를 가진 인증서는 보통 인증서 관련 프로그램을 설치할 때 묻어서 설치하게 됩니다. 또는 MS와 돈을 내고 제휴를 하게 되면 MS에서 윈도우즈에 심어지게 된다. 사실상 이 방법이 가장 안전하지만 너무 비용이 많이 들기 때문에 Verisign등의 몇몇 Major 업체들만 이 방법을 사용하고 있다.

정리 하자면,

1. 서로 안전한 통신을 하기 위해 정확한 공개키가 필요하다.
2. 이 공개키를 확신하기 위해 인증서를 이용한다.
3. 인증서는 인증기관이 디지털 서명을 하며 인증기관의 인증서는 프로그램 설치시 또는 OS에 묻어둔다.
4. 은행와 고객는 서로의 공개키를 알고 또 믿기 때문에 안전하게 통신 할 수 있다.

5. 그럼 우리가 인증서를 사용할 때 입력하는 암호는 뭘까

위에서 보았듯이 인증서는 인증기관에서 발급하며 비밀키와 공개키도 인증기관에 의해 생성된다. 하지만, 우리가 인터넷뱅킹을 할 땐 따로 미리 우리가 지정한 암호를 입력한다. 이 암호는 무엇에 쓰는 물건일까?

우리가 인증기관에서 받은 공개키와 비밀키는 PC의 각종디스크 또는 USB드라이브에 저장된다. 만약 사용하는 PC가 해킹 당하거나 USB드라이브를 분실 할 경우 안의 비밀키와 인증서가 공개된다면 보안에 커다란 문제가 발생하게 된다. 이를 방지하기 위해서 인증서를 처음에 발급받을 때 비밀키를 한번 더 암호화 하여 저장 한다. 즉, 사용자에 의해 봉인을 하는 것이다. 이 암호는 사용자가 임의로 지정하게 되며, 나중에 비밀키를 필요할 때 이 암호를 이용하여 봉인을 풀고 사용하게 되는 것이다

6. Q&A


PGP도 PKI의 방식에 들어가나요? -갈라드리엔
PGP는 방식이라기 보다는 프로그램 이름입니다. 공개키 알고리즘(RSA)를 사용하는 것은 맞습니다. [http]CERTCC-PGP에 설명이 잘 되어 있습니다. --



"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>