[譯: 윤봉환, el@linuxlab.co.kr] |
||||||||||||||||||||||||||
개요 GnuPG는 통신상에서 혹은 데이터를 저장할 때 보안을 지키는 도구이다. GnuPG는 데이터를 암호화하고 전자 서명을 만들 수 있으며 암호화 도구로 유명한 PGP를 완벽하게 대신할 수 있다. 하지만, IDEA 알고리듬을 전혀 이용하지 않으므로 아무런 제한 없이 쓸 수 있다. GnuPG는 공개키 방식의 암호화 기법을 사용하므로 더욱 안전하게 통신할 수 있다. 공개키 시스템에서는 사용자마다 비밀키와(private key) 공개키를 쌍으로 가지고 있다. 사용자의 비밀키는 노출되지 않고 안전하게 보관되며 공개키는 사용자와 통신하려는 다른 이들에게 나눠줄 것이다.
Features ·PGP를 완전하게
대체
설치 gnupg 소스 파일을 ./usr/local/ 디렉토리나
설치하려는 디렉토리로 옮겨간다.(cd 명령) [root@dragon gnupg-1.0.4]# make check
[root@dragon gnupg-1.0.4]# make install
[root@dragon gnupg-1.0.4]# strip /usr/bin/gpg
Common Commands
1: 새로운 키 쌍 만들기 먼저 새로운 키-쌍을(공개키와 비밀키) 만들어야 한다. 명령행 옵션 --gen-key는 새로운 키 쌍을 만든다. Step 1
Step 2
키 쌍을 만들어 내는 동안 GnuPG가 물어보는
다양한 질문들에 대해 알아보자.
GnuPG는 종류가 다른 키 쌍을 만들어 낼 수 있다. 여기에는 세 가지 옵션이 있다. DSA 키 쌍은 서명을 만들 때에만 사용할 수 있는 1차 키 쌍이다. ElGamal 하위 키 쌍은 암호화하는데 쓰인다. 두 번째 옵션은 첫 번째 옵션과 비슷하지만 오직 DSA 키 쌍만 생성한다. 옵션 4[1]은 서명과 암호화에 모두 사용할 ElGamal 키 쌍 한가지를 만든다. 대개 기본 옵션을 사용하면 좋다. 이제는 키 크기를 골라야 한다. DSA 키 크기는
반드시 512에서 1024 비트 사이여야 하며, ElGamal 키는 어떤 크기라도
상관없다.
긴 키를 선택하면 좋은 점과 나쁜 점이 있는데: 좋은점 : 1) 긴 키는 무식한 공격에 대해
보다 안전하다. 기본 키 크기는 거의 모든 경우에 적당하며 키
크기를 선택한 다음에는 결코 바뀌지 않게 할 수 있다. 마지막으로
만료기간을 골라야 한다. 옵션 1을 선택했다면 만료기간은 ElGamal과
DSA 키 쌍 모두에 적용된다.
대부분 사용자들에게 만료 기간을 정해 두는 것은 어울리지 않는다. 키가 만들어진 다음에도 기간을 바꿀 수 있지만 여러분의 공개키를 가지고 있는 다른 사용자들에게 바뀐 것을 알리기 어려울 수 있으므로 만료 기간은 조심스럽게 선택해야 한다. 여러분은 반드시 키 패러미터에 사용자 ID를
넣어야 한다. 사용자 ID는 키가 만들어지는 동안 실제 사람과 연관시킬
때 사용된다.
GnuPG는 여러분이 소유한 주 키와 하위 키를
보호하기 위해 비밀문구(passphrase)를 요구한다.
비밀문구(秘密文句) 길이에는 제한이 없다. 보안적 관점에서 비밀키를 해제하기 위한 passphrase는 GnuPG의 취약점 가운데 하나이므로(그리고 다른 공개키 암호화 시스템에서도) 구문을 매우 조심스럽게 선택해야 한다 .이상적인 비밀문구는 사전에 나와있는 단어를 사용하지 않고 알파벳 문자와 알파벳이 아닌 문자들을 조합한 문자열이다. 좋은 비밀문구는 GnuPG 자신의 보안에 매우 중요하다.
2: 인증 폐지 증명 여러분이 사용할 키 쌍이 만들어진 다음에는
바로 "--gen-revoke" 옵션을 덧붙여서 주 공개키에서
사용할 폐지 증명을 만들어야 한다. 여러분이 설정한 비밀문구를
잊었거나 여러분의 비밀키가 훼손되거나 잃어버렸을 때 폐지 증명은
여러분이 나눠준 공개키가 더 이상 쓸모 없다는 것을 다른 이들에게
알리는 데 쓰인다.
mykey에는 여러분이 앞서 만든 주 키 쌍의 키
ID를 넣거나, 키 쌍을 식별하기 위해 넣은 사용자 ID 일부를 넣는다.
생성된 증명은 revoke.asc라는 이름을 가진 파일에 저장된다. 폐지증명은
다른 이들이 접근할 수 있는 디렉토리에 두지 않는다. 아무나 이
파일에 접근할 수 있다면 누구나 폐지 증명을 출판할 수 있을 것이고
일치하는 공개키를 추출해 낼 수도 있을 것이다.
3: 키 목록 여러분의 공개키를 목록으로 만들어 고리에 걸어
두려면 명령행에서 --list-keys 옵션을 사용한다.
4: 공개키 추출하기 여러분 홈페이지나 인터넷에 있는 키 서버, 혹은 다른 방법들을 이용해서 공개키를 배포할 수 있다. 여러분에게 편지를 보낼 사람에게 공개키를 보내기 전에 먼저 추출해야 한다. 명령행에서 --export 옵션을 사용한다. 추출하려는 공개키를 지정하는 옵션을 덧붙인다. 바이너리 포맷으로 공개키를 추출하려면 아래
명령을 사용한다:
ASCII 문자들로 바꾸어 공개키를 추출할 때에는
아래 명령을 사용한다:
"--export"는 암호화된 공개키 열쇠고리 파일에서 공개키를 뽑아낸다. "-armor"는(역자가 테스트한 1.0.4 버전에서는 --export -a 또는 --export --armor 옵션을 사용한다) 전자우편이나 웹 페이지를 통해 공개키를 배포할 수 있도록 ASCII 문자들로 구성된 출력물을 생성하며 "> kapil-key.asc"는 출력된 결과를 파일로 저장한다. ASCII 문자들로 구성된 출력물을 그저 화면상으로
보기만 한다면 다음 명령을 사용한다:
5: 공개키 가져오기 여러분의 키 쌍이 만들어졌으면, 그 것을 공개
열쇠고리(public keyring) 데이터베이스에 넣을 수 있다. 믿을 수
있는 상대가 보내는 모든 키들을 공개 열쇠고리에 걸어 두고 필요에
따라 암호화와 인증 통신에 사용할 수 있다. 공개키는 --import
옵션을 이용해서 여러분의 공개 열쇠고리에 보탠다.
"filename"은 배포하는 공개키 이름이다.
예를 들어:
위 예문은 맨드레이크 리눅스 회사에서 배포하는 공개키 파일 "mandrake.asc"를 인터넷 사이트로부터 가져와서 우리 열쇠고리에 더한다.
6: 키 비준하기 키를 가져왔으면 먼저 비준(批准)과정을 거쳐야
한다. 키는 핑거프린트(fingerprint)를 검사해서 비준하고 검사한
키가 유효한 키임을 증명하기 위해 서명한다. 키 핑거프린트는 --fingerprint
옵션을 이용해 쉽게 볼 수 있다.
UID는 공개키 배포자의 이름 가운데 일부이다.
예를 들어:
위 예문에서 맨드레이크 핑거프린트를 검사했다. --fingerprint 옵션을 이용해 추출한 키 핑거프린트는 키를 배포한 원래 소유자를 통해 확인한다. 그 사람에게 직접 묻거나 전화나 혹은 보증할 수 있는 다른 방법을 통해 진짜 소유자에게 연락해서 확인할 수 있다. 여러분이 --fingerprint 옵션을 이용해 알아낸 핑거프린트가 원래 소유자의 것과 일치한다면 진짜 키를 가지게 된 것이다.
7: 키 서명하기 키를 가져와서 여러분의 공개키 데이터베이스에 넣고 확인한 다음에는 여러분의 서명을 덧붙일 수 있다. 키에 서명을 덧붙이는 것은 여러분이 그 키의 주인을 알고 있으며 믿을 만 하다는 것을 보증하는 셈이다. 그러므로, 100% 신뢰할 수 있을 때에만 서명해야 한다. 여러분이 위에서 열쇠고리에 덧붙인 Mandrake회사의
키에 서명하려면 다음 명령을 사용한다:
예를 들어:
8: 서명 검사하기 서명한 다음에는 여러분의 서명이 덧붙여졌는지 서명 목록을 확인할 수 있다. 다른 이들도 키를 보증하는 서명을 한다면 사용자 ID마다 하나 이상의 자가-서명(self-signatures)이 있을 것이다. "--check-sigs" 옵션으로 서명을 확인할 수 있다: 예를 들어:
9: 암호화하기와 해독하기 문서를 암호화하거나 해독하기는 매우 간단하다. mandrake에게 보낼 메시지를 암호화하려 한다면 mandrake가 배포하는 공개키를 이용해 암호화해서 메시지를 보낸다. 이 메시지는 오직 mandrake가 가지고 있는 비밀키를 통해서만 해독할 수 있을 것이다. 만약 mandrake가 여러분에게 메시지를 보내려 한다면 여러분이 배포한 공개키를 이용해서 암호화해야 한다. 물론, 여러분이 가진 비밀키만이 그 메시지를 해독할 수 있다. 우리 열쇠고리에 있는 공개키를 이용해 맨드레이크에게
보낼 자료를 암호화/서명하기 위해서는 아래 명령을 사용한다(당연히
편지 받을 이가 배포한 공개키를 미리 가지고 있어야 한다):
예를 들어:
옵션에 쓰인 "s"는 서명하기, "e"는 암호화하기, "a"는 암호화된 ASCII 형식으로(".asc"는 전자우편을 통해 보내기 위해서이다), "r"은 암호화에 사용할 사용자 ID 이름, <file>은 암호화하려는 자료이다: 메시지를 해독할 때에는 -d 옵션을 사용한다:
예를 들어:
"-d" 옵션은 여러분이 받은 암호화된 자료 <file>을 해독한다. [주의: 메시지/자료를 보낸 사람의 공개키가 여러분의 열쇠고리에 반드시 들어 있어야 한다]
10: 서명 검사하기 여러분의 공개키를 추출해서 배포한 다음에는,
당신이 암호화된 메시지를 보내더라도, 메시지를 받은 다른 이들이
그 메시지에 당신의 서명이 있는지 GnuPG --verify 옵션을 이용해
알아볼 수 있다.
"--verify" 옵션은 서명을 점검하는 옵션이고, 점검하려는 암호화된 자료/파일은 "<Data>" 자리에 써넣는다. 예를 들어:
몇 가지 쓰임새 1: 메일 메시지 암호화해서 보내기
GnuPG에 쓰이는 몇 가지 소프트웨어와 프론트엔드들: GPA http://www.gnupg.org/gpa.html GnomePGP http://www.geocities.com/SiliconValley/Chip/3708/gpgp/gpgp-intro.html# Geheimniss http://geheimnis.sourceforge.net/
pgp4pine http://pgp4pine.flatline.de/ MagicPGP http://www.physto.se/~p99jlu/MagicPGP.html
PinePGP http://www.megaloman.com/~hany/software/pinepgp/
더 많은 정보 http://www.gnupg.org/docs.html
맺음 보안에 신경이 쓰인다면 반드시 GnuPG를 사용해야 한다. GnuPG는 훌륭한 오픈-소스 프로그램 가운데 하나로 여러분의 보안 데이터를 암호화하고 해독하는 모든 기능을 가지고 있으며 GNU General Public License를 따르므로 어떤 제한도 없이 사용할 수 있다. GnuPG는 메일 메시지나 파일, 혹은 보안이 필요한 문서들을 암호화하는 데 사용할 수 있다. 또, 중요한 문서와 자료들을 네트워크로 전송할 때에도 사용할 수 있다. [주의: 버전 1.0.4 이전의 GnuPG에는 서명 점검과
관련된 보안버그가 있다. |