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-support | OpenSSH のエージェントプロトコルが使えるようになります |
default-cache-ttl-ssh | エントリーしてから何秒でキャッシュをクリアするかの時間を指定します |
max-cache-ttl-ssh | エントリーの継続時間を指定します |
次に、~/.bashrc
に gpg-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
コマンドの説明
部分 | 説明 |
---|---|
gpg | GnuPG を実行するためのコマンドです。 |
-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を使用します。
記事の内容は理解できましたか?