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

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


***インストール [#a0f98969]
[[http://www.okomeda.net/?GnuPG:http://www.okomeda.net/?GnuPG]]にインストールから設定、利用までとてもよく説明されていますが、リンクされているバイナリがちょっと古いので、
[[http://www.ring.gr.jp/pub/net/gnupg/binary/:http://www.ring.gr.jp/pub/net/gnupg/binary/]]から一番あたらしそうな
[[gnupg-w32cli-1.4.15.exe: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を使うときは正しいキーをつくって利用してくださいね。
説明の通りに公開鍵をファイルにはき出し、その内容を[[連絡けいじばん:http://jbbs.livedoor.jp/radio/24266/]]に貼ってください。

つぎに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に対してだけでなく一般的につかえる手順です。~
他の人向けに暗号化する場合、その人の公開鍵を上のように取り込まなければなりません。

***使い方 [#z5e77e51]
ggpファイルhogehoge.gpgを復号するには
>gpg hogehoge.gpg

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

***参考 [#k6347a42]
こちらではいただいた公開鍵群すべて宛に暗号化します。
一般的にこのような場合、メールでいう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のみそです。
これらの情報をファイル付加して送ればいいわけです。~
逆に暗号化時に公開鍵が登録されていない場合、復号できなくなります。
これを回避するための方策は[[セッションキー]]で説明しています。

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

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS