前へ|次へ|戻る

Exporting a public key : 02

& encrypting and decrypting

では 再度 ”$ gpg --gen-key”で キーを 作成します。前のものは 1式 削 除しましたので 、そうして ”gpg --output revoke.asc --gen-revoke (user id)”で 破棄証明書 を 作成して 残しておきます。以下の参考のもので (此 処のものの 参考にする gnupg の バージョンは 異なっていますが 参考になると考 えます)

http://www.gnupg.org/gph/en/manual.html
Generating a new keypair
Generating a revocation certificate

此処までが 完了と言う事です。破棄証明書は いくらでも作成出来るし これを適用する場合は パスフレーズ 無しで 処理でき るため 厳重に 保管する事が必要です。”gpg --import 破棄証明書”そ んでもって

Exporting a public key

公開鍵を 見える形で 出しましょう といっても 2組の 方法が 有るようで す

gpg --output user-file.gpg --export user id(user mail address) 
gpg --output user-file.asc --armor --export user id(user mail address)

これらの相違は 見た場合 読める アスキー形式 と データーの 形で 見ても わからない形式の 2種類です では ユーザー ファイルを nyanco ユーザー id を nyanta として 作成 してみましょう、必ずしも メールアドレスでは 無くて も 良いようです。

$ gpg --output nyanco.gpg --export nyanta
$ gpg --output nyanco.asc  --armor --export nyanta

出来上がったものは?

$ ls -l nyanco.*
-rw-r--r--    1 mm       users        1702  2月 16日  10:56 nyanco.asc
-rw-r--r--    1 mm       users        1173  2月 16日  10:56 nyanco.gpg
$ file nyanco.*
nyanco.asc: PGP armored data public key block
nyanco.gpg: data

内容は?

$ cat -v nyanco.asc       /* 読める 意味は 別として  */
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)

