* GNU Privacy Guard

 GNU Privacy Guard(GPG)는 가장 많이 사용되는 오픈 소스 툴의 하나이다. 이 툴은 www.gnupg.org에서 다운 받을 수 있다. 여기서는 모든 Unix 버전용 실행파일과 소스 코드를 다운받을 수 있다. GPG를 사용하면 파일과 e-mail 메시지를 암호화할 수 있다. 또한 공개키들을 import 하거나 export 할 수 있다. 이렇게 하면, PGP 및 GPG에서 생성한 키들을 검사해서, 다운로드 받은 tarball 파일과 RPM 파일이 올바른 파일인지 확인할 수 있다.

 * GNU Privacy Guard 사용하기.
 먼저 GPG가 설치되어 있는지를 검사한다.

pchero@MyNote:~$ whereis gpg
gpg: /usr/bin/gpg /usr/share/man/man1/gpg.1.gz

 이 때 GPG가 설치돼 있지 않다면, GPG를 www.rpmfind.net이나 www.gnupg.org/download.html에서 다운로드 후, 설치해야 한다.

 만약 데비안 혹은 우분투 시스템일 경우

$ sudo apt-get install gpg

 라고 입력한다.

 프로그램이 설치됐다면, 처음 할 일은 루트가 아닌 사용자의 메모리를 보호하는 것이다. 대부분의 리눅스 시스템에서 GPG는 SUID root 로 실행시켜야 한다. 모든 애플리케이션은 시스템에 메모리를 할당하는데, GPG는 이 메모리를 안전하게 보호해야 한다. 메모리가 보호받지 못한다면, 악의적인 사용자가 메모리 정보를 캡쳐한 다음 당신이 암호화하려는 내용의 정보를 빼낼 수 있을 것이다. 이렇게 메모리를 보호하기 위해, GPG는 메모리를 사용하기 전에 먼저 잠그는(lock) 일을 한다. 메모리를 잠그려면 root 권한이 필요하다. 이 메모리를 잠근 뒤에, GPG는 프로그램을 실행시킨 사람의 권한으로 돌아간다.

애플리케이션을 SUID root로 실행시킨다는 말은, 애플리케이션을 실행시킨 사용자가 root가 아니라도 root권한으로 실행시킨다는 뜻이다.

 그러나 기본적으로 GPG는 SUID root로 설치되지 않는다.
 이것을 setuid root로 만들려면 다음과 같이 한다.

1. 애플리케이션을 찾는다.(우분투의 경우 /usr/bin/gpg에 있다.)
2. su – 명령으로 root 계정으로 로그인한다.
3. chmod u+s /usr/bin/gpg 명령을 실행시킨다.

 그리고 다음의 명령을 실행해서 GPG동작에 필요한 디렉토리와 파일들을 생성해야 한다.

$ gpg –gen-key

 그 후, 다음의 명령어로 키 쌍(key pair)을 생성해야 한다.

$ gpg –genkey

 그러면 GPG는 키 유형을 선택하라고 물어볼 것이다. 여기서 선택할 수 있는 것은

 Digital Signature Algorithm(DSA)
 ElGamal(기본 알고리즘)
 DSA(서명만)
 ElGamal(서명과 암호화)

이다. 이들 옵션은 서로 다른 서명 및 암호화 알고리즘을 사용한다. 첫번째 옵션에서는 표준 Elgamal 키 분배 방법과 서로 다른 서명 및 암호화 알고리즘을 사용한다. 첫번째 옵션에서는 표준 Elgamal 키 분배 방법과 DSA를 사용하는데, 이를 이용해 서명을 하거나 데이터를 암호화한다.
 DSA는 기존에 사용하던 RSA와는 달리, 사용에 제한이 없다. 여기서 만약 문서를 서명하고 암호화하고 싶다면 DSA를 사용하면 된다. 대부분의 사람을 정보를 서명하고 암호화하는데 첫번째 옵션을 사용한다. 일반적으로, 첫번째(기본값)를 선택하는 게 좋다.

 그 다음, 키의 크기를 선택해야 한다. 키 크기의 기본값은 2048 bit인데, 보통은 이정도로 충분하다.

 다음은 키 만료 시간을 정하는 부분이다. 키가 1년까지만 유효하도록 설정하려면 1y를 입력하면 된다.

 마지막으로 유저 정보를 입력하는 부분이다.

 Real name : 이름을 입력하는 부분
 Email address : E-Mail 주소를 입력하는 부분
 Comment : 원하는 정보를 넣는다. (ex. GPG Signature)…

 그리고 입력한 정보가 맞는지 확인을 한 다음 비밀키를 생성하기 위한 passphrase를 입력한다. 이 passphrase는 최소한 6글자 이상이 되어야 하며, 물론 당연히 기억할 수 있어야 한다. 이 작업이 끝나면 GPG는 새 개인키를 생성한다. GPG가 끝나면 키가 생성됐고 서명됐다는 메시지를 받을 것이다.

 이제 GPG에서 계정키를 제대로 만들고 서명했는지 확인하는 데는 다음 명령을 실행한다.

 $ gpg –list-secert-key
 $ gpg –list-public-key
 $ gpg –list-sig

 위 명령들은 각각 비밀키와 공개키를 나열하고, 서명을 나열한다.

 다음으로 할 일은 취소 인증서(revocation certificate)를 만들어야 한다. 취소 인증서는, 비밀키를 삭제하고 새로 만들고 싶을 때 사용하는 인증서이다. 취소 인증서를 만드는 과정은 다음과 같다.

