1. ホーム
  2. コース一覧
  3. LinuC Level1 v10.0 対策コース(パート2)
  4. GnuPGについて

LinuC Level1 v10.0 対策コース(パート2)25/29

GnuPGについて

こちらの記事ではGnuPGの設定方法について解説します。

GnuPGとは

GnuPGは公開鍵暗号方式を使用し、公開鍵と秘密鍵を利用したファイルの暗号化と復号を行うオープンソースの暗号化ツールです。

GnuPGの利用方法

GnuPGを使用する場合、秘密鍵に保護されたパスフレーズが必要ですが、gpg-agentを使用すると、パスフレーズを覚えておくことができます。これにより、同じ秘密鍵を使用する複数の処理を行う場合に、パスフレーズを何度も入力する必要がなくなります。ただし、セキュリティ上のリスクを最小限に抑えるために、パスフレーズは強力でランダムである必要があります。

まずはパッケージをインストールします。インストールしたらvimでファイルの中に値を書きます。

sudo yum install gpg-agent pinentry-curses

vim ~/.gnupg/gpg-agent.conf
# 編集部分は以下
pinentry-program  /usr/bin/pinentry-curses

enable-ssh-support
default-cache-ttl-ssh    7200
max-cache-ttl-ssh       28800

gpg-agent.confのオプション

オプション説明
pinentry-programパスフレーズを入力する画面を指定します
enable-ssh-supportOpenSSH のエージェントプロトコルが使えるようになります
default-cache-ttl-sshエントリーしてから何秒でキャッシュをクリアするかの時間を指定します
max-cache-ttl-sshエントリーの継続時間を指定します

次に、~/.bashrcgpg-agent を自動で起動する関数を書きます。

function gpg-agent-start()
{
    if [ -n "`pgrep -x gpg-agent 2> /dev/null`" ];then
        return
    fi

    if [ -n "`which gpg-agent 2> /dev/null`" ];then
        export GPG_TTY=$(tty)
        LANG=C gpg-connect-agent updatestartuptty /bye
        export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
    else
        echo "gpg-agent NOT exists"
    fi
}

作成した関数を実行します。

gpg-agent-start

キーペアの作成

公開鍵と秘密鍵のキーペアを作成します。

gpg --gen-key

~/.gnupg ディレクトリが生成され、公開鍵と秘密鍵を格納したファイルが生成されます。

ls ~/.gnupg
pubring.gpg  secring.gpg

既存のSSHキーペアを利用する場合はSSHサポートを有効にする必要があります。

~/.gnupg/gpg-agent.confファイルに以下の設定を追加します。

enable-ssh-support

gpg-agent を再起動します。

gpgconf --kill gpg-agent
gpg-agent --daemon

以下のコマンドで鍵を gpg-agent に追加します。

ssh-add [鍵ファイルへのパス]

証明書の作成

次に、自身の公開鍵が不正に使用されないように、あらかじめ失効証明書を作成します。失効証明書は、鍵が有効期限切れになったり、セキュリティ上の問題で使用が不適切になった場合に、その鍵を無効化するための文書です。この証明書を使用することで、不正なアクセスやデータのやり取りを防ぐことができます。

gpg -o testrevoke.asc --gen-revoke test@example.com

コマンドの説明

部分説明
gpgGnuPG を実行するためのコマンドです。
-o(--output)出力ファイル名を指定します。この例では、失効証明書を testrevoke.asc というファイルに保存します。
--gen-revoke失効証明書を生成するオプションです。
test@example.com失効証明書を生成する鍵のメールアドレス(鍵の識別子)です。

以下のコマンドを実行し、失効証明書を利用して公開鍵を無効化します。

gpg --import testrevoke.asc

通信相手に公開鍵を送信する方法

公開鍵暗号方式では、公開鍵と秘密鍵の2つの鍵がペアで作成されます。公開鍵は他人に共有しても安全であり、他人があなたに暗号化されたデータを送る際に使用されます。 公開鍵をファイルにエクスポートしてエクスポートしたファイルを通信相手に送ります。

公開鍵のエクスポート

公開鍵をエスクポートします。出力するファイル名は publickey とします。 --export オプションに続けて、エクスポートしたい鍵のメールアドレスを指定します。"

gpg -o publickey -a --export test@example.com

公開鍵のインポート

公開鍵を受け取ったら、その公開鍵をインポートします。 --import オプションに続けて、インポートしたいファイル名を指定します。

gpg --import pubkey

インポートしたら公開鍵の信頼性と所有者の確認を行うため署名を生成します。

gpg --sign-key test@example.com

ファイルの暗号化と復号化

暗号化したいファイルに対し、その宛先のメールアドレスを指定して暗号化します。送信先のユーザーが対応する秘密鍵を持っていれば、ファイルを復号できます。

gpg -e -a -r test@example.com test.txt

暗号化されたファイルには、拡張子として .asc が追加されています。受け取った方は、 gpg コマンドと自身の秘密鍵を使用して、このファイルを復号できます。

gpg test.txt.asc

まとめ

今回はGnuPGについて解説しました。

GnuPGはファイルを暗号化することができます。

パスフレーズ入力の手間を省きたい場合は、gpg-agentを使用します。

記事の内容は理解できましたか?