PGP

gpg15.png
GnuPG로 암호화 된 텍스트. 풀려면 암호화에 사용된 공개키와 대칭되는 비밀키가 필요하다.

Pretty Good Privacy, 암호학의 일대 혁명!! + NSA등 각국 정부기관의 적
디지털 포트리스 실사판

1 PGP의 의의

1.1 PGP의 개념 및 역사

암호학의 일대 혁명을 가져온 프로그램으로, 1991년 필 지머먼(Phil Zimmermann)이라는 프로그래머가 개발한 전자우편 암호화 프로그램과 그 파생작들을 말한다. 이 프로그램 전까지만 해도 암호화 기능은 정부나 군대, 그리고 정보기관의 전유물이었으나 PGP로 인해서 일반 사람들까지 암호가 퍼지게 되었다. 덕택에 개인 사용자가 암호를 쓴다는 것에열받은 미국 정부(+NSA)는 필 지머먼을 군수물자 통제법 위반[1]으로 조사하였으나, 나중엔 조사를 포기하게 된다.

여담으로 1997년 PGP 국제버젼인 PGPi 5.0이 개발되었고, 필 지머먼은 이를 국외로 수출하려고 했으나 당시 미국 정부는 암호화 프로그램을 무기로 간주하여 이를 저지한다. 이에 지머먼은 법률을 검토하던 중, 소프트웨어는 수출 금지 항목에 포함되어 있어도, 종이에 인쇄된 책은 수출에 제약이 없다는 점을 발견했다. 그리하여 총 6천여 페이지의 소스코드를 출력하여 12권의 책으로 묶었고, 이를 수출하고 국외에서 지원자를 모집하여 스캐너로 책 페이지의 이미지를 떠서 OCR을 통해 다시 프로그램 소스 코드로 변환하여 컴파일하는 대단한 삽질(...)을 통해 결국 해외 수출에 성공한다. 당시 70여명의 지원자가 있었다고 한다. 스캔과 OCR 변환, 빌드와 미국 국외에서 출시하기까지 걸린 총 시간은 1000시간 쯤 된다고 한다.(...) 이를 "PGPi Scanning Project"라고 부른다. 이후 개정판 버젼이 다시 이러한 과정을 거쳐 수출에 성공했으며, 미 정부가 1999년에 적성국가를 제외한 나머지 국가에 암호화 프로그램 수출을 허가하도록 법령을 수정하여 이러한 삽질은 더 이상 일어나지 않게 되었다. 같은 이유로 웹 브라우저에서 40비트 암호화를 쓸 수 밖에 없었던 한국에서는 SEED라는 128비트 키를 사용하는 독자적인 암호화 알고리즘을 개발해 ActiveX 형태로 적용했으며, 이 때부터 ActiveX와 함께하는 환장할 인증 시스템이 완전히 뿌리내리게 된다. 지금은 살짝 바뀌었지만 어차피 그게 그거잖아?

1.2 PGP의 원리

자세한 내용은 나무위키의 RSA 항목이나 비대칭키 암호화 또는 RSA에 대한 전문서적을 참고하라.

간단히만 설명하자면, 이메일 내용 자체를 암호화하여 오로지 보내는 사람과 받는 사람만이 그 원문(Plain Text)을 알 수 있도록 하는 암호화 방식을 말한다. 물론 이메일 서비스 제공자(Google, Yahoo, Outlook 등)는 이메일의 전송 과정에서 TLS를 적용하는 등의 기본적인 보안을 제공한다. 하지만 이메일 서비스 제공자 자체를 신뢰할 수 없거나[2], 법관이 발부한 압수수색 영장에 의해 수사상 필요로 인해 이메일 서비스 제공자가 이메일을 수사기관과 법원에 제출해야 하는 경우에는 이메일 내용이 그대로 노출 될 수밖에 없다.[3] 따라서 심지어 이메일 제공자 조차 이메일의 원문을 알 수 없도록 암호화를 할 필요가 있었고, 그것이 PGP이다.

