情報セキュリティ: 2005年6月17日

q
q
情報セキュリティ
第10回:2005年6月17日(金)
q
q
今後の予定

第10回:6月17日
q
q

第11回:6月24日
q

企業・組織のセキュリティ:ISMS,個人情報保護法
第14回:7月15日
q

理論:計算論,暗号プロトコル
第13回:7月8日
q

サーバセキュリティ
第12回:7月1日
q

落ち穂拾い(1)
暗号化ソフトウェア:PGPとGnuPG,SSH
落ち穂拾い(2),おさらい問題
第15回:7月22日
q
試験
2
落ち穂拾い:RSAの安全性(1)


素因数分解が効率よく行えるなら,RSAは安全でない.
略証:
q
q
NとEを既知とし,(素因数分解により)Nの素因数pが知られて
いるときに,Dを計算できればよい.
q=N/p,L=lcm(p-1,q-1) とし,aE+bL=1を満たす整数の組(a,b)
を拡張ユークリッド法により求めれば,D = a mod L.
3
落ち穂拾い:RSAの安全性(2)


離散対数問題を効率よく解けるなら,RSAは安全でない.
略証:
q
q
NとEを既知とし,ここから「任意の整数値Mに対して
(ME mod N)D mod N = M」となる整数Dを計算できればよい.
整数n1 を2≦n1<N の範囲で任意に選び,n2=n1E mod Nを計
算してから,n2x mod N = n1を満たす整数xを求めると(離散対
数問題),D=xかもしれない.
 n1がNの生成元であれば,D=xとしてよい.
 n1がNの生成元でなければ,複数の解があり得るが,
n1 をいくつか選んで計算すれば,Dを特定できる可能性が
高くなる.
4
本日学ぶこと

暗号化ソフトウェア
q
q
PGP (Pretty Good Privacy) と
GnuPG (GNU Privacy Guard) …メールやファイルの暗号化
SSH (Secure SHell) …通信の暗号化
5
PGPの鍵リング(key ring)

各利用者が鍵を管理
q
q
q
それぞれの鍵は,作成者も鍵長も暗号アルゴリズムも様々
[email protected]の鍵は,だれでも生成可能
GnuPGでは,~/.gnupg 以下のファイル
6
GnuPGで行う操作(1)

自分の鍵(公開鍵&プライベート鍵)
q
q
q
q

鍵ペア生成
破棄証明書の作成
公開鍵暗号による復号
署名(ファイル,他人の鍵)
他人の鍵(公開鍵)
q
q
q
q
q
インポート
署名
信頼度設定
公開鍵暗号による暗号化
署名の検証
7
GnuPGで行う操作(2)

鍵リング
q
q
q
q

その他
q
q

鍵の書き出し(テキスト化)
鍵のインポート・削除
鍵一覧・fingerprint
公開鍵サーバへ鍵を送受信
公開鍵サーバで鍵の検索
対称暗号による暗号化と復号
使い方は,ここをブックマーク!
q
http://seorg.moo.jp/nateha/index.php?GnuPG
8
PGPのインポート(import)

鍵を鍵リングに取り込むこと
q
q
q

鍵の入手方法は…
q
q

主に他人の公開鍵
自分の鍵(公開鍵&プライベート鍵)は,
鍵ペア生成で自動的にインポートされる
破棄証明書をインポートすることも
本人,または信頼できる人からファイルで
インターネットで,公開鍵サーバ(keyserver)から
インポートの後は?
q
q
まず①正当性を確認,②自分の鍵で署名,③信頼度設定
そうすれば,暗号化や,署名の検証ができる.
9
公開鍵をインポートしたら

他人の公開鍵をインポートしただけでは
q
q

その鍵が正当なものかわからない.
その鍵で暗号化・署名の検証などをしてはいけない.
正当性の確認:所有する鍵のfingerprintを求め,
別に公開されているfingerprintと照合する.
q
「Takehiko Murakawa <[email protected]>」
(ID: 3A423EBE)のfingerprintは
564B 8D8E C58A 0D78 8294 F3E9 0D23 DE18 3A42 3EBE


自分のプライベート鍵で「鍵に署名」をつけると,自分はその
鍵を信頼したことになる.
信頼度(所有者信頼)は,第三者がその鍵を信頼するための
情報
q
信頼度情報を,公開鍵サーバに送ることができる.
10
鍵の破棄


鍵リングから鍵を削除するコマンドを実行する
自分の鍵は?
q
q
鍵ペア生成後すぐ,破棄証明書を作成しておく
不要になったほかに,漏洩(compromise)の疑惑があれば,
破棄証明書を鍵リングにインポートしたのち,
公開鍵サーバに送信すればよい.
(鍵リングからの削除はしないほうがよい.)
11
Windowsで利用可能なGnuPG


Cygwinのgpgコマンド
Windows Privacy Tools (WinPT)
12
PGPで暗号化・復号のできるメールクライアント

Windows用
q
q
q

Datula (シェアウェア)
Becky! (シェアウェア)
Thunderbird + enigmail など
Linux用
q
q
Sylpheed (6階演習室ではできない)
Emacs + Mew
13
PGPで暗号化メールを送ってみたい人へ

第2回レポートを, 「Takehiko Murakawa
<[email protected]>」の鍵で暗号化して
メールで送ってかまいません.
q
q
q
期限は,Thu, 23 Jun 2005 12:00:00 +0900まで.それ以降の
メールは平文で送ること.
 復号できたら,その旨返信するとともに,加点します.
 復号できなかったら,再送依頼のメールを送ります.
