[[Security]] /////////////////////////////////////////////////////////////////////////////// * 目次 [#hb56080a] #contents(); /////////////////////////////////////////////////////////////////////////////// * GnuPG [#v1625344] ** 鍵の生成 [#jb8e98fb] $ gpg --gen-key gpg (GnuPG) 1.4.10; Copyright (C) 2008 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. ご希望の鍵の種類を選択してください: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (署名のみ) (4) RSA (署名のみ) 選択は? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 要求された鍵長は2048ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 鍵の有効期間は? (0)0 Key does not expire at all これで正しいですか? (y/N) y あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" 本名: (名前を入力) 電子メール・アドレス: (メールアドレスを入力) コメント: 次のユーザーIDを選択しました: “名前 <メールアドレス>” 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 パスフレーズを入力: パスフレーズを再入力: 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 (ここでキーボードを乱打) 十分な長さの乱数が得られません。OSがもっと乱雑さを収集 できるよう、何かしてください! (あと172バイトいります) (更にキーボードを乱打) dsa.....+++++ .........+++++ 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 十分な長さの乱数が得られません。OSがもっと乱雑さを収集 できるよう、何かしてください! (あと71バイトいります) (更にキーボードを乱打) 十分な長さの乱数が得られません。OSがもっと乱雑さを収集 できるよう、何かしてください! (あと119バイトいります) (更にキーボードを乱打) dsa...+++++ gpg: 鍵***を絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u (以下生成結果・略) $ - 公開鍵 //----------------------------------------------------------------------------- ** 秘密鍵 [#v262671d] - 秘密鍵のexport $ gpg -o sec.key --export-secret-key user@example.com - 秘密鍵のimport $ gpg --import --allow-secret-key-imort sec.key - 秘密鍵の削除 $ gpg --delete-secret-key user@example.com -- 秘密鍵は、公開鍵に先んじて削除しておく必要がある //----------------------------------------------------------------------------- ** 公開鍵 [#s7011507] - "-a" オプションを付けるとASCII、なければバイナリで出力される - 公開鍵の export $ gpg -o pub.key --export user@example.com - 公開鍵の import $ gpg --import pub.key - 公開鍵の削除 $ gpg --delete-key user@example.com -- 秘密鍵は、公開鍵に先んじて削除しておく必要がある //----------------------------------------------------------------------------- ** 暗号化と復号 [#oa9b4b73] - ファイルを暗号化するには、渡す相手の公開鍵を先に入手し、importする。 - receive-user@example.com のユーザに渡す target-file を暗号化する $ gpg -a -r receive-user@example.com -e target-file - 自分(user@example.com)の公開鍵を使って暗号化されたファイル(encripted-file)を受け取り、公開鍵と対になる自分の秘密鍵で復号化する $ gpg -d encrypted-file //----------------------------------------------------------------------------- ** 署名と検証 [#vaf4bf27] - 自分(user@example.com)の秘密鍵で、clearsign-file に署名する。 $ gpg -u user@example.com --clearsign clearsign-file - 受け取った人(receive-user@example.com)が、送り主(user@example.com)から受け取った署名入りファイル(signed-file)を、送り主の公開鍵で検証する $ gpg -d signed-file //----------------------------------------------------------------------------- ** おまけ(自前サーバで公開鍵を公開する場合) [#zcfc761d] - GPG公開鍵用の MIME-Typeがある。サーバが拡張子を指定しているならその拡張子を使うのがよいと思われるが、そうでない場合は .htaccess で設定する。 - 下記は、公開パスを "~/public_html/public_keys"、公開鍵の拡張子を ".pubkey" とした場合の例。拡張子の "." は必要ない。 $ vi ~/public_html/public_keys/.htaccess # Add MIME-Types AddType application/pgp-keys pubkey