暗号通信
by
菊地時夫
—
last modified
2009-07-09 09:43
7月21日(火・1)
2種類の暗号
共通鍵暗号
公開鍵暗号
実際の通信では
- 公開鍵暗号で、通信相手の確認と共通鍵の交換
- データ通信は共通鍵暗号
以下の演習は
- ~/net で、行うこと
$ cd
$ cd net
$
- 第1回目の演習をさぼっていると、 ~/net が無いので、エラーになります。前の資料を参考にディレクトリを作成してください。
GnuPG を使ってみる
- Pretty Good Privacy -> GNU Privacy Guard
gpg --help
でコマンドの概要が出る
- まずは、
gpg --gen-key
で、自分の鍵対を作成
- 鍵の種類・長さ・有効期間は
return
で、y を入力
- 本名・メールアドレスを入力(メールアドレスの入力で画面が乱れるが、後で確認できる)
- コメントは無し
自分宛に暗号作成
- 適当なテキストファイルを作成
- 例えば finger (自分のユーザ名) > plain.txt
gpg -ea -r (自分のユーザ名)@is.kochi-u.ac.jp plain.txt
で暗号化
- plain.txt.asc ができている。
mv plain.txt plain.txt.1
で、オリジナルを退避
gpg plain.txt.asc
で、復号
隣の人と公開鍵交換
gpg --export -a -o ファイル名
で公開鍵を書き出す
- ファイル名は
ユーザ名-gpg.asc
にしておいてください。
- 隣の人宛に、メールでこのファイルを送ってください。
- 受け取ったファイルを確認して、
gpg --import ファイル名
隣の人へ暗号を送る
gpg -ea -r (隣人のユーザ名)@is.kochi-u.ac.jp plain.txt
で暗号化
- できたファイルをメールで送る
- 受け取ったメールから暗号文をファイル:例えば
(隣人のユーザ名).asc
に書き出す(添付ファイルの場合は保存)
gpg (隣人のユーザ名).asc
で復号 ... cat 等で読めることを確認
署名付きメッセージの作成
- hoge.txt を作る
gpg --clearsign hoge.txt
で署名付きのテキストができる
- 隣の人へ送る。
gpg hoge.txt.asc
で、署名の確認
- メッセージ部に手を加えるとどうなるか試してみる
- gpg の練習については
次の演習(SSH)は、
cd
でホームディレクトリに戻ってから実行すること
SSH
- Secure Shell ターミナルを使って隣のマシンにログインする
- 隣の人が利用中のマシンに付いているシールを確認
PC1-xx
と、書いてあったら 192.168.201.1xx
が、その IP アドレスです。
- ターミナルで
ssh 192.168.201.1xx
と入力
- connecting(yes/no)? に yes を入力
- パスワードを要求されるので、入力
SSH で公開鍵を使う
exit
で自分のマシンに戻ってください
ssh-keygen
コマンドを実行
- 保存するファイルは指定どおり(~/.ssh/id_rsa)
- Passphrase は(ここでは)空白にしておく(リターンのみ)
cd .ssh
で id_rsa, id_rsa.pub の2つのファイルができていることを確認
cp id_rsa.pub authorized_keys
で 認証キーファイルを作成
もう一度 ssh で隣へ
ssh 192.168.201.1xx
- 今度はパスワード入力の必要が無い
- 公開鍵を使った認証を行っているため
- ここでは NFS によって同じホームディレクトリを相手ホストでも使っているため、cp だけで authorized_keys ができたが、実際には遠隔ホストに公開鍵を送るには scp などの手段が必要である。
scp
- ファイルの転送には scp コマンドが利用できる。
- ssh で確立したコネクション上でファイルの転送を行う。
- 送信
scp localpath host:[path]
- 受信
scp host:path localpath
Enigmail
- Enigmail は、GnuPG を Thunderbird から利用するためのアドオンです。
- 現在、enigmail-0.95.7-tb+sm.xpi が利用可能です。上の学内情報のページに従ってインストールし、使ってみてください。
本日の問題
- 菊地宛のメール で、本日の演習の感想を送ってください。なお、菊地の OpenPGP 公開鍵は ここ にあるので、これを使って暗号で送ってくれたら、加点します。