学習記録#38 250724

763ページから

779ページまで

ファイルを暗号化したいとき、LinuxではGnuPG(GNU Privacy Guard)が利用できる
GnuPGは公開鍵暗号を使って、ファイルの暗号化、復号、電子署名などができるオープンソースソフトウェア

gpgコマンドを使って、GnuPGを使用する
最初に公開鍵と秘密鍵の鍵ペアを作る必要がある
$ gpg --gen-key
これで~/.gnupgというディレクトリが作成され、その中に公開鍵のキーリングと秘密鍵のキーリングが作成される。
公開鍵のキーリング:pubring.gpg
秘密鍵のキーリング:secring.gpg

$ gpg --list-keys
これで一覧できる

鍵には失効証明書が必要。これは、パスフレーズが漏れたり忘れた場合に鍵を無効化するために使う
失効証明書を作成する書式は以下
gpg -o 失効証明書ファイル名 --gen-revoke メアド
これを安全な場所に保存しておく。
鍵を無効化したときは以下のように使う
$ gpg --import revoke.asc

gpgコマンドを使った暗号化の中で最も簡単なのは、共通鍵を使う方法
書式は
gpg -c ファイル名

例)
secret.txtファイルを暗号化する
$ gpg -c secret.txt ←暗号化。secret.txt.gpgが作成される
$ gpg secret.txt.gpg ←secret.txt.gpgを複合する。指定したパスフレーズを入力する

公開鍵暗号では、公開鍵と秘密鍵とをペアで使う
公開鍵を使って暗号化したものは、ペアとなる秘密鍵でのみ複合できる

暗号化されたデータを受け取る側は、通信相手に公開鍵を送るため、公開鍵をファイルにエクスポートする
gpg -o 出力ファイル名 -a --export 自分のメアド
これで公開鍵がpubkeyファイルにエクスポートされる。このファイルを通信相手に送る

暗号化ファイルの送り先(=通信相手)から公開鍵を受け取ったら、それをインポートする
$ gpg --import pubkey
受け取った公開鍵が信頼できるなら、鍵に署名を行う
署名を行わないと、「信頼できない」とみなされ毎回警告が表示される

受け取った公開鍵を使って、秘密鍵の持ち主だけが複合できるようにする
例)
linuxuser@example.comのみが複合できるような設定で、ファイルimportant.txtを暗号化
書式
gpg -e -a -r 送り先のメアド 暗号化するファイル名
これで、important.txt.ascが作成される

ファイルに署名することで、そのファイルの作成者が本人か、ファイルの内容が改善されてないかが確認できる
ファイルに署名する際は、--signオプションを使う。-oオプションで署名ファイルを指定する
$ gpg -o secret.txt.sig --sign secret.txt

ファイルの署名を検証するには、--verifyオプションを使う