メールクライアントで暗号化するのでも,レポートのファイル
(doc, pdf, txt)を暗号化して添付するのでもかまいません.
ディジタル署名はつけないでください.
14
SSH

リモートホストとの通信を安全に行うためのプロトコル
q
q


クライアントは,サーバ(リモートホスト)の認証をする
サーバは,ユーザの認証をする
telnet, rlogin, ftp などのコマンドを置き換える
SSL/TLSやVPN (Virtual Private Network)とは別物
ローカルホスト
(SSHクライアント)
リモートホスト
(SSHサーバ)
15
SSHでできること

リモートログイン…ssh, slogin
q


ポートの転送(ポートフォワーディング)
ファイルのコピー…scp
FTPと似た方法でファイルをコピー…sftp
16
SSHの種類

製品かフリーか
q
q

SSH Tectia…SSH社の製品
OpenSSH…フリー.Linuxでも広く使われている
プロトコルバージョン
q
q
q
SSH1…安全性に問題があり,使われない
SSH2…広く使われている
製品のバージョンとは別!
17
準備


リモートホストでSSHサーバを起動させておく
TCPのポート番号22にアクセスできるようにしておく
18
SSH2プロトコルの概要
クライアント
サーバ
接続要求
バージョン番号通知,ID交換
鍵交換,ホスト認証,暗号化情報の交換
セッション暗号化,ユーザ認証
データ通信
『情報セキュリティプロフェッショナル総合教科書』p.374より(一部改変)
19
SSH2で使用される暗号アルゴリズム

公開鍵認証
q

鍵の共有
q


Diffie-Hellman鍵交換の修正版
認証後のデータ通信
q

RSAまたはDSAによるディジタル署名
AES / 3DES / Blowfish / Arcfour / CAST などから選ぶ
データ通信の暗号化は公開鍵暗号ではなく対称暗号
鍵の共有や公開鍵認証で乱数を使うが,チャレンジ-レスポ
ンス方式ではない(SSH1では使用する)
20
サーバ公開鍵について



サーバ公開鍵(サーバのホスト公開鍵)は,SSHサーバが
最初に1回だけ生成する.(ユーザは生成しない.)
サーバ公開鍵の送付時にMan-in-the-middle攻撃が可能!
最初に送付されるサーバ公開鍵は,ユーザの目で確認して,
yes/noを選ばなければならない.
q
q
q

ホスト認証(利用者から見た
サーバの認証)の注意点
確認方法…fingerprintの照合
自己責任で「yes」を選ぶこともある
サーバ公開鍵を,何らかのメディアで転送してもよい.
サーバ公開鍵は ~/.ssh/known_hosts に保存される.
q
q
それ以降の同じサーバとの接続では,自動的に確認される.
サーバが鍵を作り直したら,クライアント側は古い公開鍵情報を
削除しなければならない.
21
ユーザ認証の方法

パスワード認証
q
q
q

ログインごとにパスワードを入力
従来のリモートログイン(telnet, ftpなど)を安全に行える
字数が少なく安全性にやや不安
公開鍵認証
q
q
q

ユーザ認証(サーバから見た
利用者の認証)の注意点
ログインごとに,ログイン用パスワードとは異なるパスフレーズ
(passphrase)を入力
エージェント(ssh-agentコマンド)の利用により,パスフレーズ入
力の省力化が可能
あらかじめローカルホストで鍵ペアを生成し,リモートホストの
~/.ssh/authorized_keys に公開鍵を登録しておく.
どの認証方法を許可するかは,/etc/sshd/sshd_config に
記載する(編集にはroot権限が必要).
22
ポート転送

学外から「ssh -L 10110:POPサーバ:110 リモートホスト」を実
行すると
q
q
リモートホストにログインし,コマンド実行などができる.
ローカルホストでは,「POPサーバ:25」に代えて
「localhost:10110」でメール受信(POP)が安全にできる.
 リモートホスト-POPサーバ間は暗号化されていない
ローカル
ホスト

リモート
ホスト
POP
サーバ
「ssh -L ポート番号:localhost:ポート番号 リモートホスト」
が有用なことも
23
Windowsで利用可能なSSHクライアント

Cygwinのsshコマンド
q

PuTTY
q
q

UNIX上のコマンドとほぼ同じ動作
リモートログイン
GUIで各種設定
WinSCP
q
GUIでファイル送受信
24
ファイル構成(Linuxの場合)

GnuPG
q

SSH
q
~/.ssh
 config
 known_hosts
 authorized_keys
 id_rsa.pub
 id_rsa
いずれのディレクトリも,パーミッションは 700 (他のユーザ
からは読み書き実行できない)にする.
q

~/.gnupg
 gpg.conf
 pubring.gpg
 random_seed
 secring.gpg
 trustdb.gpg

各ファイルのパーミッションは 600 が望ましい.
詳細は,man gpg と man ssh で
25
暗号化通信の実演
① 暗号化したいファイルを右クリックし,WinPTの機能で暗号化
q
パスワードやパスフレーズは入力しない
② CygwinのscpコマンドでLinux計算機にコピー
q
パスワード認証
③ CygwinのsloginコマンドでLinux計算機にログイン
q
ここでも,パスワード認証
④ リモートホストのシェル上で,gpgコマンドによりファイルを
復号
q
プライベート鍵を使うためのパスフレーズを入力
⑤ 復号されたファイルが同じものかを,それぞれで
md5sumコマンドを実行して確認
26
まとめ



PGPは,メールやファイルを暗号化するためのソフトウェア
SSHは,通信を暗号化するためのプロトコル
最低1回は,人手による鍵の正当性確認が行われる.
27