マスター・キーをオフラインして、GnuPGを使用しましょう

このエッセイは大いに次の文章を参考しました:

Using an offline GnuPG master key

GnuPGのキーペアが作られたら、一つのサイニング用のマスター・キーと一つの暗号化用のsubkeyが生成されました。そして、もっと多くのsubkeyが使用可能です。もう一つだけのサイニング・キーが足されると、日常使用ではマスター・キーが不要になります。サイニングのsubkeyがあるので、マスター・キーが必要の場合が、他人のキーをサインのときと自己のキーの変更のときになりました。このエッセイでは、オフライン・キーのメリットとマスター・キーのオフラインするの方法とオフラインのマスター・キーの使用方法を紹介します。

マスター・キーをオフラインしているのメリット

マスター・キーの機能は、ファイルやドキュメントなどをサインだけじゃありません。他人のキーをサインするなり、自己のキーを変更するなり(ユーザーIDの追加と撤回やsubkeyの生成と削除など)、他人からの署名をあつまるなり、特別の機能があります。それから、マスター・キーの安全性は最も大切です。マスター・キーをオフラインしていたら、きっと安全性が高くなると思います。

マスター・キーをオフラインするの方法

まずプライベート・キーをバックアップします:

$ gpg2 --armor --output private-keys.asc --export-secret-key <ユーザーID>

ちゃんと保存して、次にマスター・キーのkeygripを探します:

$ gpg2 --list-secret-keys --with-keygrip

/home/crane/.gnupg/pubring.kbx
------------------------------
sec  rsa4096 2015-01-09 [SC]
      B174678027D03590032BE53FD236D5176EC2B0C2
      Keygrip = E4C4109EB935BF7492DC46D025B98F5C0CDCE972
uid           [  究極  ] Crane Jin 
uid           [  不明  ] cranej 
ssb   rsa4096 2015-01-09 [E]
      Keygrip = 5C5794C4D6330B73793F46C3C1B3E4599E55CA08
ssb   rsa2048 2016-10-15 [A]
      Keygrip = BD1AE897079BC9D407D4595500B1685E8117FD23
ssb   rsa4096 2016-10-15 [S]
      Keygrip = D2F09D65BD79CF6FA3506BC146C466CFEAB96B79

出力の通り、私はのマスター・キーのkeygrepはE4C4109EB935BF7492DC46D025B98F5C0CDCE972です。以下の命令でマスター・キーを削除します:

$ gpg-connect-agent "DELETE_KEY E4C4109EB935BF7492DC46D025B98F5C0CDCE972" /bye

それで、マスター・キーの削除が完了した。確認のため、"gpg -K"の命令でプライベート・キーを見てみましょう:

/home/crane/.gnupg/pubring.kbx
------------------------------
sec#  rsa4096 2015-01-09 [SC]
      B174678027D03590032BE53FD236D5176EC2B0C2
uid           [  究極  ] Crane Jin 
uid           [  不明  ] cranej 
ssb   rsa4096 2015-01-09 [E]
ssb   rsa2048 2016-10-15 [A]
ssb   rsa4096 2016-10-15 [S]

記号#がsecについたはずです。

マスター・キーが必要の場合、オフライン・キーの使い方

その場合、臨時フォルダにオフラインのプライベート・キーをインポートして、そのフォルダをGnuPGホームとして、操作をします。

まず臨時フォルダを作ります:

$ mkdir ~/gpgtemp
$ chmod 0700 ~/gpgtemp

プライベート・キーがUSBメモリーにいたら、マウントしておくのは必要です。プライベート・キーをインポートします:

$ gpg2 --homedir ~/gpgtmp --import /run/media/crane/mystick/private-keys.asc

それから、マスター・プライベートキーを使用することができる。仮にキーを変更してほしいから、以下みたいの命令を使います:

$ gpg2 --homedir ~/gpgtmp --no-default-keyring --keyring ~/.gnupg/pubring.kbx --edit-key bob@example.com

操作の完了ご、GnuPGエージェントを終えたほうがいいです:

$ gpg-connect-agent --homedir ~/gpgtmp KILLAGENT /bye
$ rm -rf ~/gpgtmp

更に、次のスクリプトを利用したら、とても便利だと思います:

#!/bin/bash

# The UUID of your USB stick
UUID=FB6A-B7E4

# The pathname to the file containing your private keys
# on that stick
KEYFILE=crane-key.asc

# Identify the device file corresponding to your USB stick
device=$(/sbin/findfs UUID=$UUID)

if [ -n "$device" ]; then
    # Mount the stick
    udisksctl mount --block-device $device

    # Create temporary GnuPG home directory
    tmpdir=$(mktemp -d -p $XDG_RUNTIME_DIR gpg.XXXXXX)

    # Import the private keys
    gpg2 --homedir $tmpdir --import /run/media/$USER/$UUID/$KEYFILE

    # Unmount the stick
    udisksctl unmount --block-device $device

    trustdbname=${GNUPGHOME:-$HOME/.gnupg}/trustdb.gpg
    # Launch GnuPG from the temporary directory,
    # with the default public keyring
    # and with any arguments given to us on the command line
    gpg2 --homedir $tmpdir --no-default-keyring --keyring ${GNUPGHOME:-$HOME/.gnupg}/pubring.kbx \
		--trustdb-name "$trustdbname" \
		$@

    # Cleaning up
    [ -f $tmpdir/S.gpg-agent ] && gpg-connect-agent --homedir $tmpdir KILLAGENT /bye
    rm -rf $tmpdir
fi

---------------------

Published on 2023-08-12

The content for this site is licensed under:

CC-BY-SA