Linux上でGPGキー ペアを生成しバックアップする方法
Gnu Privacy Guard (gpg) は、Gnu プロジェクトのオープンソースの OpenGPG 標準の実装です。gpg 暗号化システムは「非対称」と呼ばれ、公開鍵暗号を基にしています:私たちは受取人の公開鍵を使って文書を暗号化し、その受取人のみがそれを復号することができるのは、その受取人が関連する秘密鍵を所有しているからです。gpg はまた、私たちの秘密鍵を使って文書に署名し、他者が私たちの公開鍵を使ってその署名を検証できるようにすることも可能です。このチュートリアルでは、gpg キーペアの生成とバックアップ作成方法を見ていきます。
このチュートリアルではあなたが学ぶことになる:
- gpgをインストールする方法
- GPGキーペアを生成する方法
- 私たちの鍵を一覧表示する方法
- gpgキーペアとtrustdbのバックアップ/エクスポート方法
使用されるソフトウェア要件と規約
ソフトウェアのインストール
私たちのGpg鍵ペアを生成するために、最初に行うべきことはgpgソフトウェアをインストールすることです。私たちのお気に入りのLinuxディストリビューションには既にインストールされているはずですが、ここでは明示的にインストールする方法を示します。Debianでは、次のコマンドを実行する必要があります:
sudo apt-get update && sudo update-get install gpg
Fedoraや一般的にRed Hatファミリーのすべての最近のバージョンでは、dnfパッケージマネージャを使用してインストールを行うことができます:
sudo dnf install gnupg2
Archlinuxでは、代わりにパッケージはgnupgと呼ばれ、配布の「Core」リポジトリに含まれています;これをインストールするためにpacmanパッケージマネージャーを使用します。
sudo pacman -Sy gnupg
キーペアを生成する
gnupgソフトウェアが私たちのシステムにインストールされたら、さらに進むことができ、キーペアを生成することができます。生成プロセスを開始するには、以下のコマンドを実行する必要があります:
gpg --full-gen-key
上記のコマンドを実行すると、一連の質問に答えるように求められます。まず最初に、どのようなキーを作成するかを選択する必要があります:
gpg (GnuPG) 2.2.12; Copyright (C) 2018 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?
デフォルトでは、最初のオプション(RSAとRSA)が選択されており、Enterキーを押すだけでそれを使用できます。次のステップでは、鍵のサイズを選択します。サイズは1024ビットから4096ビットの範囲で選ぶことができます。デフォルトは3072です。他の値を使用する場合は、その値を入力し、選択を確認する必要があります。例えば:
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 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)
期限を設定することは、個人鍵を失った場合に私たちが被る可能性のある損害を制限するために重要です。そのようなことが起こった場合、誰もが私たちを偽ることができるでしょうが、少なくとも限られた時間だけです。ここで何を選んでも、プロセスの最後には無効証明書も生成されます。これを安全に保管することは非常に重要ですので、そのような状況で鍵を無効にするために使用できます。
デフォルトの選択は0であるため、キーは期限切れになりません。数字を入力するだけで、それはキーの期限切れまでの日数として解釈されます。数字を週、月、または年として解釈させるには、適切な接尾辞w、m、およびyを使用できます。
プロセスの次のステップは、IDキーの構築です。私たちは自分の個人情報を入力するように促されます。
Real name: John Smith
Email address: john.smith@gmail.com
Comment: personal
You selected this USER-ID:
"John Smith (personal) <john.smith@gmail.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
リクエストされた情報には次が含まれます:
- 私たちの本名
- 私たちのメールアドレス
- オプションのコメント(これは、キーの使用を指定するために使うことができます)
すべての項目を入力すると、作成されたIDが表示され、情報の確認または修正を求められます。それを行うためには、かっこ内のキーを押す必要があります。たとえば、名前を修正するには、nキーを入力します。確認するには、oを入力してEnterを押してください。
鍵生成プロセスが始まります。システムはこのアクションを実行するために多くのランダムバイトが必要なため、十分なエントロピーを生成するために他のアクションを実行するように提案されます。また、私たちのプライベートキーを保護するためにパスフレーズの入力と確認を促されます。
Please enter the passphrase to protect your new key
Passphrase:
上記のプロンプトは、グラフィカル環境を使用している場合に変更される可能性があることに注意してください。このプロセスの最後に、鍵と取り消し証明書の生成の確認を受け取ることになります。
gpg: /home/egdoc/.gnupg/trustdb.gpg: trustdb created
gpg: key 705637B3C58F6090 marked as ultimately trusted
gpg: directory '/home/egdoc/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/egdoc/.gnupg/openpgp-revocs.d/A4A42A471E7C1C09C9FDC4B1705637B3C58F6090.rev'
public and secret key created and signed.
pub rsa4096 2021-04-20 [SC]
A4A42A471E7C1C09C9FDC4B1705637B3C58F6090
uid Jhon Smith (personal) <john.smith@gmail.com>
sub rsa4096 2021-04-20 [E]
私たちは次のコマンドを発行することで、いつでもキーペアにある公開鍵を一覧表示できます。
gpg --list-keys
私たちの秘密鍵やプライベートキーをリストする代わりに、次のコマンドを実行する必要があります:
gpg --list-secret-keys
マスターキーとサブキー
キーホルダーを見ると、実際にマスターキーとサブキーのペアが生成されたことがわかります。最初のキーは行の先頭にあるpubプレフィックスで識別され、括弧の中にはその使用法を指定する表記[SC]が見えます。これは何を意味するのでしょうか?「S」はそのキーが署名に使用されることを意味し、「C」はそのキーが他のキーに署名するためにも使用できることを意味します。
サブキーは、sub プレフィックスで始まる行に説明されています。ここでは、キーのタイプ (rsa4096) と生成日が示されています。最後に、それが何のために使用されているかも見ることができます。ここでの [E] は、キーが属するキーペアが暗号化/復号化に使用されていることを意味します。
ここに使用表記の完全なリストがあります:
(S)ign: sign some data (like a file)
(C)ertify: sign a key (this is called certification)
(A)uthenticate: authenticate yourself to a computer (for example, logging in)
(E)ncrypt: encrypt data
バックアップを作成する/キーをエクスポートする
GPG鍵を作成し、時間が経つにつれていくつかの受信者の公開鍵をキーチェーンに追加した後、私たちは設定のバックアップを作成したくなるかもしれません。最も簡単な方法は、全体の~/.gnupgディレクトリのタールボールを作成することです。実行する必要があるのは次のコマンドです:
tar -cvpzf gnupg.tar.gz ~/.gnupg
上記のコマンドは、現在の作業ディレクトリに gnupg.tar.gz という名前の圧縮ファイルを作成しますので、それを安全な場所に保管する必要があります。公開鍵と秘密鍵、さらに trustdb(trustdbはキーリング内の鍵の信頼レベルを追跡します)のバックアップを取るための別の方法は、特定の gpg コマンドを使用することです。たとえば、公開鍵をエクスポートするには、次のように実行できます:
gpg --export --output public_keys
gpgが--exportオプションで呼び出されると、すべての鍵が鍵リングからSTDOUTまたは--outputオプションで指定できるファイルにエクスポートされます。この場合、私たちはそれらをpublic_keysファイルにエクスポートしました。同様に、私たちの秘密鍵をエクスポートするために、次のように実行できます:
gpg --export-secret-keys --output secret_keys
秘密鍵をエクスポートまたは再インポートする際には、私たちの鍵を保護するために使用したパスワードが要求されます。上記のコマンドで生成したファイルを再インポートするには、--import オプションを使用できます。例えば、public_keys ファイルからインポートする場合は、次のように実行します:
gpg --import public_keys
最後に、私たちのtrustdbをエクスポート/インポートするために、それぞれ、--export-ownertrustと--import-ownertrustオプションを使用できます。
gpg --export-ownertrust > otrust.txt
それを再度インポートするには:
gpg --import-ownertrust otrust.txt
結論
このチュートリアルでは、Gnu Privacy Guard (gpg) キーペアを生成する方法を見てきました。また、作業を達成するために要求される情報やガイド付き手順を見てきました。マスターキーとサブキーがどのように作成されるか、そしてそのデフォルトの目的は何かを確認しました。最後に、公開鍵と秘密鍵のバックアップとエクスポートの方法、ならびに trustdb 情報を学びました。
