UNIX (1)

最低限 Unix (1)
Unix におけるパスワード
高橋 康人
情報実験第 2 回
2011/04/22
(Original works : 河野 仁之)
レクチャー内容
1.
2.
3.
4.
5.
一般論としてのパスワード
Unix におけるパスワードの必要性・重要性
パスワード漏えい
パスワード設定の心得
Unix 内部でのパスワード管理
表記について
• ○○は××で△△である。(□□)
– ××
• 強調部分
– △△
• 覚えるべき言葉
– □□
• 喩え
レクチャー内容
1.
2.
3.
4.
5.
一般論としてのパスワード
Unix におけるパスワードの必要性・重要性
パスワード漏えい
パスワード設定の心得
Unix 内部でのパスワード管理
パスワードとは何か(1)
• 日本語で言うと「合言葉」
• 普段から身近に存在する
– 銀行口座・クレジットカードの暗証番号
– ELMS ・ mixi などのログインパスワード 等々…
パスワードとは何か(2)
• すなわちパスワードとは
– サービスの利用に当たり、利用権利保持者であるこ
とを確認するために用いられる、権利者しか知りえな
いフレーズ
• なぜ必要か?
– 権利者以外の利用が認められないサービスだから
• 勝手に現金を引き出される
• 勝手に日記を書かれる
等々…
• Unix においてはどう当てはまるのか?
– これを学んでいきましょう
レクチャー内容
1.
2.
3.
4.
5.
一般論としてのパスワード
Unix におけるパスワードの必要性・重要性
パスワード漏えい
パスワード設定の心得
Unix 内部でのパスワード管理
Unix の利用形態 :
アカウントシステム
• 共用利用前提( Unix =マンション)
– 一つのマシンが複数のユーザによって使われる
• 計算機黎明期からの伝統
• アカウントシステム
– 安全で円滑な共用を可能にする利用方式
1. 権利者を事前に登録
• これが「アカウントの作成」 (部屋の賃貸契約)
2. 登録された権利者(アカウントホルダー(入居者))の
みが Unix へログイン可能
• アカウントホルダー以外には Unix へのログインを認めない
• 利用権利保持者=アカウントホルダー
• サービス=Unix へのログイン & 各種作業
アカウントとは?(1):
アカウント種別
• 計算機管理者( root )(マンション管理人)
– 計算機の絶対主権者
• Windows でいう admin に近いが、より強力
– 計算機内での全権限を行使可能
• 例:新アカウントの作成など
• (すべての部屋のマスターキーを持つ)
• 一般ユーザ
– root 以外のアカウント
– あくまで利用者
• 許可された範囲(自分の部屋, 共用空間)のみ利用可能
– 計算機自体の運用については不可触
• 例:電源シャットダウンすら不可能
アカウントとは?(2) :
アカウント登録情報
• アカウント名(名札, 表札)
– 計算機上での「名前」
• ユーザ名, ID, ログインネーム…
• アカウントを作成するとホーム領域が作られる
– (自分の表札を掲げた部屋)
• Windows 開始時の「ようこそ○○さん」の「○○」にあたる
• パスワード(部屋の鍵)
– アカウント利用者の本人認証フレーズ
• その他
– 本名, 住所など…(登録任意)
– 基本的には参照されることはない
ログイン
• Unix のサービス利用開始手続き
– ホーム領域(自分の部屋)に入るという宣言
• 入ると同時にアカウント名を名乗ることになる(名札の着用)
– Windows でいう「デスクトップへのログオン」
• 必要な入力事項は2項目のみ
– アカウント名
• 基本的に公開されてもよい情報という扱い
– パスワード
• もちろん非公開情報としての扱い
• すなわちパスワードが唯一無二の認証方式
– だからこそアカウントホルダー全員が正しく扱う義務
• 漏えいすると取り返しのつかないことに・・・
レクチャー内容
1.
2.
3.
4.
5.
一般論としてのパスワード
Unix におけるパスワードの必要性・重要性
パスワード漏えい(部屋の鍵が盗まれた!)
パスワード設定の心得
Unix 内部でのパスワード管理
漏えいの危険性
• パスワードが唯一無二の認証方式
– シンプル故に強力かつ脆弱
• 他者に知られれば容易に「なりすまし」が可能
• (マンションの住人の振りをする)
• 世の中はそんなに友好的ではない
– パスワードは常に狙われている
– ネットワークを通じて世界中から・・・
– あらゆる手段を用いて・・・
• クラック(クラッキング)
– 計算機を不正利用すること
• ハック(ハッキング)は誤用
– アカウントの乗っ取り = アカウントクラック
アカウントクラック時の被害(1) : 本人
• 自分のアカウント情報書き換え(鍵の変更)
– パスワードが変更されればログイン不可
• データの盗難・破壊
– 自分が蓄積した経験が水泡に帰す…
• 将来にわたっての継続的な不安
– 盗み見られたデータに基づく恐喝
– ネットワークへのデータ流出に伴う半永久的な
損害
•
一旦出てしまえば事実上回収は不可能
–
いつどこで悪用されるかわからない
クラック時の被害(2) : 周囲
• 計算機の運用妨害
– 高負荷処理によるサービス妨害
• 他のアカウントへの被害波及
– 一旦ログインできればあとは比較的簡単
•
(マンション内連続窃盗/強盗/暴行事件)
– 特にルートクラック ≒ 計算機の運用停止につな
がる
•
(マンション閉鎖)
ルートクラックの恐ろしさ
• 「計算機管理者は絶対主権者」
– 他のアカウントのデータを含め、計算機の全情報
を見られる・変更できる
• 世界のクラッカー達の鴨リストに載る
1. 一度でもクラックされると, そのマシン情報はす
ぐにネットワークを通じて拡散する
2. 容易に暴けるクラック対象として世界中から集
中攻撃を受けるようになる
3. 数カ月おきにクラックされるようになる
4. 計算機の運用停止に追い込まれる
– こうして joho21 は・・・
クラック時の被害(3) : 世界
•
同一ネットワーク内の他の計算機へ侵入
– 「自分の手」を汚さずに「内側」からクラック
•
インターネットを通じてより大規模なクラックへ
の足がかりとして悪用
– クラックした複数のマシンをさらなるクラックのための
高速計算に転用
– 多数のマシンを使っての大規模なサービス妨害
• 犯罪等への加担
– フィッシング詐欺などに転用
– 時には国際問題にも発展
• ネットワークにつながった計算機 = 凶器
パスワードは
自分と仲間と世界を
守る盾
レクチャー内容
1.
2.
3.
4.
5.
一般論としてのパスワード
Unix におけるパスワードの必要性・重要性
パスワード漏えい
パスワード設定の心得
Unix 内部でのパスワード管理
良いパスワードの条件
• パスワードにも善し悪しがある
– 「弱い」パスワードはほとんど役に立たない
– (革の盾より鉄の盾、ミスリルの盾)
• 必要な条件
– なによりも頑丈さ (十分な長さ)
– 他者にとっての使いにくさ(憶えにくさ, 連想しにくさ)
• 理想
– 自分にとっての使いやすさ (憶えやすさ, 連想しやす
さ)
• まずは敵を知るところからはじめましょう
クラッカーの手法(1):
Brute Forth Attack
• 総当たり攻撃
– パスワードとして可能な全ての組み合わせを片っ
端から試す
• 原理的には確実にパスワードを解読可能
• ただし解読に要する時間は字数に大きく依存
– 一文字増えるごとに指数関数的に長くなる
クラッカーの手法(2):
Dictionary Attack
• 辞書攻撃
– あらゆる分野の 100 万語とも言われる単語を記
録したクラッキング用辞書を用いる
• オンライン英和辞典でも 8 万語程度
• これ単体で確実にクラックできる保証はない
– 無作為な文字列には対応できない
• ただし BFA より極めて効率的
– 完全に無作為なパスワードはほとんど存在しな
いため
具体的なパスワード設定条件
• 可能な範囲でばらばらの文字・記号を使う
– 大文字, 小文字, 数字, 記号
• 8文字以上並べる
• 推定しやすい言葉を用いない
– 辞書にある単語
– 個人情報から連想できる言葉
– 以上を簡単な規則で置き換えた言葉
なぜいろいろな文字・記号を
用いるべきか
• 合計
: 89 種
– アルファベット大小文字 : 52 種
– 数字
: 10 種
– 記号 (例)
: 27 種
• 組み合わせ数 ( 8 文字)
– 小文字 + 数字の場合
• 36^8 = 2.82 * 10^12 通り
– 全てを用いた場合
• 89^8 = 3.93 * 10^15 通り
• BFA, DA 両方に対して有効な防御策
BFA への防御策 :
なぜ 8 文字以上か
• Brute Forth Attack に対する十分な強度
– 例 : Core2Duo T8300 搭載機(89文字の場合)
– 400万アタック / sec
• 7文字 : 129 日
• 8 文字 : 31 年
– 注:クラックにこれだけかかるというわけではない!
• ただし Dictionary Attack には効果がない
– 辞書に載っていれば長くても短くても関係なし
DA への防御策 :
推定しやすい言葉とは?(1)
• クラッキング辞書にある単語
– 言語・分野問わずあらゆる単語, 固有名詞など
• Flower, disneyland, shiokara, kannaoto, hokudai …
– どんなにマニアックな単語も不可
• Antidisestablishmentarianism
– 国教廃止条例反対論
• Pneumonoultramicroscopicsilicovolcanoconiosis
– 塵肺症
• 個人情報から推定できるもの
– 本名, 住所, アカウント名, 学籍番号等々
• Kuramoto, sapporo, keikei, s20151234k …
DA への防御策 :
推定しやすい言葉とは(2)
• 以上を簡単な規則で変形したもの
– 逆つづり, 繰り返し
• Rewolf, flowerflower, otomarukotomaruk
– 大文字⇔小文字, 0 → o, s → $ などの置き換え
• Fl0wer, ReWo1F, $app0r0, Rew0lf1owEr
– DA はこのような変形にも対応していることが多い
パスワードマナー
• パスワード打鍵時は視線を逸らす
– 「ソーシャルクラッキング」と呼ばれる立派なクラック手法
• アカウントの貸し借りはしない
• パスワードは誰にも教えない
– 計算機管理者も例外ではない
• パスワードをメモしない
– やむを得ずメモする場合は
捨てない・見せない・失くさない
• 同じパスワードを使いまわさない
• パスワードは定期的に変更する
• 初期パスワードは迅速にログインしたうえで変更する
自分にとって「のみ」
使いやすいパスワード
レクチャー内容
1.
2.
3.
4.
5.
一般論としてのパスワード
Unix におけるパスワードの必要性・重要性
パスワード漏えい
パスワード設定の心得
Unix 内部でのパスワード管理
Unix のデータ管理概念
• ファイル
– Unix におけるひとまとまりのデータ
– Windows でいう「ファイル」
• ディレクトリ
– ファイルをまとめるための特殊なファイル
– Windows でいう「フォルダ」
• 階層構造
– 次回講義参照
Unix 内のアカウント情報
• 他の情報と同じくファイルとして保存
– 3つに分けて保存されている
• /etc/passwd
– アカウントの基本情報。閲覧制限なし
• /etc/shadow
– アカウントの暗号化済みパスワード情報。 root
のみ閲覧可。
• /etc/group
– グループの基本情報。閲覧制限なし???
– グループについては ??? を参照
/etc/shadow の中身(一例)
addii:$1$Utev74.c$dyH520./rf0pQydGHu6f01:14962:0:99999:7:::0
adom:$1$yfr59.ND$n0FRdB.GTdsC9.Hyr4dTr3:14965:0:99999:7:::0
adison:$1$e.H/te0$prwgyr6GYr5.kOC.g3llX.:14968:0:99999:7:::0
adon:$1$y.JgtEf5$lp.TH..7esCf7fpHYre4./:14965:0:99999:7:::0
bob:$1$Dol/are4$r3M4h6.dlWYo9goIcGY64.:14961:0:99999:7:::0
david:$1$OgoWhdOf$uhBfrD./07c5TG43.ZqP/V:13965:0:99999:7:::0
addii:$1$Utev74.c$dyH520./rf0pQydGHu6f01
/etc/shadow で使われている
暗号化方式