暗号 復号 簡単な例

前へ |次へ

暗号 復号 の 例 その2

文字列の暗号化と復号をしてみよう今回は2通りの方法にて行います。

gpg --encrypt --output FILE.asc --armor --recipient USER_ID ORG-FILE

これは先ほどの

gpg --encrypt --recipient fdopstm file_org
gpg --encrypt  --armor --recipient fdopstm file_org

の 変形として 出力ファイルを 指定したものです、したがって特に どうこ ういうものではありません。まず 元のファイルを作成しましょう。

file_org

元のファイルを作成

$ echo "ご機嫌よう!">file_org
$ cat file_org 
ご機嫌よう!

暗号化を行う

暗号化を行い その出力ファイルを”asc-file”と 指定します。

$ gpg --encrypt --output asc-file --armor --recipient fdopstm file_org
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users         928  9月  4日  14:33 asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  13:50 file_org
$ file *
asc-file: PGP armored data message
file_org: ISO-8859 text
$ cat asc-file 
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.7 (GNU/Linux)

hQIOAwtErvLIwoU/EAgAj4JOUypdIjCHvGRHP62kocAYgbzJQ1h9vSk/U4MVU72w
QvBxWd91DsiD8rfABFEW/e0RbBrvChYOkLkQnLNfhC5w4QeXy6GJt9BNvOkZg5F1
6vt5rnNGD5XS0VNokm4M6UoCHK8Lt1MsZMn3J0d2BAuARjBA3lwYN5tutHlkNfHI
YEE5WWUlG9A0zfo/d9NT54Oft9klPoj+tN30ig3GVeSVDc3lYiWg9ySyLwDfYry6
E2mxvTlSXL4ajMBrlh4TEgBynJEE/XZDR2TFp0DYFcjxTO0CQmdb6/66X//nWDn6
lMEum5/wXhMj+lSs1Vdrpa02zkpigEL8zdmaPxJKggf/XZdSp8F4x1rNW3BGVOCS
wBCl57v7lm6AdzelJp1NzNpfSF61F7mKxXrDX2o7rCkac9f1LS0y9tGIp/dhswTV
R9SoJP6nKYkgMj6XGC1vRnBMhACV1GL/DRbjgPY+0DLF5l0akJWafk4ry3hrSk2g
xBz7sxJaGxgQXoULyxKVwGwa5qH7exGbcthQ3WEFJbOABY2hYEoLWI4O4HzlQKRb
XiTLK1hlAhBw7kIqUYVnK0jbP/mjWTJnncH/6hN37fNP5AYEmY3rjxus2J4OfO1f
woe5OMeNBNZ3ysDMZ6R9c4JDeXKVRafdrMRxpcDMqxxYLjK7NIAoX6j43KMtUSnk
5dJTAbtK2zFjX1SpKm5MtiuksLgqseyCGtJFRMraFVCTlkkmvgzmsgETpJIuKm0K
me4Yo+kjr/bUxc1G/Zyqd4mk9E9z9Z0rzLEY80em2TmNcmAjHe8=
=O8Qz
-----END PGP MESSAGE-----

復号

暗号化されたファイル”asc-file”を 復号します 又その復号したデーター を ”decrypt_asc-file”に書き出します

$ gpg --decrypt asc-file >decrypt_asc-file

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“fdopstm (Here is fake) <fdopstm@catland.kigdm>”
2048ビットELG-E鍵, ID C8C2853F作成日付は2007-09-01 (主鍵ID CABF456E)

パスフレーズを入力: 
パスフレーズがいります:“fdopstm (Here is fake) <fdopstm@catland.kigdm>”
2048ビットELG-E鍵, ID C8C2853F作成日付は2007-09-01 (主鍵ID CABF456E)

