既存の GPG キーを新しいデバイスにコピー・移動させることができる。
GPG キーが存在するデバイスで、以下のコマンドを実行する。
gpg -k
上記コマンドを実行すると以下のように表示されるはずだ。
pub ed25519 2022-04-03 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ultimate] noraworld <mail@noraworld.com>
sub cv25519 2022-04-03 [E]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
となっている部分をコピーする。
先ほど取得した GPG キー ID をもとに、秘密鍵をファイルにエクスポートする。
GPG キーが存在するデバイスで、以下のコマンドを実行する。
gpg --export-secret-key -a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > private_key
カレントディレクトリに秘密鍵が生成される。
private_key
は秘密鍵なので、誰かが画面を見ているときやシェルのログを記録している場合などは不用意にファイルの中身を開かないほうが良い だろう。
先ほど生成した private_key
を、新しいデバイスにコピーする。USB メモリなどに private_key
をコピーし、それを新しいデバイスにコピーする。
private_key
をコピーする際は、ネットワークを介さないほうが理想だが、ネットワーク経由でないとコピーできない場合は必ず scp
などの暗号化された通信で行う こと。
private_key
をインポートする。
新しいデバイスで、以下のコマンドを実行する。
gpg --import private_key
これで GPG キーが新しいデバイスで使えるようになった。
新しいデバイスで、以下のコマンドを実行する。
gpg -k
同じ GPG キー ID が表示されたら正しくインポートされたことがわかる。
この作業は絶対に怠ってはいけない。
エクスポート・インポートのために生成した private_key
を完全削除する。
ここで注意すべきは、rm
コマンドを使って削除してはいけない ということだ。ましてやゴミ箱に移動させるだけなどもってのほかだ。
代わりに shred
コマンドを使う。
shred
コマンドの詳細については、「ハードディスク内のデータを本当の意味で完全消去する方法」を参考にしてみてほしい。
以下のコマンドを、GPG キーがもともと存在するデバイスと新しいデバイスの両方で実行する。USB メモリなどにコピーした場合は、その USB メモリ内でも同様に実行する。
shred -uvz private_key
これでほぼ復元不可能な状態で private_key
を削除することができた。