PGPを使ってみよう!環境準備と検証

セキュリティ

前回に引き続きPGPの記事を記載します。今回は実際に検証環境でPGPを試していきます。

概要を知っていても、実際に手を動かさないと分からないことも多くあります。

皆さんも是非とも手を動かして検証してみてくださいね。

なお、間違った内容等があれば、ご教示いただけると幸いです。

PGPを使うための環境準備

PGPを使用するために、「GnuPG」というものをインストールします。

「GnuPG」はPGPの実装のひとつで、GPL (GNU General Public License)にとなっており、無料で利用することができます。

ちなみに私の環境の「ubuntu18」では既に入っていました。

gpg -h
#動作確認のため、ヘルプの表示
gpg (GnuPG) 2.2.4
libgcrypt 1.8.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
(長いので略)

まずは公開鍵と秘密鍵が登録されていないことを確認します。「gpg –list-key」で公開鍵の一覧を、「gpg –list-secret-key」で秘密鍵の一覧を表示させますが、以下のとおりまだ何も行っていないので、表示はされません。

では早速公開鍵と秘密鍵を作成しましょう。

「gpg –gen-key」で鍵を作成することができます。

$ sudo gpg --gen-key
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

注意: 全機能の鍵生成には "gpg --full-generate-key" を使います。

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名:(名前を入力する)

電子メール・アドレス:(メールアドレスを入力する)

次のユーザIDを選択しました:
"(本名で入力した値)<(入力したメールアドレス)>"

名前(N)、電子メール(E)の変更、またはOK(O)か終了(Q)?

ここでOK(O)を選択すると以下のパスワード入力画面が表示されます。

パスワードを2回入力する必要があるので、誰にも知られないようにしっかりと管理しましょう。


入力が終わると鍵の作成になります。

たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
gpg: 鍵E2C775BCFAEFC1B8を究極的に信用するよう記録しました
gpg: ディレクトリ'xxxxx'が作成されました
gpg: 失効証明書を 'xxxxxxx' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub rsa3072 2018-10-07 [SC] [有効期限: 2020-10-06]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
uid (本名で入力した値)<(入力したメールアドレス)>
sub rsa3072 2018-10-07 [E] [有効期限: 2020-10-06]

これで鍵の作成は完了です。

では先ほどと同じように「gpg –list-key」で公開鍵の一覧を、「gpg –list-secret-key」で秘密鍵の一覧を見てみましょう!
※なお、秘密鍵見るには「sudo」が必要でした・・・

今度は表示されましたね。ではこれを使用して、暗号化と複合化をやってみましょう!

まずは適当なテキストを作成します。

$ nano test.txt
#test.txtを作成する

中身は以下にしました。

ではこのファイルを暗号化します。

$ gpg -e -r (本名で入力した値) test.txt
#-eで暗号化-rで鍵指定(uidの個所)最後に暗号化するファイルを指定する
$ ls
test.txt.gpg test.txt
#「test.txt.gpg」が暗号化されたファイル「test.txt」暗号化前のファイル

実際に暗号化されたファイル内容を見てみましょう。

「less」コマンドでみると以下のようになっており、全く元の内容がわかりませんね。

じゃあそれを複合化してみましょう。(秘密鍵を使用する際はsudoが必要みたいですね。)

$ sudo gpg -o test_hukugou.txt -r (本名で入力した値) test.txt.gpg
#-oで元ファイルと間違えないようにファイル名を変更

すると以下のように鍵を作成した際のパスワードを聞かれます。

ちゃんと複合ができているか見てみましょう。先ほどと同じように「less」コマンドを使用して、複合した「test_hukugou.txt」を見てみると・・・

以下のとおり、もともと記載した内容が出てきました!

今回は自分の環境のみで実施しましたが、他の人に公開鍵だけを渡し、その人が提供したいファイルを公開鍵を使用して暗号化し、送信することで安全に自分だけしか複合することができるファイルが作成できますね。

最後に

PGPの仕組みと実際に検証を行いました。

最近は非常に色々な仕組みがしかも無償で存在しています。知っているだけで安全に使用できるものもあるので、やはり日々のアンテナをちゃんと立てていることが重要だなと感じます。

企業間の取引で使用しているのを見たことはないですが、今後もしかしたら使用する企業も出てくるかもしれません。(すぐは無さそうですが・・・)

電子書庫といったサービスは色々ありますが、そういったサービスに影響されず、個人間のみで安全を担保する仕組み(しかも無償)は良いと考えています。(国内外問わず個人で仕事する人も増えてますし。)

なおこの記事を書いているときに勉強会で話をしようと決めましたので、10月の話題はPGPにしようと思います。

不明点や要望やこういったこともやって欲しいとの要望があれば、お問い合わせページやコメント、ツイッターからでも結構ですので、気軽にご連絡ください。

コメント