gpg: 2048-ビットELG-E鍵, ID C8C2853F, 日付2007-09-01に暗号化されました
      “fdopstm (Here is fake) <fdopstm@catland.kigdm>”
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users         928  9月  4日  14:33 asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  14:38 decrypt_asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  13:50 file_org
$ file *
asc-file:         PGP armored data message
decrypt_asc-file: ISO-8859 text
file_org:         ISO-8859 text
$ cat decrypt_asc-file 
ご機嫌よう!

これが 先ほどの 暗号化と復号する方法です。これとは別の方式が有るよう です。

gpg --output file.asc --armor --symmetric file_org

この方法を 見て行きましょう

暗号化を行う

$ gpg --output symmetric-file_org --armor --symmetric file_org
パスフレーズを入力: /* まったく新しいパスフレーズを 入力します   */
パスフレーズを再入力:/* 上記と同じ パスフレーズを 入力します     */
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users         928  9月  4日  14:33 asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  14:38 decrypt_asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  13:50 file_org
-rw-r--r--    1 fdopstm       users         181  9月  4日  14:55 symmetric-file_org
$ file *
asc-file:           PGP armored data message
decrypt_asc-file:   ISO-8859 text
file_org:           ISO-8859 text
symmetric-file_org: PGP armored data message
$ cat symmetric-file_org 
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.7 (GNU/Linux)

jA0EAwMC0x3lEWhXdOFgyS6dQP/jTRNv5/JFaymAEZT5KPMef5KYuMLYildZIky7
GPX056dlG+xjJ+wCFEwU
=QE+P
-----END PGP MESSAGE-----

ここで 考慮するのは パスフレーズは 任意に新しいものを使用できるという ことです。最初鍵をに作成したパスフレーズを 使う必要は必ずしも無いのです。

復号

ファイル”symmetric-file_org”を 復号してみましょう

$ gpg --decrypt symmetric-file_org > decrypt-symmetric-file_org
gpg: CAST5暗号化済みデータ
パスフレーズを入力:          /* 鍵を作成したパスフレーズを 入力  */
gpg: 復号に失敗しました: 鍵が不正です
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users         928  9月  4日  14:33 asc-file
-rw-r--r--    1 fdopstm       users           0  9月  4日  15:02 decrypt-symmetric-file_org
-rw-r--r--    1 fdopstm       users          13  9月  4日  14:38 decrypt_asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  13:50 file_org
-rw-r--r--    1 fdopstm       users         181  9月  4日  14:55 symmetric-file_org
$ file *
asc-file:                   PGP armored data message
decrypt-symmetric-file_org: empty
decrypt_asc-file:           ISO-8859 text
file_org:                   ISO-8859 text
symmetric-file_org:         PGP armored data message

至極当然のことですが もう一度やり直しましょう

$ gpg --decrypt symmetric-file_org > decrypt-symmetric-file_org
gpg: CAST5暗号化済みデータ
パスフレーズを入力:  /*パスフレーズを 入力します これは鍵を作成したのと 異なる */
gpg: 1 個のパスフレーズで暗号化
gpg: 警告: メッセージの完全性は保護されていません
$ ls -l | sed 1d
-rw-r--r--    1 fdopstm       users         928  9月  4日  14:33 asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  15:14 decrypt-symmetric-file_org
-rw-r--r--    1 fdopstm       users          13  9月  4日  14:38 decrypt_asc-file
-rw-r--r--    1 fdopstm       users          13  9月  4日  13:50 file_org
-rw-r--r--    1 fdopstm       users         181  9月  4日  15:14 symmetric-file_org
$ file *
asc-file:                   PGP armored data message
decrypt-symmetric-file_org: ISO-8859 text
decrypt_asc-file:           ISO-8859 text
file_org:                   ISO-8859 text
symmetric-file_org:         PGP armored data message
$ cat decrypt-symmetric-file_org 
ご機嫌よう!

今回の場合はパスフレーズとして 最初に鍵を作成した パスフレーズ無しに つまり 別のパスフレーズで 暗号化し復号する事ができる ということです。

