[linux] GnuPG

Gnu Privacy Guard

GnuPG는 OpenPGP 표준(RFC4880)을 완전하고 무료로 구현한다. GnuPG는 당신의 데이터와 통신을 암호화하고 서명할 수 있다. 모든 종류의 공개키 디렉토리에 대한 액세스 모듈과 함께 다목적 키관리 시스템을 갖추고 있다. GPG라고도 하는 GnuPG는 다른 응용 프로그램과 쉽게 통합할 수 있는 기능이 있는 명령줄 도구 이다. GPL의 조항에 따라 자유롭게 사용,수정 및 배포할 수 있습니다.

풀네임은 Gnu Privacy Guard이다. 개인정보 보호해줄 수 있는 개념인듯

개인키와 공개키 생성

X윈도우가 아니라면 랜덤한 키 생성을 위해 필요한 아래 유틸리티를 설치한다.

$ sudo apt-get install rng-tools

아래와 같이 키를 생성한다.

$  gpg --full-generate-key

## 또는
$  gpg --gen-key

위의 명령을 실행하면 제일 먼저 키의 종류를 물어본다.

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)

기본값인 1번은 서명을 위한 master key와 암호화를 위한 subkey를 하나씩 생성한다는 의미이다. 결국 1번 옵션은 마스터 공개키/개인키와 서브 공개키/개인키, 이렇게 두 쌍의 공개키/개인키를 만든다. (subkey에 대한 설명은 다음 절)

그 다음 단계는 키의 길이(1024~4096), 만료일, 이름, 이메일 등을 물어보는데 적절히 입력하면 된다.

키의 길이를 3072로 설정, 만료일은 무제한으로 설정하였더니 다음과 같이 생성되었다.

gpg: key A10DCF73F7CD9C4B marked as ultimately trusted
gpg: revocation certificate stored as '/app/home/.gnupg/openpgp-revocs.d/3F826CD376E82E66C4F62D3DA10DCF73F7CD9C4B.rev'
public and secret key created and signed.

pub   rsa3072 2020-08-01 [SC]
      3F826CD376E82E66C4F62D3DA10DCF73F7CD9C4B
uid   jjfive <ohlab.kr@gmail.com>
sub   rsa3072 2020-08-01 [E]

출력결과의 아래부분에 pub로 시작하는 라인은 master key를 의미한다. sub로 시작하는 라인은 sub key가 생성되었다는 것을 의미한다.

subkey는 무엇인가?

https://wiki.debian.org/Subkeys

OpenPGP는 서브키를 지원한다. 서브키는 마스터 키에 묶여 있는 공개키/개인키이다. 서브키는 서명이나 암호화를 위해 사용할 수 있다. 서브키의 유용한 부분은 마스터키와 독립적으로 철회(revoke)될 수 있다는 점이다.

즉, 서브키는 분리된 키페어인데, 마스터키와 연결되어 있다.

GnuPG는 마스터키는 서명용으로만 사용하고, 서브키는 암호용으로 사용한다.

서브키는 키관리를 쉽게 해준다. 마스터키 쌍은 매우 중요하고 온라인 상에서 당신을 식별하는 증거이다. 만약 잃어버리면 당신의 평판을 처음부터 다시 만들어야 할 것이다. 만약 누군가 당신의 private 마스터 키나 서브키를 획득하면 당신처럼 행세할 수 있다. 당신의 이름으로 패키지를 업로드 할 수 있고, 당신의 이름에 투표하며 당신이 할 수 있는 많은 것들을 할 수 있다. 그러므로 개인키를 안전하게 보관해야 한다.

마스터 개인키는 안전하게 보관해야 한다. 그러나 당신의 모든 키를 극도로 안전하게 유지하는 것은 불편하다.

서브키를 사용하면 작업이 쉬워진다. 자동으로 생성된 암호화 서브키가 있고, 서명을 위해 다른 서브키를 만들고 기본 컴퓨터에 보관한다. 당신은 일반 키서버에는 서브키를 발행하고, 다른 모든 사용자는 메시지를 암호화하거나 메시지 서명을 검증하기 위해 마스터키 대신에 그것을 사용할 것이다. 마찬가지로 메시지 암호 해독 및 서명에 하위키를 사용한다.

당신은 예외적인 상황에서만 당신의 마스터키를 사용해야 한다. 구체적으로 말하면 당신이 가지고 있는 키나 다른 사람이 가지고 있는 키를 변경하고자 할때 마스터 개인키가 필요하다. 아래의 경우들을 마스터 개인키가 필요하다.