pchero@MyNote:~$ gpg –output revoke.asc –gen-revoke pchero21@gmail.com

sec  1024D/68B8F353 2007-11-15 Kim Sung-tae <pchero21@gmail.com>

Create a revocation certificate for this key? (y/N) y
Please select the reason for the revocation:
  0 = No reason specified
  1 = Key has been compromised
  2 = Key is superseded
  3 = Key is no longer used
  Q = Cancel
(Probably you want to select 1 here)
Your decision? 1
Enter an optional description; end it with an empty line:
>
Reason for revocation: Key has been compromised
(No description given)
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: “Kim Sung-tae <pchero21@gmail.com>”
1024-bit DSA key, ID 68B8F353, created 2007-11-15

ASCII armored output forced.
Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!

 키 쌍과 취소 인증서를 만들었다면, 이제 키를 import 혹은 export할 수 있다. 키를 export 하려면 다음 명령을 실행한다.

 $ gpg –export –armor > yourname.asc

 위 명령은 사용자의 공개키를 담은 파일을 생성하는 명령어이다. 이제 이 공개키를 신뢰관계를 맺고자 하는 사람에게 보내주면 된다.

 그럼, 이제는 RPM 명령을 사용해서 다른 사람이 만든 서명과 공개키를 확인하는 방법을 알아보자.

 먼저 다운로드받은 RPM 패키지가 Red Hat에서 만든 것인지를 확인하기 위해, Red Hat의 서명을 다운 받아야 한다. www.redhat.com으로 간 다음 Red Hat의 공개키를 받고, 원하는 RPM 파일도 다운로드 받는다.

  redhat의 공개키는 다음의 주소에 있다.
http://www.redhat.com/security/team/key/

 버전에 맞는 공개키를 다운받고 다음을 실행한다. 마지막에 쓴 redhat.asc는 파일명이다. 다른 파일명으로 redhat의 공개키를 저장했다면 마지막 부분을 파일명에 맞게 고쳐 써야 한다.

$ gpg –import redhat.asc

 키를 import 했다면 이제 키를 서명해야 한다. 만약 이 키를 서명하지 못하면, 나중에 이 키를 사용하려 할 때 에러가 날 것이다. 키를 서명하려면 gpg –sign 명령을 이용하거나 gpg –edit-key security@redhat.com 명령을 이용하여 서명한다.

pchero@MyNote:~$ gpg –edit-key security@redhat.com
gpg (GnuPG) 1.4.6; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

pub  1024D/DB42A60E  created: 1999-09-23  expires: never       usage: SCA
                     trust: unknown       validity: unknown
sub  2048g/961630A2  created: 1999-09-23  expires: never       usage: E  
[ unknown] (1). Red Hat, Inc <security@redhat.com>

명령> sign

pub  1024D/DB42A60E  created: 1999-09-23  expires: never       usage: SCA
                     trust: unknown       validity: unknown
 Primary key fingerprint: CA20 8686 2BD6 9DFC 65F6  ECC4 2191 80CD DB42 A60E

     Red Hat, Inc <security@redhat.com>

Are you sure that you want to sign this key with your
key “Kim Sung-tae <pchero21@gmail.com>” (68B8F353)

Really sign? (y/N) y

You need a passphrase to unlock the secret key for
user: “Kim Sung-tae <pchero21@gmail.com>”
1024-bit DSA key, ID 68B8F353, created 2007-11-15

명령> q
Save changes? (y/N) y

 그리고 다운받은 RPM을 확인하는데는 다음의 명령어를 사용한다.

 $ rpm -Kv your_rpm.9386.rpm

Tags: , ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.