q q 情報セキュリティ 第2回:2006年4月21日(金) q q
本日学ぶこと パスワードと認証 ユーザ認証の基本構成 パスワード解析方法と対策 パスワード管理法 パスワード以外のユーザ認証
認証(Authentication)とは ユーザ認証とは ユーザ名とパスワードなどの組み合わせを使って,コンピュータを利用しようとしている人にその権利があるかどうかや,その人が名乗っている本人かどうかなどを確認すること メッセージ認証とは 「メッセージが正しい送信者からのものである」という性質 http://e-words.jp/w/E8AA8DE8A8BC.html 教科書p.195
ユーザ認証とパスワード ユーザ認証のモデル Verifier (認証者) Prover (証明者) ①ユーザ情報を入力 ② OK/NG ユーザ情報として「個人識別情報」と「パスワード」の組を用いて,個人を識別する 入力時,パスワードは画面上に表示されない 個人識別情報は,システムが提供する パスワードは,システムが提供するものもあれば,利用者が設定するものもある どのようなパスワードを使用すれば安全か?
パスワード解析の前提 敵対者の目標:他人の個人識別情報(ユーザ名,口座番号など)および認証方法を既知として,そこから,認証に必要なパスワードを発見すること 認証方法 敵対者が同じ認証方法を所有する:UNIXのパスワードクラック いくらでも試せる 敵対者は認証方法を所有しない:Webサーバ,銀行ATM 失敗するとペナルティ Verifier (認証者) Cracker (敵対者) ユーザ情報を入力 ② OK/NG ①Proverの
パスワード解析の種類 ブルート・フォース・アタック(brute-force attack,総当り法) 辞書攻撃
二分探索法などで 効率よく発見する ことはできない ブルート・フォース・アタック すべてのパスワード候補をVerifierに送り,「当たり」が出るまで続ける 時間(安全性の尺度)は, 1回の判定時間×探索終了までの回数 探索終了までの回数は,パスワードの候補の数に比例 パスワードになり得る値の集合を「パスワード空間」 という 期待値は,パスワード空間のサイズの半分 パスワード空間が大きいほど安全 二分探索法などで 効率よく発見する ことはできない
数字によるパスワード(1) 銀行の暗証番号 4桁の数字:10000通り もし敵対者が認証システムを所有していて,(電子工作などで装置を作って)1秒間に100回の入力ができるなら,最大でも100秒でパスワードが割り出せる 現実には,1回の入力が0.01秒とできないように対処しているので,一応安全に運用されている 8桁の数字なら?:100000000通り 同様の敵対者の行動で,最大106秒…およそ11.5日 誰もが覚えていられる?
数字によるパスワード(2) 10文字 4文字で10000通り 8文字で100000000通り(1.00×108通り)
英数字によるパスワード 62文字 4文字で14776336通り 8文字で218340105584896通り(2.18×1014通り)
英数字と記号によるパスワード 95文字 4文字で81450625通り 8文字で6634204312890625通り(6.63×1015通り)
パスワード空間のサイズ:まとめ 数字のみ<英数字<英数字と記号 1文字増えるとパスワード空間がうんと大きくなる 文字数 数字のみ 英数字 1.00×104 1.48×107 8.14×107 4 1.11×104 1.50×107 8.23×107 1.00×105 9.16×108 7.73×109 5 1.11×105 9.31×108 7.82×109 1.00×106 5.68×1010 7.35×1011 6 1.11×106 5.77×1010 7.43×1011 1.00×107 3.52×1012 6.98×1013 7 1.11×107 3.58×1012 7.06×1013 1.00×108 2.18×1014 6.63×1015 8 1.11×108 2.21×1014 6.70×1015 ちょうど 以内 数字のみ<英数字<英数字と記号 1文字増えるとパスワード空間がうんと大きくなる
辞書攻撃 問題のあるパスワード 辞書と,選ばれる傾向をもとに,パスワードを発見する方法を「辞書攻撃」という 個人識別情報そのもの,または一部,または少し付加しただけ takehiko, take, takehiko1, takehi0 プライベートな情報 配偶者や恋人の名前,電話番号や生年月日 辞書に載っている単語 apple, web 辞書に載っている単語を組み合わせただけ appleweb, apple!web 辞書と,選ばれる傾向をもとに,パスワードを発見する方法を「辞書攻撃」という ツールが存在する ブルート・フォース・アタックと別の方法で見つかってしまう!
パスワードの選び方 どのようなパスワードを使用すればよいか? 文字種や字数の制限があれば,それに従う UNIXのパスワードでは,英数字と記号を織り交ぜて, 6文字以上8文字以内にする 自分は思い出しやすいものにする 長ければいいってもんでもない 辞書攻撃で破られるようなパスワードは使用しない パスワードをメモしない(?) あちこちの認証システムで同一のパスワードにしない(?)
さらなる問題 Linuxでは,パスワードはどのように管理されている? 自分がネットワーク管理者になったら,パスワードは どのように管理する?
"wakayama"を推測するのは極めて困難 UNIXのパスワード(1) 登録 ユーザまたは 管理者が入力 ランダム パスワード: "wakayama" ソルト:"cc" 暗号化 (crypt関数) パスワード ファイル /etc/passwd 暗号化されたパスワード: "ccwp5gV6wOumk" http://www.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html "wakayama"を推測するのは極めて困難
UNIXのパスワード(2) 認証 パスワード: "wakayama" 暗号化されたパスワード: ソルト:"cc" ユーザが入力 パスワード: "wakayama" 暗号化されたパスワード: "ccwp5gV6wOumk" ソルト:"cc" 暗号化 (crypt関数) パスワード ファイル /etc/passwd "ccwp5gV6wOumk" 等しい?
ソルト(salt)の役割 ソルトがないと… ソルトがあると… ユーザ名 パスワード 暗号化パスワード takehiko wakayama nNAvIrX23n2 murakawa wakayama nNAvIrX23n2 ユーザ名 パスワード ソルト 暗号化パスワード takehiko wakayama cc ccwp5gV6wOumk murakawa wakayama se seL7HUUbt2qmA ソルトが異なれば,同じパスワードでも 異なる暗号化パスワードが生成される
UNIXのパスワード(3) 最近は /etc/passwdには暗号化したパスワードを書かない /etc/shadowに記載し(シャドウパスワード), rootしか読めない DESではなくMD5をもとに暗号化する パスワード長,ソルト長ともに大きくなった 認証の一元化,ネットワーク化を支援するソフトウェアやシステムも広く使われている NIS+ Kerberos LDAP (Lightweight Directory Access Protocol) PAM (Pluggable Authentication Modules) http://www5f.biglobe.ne.jp/~inachi/openldap/admin23/index-ja.html
管理者の立場で(1) パスワードはどう設定するか? 現状の最善解は? システムが生成,提供する よいパスワード生成プログラムを選べば安全にできる ユーザは覚えられず,紙などに記録するかも ユーザに自由に決めてもらう 安全性をユーザに委ねる リマインダ(Reminder)を使用する パスワードを忘れた人が,あらかじめ登録しておいた簡単な質問(例:母親の旧姓は?)に正しく答えれば,パスワードを教える 質問次第で,パスワードなしと同じになってしまう 現状の最善解は? 管理者が,個人識別情報と初期パスワードを提供する ユーザが認証に成功すれば,まず(今後使用する)パスワードを設定し,初期パスワードを破棄する
管理者の立場で(2) パスワードの心得 再発行の注意点 ユーザが変更できるようにする場合 パスワードを忘れた=システムに入れない パスワードを忘れる人がいない組織はない 「暗号化されたパスワード」から,「パスワード」を求めることは 不可能 再発行の注意点 すぐには再発行しない ソーシャルエンジニアリングのおそれ ユーザ教育として これまで発行したパスワードは使わない ユーザが変更できるようにする場合 現在のパスワードを1回,新しいパスワードを2回入力させる いずれも画面に出さない 新しいのが1回だと,打ち間違いを見抜けない
ユーザ認証再考 「タイプ(打鍵)すること」に問題はないか? パスワードでなくてもいいのでは? ネットワーク越しの認証は?
打鍵に対するパスワード取得方法 ショルダーハッキング(shoulder hacking) キーロガー(key logger) パスワードを入力しているのを肩越しに見て,打鍵を記憶すること 対策:後ろの人に見せない キーロガー(key logger) キーボードからの入力を監視して記録するソフトウェア 対策:他人も使うコンピュータを使う際に注意する http://premium.nikkeibp.co.jp/security/special/index01_05_09.shtml http://e-words.jp/w/E382ADE383BCE383ADE382ACE383BC.html
パスワード以外のユーザ認証法 ユーザ認証とは? Verifier (認証者) Prover (証明者) ユーザの持つ情報を使用して,そのユーザであることを確認・証明すること ユーザの持つ情報とは? 持っているもの:IDカードなど 知っていること:パスワードなど 身体的特徴:バイオメトリクス Verifier (認証者) Prover (証明者) ①ユーザ情報を入力 ② OK/NG
バイオメトリクス(Biometrics)認証 個人に固有の情報を利用するユーザ認証方式 長期間にわたって変化しにくく,類似する特徴・特性を 持つ第三者が皆無かきわめて少ないようなものを用いる 個人に固有の情報の例 身体的特徴:指紋,虹彩,顔,手の甲の静脈,音声など 身体的な特性:筆跡,打鍵など 問題点 事前登録が必要…心理的な抵抗も 機器が高価 誤認識があり得る 安価な道具でなりすましができる可能性…グミの指 http://www.friendtouch.com/column/trend/bm_c.html http://www.atmarkit.co.jp/fsecurity/special/44biomet/biometrics01.html http://motivate.jp/archives/2005/04/post_40.html
どちらも0にしたいが,一方を下げると,もう一方は上がってしまう(トレードオフ) 指紋入力装置の性能 http://www.hitachi-hec.co.jp/virsecur/shimonni/shimon01.htmより どちらも0にしたいが,一方を下げると,もう一方は上がってしまう(トレードオフ) 限りなく0に(最優先) なるべく0に(優先低め) http://www.hitachi-hec.co.jp/virsecur/shimonni/shimon01.htm
ネットワークを介した認証 リモートログイン(Prover-Verifier間に距離がある)で,盗聴されてもよいユーザ認証方式は? パスワードを暗号化しなければ…盗聴して,リプレイ攻撃 パスワードを暗号化すれば…暗号文を盗聴して,リプレイ攻撃 通信されるユーザ情報を毎回違うものにすればいい! ワンタイムパスワード ④ (Proverとして)OK Cracker ② 盗聴 ③盗聴内容を送る Verifier Prover ①ユーザ情報を入力
ワンタイムパスワードの例:LM認証 Server Client (Verifier) Prover ② 接続要求 ③チャレンジ ① パスワード ④レスポンス Prover ⑤ OK/NG http://www.atmarkit.co.jp/fsecurity/hybooks/win_server_sec/wss01-01.html LMハッシュ = e(パスワード,"KGS!@#$%") チャレンジは毎回異なる文字列(Serverが生成する) レスポンス = e(LMハッシュ,チャレンジ) eはDES暗号化アルゴリズム
本日のまとめ パスワードのセキュリティ よいパスワード,よい管理方式を選ぶ ブルート・フォース・アタック以外でも破られることがある パスワードがユーザ認証のすべてではない