gnuPGの利用

公開鍵暗号を実現するためにPGPというプログラムがありますが、特許問題を回避したオープンソースなgnuPGがあります。このgnuPGを利用してアーカイブの暗号化をすることにします。
GnuPGで暗号化されたファイルをgpgファイルということにします。
利用までの準備としてgnuPGを導入、公開/秘密鍵の作成、公開鍵の公表があります。

全般的にこのページが詳しいですが少し難しいかもしれません。
ここではUnix系に関しては説明しません。
Windows上ではGpg4Winが統合環境で利用できて便利の様ですが、私の環境では旨く動かないし、いやな常駐プロセスが入りそうなので、MingW32環境のコマンドライン版について説明します。MingW32環境とはWindows環境そのものでこの版のgnuPGはコマンドプロンプト窓で動作します。もう一つCygwin環境というのもありますが、これはUnix系と考えて差し支えありません。

インストール

https://www.okomeda.net/wp/290/にインストールから設定、利用までとてもよく説明されていますが、リンクされているバイナリがちょっと古いので、 http://www.ring.gr.jp/pub/net/gnupg/binary/から一番あたらしそうな gnupg-w32cli-1.4.15.exeをダウンロードして使うようにしてください。
なお、鍵の種類は上の説明のものと「既定」が違いますが、あまり気にしないで「既定」でいいとおもいます。世間的にはDSA/Elgamalの方が暗号の強度は高いと言われているようです。 RSAのときは鍵長は2048ビット以上を設定してください。

キー生成時にユーザーIDとか何か文字列をいれないといけないのですが
今回の目的には適当なものでいいです。
たとえばメールアドレスはにせものでもいいです。
RFCにはexample.com example.orgは文書中に例を書くために利用できるとされています。
ですので、hogehoge@example.orgとかで充分です。
他の目的でgnuPGを使うときは正しいキーをつくって利用してくださいね。

説明の通りに公開鍵をファイルにはき出し、その内容を連絡けいじばんに貼ってください。

つぎにsaramiの公開鍵を自分の環境に登録します。 私が作ったgpgファイルにはsaramiの署名がついています。 これはgpgファイルをsaramiが作ったことの証明です これを確認するためにはsaramiの公開鍵を持っていないといけません。
添付されているsaramiの公開鍵をsarami_public_key.txt..ascに保存して

gpg --import sarami_public_key.txt.asc

で取り込んでください。
これだけではだめで、この鍵にあなたの署名が必要となります。 この鍵が間違いないかを確認するためです。

gpg --lsign-key sarami
gpg --sign-key sarami
(どちらか)

パスフレーズをいれて署名完了です。
信用データベースとやらを更新しないといけないので、 一回キーリストを表示してみましょう。

gpg --list-keys

そうすれば信用データベースが更新されます。

これで公開キーの取り込みは完了です。 saramiに対してだけでなく一般的につかえる手順です。
他の人向けに暗号化する場合、その人の公開鍵を上のように取り込まなければなりません。

使い方

ggpファイルhogehoge.gpgを復号するには

gpg hogehoge.gpg

とするだけです。 このときパスフレーズを求められます。 ただし、暗号時にちょっと細工をしているので、面倒な作業が発生するかもしれません。 下の参考メモを参照してください。

参考

こちらではいただいた公開鍵群すべて宛に暗号化します。 一般的にこのような場合、メールでいうCc状態なので、他の受け取り者の情報が出てしまう場合があります。 ですので、throw-keyidをオプションして(正確には hidden-recipientで各IDを指定)情報を含めない様にしています。 つまり、Bcc状態となります。これももっと正確に言うと、宛先人の数はわかるかもしれないが、 keyidが0となって含まれているのでIDが特定されないということです。 (登録keyidをwebで公表しているのだから意味ないかも)

この場合、復号するときgpgは自分の公開キーが含まれているかわからないので、それぞれのキーごとに復号を試みます。つまり、ちょっと時間がかかります。最近のgnuPGでないとだめかもしれません。パスフレーズを入れまくらないといけないかもしれません。私はgpg.confの最後に

passphrase hogehoge

と追加して入力を省略できるようにしています。 本当は良くないだろうけど。けど今回の利用法では充分でしょう。

gpg --passphrase hogehoge hoge.gpg

でもいいはず。 gpg.confは unix系なら ~/.gnupg の下、 windows系ならApplication Dataのgnupgの下にあると思います。

1つのファイルで複数人宛てに暗号化できるのは いわゆるランダムなパスワード(セッションキー)でまずファイル全体を暗号化して、 そのパスワード(セッションキー)をそれぞれの公開鍵で暗号化することで成り立っています。 これがpgp/gnuPGのみそです。 これらの情報をファイル付加して送ればいいわけです。
逆に暗号化時に公開鍵が登録されていない場合、復号できなくなります。 これを回避するための方策はセッションキーで説明しています。

そして復号するとは、パスワード(セッションキー)を自分の秘密鍵をつかって取得してから、 そのパスワード(セッションキー)を使って、ファイルを戻すということです。 自分の秘密鍵をまもるための合い言葉がパスフレーズです。 ですから、パスフレーズはこれらの暗号/復号では直接に関係ありません。 実際、いつでも変更できます。


添付ファイル: filesarami_public_key.txt.asc 779件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-11-28 (土) 23:45:03 (3071d)