공개키와 개인키를 통해 암호화와 복호화를 각각 개별적으로 수행한다. 공개키를 이용하여서 문서를 암호화 할 수는 있지만 그것을 복호하여 원래 문서로 되돌리는 것은 개인키를 이용해서만 가능하다. 따라서 공개키를 송신자에게 제공하여 송신전에 암호화를 수행하도록 하며 딱히 이것이 유출되는 것은 문제가 되지 않는다. 그래서 공개키라 부른다. 사실상 개인키로만 복호가 가능하므로 수신자가 가지고 있는 개인 키만 안전하게 보관이 가능하다면 상당히 높은 보안성을 유지할 수 있다.

1.3 기타

처음 개발되었을 때 개인 사용자한테는 무료였지만, 현재는 유료로 시만텍에서 판매하고 있다. 그러나 PGP의 한 갈래인 OpenPGP는 현재 인터넷 표준으로 자리매김 하였으며, 이를 이용한 GnuPG같은 여러 프로그램이 등장했다. 당연하게 윈도우나 맥, 리눅스 버전도 존재한다.

리눅스는 패키지 보관소(Repository)에 보관된 소프트웨어를 보관소의 GPG 키를 이용하여 패키지에 문제가 있는지 없는지 확인하며, 몇몇 포럼의 Geek들은 자신이 직접 글을 썼다는걸 증명하기 위해 PGP를 사용해 사인하거나 암호화하여 글을 작성하기도 하며, 이러한 글은 작성자의 공개키를 바탕으로 PGP를 통해 해독하여 본인인지 아닌지 확인할 수 있다.

2 PGP (GnuPG) 사용하기

리눅스는 대부분의 배포본에 기본적으로 설치 가능한 패키지 형태로 들어있다. 따라서 단순히 패키지 검색 후 설치하는 것으로 사용할 수 있다.

리눅스 이외에 많이 사용하는 다른 운영체제용으로, 다음의 링크에서 운영체제 별 주요 프로그램에 맞게 설정까지 해주어 편리하게 사용할 수 있는 설치형 패키지를 받을 수 있다.


Windows에서 PGP4Win, Mozilla Thunderbird, Enigmail을 사용하여 PGP 암호화를 하는 방법에 대해서는 원문(영어)이나 번역(한국어)을 참고하라.

2.1 안드로이드

안드로이드에서 PGP를 사용할 수 있는 오픈소스 애플리케이션은 세 가지가 있다.

이 중 기능이 가장 강력한 것은 GnuPG-cli를 통채로 이식한 GnuPrivacyGuard지만 업데이트가 2014년에 멈췄고 사용이 매우 불편하다. APG 역시 업데이트가 2014년에 멈췄다. OpenKeychain이 현재(2015년) 활발하게 유지, 개발, 보수가 이루어지고 있는 유일한 오픈소스 PGP 애플리케이션이다.

APG와 OpenKeychain은 K-9 이메일 애플리케이션과 연동하여 사용할 수 있다. 다만 업데이트가 미진한 APG는 차기 버전에선 빠질 예정.

2.2 iOS

iOS에서도 PGP를 사용할수 있다.

덤으로 둘다 OpenPGP.js를 사용한다.

3 PGP 공개키 서버

상대방의 이메일 주소를 가지고 공개키를 받을 수 있게 해 주는 서버. 물론 내 공개키를 제출하여 다른 사람이 검색하게 할 수도 있다.

  • PGP Global Directory: [1]
PGP 사에서 운영하는 키서버 군이다. 현재 주로 쓰이는 SKS keyserver과 분리되어 있는 것으며, 6개월에 한번 키를 인증하여 갱신하지 않으면 서버에서 키가 사라진다.
  • MIT Key Server: [2]
MIT 에서 독자적으로 운영하는 PGP 키 서버. 위 네트워크와 분리되어 있는 점이 특징. SKS 프로그램을 사용하는 키서버들과 연동된다.
  1. PGP의 강력한 암호화 기능이 테러리스트를 도울수 있다는게 주요 이유였다.
  2. 이메일 서비스 제공자가 악의적으로 범죄에 이용하는 경우는 물론이고, 서버의 보안상 결함으로 이메일 데이터베이스가 유출되는 사고도 있을 수 있다.
  3. 물론 압수수색 영장에 의한 서버의 압수수색이나 법원의 제출명령에 의한 자료제출은 모두 헌법과 법률에 근거가 있는 '적법절차'에 따른 것이다.
  4. 기업용 제품이기 때문에 개인이 사용하기에는 부적절할 수 있다.