우분투 14.04에서 GPG 키 만들기

이 글은 과거에 쓰던 블로그에서 들여온 글로, 문서의 최신성에 대한 보증을 하지 않습니다.

GPG (Gnu Privacy Guard)는 OpenPGP를 기반으로 하는 공개키 암호화 기반 암호화 도구이다. 자세한 설명은 공식 홈페이지를 참조하기 바라며, 이 문서는 우분투 환경에서 GPG 키를 생성하는 방법을 다룬다. 시간이 나면 페도라나 CentOS 환경도 써 보겠다. 어짜피 그게 그거인가…

주의: 이 문서는 CLI 환경에서 GPG 키를 생성한다. 데스크탑 환경에서 생성하는 방법은 나중에 다룰 것 같다. 그전에 데스크탑을 깔아야….

사용자가 root가 아닐 것을 전제로 한다.

먼저 GPG를 깔아야 한다. gnupg를 설치하자. 2를 설치해도 문제는 없다.

$ sudo apt-get install gnupg(2)

GPG를 깔았으면 이제 키를 만들 준비가 다 됐다. 일단 그전에 GPG가 SHA1을 쓰지 않게 설정하는 것이 좋다. SHA1이 왜 나쁜지는 Cryptography Stack Exchange를 참조하시라. 다음 내용을 문서에 저장하면 된다.

$(your-favorite-editor) ~/.gnupg/gpg.conf

personal-digest-preferences SHA512
cert-digest-algo SHA512
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

이제 정말 키를 만들어 보자.

$gpg –gen-key


gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
 (1) RSA and RSA (default)
 (2) DSA and Elgamal
 (3) DSA (sign only)
 (4) RSA (sign only)
 Your selection?

1을 선택하면 된다. 이렇게 뜨지 않고 Elgamal 관련 문장이 뜨면 컴퓨터의 gpg 버전이 오래된 것이니 업데이트를 하자. 그 버전에는 100% 보안 취약점 (CVE-2016-6313)이 있다.

What keysize do you want? (2048)

키의 길이다. 길이가 길면 길수록 암호화의 강도도 올라가고 키를 만드는데 필요한 난수의 수도 길어진다. 필자는 4096을 선택했다.

Key is valid for? (0)

키의 유효기간이다. 어짜피 유효기간을 설정해도 되고 유효기간이 끝날 때 연장해도 된다. 필자는 0을 선택했다.

무슨 창이 뜨는데 자신의 선택을 확인하는 거다. 내가 한 설정이 맞다 싶으면 Y를 입력하면 된다.

You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: (여기를 자신의 정보로 대체)
Email address: (여기를 자신의 정보로 대체)
Comment: (비우고 엔터)
You selected this USER-ID:
"(Real name) <(email address)>"

자신의 실명과 이메일 주소를 누르고 코멘트를 비운 다음 엔터를 누른다. 여기서 코멘트를 입력하지 않는 까닭은 코멘트를 입력하던 안 하던 검색의 기준은 Real name이기 때문이다. 굳이 실명을 넣을 필요는 없지만 실명을 넣어야 Key-signing 을 할 때 자신의 키라는 것을 증명할 수 있다. Keysigning 에 대해서는 별도로 다룬다. 데비안 위키의 Keysigning 글도 참고할 만 하다.

다음 창에서 O를 누른다.

You need a Passphrase to protect your secret key.

패스프레이즈는 키 파일이 타인에게 넘어갔을 때 키를 보호하는 유일한 수단이다. 꼭 난수적인 비밀번호일 필요는 없고, 자신이 좋아하는 구절 몇개를 넣는다거나 하면 충분히 안전할 것이다.

이제 키 생성을 위해 충분한 엔트로피가 필요하다. 터미널 말고 브라우저 켠 다음 인터넷 서핑을 좀 한다. 하다가 생각나면 다시 터미널을 켜자.

gpg: key D06C 5D33 marked as ultimately trusted

public and secret key created and signed.

pub    4096R/D06C5D33 2015-06-08
        Key fingerprint: E009 08D0 6851 603B 6021 2C82 8267 B4E9 D06C 5D33

uid                    Geunhye Park <park@president.go.kr>

sub    4096R/A1E3D0861 2015-06-08

키가 만들어졌다.

 

키를 만드는 것 이외의 다른 작업에 관한 내용은 별도의 글로 다룰 예정이다.