mQGiBEPzzmgRBACAMjIuP5Qar3WfR8JhZ8EGDtZpt1JZdHypS0eZOu45KjnO/ret
KZEwkuCUKyp2uNgQmDlHOPLNrWafcw2cfv9DibVADehtqHC3rqzYdplb33zedLgR
...
oIPM2350VOeViAXAu040vfc+4McF
=OIi+
-----END PGP PUBLIC KEY BLOCK-----
$ cat -v nyanco.gpg            /* 読めない  端末 つぶれた?  */
M-^Y^AM-"^DCM-sM-Nh^Q^D^@M-^@22.?M-^T^ZM-/uM-^_\
GM-BagM-A^F^NM-ViM-7RYt|M-)KGM-^Y:M-n9*9M-NM-~M-7M--)M-^Q0M-^RM-`
....
>M-`M-G^E
$

当然、添付 何ぞに 追記するのは ”nyanco.asc”の 方に なると考えられます。 また ”gpg --armor --export nyanta”の ものは

$ gpg   --armor --export nyanta
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)

mQGiBEPzzmgRBACAMjIuP5Qar3WfR8JhZ8EGDtZpt1JZdHypS0eZOu45KjnO/ret
KZEwkuCUKyp2uNgQmDlHOPLNrWafcw2cfv9DibVADehtqHC3rqzYdplb33zedLgR
...
AAkFAkPzzn8CGwwACgkQYfh4vYFnRwOFvACdGlO6WYRtjg17Z/DQKVTOBErHy3wA
oIPM2350VOeViAXAu040vfc+4McF
=OIi+
-----END PGP PUBLIC KEY BLOCK-----

の ように 画面に 出力する事が出来ますが、以下のものは 使用方法として は 成立 しないようです、ファイルに書き出す必要があるようです。詳細は存じ ておりませんが

$ gpg   --output  --export nyanta
gpg: 「nyanta」が開けません

Encrypting and decrypting documents

暗号と 復号 通常の 方法は 相手の 公開鍵で もって 暗号化して それを相手に 送付 する それを 相手相手の 秘密鍵で もって 復号する。

暗号と 復号 自分自身での 場合

いま試験を行うに際して 直ちに 行うとすると だれかさん という 相手が必 要であり だれかさんも 自分の 公開鍵を 持っていないと いけないし だれかさ んの 公開鍵を 自分も 手に入れておかないと いけない 、それには 時間がかか るので、取り敢えず 簡単に 自分自身 で 自分自身の ファイルを 暗号 復号 してみよう これは すぐに 行う事が 可能である。

暗号化 する

$ echo "こんにちは" > first_try      /* 暗号化する ファイルを作成   */
$ cat first_try 
こんにちは
$ gpg --output first.gpg --encrypt --recipient non first_try
$ cat -v first.gpg 
M-^E^B^N^CM-?M-^EM-TFCM-^\M-[M-5^P^GM-~#M-o M-(M-rM-^C^U^GM--\
[M-iM-/D^M-qdcM-5cM-Q[M-wM-8^^M-+M-G^HM-hM-W
$

ファイルを 暗号化 する 様式は

--output --encrypt --recipient

gpg --output first.gpg --encrypt --recipient non first_try

gpg --output 暗号ファイル.gpg --encrypt --recipient ユーザーの ID 元のファイル

ここで 重要な点は まず 様式” --output” と ”--encrypt” は 当然であ るが 共通の 事柄である 、そうして ”--recipient”は 個々に 異なる ユーザー毎に 指 定する必要がある 様式としては --recipient で有るが これは あくまで 個々に 指定する 項目であ る 相手の 公開鍵 で 処理する 必要がある。わかり難く言えば 相手が AAさん と BBさんが いて 其々に 送るとすると 暗号化の 処理は 其々に 行わなくて は いけないことになる。取り敢えず 自分自身の ものについて 処理した場合は、 暗号化する場合の 所を 見ると --recipient の 所に 自分自身を 指定してあることが わかると 思 う。

--output --encrypt --recipient for users

異なるユーザーに 送付する場合は 一例として( ユーザー AA ユーザー BB) が いる場合は この様に なると 考えられる 但し、いますぐ検証は出来ない 相手が 必要であるので また 相手の 公開鍵を 入手していないので 正しいか どうかは 後に 検証が 必要であるが この様に なると にゃんたろうは思う

$ gpg --output AA.gpg --encrypt --recipient AA-id first_try
$ gpg --output BB.gpg --encrypt --recipient BB-id first_try

当然 ”ユーザー AA” と ”ユーザー BB” の 公開鍵 を 入手している 前 提である 、 そうして この 出来上がった ファイル AA.gpgBB.gpg は 自分自身 この場合(にゃんたろう)は 解読 出来ない (復号 する事は 不可能 )ということになる。これを 復 号 するには 各々の 秘密鍵 で 復号 する事に なるので あるが これは 不可能 あくまで ”ファイル AA.gpg”を 復号 するのは ”ユーザー AA”の 秘密鍵 を 持った 人 そうして 同じ様に BB.gpg を 復号 するのは ”ユーザー BB”の 秘密鍵 を 持った 人 のみ 可能に なる。ユーザー AA”の 秘密鍵 を 持った 人 が 必ず AA さんで 有るかは 誰 も わからない 検証の しようが 無い という事は 覚えておかないと いけない。 言える事は ”ユーザー AA”の 秘密鍵 を 持った 人は 誰でも 解読 復号 可能に なると 言う事である。通常は 一致するものとして 考えるが 実 際の 場合は どうなるかわ わからない 注意しないと いけない と いうのは ”ユーザー AA”の 公開鍵 という ものは 必ずしも ”ユーザー AA”が 作成したとは わからない つまり 公開鍵 を 入手 したからといって その 公開鍵が ”ユーザー AA”が 本当に 作成したものであるという 確証は 何処にも 存在しない あくまで 信頼 するか どうか ということです。直接 本人から 手渡されるか どうか この場合 も 直接合う人が 本人か どうかわ わからない という 連鎖は あるに しても 何処かで折り合いを つけて 運用していることは 重要です。

復号 する

復号 してみよう

 $ gpg --output second-firast --decrypt first.gpg 

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“nyantarou (sumi-non non) <ntmail@nyanta.no-ip.info>”
2048ビットELG-E鍵, ID 439CDBB5作成日付は2006-02-16 (主鍵ID 81674703)

パスフレーズを入力: 
パスフレーズがいります:“nyantarou (sumi-non non) <ntmail@nyanta.no-ip.info>”
2048ビットELG-E鍵, ID 439CDBB5作成日付は2006-02-16 (主鍵ID 81674703)

gpg: 2048-ビットELG-E鍵, ID 439CDBB5, 日付2006-02-16に暗号化されました
      “nyantarou (sumi-non non) <ntmail@nyanta.no-ip.info>”
$ file second-firast 
second-firast: ISO-8859 text
$ cat second-firast 
こんにちは

暗号化 ”という にゃんたろう に とって 少々 理解出来がたい 所 が 有るにしても 結果は 見ての とうりである。そこで 復号 する 様式は

--output --decrypt

$ gpg --output second-firast --decrypt first.gpg 
$ gpg --output 復号したファイル --decrypt 暗号ファイル.gpg

復号する場合は 誰から 送られて来た場合でも 当然 自分の 公開鍵で 暗号 化 されているので 自分の 秘密鍵で 復号すれば 良い この場合 復号した 結果 が おかしな もので 有れば 自分の 公開鍵で 暗号化されていないという結果で ある。但し、相手が おかしなものを 暗号化した場合は 当然 復号しても おか しな もので あるが

symmetric cipher

いままで 矢無を得ず 暗号化 に 公開鍵を 使用する方法として 見てきたが 自分自身の ファイルを 暗号化して 保存しておけば 少しは 秘密が 守れるかも しれない この場合は ”--symmetric”オプションを 使用 すれば 良いようであ る では 見てみよう

$ echo "こんばんわ" > goodnight  /* 何かファイルを作成  */
$ cat goodnight 
こんばんわ
$ gpg --output obanndesu.gpg --symmetric goodnight /* 暗号化しませう */  
パスフレーズを入力: koreha himitu desu  
パスフレーズを再入力: koreha himitu des   
gpg: パスフレーズの作成エラー: パスフレーズが無効です
gpg: 「goodnight」の対称暗号に失敗しました: パスフレーズが無効です /* そうですか では  */
$ gpg --output obanndesu.gpg --symmetric goodnight /*再度 暗号化しませう */
パスフレーズを入力: koreha himitu desu 
パスフレーズを再入力: koreha himitu desu  
$       /* 出来たようです! */  
$ ls -l goodnight obanndesu.gpg 
-rw-r--r--    1 mm       users          11  2月 16日  15:42 goodnight
-rw-r--r--    1 mm       users          58  2月 16日  15:45 obanndesu.gpg
$ file goodnight obanndesu.gpg 
goodnight:     ISO-8859 text
obanndesu.gpg: data
$ cat -v obanndesu.gpg
M-^L^M^D^C^C^BM-P9.e"^_M-"M-;`M-I)
...                             /* 当然ですな */ 
$ gpg --output hukugenn-goodnight  --decrypt obanndesu.gpg  /* 復号しませう */ 
gpg: CAST5暗号化済みデータ
パスフレーズを入力:      /* 今回は 1回 ですか! */ 
gpg: 1 個のパスフレーズで暗号化    /*下線部分 日本語でしょうか? */
gpg: 警告: メッセージの完全性は保護されていません
$ ls -l goodnight obanndesu.gpg hukugenn-goodnight 
-rw-r--r--    1 mm       users          11  2月 16日  15:42 goodnight
-rw-r--r--    1 mm       users          11  2月 16日  15:49 hukugenn-goodnight
-rw-r--r--    1 mm       users          58  2月 16日  15:45 obanndesu.gpg
$ file goodnight obanndesu.gpg hukugenn-goodnight 
goodnight:          ISO-8859 text
obanndesu.gpg:      data
hukugenn-goodnight: ISO-8859 text
$ cat -v hukugenn-goodnight     /* あらーー! */
M-$M-3M-$M-sM-$M-PM-$M-sM-$M-o
$ mv goodnight bk_goodnight 
$ ls -l bk_goodnight obanndesu.gpg hukugenn-goodnight 
-rw-r--r--    1 mm       users          11  2月 16日  15:42 bk_goodnight
-rw-r--r--    1 mm       users          11  2月 16日  15:49 hukugenn-goodnight
-rw-r--r--    1 mm       users          58  2月 16日  15:45 obanndesu.gpg
$ file bk_goodnight obanndesu.gpg hukugenn-goodnight 
bk_goodnight:       ISO-8859 text
obanndesu.gpg:      data
hukugenn-goodnight: ISO-8859 text  /* 未だわからないのです */
$ gpg obanndesu.gpg /* やりかたがまずいのか? これでは どうだ! */
gpg: CAST5暗号化済みデータ
パスフレーズを入力: 
gpg: 1 個のパスフレーズで暗号化
gpg: 警告: メッセージの完全性は保護されていません
$ ls -l  bk_goodnight hukugenn-goodnight obanndesu obanndesu.gpg
-rw-r--r--    1 mm       users          11  2月 16日  15:42 bk_goodnight
-rw-r--r--    1 mm       users          11  2月 16日  15:49 hukugenn-goodnight
-rw-r--r--    1 mm       users          11  2月 16日  15:53 obanndesu
-rw-r--r--    1 mm       users          58  2月 16日  15:45 obanndesu.gpg
$ file  bk_goodnight hukugenn-goodnight obanndesu obanndesu.gpg
bk_goodnight:       ISO-8859 text
hukugenn-goodnight: ISO-8859 text
obanndesu:          ISO-8859 text
obanndesu.gpg:      data
$ cat -v obanndesu        /* あらーー! */
M-$M-3M-$M-sM-$M-PM-$M-sM-$M-o
$ less obanndesu      /* そうか!!! */
こんばんわ
$ less hukugenn-goodnight 
こんばんわ
$ cat hukugenn-goodnight 
こんばんわ
$ cat obanndesu
こんばんわ
$ diff -s bk_goodnight obanndesu
Files bk_goodnight and obanndesu are identical
$ diff -s bk_goodnight hukugenn-goodnight 
Files bk_goodnight and hukugenn-goodnight are identical
$ cat -v bk_goodnight 
M-$M-3M-$M-sM-$M-PM-$M-sM-$M-o
$ cat bk_goodnight 
こんばんわ

ということの 様です 日本語 しい!!!

$ gpg --output obanndesu.gpg --symmetric goodnight
$ gpg --output hukugenn-goodnight  --decrypt obanndesu.gpg /* これより  */
$ gpg obanndesu.gpg                                        /* こちら    */
/* 暗号   */
$ gpg --output 暗号化されたファイル.gpg --symmetric 暗号化する元のファイル
/* 復号   */
$ gpg 復号化するファイル.gpg /* (= "暗号化されたファイル.gpg")  */

通常使用する場合は 暗号化した後で 元のファイルを 削除 するのでしょう そうして復号すれば 元のファイルを 得られるような 使いかたを するのでしょ う 元のファイルをおいておくような 使いかたは 無駄で 安全で無いということ で 良いのでしょう。

にゃんたろう 拝!
2006年 2月16日 (木) 21:55:52 JST 作成


前へ|次へ|戻る

Copyright © 2004.-2007. nyantarou All Rights Reserved.