GnuPG (GNU Privacy Guard) ========================= 公開鍵方式の暗号化と著名に使われる PGP (Pretty Good Privacy) のGNU実装。 .. image:: http://www.gnupg.org/share/logo-gnupg-light-purple-bg.png - GnuPG http://www.gnupg.org/ - OpenPGP http://www.openpgp.org/ 暗号に関する歴史は分厚い本が書けるほどの人間物語。 普段なにげに使っている暗号が、その昔にはこんなことになっていたとは。 - ジマーマン氏が語る、PGP誕生から10年の軌跡 2001/06/08 http://wiredvision.jp/archives/200106/2001060806.html もっと詳しい内容はオライリーのPGPで読むことができる - PGP―暗号メールと電子署名 http://www.amazon.co.jp/dp/4900900028/ 以下、PGPがどういう理論の上に成り立っているのかの資料。 - 公開鍵暗号 http://ja.wikipedia.org/wiki/公開鍵暗号 - Diffie-Hellman http://ja.wikipedia.org/wiki/Diffie-Hellman鍵共有 - RSA暗号 http://ja.wikipedia.org/wiki/RSA暗号 Mac 版の GnuPG をさくっと落として使ってみる - Mac GnuPG Downloads http://macgpg.sourceforge.net/#files まず Version .. sourcecode:: bash $ gpg --version gpg (GnuPG) 1.4.8 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: ~/.gnupg サポートしているアルゴリズム: 公開鍵: RSA, RSA-E, RSA-S, ELG-E, DSA 暗号法: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH ハッシュ: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 圧縮: 無圧縮, ZIP, ZLIB, BZIP2 秘密鍵と公開鍵のセットを作成する .. sourcecode:: bash $ ls .gnupg ls: .gnupg: No such file or directory $ gpg --gen-key gpg (GnuPG) 1.4.8; Copyright (C) 2007 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: ディレクトリー「<$HOME>/.gnupg」ができました gpg: 新しい構成ファイル「<$HOME>/.gnupg/gpg.conf」ができました gpg: 警告: 「<$HOME>/.gnupg/gpg.conf」のオプションは起動している間、有効になりません gpg: 鍵輪「<$HOME>/.gnupg/secring.gpg」ができました gpg: 鍵輪「<$HOME>/.gnupg/pubring.gpg」ができました ご希望の鍵の種類を選択してください: (1) DSAとElgamal (既定) (2) DSA (署名のみ) (5) RSA (署名のみ) 選択は? DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 要求された鍵長は4096ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限 = 鍵は n 日間で満了 w = 鍵は n 週間で満了 m = 鍵は n か月間で満了 y = 鍵は n 年間で満了 鍵の有効期間は? (0) Key does not expire at all これで正しいですか? (y/N) y あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter) " 本名: Takanao Endoh 電子メール・アドレス: takanao@endoh.tk コメント: 次のユーザーIDを選択しました: “Takanao Endoh ” 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 パスフレーズを入力: パスフレーズを再入力: 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 .+++++++++++++++.++++++++++++++++++++++++++++++..++++++++++.++++ .+++++++++++++++.++++++++++++++++++++++++++++++..++++++++++.++++ gpg: <$HOME>/.gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵238BFAE5を絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u pub 1024D/238BFAE5 2007-12-23 指紋 = 057E 2DEC AF85 95A4 41BA 6BC1 B537 0A4A 238B FAE5 uid Takanao Endoh sub 4096g/******** 2007-12-23 でき上がった鍵の情報を見る。 fingerprint は公開鍵の digest hash .. sourcecode:: bash $ gpg --fingerprint <$HOME>/.gnupg/pubring.gpg ------------------------------- pub 1024D/238BFAE5 2007-12-23 指紋 = 057E 2DEC AF85 95A4 41BA 6BC1 B537 0A4A 238B FAE5 uid Takanao Endoh sub 4096g/******** 2007-12-23 公開鍵にIDを追加する。 最後に追加したIDが primary になるので、変更して保存しておく .. sourcecode:: bash $ gpg --edit-key 238bfae5 gpg (GnuPG) 1.4.8; Copyright (C) 2007 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. 秘密鍵が使用できます。 pub 1024D/238BFAE5 作成: 2007-12-23 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 4096g/******** 作成: 2007-12-23 満了: 無期限 利用法: E [ultimate] (1). Takanao Endoh コマンド> help ... コマンド> adduid 本名: MiCHiLU 電子メール・アドレス: dj@michilu.com コメント: 次のユーザーIDを選択しました: “MiCHiLU ” 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O 次のユーザーの秘密鍵のロックを解除するには パスフレーズがいります:“Takanao Endoh ” 1024ビットDSA鍵, ID 238BFAE5作成日付は2007-12-23 pub 1024D/238BFAE5 作成: 2007-12-23 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 4096g/******** 作成: 2007-12-23 満了: 無期限 利用法: E [ultimate] (1). Takanao Endoh [ unknown] (2) MiCHiLU コマンド> uid 1 pub 1024D/238BFAE5 作成: 2007-12-23 満了: 無期限 利用法: SC 信用: 絶対的 有効性: 絶対的 sub 4096g/******** 作成: 2007-12-23 満了: 無期限 利用法: E [ultimate] (1)* Takanao Endoh [ unknown] (2) MiCHiLU コマンド> primary コマンド> save 鍵のIDリストを表示して確認する .. sourcecode:: bash $ gpg --list-sigs <$HOME>/.gnupg/pubring.gpg ------------------------------- pub 1024D/238BFAE5 2007-12-23 uid Takanao Endoh sig 3 238BFAE5 2007-12-23 Takanao Endoh uid MiCHiLU sig 3 238BFAE5 2007-12-23 Takanao Endoh sub 4096g/******** 2007-12-23 sig 238BFAE5 2007-12-23 Takanao Endoh 鍵は binary なのでTEXT形式で貼付けたい場合は、exportして ASCII形式に変換する .. sourcecode:: bash $ gpg -a --export -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.8 (Darwin) mQGiBEduPoERBACTFOxoGDSsF7LDcMW48rOVEdl151aNj/bG+nl5ZSOfyKfp3U2e cXJk4Y5JSwsatbnlkFZSyntjXmBfeDYmu5lcgU4y8v+NWyW7laF60Dj4+HzulyAR ... BQJHbj6BAhsMAAoJELU3Ckoji/rlJ88Aniy2UH6dtxxgxdB6zlGx4/K8amEIAJ0Z xkQCthPdsUV6TNEPLx+xuVRZOg== =cuST -----END PGP PUBLIC KEY BLOCK----- さて、公開鍵はどのようにして配布するのか。 公開鍵は公に晒されても無問題なので、どのようにして配布してもよい。 しかし、その公開鍵が意図する人物によって作成されたという保証はない。 fingerprint を当人から直接聞いて確認するのが、もっとも確か。 これを補助する仕組みとして、「信用の和」 (Web of trust) がある。 公開鍵を登録できるサーバが公開されている - NIC-SE PGP Keyserver http://subkeys.pgp.net/ 公開鍵を鍵サーバに送信する .. sourcecode:: bash $ gpg --send-keys 238BFAE5 gpg: 鍵238BFAE5をhkpサーバーsubkeys.pgp.netへ送信 登録した公開鍵を鍵サーバから検索する .. sourcecode:: bash $ gpg --search-keys 238BFAE5 gpg: “238BFAE5”をhkpサーバーsubkeys.pgp.netから検索 (1) MiCHiLU Takanao Endoh 1024 bit DSA key 238BFAE5, 作成: 2007-12-23 Keys 1-1 of 1 for "238BFAE5". 番号(s)、N)次、またはQ)中止を入力してください >1 gpg: 鍵238BFAE5をhkpからサーバーsubkeys.pgp.netに要求 gpg: 鍵238BFAE5:“Takanao Endoh ”変更なし gpg: 処理数の合計: 1 gpg: 変更なし: 1 PGPの作者 Philip R. Zimmermann の鍵ももちろんある .. sourcecode:: bash $ gpg --search-keys c7a966dd gpg: “c7a966dd”をhkpサーバーsubkeys.pgp.netから検索 (1) Philip R. Zimmermann 1024 bit RSA key C7A966DD, 作成: 1993-05-21 Keys 1-1 of 1 for "c7a966dd". 番号(s)、N)次、またはQ)中止を入力してください >Q ---- http://MiCHiLU.com/blog/posts/128/ - Added at Sun, 30 Dec 2007 16:24:55 +0900 - Last modified at Sun, 30 Dec 2007 16:29:08 +0900 This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License. http://creativecommons.org/licenses/by-nc-sa/2.1/jp/