復号 関係の無い計算機にての復号

この 暗号化したファイル ”symmetric-file_org”を gpg は インストール してあるのだが 未だ鍵を作成していない 別の 計算機の 端末に 転送してみま しょう

$ scp symmetric-file_org 192.168.0.38:/home/darekasann/
darekasann@192.168.0.38's password: 
stty: standard input: 無効な引数です
stty: standard input: 無効な引数です
stty: standard input: 無効な引数です
symmetric-file_org                            100%  181     0.2KB/s   00:00

復号してみましょう

$ gpg -d symmetric-file_org 
gpg: ディレクトリー「/home/darekasann/.gnupg」ができました
gpg: 新しい構成ファイル「/home/darekasann/.gnupg/gpg.conf」ができました
gpg: 警告: 「/home/darekasann/.gnupg/gpg.conf」のオプションは起動している間、有効になりません
gpg: 鍵輪「/home/darekasann/.gnupg/secring.gpg」ができました
gpg: 鍵輪「/home/darekasann/.gnupg/pubring.gpg」ができました
gpg: CAST5暗号化済みデータ
パスフレーズを入力: /* パスフレーズを 入力 注意 以下に補足あり  */
gpg: 1 個のパスフレーズで暗号化
ご機嫌よう!
gpg: 警告: メッセージの完全性は保護されていません

御覧のように 未だ鍵は作成されていません

$ ls -l /home/darekasann/.gnupg/ | sed 1d
-rw-------    1 darekasann  users        8084  9月  4日  15:24 gpg.conf
-rw-------    1 darekasann  users           0  9月  4日  15:24 pubring.gpg
-rw-------    1 darekasann  users           0  9月  4日  15:24 secring.gpg

なんで 復号出来たのでしょう というより パスフレーズはどうして 渡せた のでしょうか?という事ですが この場合 両方の端末は 一人の人間が 操作してい てパスフレーズは当然 しっているので問題とはならないのですが、実際はこの 様な形で運用する事はありません。

ぶっちゃけた話 鍵 パスワード パスフレーズ が 盗まれたらだれでも 解読 出来るということです。当り前です。しかしながら ファイル”asc-file”は そういうことはできません。もうこれは 元の 計算機のユーザーの公開鍵にて 暗号化しているので 元の 計算機のユーザーの 秘密鍵を使わないと 復号でき ません、これもかなり 特殊な使い方になるということです。ちなみに

$ scp asc-file 192.168.0.5:/home/darekasann/
darekasann@192.168.0.5's password: 
stty: standard input: 無効な引数です
stty: standard input: 無効な引数です
stty: standard input: 無効な引数です
asc-file                                      100%  928     0.9KB/s  00:00 
$ gpg -d asc-file 
gpg: ELG-E鍵, ID C8C2853Fで暗号化されました
gpg: 復号に失敗しました: 秘密鍵が得られません

送り先の端末では

$ gpg --list-key
/home/fdopstm/.gnupg/pubring.gpg
---------------------------
pub   1024D/CABF456E 2007-09-01
uid                  fdopstm (Here is fake) <fdopstm@catland.kigdm>
sub   2048g/C8C2853F 2007-09-01

受け取った方では

$ gpg --list-key
gpg: /home/darekasann/.gnupg/trustdb.gpg: 信用データベースができました
$ ls -l /home/darekasann/.gnupg/ | sed 1d
-rw-------    1 darekasann  users        8084  9月  4日  15:24 gpg.conf
-rw-------    1 darekasann  users           0  9月  4日  15:24 pubring.gpg
-rw-------    1 darekasann  users           0  9月  4日  15:24 secring.gpg
-rw-------    1 darekasann  users          40  9月  4日  16:03 trustdb.gpg

にゃんたろう 拝!

2007年 9月 2日 (日) 23:54:28 JST 作成


前へ |次へ

暗号 復号 簡単な例

Copyright © 2007. nyantarou All Rights Reserved.