티스토리 뷰

GnuPG

GPG 키 생성하기

anerdinaserver 2016. 12. 3. 23:48

오늘은 gpg에서 사용할 마스터 키를 생성하겠습니다.

예제는 모두 리눅스를 사용해서 진행하겠습니다. 하지만 사용법 자체는 운영체제와 관계 없이 거의 같다고 보시면 됩니다.

리눅스와 맥에서는 터미널을, 윈도우에서는 cmd를 실행시키고 진행해 주십시오.

GPG 명령어 개요

gpg 명령은 다음과 같은 형태로 되어 있습니다:

$ gpg [options] [files]

각 옵션에 대한 짧은 도움말을 보려면 이렇게 입력합니다:

$ gpg --help

짧은 도움말 목록을 인쇄해서 옆에 놓고 사용하면 자주 쓰는 옵션들을 외우기 전까지 도움이 많이 될 것 같습니다.

참고: 시스템에 따라 gpg classic이 기본으로 설치되어 있고 버전 2.0 또는 2.1이 gpg2로 설치되어 있는 경우도 있습니다. 예제가 gpg인지 gpg2인지보다 여러 옵션들을 어떻게 사용하고 어떤 결과가 나오는지에 집중해 주세요.

GPG 키 생성하기

뭔가 생성하는 옵션은 다음과 같이 두 가지가 있습니다.

--gen-key              generate a new key pair
--gen-revoke           generate a revocation certificate

--gen-key는 키를 생성하는 옵션이고 --gen-revoke는 곧 이어 진행할 revocation certificate를 생성할 때 사용합니다.

커멘드 라인에 다음과 같이 입력합니다:

$ gpg2 --gen-key

만약 modern 버전(2.1.x) 사용하고 있다면 --full-gen-key 옵션을 사용하십시오.

지금부터는 gpg가 물어보는 여러 사항에 대해 입력하면 됩니다.

일반적으로 기본값을 사용하시면 됩니다.

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
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits

키 종류는 RSA and RSA (default)가 기본 값입니다. RSA의 keysize는 2048비트가 기본 값이지만 요즘은 개인용 컴퓨터도 충분히 빠르기 때문에 4096비트를 선택하는게 좋을 것 같습니다.

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 2w
Key expires at Sat Dec 17 23:16:10 2016 KST
Is this correct? (y/N) y

유효기간(expiration)은 나중에 수정할 수 있으니 필요한 값을 정하시면 됩니다. 유효기간을 지정하지 않으려면 0, 일 단위로 지정하려면 정수, 연 단위는 2y, 3y과 같은 형태로 지정하시면 됩니다.

Real name: Infinite Cookies
Email address: infcookies@gmail.com
You selected this USER-ID:
    "Infinite Cookies <infcookies@gmail.com>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? 

이름은 실명을 사용해도 되고 안 해도 됩니다. 마스터 키는 메시지/자료가 본인이 만든 것임을 증명하기 위해 사용하기도 하기 때문에 실명을 사용하는 것이 말이 되는 경우도 있습니다. 팀을 대표하는 마스터 키인 경우 팀 이름을 사용하는 것이 말이 되는 경우도 있겠습니다.

이메일은 본인에게 연락 가능한 이메일 주소를 입력하면 됩니다.

Comment는 지금 입력한 이름과 이메일 주소에 달리는 주석입니다. 입력하지 않아도 됩니다.

이름과 이메일 주소를 입력한 뒤 이름과 이메일 주소를 수정할 수 있습니다. 키를 생성한 뒤에는 이름과 이메일 주소를 수정할 수 없으니 주의하십시오. 키 생성을 계속 진행하려면 O를 입력합니다.

다음으로 마스터 키를 보호할 암호(passphrase)를 입력합니다. 암호는 마스터 키를 보호할 수 있는 최후의 보루입니다. 강력한 암호가 있으면 마스터 키 파일 자체가 유출되더라도 즉각적인 피해를 막을 수 있습니다(피해가 없다는 것은 아닙니다. 피해를 최소화할 수 있는 시간이 주어진다는 것입니다.)

암호는 다음과 같은 원칙을 가지고 생성하십시오:

  • 나와 관련이 없는 단어만 사용: 전화번호, 생년월일, 가족 이름등은 암호로써의 가치가 없다.
  • 최대한 많은 경우의 수: 영문자 대소문자, 숫자, 기호등을 전부 사용한다. 또한 길이를 최대한 길게 한다.
  • 알아맞추기는 어렵고 기억하기는 좋은 암호를 만든다.

