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