GPG (GNU Privacy Guard) はフリーの暗号化ソフトです. 単にファイルを暗号化, 復号出来るだけでなく, ファイルに電子署名をつけることもできます.
ここからの実習は二人一組になって行ってもらいます(三人のところはうまくやってください...笑).
公開鍵と秘密鍵のペアを生成します(この作業は二人とも行う). 以下は, アカウント名 hoge が鍵を生成する例です.
まず X を立ち上げます.
hoge$ startx |
次に端末を立ち上げて端末内に鍵のペアを生成するためのコマンドを打ちます. 使うコマンドは gpg です.
hoge$ gpg --gen-key |
鍵の設定に関して何項目か質問されるので, 本実習では以下のように設定しましょう.
gpg (GnuPG) 1.4.9; 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 (2) DSA (署名のみ) (5) RSA (署名のみ) 選択は? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 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>" 本名: HOGE Hoge 電子メール・アドレス: hoge@ec.hokudai.ac.jp コメント: test 次のユーザーIDを選択しました: "HOGE Hoge (test) <hoge@ec.hokudai.ac.jp>" 名前(N), コメント(C), 電子メール(E)の変更、 または OK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 パスフレーズを入力: (password) パスフレーズを再入力: (password) 今から長い乱数を生成します。 キーボードを打つとか、 マウスを動かす とか、 ディスクにアクセスするとかの他のことをすると、 乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、 お勧めいたします。 +++++ ....+++++ 今から長い乱数を生成します。 キーボードを打つとか、 マウスを動かす とか、 ディスクにアクセスするとかの他のことをすると、 乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、 お勧めいたします。 +++++ ....+++++ gpg: /home/hoge/.gnupg/trustdb.gpg: 信用データベースができました gpg: 最小の「ある程度の信用」3、 最小の「全面的信用」1、 PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u pub XXXXX/XXXXXXXX 2011-07-26 指紋 = XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX uid HOGE Hoge (test) <hoge@ec.hokudai.ac.jp> sub XXXXX/XXXXXXXX 2011-07-26 |
--> 鍵の種類を選択 -->鍵のサイズを選択 -->鍵の有効期限を選択 |
今生成した公開鍵が自分の所有する公開鍵リストに登録されていることを確認しましょう.
hoge$ gpg --list-key ------------------------------------------------------------- pub XXXXX/XXXXXXXX 2011-07-26 uid HOGE Hoge (test) <hoge@ec.hokudai.ac.jp> sub XXXXX/XXXXXXXX 2011-07-26 |
今生成した秘密鍵も自分の所有する秘密鍵リストに登録されていることを確認しましょう.
hoge$ gpg --list-secret-key ------------------------------------------------------------- sec XXXXX/XXXXXXXX 2011-07-26 uid HOGE Hoge (test) <hoge@ec.hokudai.ac.jp> ssb XXXXX/XXXXXXXX 2011-07-26 |
これで公開鍵・秘密鍵の設定は終了です.ペアの受講生も同様にして 鍵を作成しましょう.以下では hoge さんの相方のアカウント名を hero として進めていきます.
hero$ gpg --gen-key "HERO Hero (test) <hero@ec.hokudai.ac.jp>" |
お互いの公開鍵を登録します. 以下の例は hero さんが hoge さんの公開鍵を登録する手順です.
まず hoge さんが自分の公開鍵を hoge_pub-key.asc という名前のアスキー形式ファイルとしてエクスポートします.
hoge$ gpg -a --export hoge@ec.hokudai.ac.jp > hoge_pub-key.asc |
次に hero さんが hoge_pub-key.asc をインポートします.
hero$ gpg --import /home/hoge/hoge_pub-key.asc |
正しくインポートされたか確認.
hero$ gpg --list-keys -------------------------------------- pub YYYYY/YYYYYYYY 2011-07-26 uid HERO Hero (test) <hero@ec.hokudai.ac.jp> ssd YYYYY/YYYYYYYY pub XXXXX/XXXXXXXX 2011-07-26 uid HOGE Hoge (test) <hoge@ec.hokudai.ac.jp> ssd XXXXX/XXXXXXXX 2011-07-26 |
それでは, いよいよファイルを暗号化, 復号する実習をしましょう. 以下の例では, hero さんが hoge さんの公開鍵で暗号化し, hoge さんが自分の秘密鍵で復号化する例です.
まず, hero さんが暗号化するためのテキストファイルを作成します.
hero$ echo "hello World" > /home/hero/hello.txt |
hello.txt を hoge さんの公開鍵で暗号化します.
hero$ gpg -a -r hoge@ec.hokudai.ac.jp -e /home/hero/hello.txt --------------------------------------- gpg: XXXXXXXX: この鍵が本当に本人のものである、 という兆候が、 ありません pub XXXXX/XXXXXXXX 2011-07-26 HOGE Hoge (test) <hoge@ec.hokudai.ac.jp> 主鍵の指紋: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 副鍵の指紋: YYYY YYYY YYYY YYYY YYYY YYYY YYYY YYYY YYYY YYYY この鍵は、 このユーザーIDをなのる本人のものかどうか確信できません。 今から行うことを * 本当に * 理解していいない場合には、 次の質問にはnoと答えてください。 それでもこの鍵を使いますか? (y/N) y |
hello.txt.asc というファイルが作成されているはずなので, 本当に暗号化されているか 中身を見てみましょう!
hero$ lv /home/hero/hello.txt.asc |
無事に暗号化されていれば,あなたには読めなくなっているはずです.
次に hoge さんが hello.txt.asc を自分のホームディレクトリにコピーします.
hoge$ cp /home/hero/hello.txt.asc /home/hoge/ |
最後に hoge さんが hello.txt.asc を自身の秘密鍵で復号する.
hoge$ gpg hello.txt.asc ------------------------------------ 次のユーザーの秘密鍵のロックを解除するには パスフレーズがいります: "HOGE Hoge ( test ) |
hello.txt が生成され, 中身がもとのものと一致すれば成功!
hoge$ cat /home/hoge/hello.txt |
最終更新日: 2014/07/04 齊藤 大晶 | Copyright © 2000-2014 inex |