물론 너무 긴 암호는 정작 사용할 때 불편하기도 합니다. 안전함과 편리함의 균형을 맞춰 본인이 생각하기에 이정도면 괜찮겠다 생각되는 길이의 암호를 설정합니다.

암호를 만드는 방법 중 하나인 Diceware에 대해 알아보시고 사용하시길 추천합니다. Diceware는 적절하게 만들면 맞추기는 사실상 불가능하고 기억하기는 매우 좋은 암호를 만들 수 있습니다. 간단히 말하면 전혀 관련 없는 단어들의 목록에서 몇 개의 단어를 뽑아 암호로 정하는 것입니다. 8 단어 정도 사용하면 매우 안전하다고 생각됩니다. 저는 10개 단어를 사용하고 있습니다. Diceware 공식 홈페이지

We need to generate a lot of random bytes. 단계에서 진행이 되지 않는 경우

gpg는 키를 생성할 때 랜덤 바이트를 이용하도록 되어 있습니다. 가끔 시스템에서 제공하는 랜덤 바이트 생성 장치가 gpg와 연결되지 않는 경우 랜덤 바이트를 모으는 단계에서 시간이 매우 오래 걸리거나 진행이 되지 않을 수 있습니다. 이 경우 다음과 같이 조치합니다. (리눅스 기준)

$ sudo apt-get install -y rng-tools && sudo rngd -r /dev/urandom

중요: 키 생성 후 해야 할 일

생성에 관련된 옵션에는 두 가지가 있다고 했습니다. 첫번째는 방금 사용한 --gen-key 옵션입니다. 두번째는 --gen-revoke입니다.

마스터 키를 생성하면 항상 이 옵션으로 revocation certificate(폐기 인증서)를 생성하십시오.

폐기 인증서는 다음과 같이 생성합니다:

$ gpg2 -o revoke.asc --gen-revoke keyspec

keyspec은 key의 아이디나 fingerprint, 또는 이름이나 이메일 주소를 입력하면 됩니다.

-o--output 옵션의 짧은 형태이고, 명령 실행 결과를 해당 파일로 내보내도록 하는 옵션입니다. -o--output이 없는 경우 standard output으로 출력됩니다.

폐기 인증서는 어떤 이유로든 개인 키를 사용할 수 없게 된 경우 해당 개인 키의 공개키를 갖고 있는 사람들에게 더 이상 이 개인 키로 서명된 자료를 믿지 말고 이 개인 키의 공개키로 자료를 암호화해서 보내지 말라고 알릴 수 있는 최후의 수단입니다. 매우 중요합니다. 개인 키의 암호를 잃어버렸거나 개인 키가 유출되거나 완전히 삭제되어 복구할 수 없는 경우 반드시 필요합니다. 특히 개인 키를 도난당하고 잃어버렸는데 폐기 인증서조차 없는 경우에는 개인 키를 빼간 사람이 여러분의 신분으로 무엇이든 해도 막을 방법이 없게 됩니다.

반대로 개인 키는 안전한데 폐기 인증서가 유출되는 경우 키를 본인의 의사와 상관없이 강제로 폐기시킬 수 있으니 폐기 인증서도 최대한 안전하게 보관하십시오. 폐기 인증서 파일의 내용은 짧기 때문에 많은 사람들이 종이에 인쇄해서 금고에 넣는 방식으로 폐기 인증서를 보관합니다. USB나 CD에 기록해서 보관하는것은 생각보다 좋은 방법이 아닙니다. 종이에 인쇄해서 보관하는 것이 생각보다 오래 보관할 수 있는 방법입니다. 아니면 나중에 배울 symmetric cipher를 이용해 암호화 한 뒤 보관하는 것도 한 방법이라고 할 수 있겠습니다. 당연히 폐기 인증서가 아닌 다른 이름으로 보관하는게 좋겠습니다.

'GnuPG' 카테고리의 다른 글

GPG 자료 암호화/복호화하기  (1) 2016.12.05
GPG 공개키 주고받기  (0) 2016.12.05
GPG를 사용하는 이유  (0) 2016.11.24
GPG 설치하기  (0) 2016.11.23
GnuPG 소개  (1) 2016.11.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함