2013년 11월 26일 화요일

GnuPG를 Windows에서 편리하게 사용하기

자료출처: http://my.way.co.kr/way-board/way-board.php?db=SECURITY&j=v&number=8
작 성 자 : 임대호
작성일자 : 2001년 11월 11일


■ 목 차
   - 시작하며
   - WinPT, 다운로드와 설치
   - WinPT, 실행과 키 생성
   - WinPT, Key manager
   - WinPT, File manager
   - WinPT, Clipboard 명령
   - GPGOE


 ■ 시작하며

   필자는 3-4년 전부터 Outlook Express(이하 OE)를 이용해 메일을 관리해왔고, 더불어서 암호화나 서명이 필요한 경우 GnuPG를 써왔다.

   그런데 UNIX 기반 GnuPG는 명령행 입력방식이라서 서명이나 암호화 등의 작업들이 여간 번거로운 일이 아닐 수 없었기에 아주 특별한 경우가 아니면 GnuPG 쓰기를 기피하곤 했다.

   하지만 GnuPG를 Windows 시스템에서 손쉽게 사용할 수 있도록 하는 WinPT, 그리고 GnuPG를 OE에서 사용할 수 있도록 지원하는 GPGOE가 있어 Windows 시스템에서 OE로 메일을 관리하는 필자는 GnuPG를 더욱 가까이 할 수 있게 되었다.

   여기서는 WinPT와 GPGOE의 설치와 기본적인 사용법만을 다루기에 GnuPG에 대한 기본 지식이 없을 경우 글이 딱딱할 수 있을 것이다.  그러므로 GnuPG(또는 PGP)에 대한 설명이나 원리를 다음 홈페이지를 통해 먼저 습득하기 바란다.
     http://kldp.org/~yong/misc/gnupg/
     http://esperosun.chungnam.ac.kr/~hdpark/PGP/home.html

 ■ WinPT, 다운로드와 설치

   WinPT(Windows Privacy Tray)는 앞서 언급했듯이 Windows 시스템에서 GnuPG를 명령행 입력방식이 아닌 GUI 방식으로 이용할 수 있게 해주는 Frontend 프로그램이다.

   WinPT 홈페이지(http://www.winpt.org/)에 접속하여 최근 버전을 다운로드 하자.
   http://www.winpt.org/download.html

   WinPT의 실행을 위해서는 http://www.gnupg.org/에서 배포하는 GnuPG Win32판 바이너리 파일(gpg.exe)이 필요한데, 최근 WinPT 안정버전 중에는 GnuPG 바이너리와 Windows용 Installer가 포함되어 있어 별도로 GnuPG Win32판을 다운로드 할 필요가 없을 뿐더러 아주 손쉽게 설치까지 끝마칠 수 있다.

   필자는 위의 사이트에서 ftp://lcsweb.net/pub/winpt/winpt-0.5.0-installer.exe 파일을 다운로드해서 보통의 Windows용 프로그램과 마찬가지 방법으로 설치를 끝마쳤다.



■ WinPT, 실행과 키 생성

   [ 시작 - 프로그램 - WinPT - Windows Privacy Tray ] 아이콘을 크릭하면 우측 하단에 열쇠모양의 아이콘이 생길 것이다.

   만약 설치 후 처음 실행하는 거라면 자신의 키를 생성할 것인지 물을 것이다.  그러면 [예(Y)]라고 답하고 키를 생성한다.

   키 생성은 gpg 명령의 --gen-key 옵션을 실행하는 것과 같으며, Key manager를 통해 언제고 다시(또는 추가로) 생성할 수 있다.

   키 생성화면에서 입력할 항목과 입력할 내용은 다음과 같다.

   1. Subkey length(bits)
     키의 크기를 입력하는 부분으로 보통 "1024"로 입력하면 된다.

   2. User name
     자신의 이름을 영문으로 적어준다.  필자의 경우 "LIM Daeho"로 입력했지만, "Lim, Dae-ho" 등으로 특수기호를 입력해도 무방하다.

   3. Comment
     선택항목으로서 소속이나 별명, 홈페이지 등과 같이 간략한 설명을 곁들일 수 있다.
     본 항목은 입력하지 않아도 무방하다.

   4. Email address
     전자우편 주소를 입력한다.  필자의 경우 my@way.co.kr"로 입력했다.

   5. Set expire date
     키의 유효기한을 지정하는 부분으로서 특별한 기간(선거기간 등)에만 통용되길 원하는 경우 만료 기일을 지정하는 부분이다.  필자의 경우 비활성 상태 그대로 두었다.  그러면 만료기일이 없는 키가 된다.

   6. Passphrase
     암호문구를 가급적 8자 이상으로 입력한다.  이 암호는 자신의 비밀키를 이용해 서명하거나, 타인이 암호화해서 보낸 메일이나 파일을 확인할 때 주로 사용되는 것으로서 매우 중요하다.

   7. Repeat Passphrase
     암호문구를 명확히 하기 위해 다시 입력하는 부분이다.


   입력을 끝내고 [Start] 버튼을 누르면 조그만 창이 뜨면서 키가 생성될 것이다.
   키 생성이 끝나면 우측 하단에 열쇠모양의 아이콘을 확인할 수 있을 것이다.

   열쇠 아이콘에서 마우스 우측버튼을 누르면 WinPT의 각종 메뉴가 나열될 것이다.



■ WinPT, Key manager

   자신이나 다른 사람의 키를 등록하고 관리하는 메뉴다.

   자신의 새로운 키를 생성할 수도 있고, "GPG" 메뉴에서 GnuPG의 실행 옵션(UNIX의 경우 ~/.gnupg/options)을 조정할 수도 있다.

   Key manager가 실행되면 gpg 명령의 --list-key 옵션을 실행하는 것과 같이 등록된 키들이 창의 한복판에 나열된다.

   다른 사람의 공개키를 받아와서 Key 메뉴를 통해 Import 하면 키가 추가된다.
   아직은 WinPT가 보통의 Windows용 프로그램들보다 인터페이스가 좀 떨어지는 것은 사실이다.  키에 관한 변동 사항이 있으면 Key 메뉴의 "Reload keycache" 기능을 통해 변경된 내용을 다시 확인해야 한다.
   필자의 공개키(Public key)는 http://my.way.co.kr/publickey.asc 에 존재한다.
   다른 사람의 공개키를 파일로 저장한 후 Key 메뉴를 통해 Import 하거나, 그냥 키 내용을 Ctrl+C 등으로 복사한 후 Key manager 한복판에서 우측 마우스 버튼을 눌러 "Paste from clipboard"해도 Import 할 수 있다.

   자신의 공개키는 다른 사람에게 알려주어야 자신이 서명한 메일을 다른 사람이 확인 할 수 있고, 다른 사람이 자신에게 암호화된 메일이나 파일을 보낼 수 있다.
   사실 서명이나 암호화는 "메일"에 국한된 것이 아니다.  "메일" 보다는 차라리 "메세지"라고 해야 옳을 것이다.  정확히는 서명했거나 암호화한 메세지를 메일로 보내는 것이다.

   한복판에 나열된 키 중에서 자신의 키를 선택한 후 Key 메뉴의 Export를 통해 파일로 저장한다.(자신의 키는 공개키뿐만 아니라 비밀키도 보유하고 있기 때문에 Type에 pub/sec라고 나타날 것이다.)
   저장한 파일은 필자처럼 자신의 홈페이지에 올려두거나 원하는 사람에게 메일로 보내주면 되겠고, 더 나아가 pgp-public-keys@keys.pgp.net 등으로 메일을 발송해서 키 서버에 등록(http://www.pgp.net/pgpnet/email-help-kr 문서 참고)할 수도 있다.

   Import한 다른 사람의 키는 서명(Sign)을 해줘야 하는데, 보통 상대방의 손도장(Finger print)을 확인하고 서명을 해두곤 한다.  그러면 상대방의 키를 믿을만한 것으로 인정하는 것이다.



■ WinPT, File manager

   파일의 암호화<->해독 또는 서명<->서명확인 등의 기능을 수행하는 메뉴다.

   1. 파일 서명
     파일이 전송 과정이나 기타 이유로 변조되지 않았음을 증명하기 위해 자신의 비밀키(비밀키를 사용할 때는 항상 암호를 물어올 것이다.)로 원본 파일을 서명해서 별도의 서명파일을 만드는 기능이다.
     서명은 다음과 같은 절차로 진행된다.
     - File manager로 파일을 연다.
     - 파일을 선택한 후 Sign 메뉴를 실행한다.
     - 서명자(자신)를 선택하고 OK 버튼을 크릭한다.
       기본적으로는 바이너리 형태의 서명파일(sig 확장자)이 생성되기 때문에 공개된 곳(게시판, 메일링리스트 등)에 올리기 쉽지 않다.  그렇기에 하단의 Use ascii armor 옵션을 선택해 주는 것을 권한다.  이 옵션(ascii armor)을 선택하면 asc 확장자가 붙는다.
       보통 FreeBSD 보안권고 등이 이러한 방법으로 이루어지며, 보안권고문에 원본 파일과 서명파일을 다음과 같이 함께 공개한다.
       ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd.patch
       ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd.patch.asc

   2. 파일 암호화
     특정인만 파일의 내용을 알 수 있도록 그 사람의 공개키를 이용해 파일 자체를 암호화하는 기능이다.
     암호화는 다음과 같은 절차로 진행된다.
     - File manager로 파일을 연다.
     - 파일을 선택하고 Encrypt 메뉴를 실행한다.
     - 상대방의 공개키를 선택한다.
     - 원본파일에 gpg 확장자가 붙은 암호화된 파일이 생성된다.

   3. 파일 서명 확인
     누군가가 앞서 설명한 "파일 서명"을 통해 원본파일과 서명파일을 보내온 경우, 원본파일이 전송 과정이나 기타 이유로 변조되지 않았음을 상대방의 공개키를 이용해 확인하는 기능이다.
     서명 확인은 다음과 같은 절차로 진행된다.
     - 원본 파일과 서명파일을 동일한 경로에 저장한다.
     - File manager로 서명파일을 연다.
     - 서명파일을 선택한 후 Verify 메뉴를 실행한다.

   4. 파일 해독
     누군가가 앞서 설명한 "파일 암호화"를 통해 암호화된 gpg 파일을 보내올 경우, 이를 자신의 비밀키를 이용해 해독하는 기능이다.
     해독은 다음과 같은 절차로 진행된다.
     - File manager로 암호화된 gpg 파일을 연다.
     - 파일을 선택하고 Decrypt 메뉴를 실행한다.
     - gpg 확장자가 제거된 원본 파일이 생성된다.



■ WinPT, Clipboard 명령

   클립보드(Ctrl+C 등을 이용해 Windows 시스템의 임시 기억장소에 저장된 내용)에 저장된 메세지를 서명하거나 암호화, 해독, 서명확인 등을 행하는 기능으로서, Edit clipboard, Encrypt clipboard, Sign & encrypt clipboard, Sign clipboard, Decrypt/Verify clipboard 등의 메뉴가 존재한다.

   물론 바로 아래 존재하는 Current window 메뉴는 Clipboard 대신 현재 열려진 창의 메세지를 이용할 때 사용된다.

   1. Edit clipboard
     클립보드의 내용을 편집하는 메뉴다.  아마도 자주 쓰이지는 않을 것이다.

   2. Encrypt clipboard
     클립보드의 내용을 암호화하는 메뉴다.
     상대방의 공개키를 선택하면 즉시 암호화되어 다시 클립보드에 저장된다.

     "안녕하세요?"라는 내용의 클립보드 내용을 필자의 공개키로 암호화했을 때
     다음과 같은 내용이 클립보드에 저장될 것이다.
     그러면 필자 이외에는 누구도 원래의 메세지를 알기 어렵게 된다.

-----BEGIN PGP MESSAGE-----

hQEOAwUeDD74pJCjEAP+NHQLx8huUrHRPsKmoTHhY4xi4uNK653qVLiav0YGIIWj
0w8Uv84fWl5dUINkfAQ0KZlGmoWmwv76GyRqPIAGKmCKNc7TkgVGm2zxdTm3cvXo
30cK++roWb000Go6hRCXHsF5NtHT/fwgnlTce707IoAPoXHWE10cyV8SXnwe19cD
/A9kja77Cz2UavRqduQllKK4rVFcNheBiHuxtTQZC0tp0N+eD5v/7cz//cDWN2Ug
1UFre+KnltqTWN9+ReXgO2ylL2D1ocGYsq3Y/g06+ctVKFReTpqcXM5oWNiwVTRv
rUzSf1A9dk53oyaZQn1lXYrniFivi7T3QzBqY2DmT3Ax0kcBrquV6UnfRoj4VjHD
maYfAs8eEsKUAdfvnkj8SmFNITAsFqMajehLYcRIXjZW4QShG4YYUCHxOplyOxv7
4VWoerZfV9u0HA==
=jySM
-----END PGP MESSAGE-----

   3. Sign & encrypt clipboard
     클립보드의 내용을 서명한 후 동시에 암호화하는 메뉴다.
     "안녕하세요?"라는 내용의 클립보드 내용을 필자의 비밀키로 서명하고 A라는 사람의 공개키로 암호화했을 때 다음과 같은 내용이 클립보드에 저장되었다.
     이를 A에게 보내주면 A는 자신의 비밀키를 이용해 내용을 해독하고, 필자가 서명했음을 확인할 수 있다.

-----BEGIN PGP MESSAGE-----

hQEOA29PcQu24oIbEAP/RkAIqJYRtS8boD3hrCYZjYNTdmB2Xz4Jds0oLVpiYDS8
OescjnUD6HXU/acU5RXa/yD1HBV/DR3VW7qxiGgP12xXZYmn9Bd5IQ9Pa5U2YVc0
RK9xwC72/zCpFaLFV+zcwXJaSZrJHleYBISHbp7cd+pge5GJhvUApjIztHkSRsoD
/RfFDytgvMxc5uYAi19/QoSAvTOomYd2S9Z+SwpQgEYKSdtcT2hGnlC01QV/+WVI
FsVODf6qiqpxE3x15CLKvYkYM6jcwPONS6cRyfhK+H3o4/RRePsYGweb1FwYCgeu
rmYu1npIbG4yy5uiGdHS20rsnenWLJgGY14X+Cjo71hi0pEBjDISDzy2a6Z7Gpor
hEdrAxr5fI26UM5lTrkDDnmRDUrfYZQ7HNtEebYD73MH0hcr/+JELRxaMWMXeyMn
MR6enQIzXSjgjeILbLAEv2xM0u6XmKIA+gKHZwFzI86DYC8Wxoxn1KgilZ9XePfL
hX8sVQFWAEsQqSSqdTEUdzVTYZBwU4GPD9Ig0MpvxSvtFoVP
=iBVu
-----END PGP MESSAGE-----

   4. Sign clipboard
     클립보드의 내용을 서명하는 메뉴다.
     "안녕하세요?"라는 내용의 클립보드 내용을 필자의 비밀키로 서명했을 때 다음과 같은 내용이 클립보드에 저장되었다.
     여러분이 필자의 공개키를 등록해 두고 서명도 해두었다면 다음의 메세지는 필자가 작성해서 서명한 것이 분명하다는 것을 확인할 수 있을 것이다.
     암호화는 되어 있지 않지만 필자가 서명한 것만은 분명히 확인할 수 있기 때문에 뉴스그룹이나 게시판, 메일링리스트 등 공개된 곳에 글을 작성할 때 주로 사용된다.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

안녕하세요?
-----BEGIN PGP SIGNATURE-----

iD8DBQE77V9XFY2F2KWNzl8RAkw/AJ98VAitZxW7UKNiLeUsJwvEHqrDpQCfdz9k
m0tHy0TMS1o1Oz3Ylc6IDzM=
=NeFJ
-----END PGP SIGNATURE-----

   5. Decrypt/Verify clipboard
     암호화되어 있는 클립보드의 내용을 자신의 비밀키를 이용해 해독하고, 서명되어 있는 경우 서명자의 공개키로 서명을 확인하는 메뉴다.



■ GPGOE

   앞서 설명한 WinPT를 이용하면 메세지나 파일을 암호화<->해독 또는 서명<->서명확인 등이 가능하다.
   다시 언급하지만 WinPT는 GnuPG를 GUI 방식으로 더 손쉽게 이용할 수 있도록 도와주는 도구다.  아직은 부족한 기능(예를들어 Secret key Export 기능 등)이 있긴 하지만 머지않아 대부분 지원될 것이라 필자는 생각한다.

   그런데 WinPT만으로는 메일을 주고 받을때 미리 WinPT 메뉴를 통해 손수 암호화나 서명을 한 후 얻어진 메세지를 OE를 통해 보내야 하는 번거로운 작업이 요구된다.

   사람이 편하면 더 편해지고 싶어지듯이, 이러한 경우 필요한 것이 바로 GPGOE 라는 것이다.

   GPGOE(GnuPG Outlook Express Plug-in)는 Outlook Express를 이용할 때 자동으로 메세지에 서명을 추가하거나 메세지를 암호화할 수 있으며, 반대로 암호화된 메세지를 해독하거나 다른 사람이 서명한 메세지의 서명을 확인할 수 있게 해주는 아주 편리한 도구다.

   GPGOE도 마찬가지로 WinPT 사이트를 통해 배포되며, 다음 사이트에서 다운로드 할 수 있다.
   http://www.winpt.org/gpgoe.html

   필자는 위의 사이트에서 http://www.winpt.org/devel/gpgoe-0.2.0-dll.zip 파일을 다운로드해서 WinPT가 설치된 경로(C:\Program Files\WinPT) 밑에 gpgoe라는 경로를 만들어 그곳에 압축을 해제했다.

   사실 GPGOE 설치설명서(README.txt)에는 Windows 레지스트리에 GnuPG 설치경로 등을 지정하라고 되어 있지만, WinPT Windows Installer 버전을 설치했다면 이미 반영되어 있기 때문에 특별한 조치가 필요치 않다.

   GPGOEInit.exe 파일을 실행하고, OE를 실행하면 모든 준비가 끝난다.
   더 편해 지고 싶다면 GPGOEInit.exe 파일의 바로가기를 만들어서 WinPT와 함께 "시작메뉴"에 등록해두면 되겠다.

   새로운 메일을 작성할 때 나타나는 아이콘 중 "서명"과 "암호화" 아이콘이 바로 원하는 기능들을 자동으로 수행해 줄 것이다.  혹시 해당 아이콘들이 보이지 않으면 숨겨진 아이콘을 펼쳐보기 바란다.

   다른 사람이 보내온 메일이 암호화되어 있거나 서명되어 있으면 메일 제목을 더블크릭하면 확인이 가능하다.

   필자가 2001년 11월 3일 발표된 GPGOE-0.2.0 버전을 일주일 가량 사용해본 결과, 한가지 문제점을 발견했다.  TEXT 형식으로 메일을 작성할 때 일정 폭(기본 76byte) 이상의 경우 자동으로 줄바꿈 되는 기능이 OE에 들어 있는데, OE의 자동 줄바꿈 처리 이전에 GPGOE가 작동하기 때문에 자동 줄바꿈이 이루어진 경우 서명과 암호화가 제대로 이루어지지 않았다.  수신자가 서명을 확인하거나 메세지를 해독할 때 서명이 틀리다고 나타나는 등의 문제가 발생한다.  이 또한 빠른 시일 안에 해결되기를 기대한다.

홈페이지 jQuery 라이브러리에서 CVE-2019-11358 취약점 패치 여부 확인 방법

현재 홈페이지에서 사용 중인 jQuery 라이브러리가 CVE-2019-11358 취약점 패치를 적용했는지 확인하는 방법은 다음과 같습니다. 1. jQuery 버전 확인 홈페이지 소스 코드를 확인하여 jQuery 라이브러리 버전을 직접 확인합니다. 웹 ...