このページでは、パスワードの強度の計算、チャレンジレスポンス認証とワンタイムパスワード、シングルサインオン、生体認証、PAPとCHAP、RADIUSがわかります。
- 一言で言うと:
- 「本当にその人か」を確かめる認証のやり方の話
- パスワードを盗まれにくくする工夫(チャレンジレスポンス、ワンタイムパスワード)、一度の認証で済ませる工夫(シングルサインオン)、外からつなぐときの認証(PPP、RADIUS)が出てくる
利用者を確かめる(パスワード、生体、多要素など)→ 外からつなぐ(リモートアクセス・PAPとCHAP)→ 認証係を別に置く(RADIUS・IEEE 802.1X)
覚え方の軸
- 認証の手がかりは3つ:「知っているもの・持っているもの・体そのもの」
- 知識(パスワード)、所有(ICカード、デジタル証明書)、生体(特徴)(指紋、虹彩)
- このうち2つを組み合わせるのが2要素認証
- パスワードを守る工夫は「ネットワークに、そのまま流さない」
- チャレンジレスポンス認証は、毎回変わるチャレンジコードとパスワードからハッシュ値を作って送る
- ワンタイムパスワードは、パスワード自体を毎回使い捨てにする
- PPPでは、平文で送るPAPより、チャレンジレスポンスのCHAPを使う
- 「一度の認証で済ませる」仕組みは、何に認証情報を持たせるかで分ける
- Cookie型はクライアントに、リバースプロキシ型は代理のサーバに、SAML型はXMLの仕様でサービス間に、Kerberosはチケットに持たせる
- RADIUSは「受付(アクセスサーバ)と判断係(認証サーバ)を分ける」
- 受付が攻撃されても、パスワードの名簿は奥の認証サーバにあるので被害が小さい
- 提供する機能はAAA(認証・認可・課金/ログ)
- パスワードの強さは「文字の種類の数の、文字数乗」
- Mⁿ。文字数を少し増やすだけで、何百倍も強くなる
利用者認証:本当にその人か確かめる(★)
- アクセスコントロール:
- 利用者の識別、認証、権限管理を行うこと
- 認証システム:
- アクセスコントロールを実装したシステム構成
- 権限管理:
- 利用者のアクセス権を設定・コントロールすること
- 利用者ごとに権限を設定したり、効率よく管理するためにロール(複数の権限をまとめたもの)を定義して、各利用者に割り当てたりする
- 例えば、「経理担当」というロールに「伝票の入力」「帳票の印刷」の権限をまとめ、経理部の人にそのロールを与える
- 認証:
- コンピュータシステムを使う個人が、本当に使う権限を持っているかを確かめる行為
| 認証の種類 | 何を基にするか | 例 |
|---|---|---|
| 知識による認証 | 本人にしか知りえない情報 | パスワード |
| バイオメトリクス認証 | 本人に固有の生体情報 | 指紋、声紋 |
| 所有物による認証 | 本人しか持ち得ない所有物 | デジタル証明書 |
① 固定式パスワード方式
- 固定式パスワード方式:
- 古典的なパスワード認証方式
- 利用者ID(ユーザID)と、それに対応するパスワードで、本人かどうかを認証する
- 簡便なので、多くのコンピュータシステムで使われている
- 適切に運用すれば、かなりのセキュリティ強度が期待できる
パスワードの強度(★試験で式が問われる)
- 設定できるパスワードの理論的な総数=
- 使用できる文字の種類数(M)の、パスワードの文字数(n)乗
- Mⁿ
- 例:
- 使える文字が英大文字と英小文字の52種類で、8文字なら52⁸個、10文字なら52¹⁰個
- 個数の比は、52¹⁰ ÷ 52⁸ = 52² = 2,704倍
- たった2文字多くするだけで、ブルートフォース攻撃(総当たり攻撃)を受けても、強度がぐっと高くなる
- 試験での出方(試験):
- 設定できるパスワードの総数を表す式が問われる
- 例題(パスワードの総数):
- ①数字(0〜9の10種類)だけの4文字のパスワードは、何通りか
- ②①を6文字にすると、何倍になるか
- ③①の文字を、数字と英小文字(10+26=36種類)に増やすと、4文字で何通りか
- 例題の答え:
- ①10⁴ = 10,000通り
- ②10⁶ ÷ 10⁴ = 10² = 100倍(10⁶ = 1,000,000通り)
- ③36⁴ = 36 × 36 × 36 × 36 = 1,296 × 1,296 = 1,679,616通り(①の約168倍)
- 覚え方:
- 文字数(n)は指数なので、文字数を増やすほうが効きやすい
② チャレンジレスポンス認証
- チャレンジレスポンス認証:
- 暗号化していないパスワードをネットワークで使うと、送ったパスワードを読み取られる危険がある
- この脆弱性をなくすための方式の1つ
- スニッフィング:
- ネットワーク上を流れるデータを、不正に取得して解読する行為
チャレンジレスポンス認証の手順
- ユーザIDを送る:
- クライアントが、ユーザIDを送って、確認を要求する
- チャレンジコードを送る:
- サーバは、乱数でチャレンジコードを作り、クライアントに返す
- ハッシュ値を送る:
- クライアントは、送られてきたチャレンジコードとパスワードを基に、ハッシュ関数でハッシュ値を作り、サーバに返す(これがレスポンス)
- 比較・確証:
- サーバは、ユーザIDに対応する登録済みのパスワードとチャレンジコードから、同じようにハッシュ値を作る
- クライアントが作ったハッシュ値と比べて、一致すれば、パスワードが正しいことになり、認証される
- チャレンジレスポンス認証が安全な理由:
- ネットワークを流れるのは、チャレンジコードとハッシュ値だけ。パスワードそのものは流れない
- チャレンジコードは使い捨てなので、盗聴されても、次のログインではチャレンジコードが変わり、攻撃者は不正アクセスできない
- ハッシュ値を盗聴されても、そこから元のパスワードを割り出すことは事実上不可能
- チャレンジレスポンス認証の例え:
- 合言葉そのものを言うのではなく、門番が毎回出す「お題」に、合言葉を使った決まった計算をして答える。盗み聞きされても、次は違うお題なので使い回せない
- 実装例:
- PPPのCHAP
- ハッシュ関数:
- あるデータを元に、一定長の擬似乱数を作る計算手順
- 作った値を、ハッシュ値、またはメッセージダイジェストという
- 作ったハッシュ値から元のデータを復元できない性質(原像計算困難性)がある
- そのため、不可逆関数、一方向性関数とも呼ばれる
- 例えば、ミキサーで作ったジュース。ジュースから元の果物には戻せない
③ ワンタイムパスワード
- ワンタイムパスワード(OTP:One Time Password)方式:
- パスワードは、同じものを使い続けるほど漏えいリスクが大きくなる。でも、頻繁に変えると管理の負担が大きい
- そこで、そのときだけ有効なパスワードを自動的に作り、ログインのたびに毎回違う使い捨てのパスワードを使う方式
- 実用化されている方式:
- 時刻を使う時刻同期方式
- チャレンジレスポンス方式を使ったS/KEY方式
時刻同期方式
- 時刻同期方式の仕組み:
- ユーザは、キーホルダー型のパスワード発生装置(トークン)を持つ
- トークンと認証サーバは、時刻を同期させておく
- 認証サーバは、トークンと同じアルゴリズムでパスワードの正当性を確かめる
- PIN:
- 固有の個人情報番号
- キーホルダーを盗まれた場合を考えて、ワンタイムパスワードと一緒にPINも入力する
- 時刻同期方式の例え:
- 銀行の「ワンタイムパスワード用トークン」や、スマホの認証アプリ。30秒ごとに数字が変わる
S/KEY方式
- S/KEY方式のチャレンジコード:
- シード(種)と呼ばれるキーと、シーケンス番号の2つを使う
- S/KEY方式の認証手順:
- ①サーバは、認証要求のたびに、シードとシーケンス番号(最初はn)をクライアントに送る。シーケンス番号は、認証要求ごとに1減らす
- ②クライアントは、シードと自分のパスワードを連結し、これに「シーケンス番号−1回」のハッシュ演算をしたものを、OTPとしてサーバに送る
- ③サーバは、受け取ったOTPに1回ハッシュ演算をして、前回使われたOTPと比べて認証する
- S/KEY方式が安全な理由:
- 今回のOTPに1回ハッシュをかけると、前回のOTPになる。でも、ハッシュは元に戻せないので、前回のOTPから今回のOTPは計算できない
- だから、OTPを盗聴されても、次のOTPは作れない
- 例えば、ハッシュを100回かけたもの、99回かけたもの…と、回数を1つずつ減らしながら使っていくイメージ
④ シングルサインオン
- シングルサインオン(SSO):
- ユーザ認証を一度だけ行うことで、許可された複数のサーバへのアクセスについても認証する技術
- 実現方法には、いろいろな方式がある
- 例えば、テーマパークの入口で1回チケットを見せれば、中のアトラクションは顔パスで乗れる
| 方式 | 仕組み |
|---|---|
| Cookie(クッキー)型 | サーバが認証のための情報を作り、クライアントに送る。クライアントはこれを保存し、他のサーバへこの認証情報を自動的に送ることで認証を受ける |
| リバースプロキシ型 | ユーザはリバースプロキシサーバにアクセスして認証を受ける。リバースプロキシを通じて他のサーバに接続するので、各サーバの認証はリバースプロキシサーバが自動的に代行する |
| SAML型 | アプリケーション連携を行うためのXMLの仕様。サービスがSAMLに対応していれば、HTTPなどで複数のサービス間で認証情報が自動的にやりとりされる |
- リバースプロキシ型の補足:
- ユーザ認証で、パスワードの代わりにデジタル証明書を使える
- リバースプロキシサーバ:
- 内部サーバの代理として、クライアントからの要求に応えるサーバ(後述)
- SAML:
- 認証情報に加え、属性情報とアクセス制御情報を、異なるドメインに伝えるためのWebサービスプロトコル
- 例えば、会社のアカウントでログインすれば、別の会社が運営するクラウドサービスにもそのまま入れる
⑤ バイオメトリクス認証
- バイオメトリクス認証:
- 一人ひとり異なる身体的・行動的特徴を使って、本人認証を行う技術
- 利用者の情報を登録しておき、その情報と比較・照合して認証する
| 種類 | やり方 | 特徴 |
|---|---|---|
| 指紋認証 | 小型光学式センサや薄型静電式センサから、指紋の形を位相として入力した画像を、特徴点抽出方式やパターンマッチングで照合する | − |
| 声紋認証 | 人の声から得られる波形を、個人識別に使う | 風邪や加齢で、認証エラーを起こすこともある |
| 虹彩認証 | 眼球の角膜と水晶体の間にある、輪状の薄い膜(虹彩)の紋様を、個人識別に使う | 虹彩は経年変化がないので、登録情報の更新はほとんど不要。一卵性双生児のような、顔認証が苦手な場合も高精度に判別できる |
- FRR:
- 本人拒否率。本人を誤って拒否する確率
- FAR:
- 他人受入率。他人を誤って許可する確率
- FRRとFARの調整:
- 認証装置は、FRRとFARの双方を勘案して調整する必要がある
- 判定を厳しくすると、他人は通りにくくなる(FARが下がる)が、本人も弾かれやすくなる(FRRが上がる)。シーソーの関係
- 例えば、空港の保安検査を厳しくしすぎると、普通の乗客まで何度も止められる
⑥ その他の利用者認証方法
| 方法 | 中身 |
|---|---|
| リスクベース認証 | 普段とは違う環境(IPアドレス、Webブラウザなど)からの認証要求に対して、追加の認証を行う |
| Kerberos方式 | 最初にIDとパスワードで認証し、以降はチケット(ユーザを識別し、アクセスを許可する暗号化されたデータ)を使って認証する。シングルサインオンに標準対応している |
| 2要素認証 | パスワードなどの「知識」、ICカードなどの「所有」、指紋などの「特徴」の3つの中から、2つを組み合わせて認証する |
| CAPTCHA認証 | ゆがめたり一部を隠したりした画像から文字を読み取らせて入力させ、人間以外による自動入力を排除する |
- リスクベース認証の追加の認証:
- 秘密の質問と、対応する答えを確かめる「秘密の質問」などがある
- 例えば、いつもと違う国からログインしようとすると、「母親の旧姓は?」と聞かれる
- 多要素認証:
- 認証要素は2つである必要はなく、3要素認証、4要素認証(多要素認証)の例もある
- 2要素認証の注意(ひっかけ注意):
- パスワードと秘密の質問は、どちらも「知識」なので、組み合わせても2要素認証にはならない(2段階認証ではある)
- 例えば、キャッシュカード(所有)と暗証番号(知識)なら2要素認証
- Kerberos方式の例え:
- 遊園地で最初に本人確認をして「乗り物チケット」をもらい、あとはチケットを見せるだけで各アトラクションに乗れる
リモートアクセス:外から会社のネットワークにつなぐ
- リモートアクセス:
- 電話回線などの公衆回線網を通じて、遠隔地から会社などのLANやコンピュータに接続し、ファイルへのアクセスやコンピュータの操作を行う技術
- リモートアクセスサーバ:
- LANに設置されたサーバ。ユーザはこれに接続し、認証を受けたうえでコンピュータシステムを使う
- リモートアクセスの弱点:
- 外部からの接続をできるようにしているので、セキュリティ上の弱点になりやすい
① PPPの認証技術
- PPP(Point to Point Protocol):
- 電話回線で二点間の通信を行うためのデータリンク層のプロトコル
- HDLC手順がベースになっている
- インターネットに接続するときの一般的なプロトコルとして使われている
- IP以外のパケットも伝送できる(ネットワーク層のプロトコルに、IP以外も使える)
- PPPの分類:
- NCPとLCPに分けられる
- NCP:
- 上位プロトコル(IP、IPXなど)に対応した接続モジュールを使って、ネットワーク層プロトコルの設定をネゴシエーション(交渉)する
- LCP:
- 認証や暗号化の有無などを、相手ノードとネゴシエーションする
- PPPの認証プロトコル:
- PAPとCHAPがある
- 今では、ほとんどのPPP対応通信機器がCHAPをサポートしているので、CHAPを使うのが一般的
| PAP | CHAP | |
|---|---|---|
| 正式名 | Password Authentication Protocol | Challenge Handshake Authentication Protocol(チャレンジハンドシェイク認証プロトコル) |
| 送り方 | 平文のまま認証データを送る | チャレンジレスポンス認証で、暗号化された認証データを送る |
| 長所・短所 | 最も基本的で、ほとんどの機器がサポートしている。でも、盗聴に弱い | PAPの盗聴への脆弱性を補うために登場した |
| 認証のタイミング | − | PPPのリンク確立後、一定の周期でチャレンジメッセージを送り、相手がハッシュ関数計算で得た値を返す |
- PAPとCHAPの例え:
- PAPは、電話口で暗証番号をそのまま読み上げる
- CHAPは、毎回違うお題を出してもらい、暗証番号を使った計算結果だけを答える。しかも、途中で何度か確認される
RADIUS認証:受付と認証係を分ける(★)
① RADIUS認証システム
- リモートアクセスの脆弱性:
- アクセスサーバのセキュリティ
- アクセスサーバは外界に対してアクセス経路を開いていて、しかも認証のためのユーザIDやパスワード情報がたまっているので、クラッキングされたときの被害が大きい
- クラッキング:
- 悪意を持ってコンピュータに不正侵入し、データを盗み見たり破壊したりする行為
- RADIUS(Remote Authentication Dial-In User Service):
- この脆弱性を緩和するために、アクセスサーバと、認証を行うサーバを分離したモデル
- 両サーバの間で、認証及びアカウンティング情報をやりとりするプロトコル
- RADIUSの流れ:
- ユーザは、アクセスサーバ(RADIUSクライアント)にアクセスし、ユーザIDとパスワードを送る
- アクセスサーバは、認証サーバ(RADIUSサーバ)に、ユーザIDとパスワードを暗号化して送り、認証を要求する
- 認証サーバは、OKかNGかを返す
- RADIUSの効果:
- セキュリティの向上
- ユーザ情報の一元管理
- AAAフレームワーク:
- RADIUSサーバが提供する3つの機能
- 認証(Authentication)、認可(Authorization)、課金/ログ(Accounting)
- 例えば、「誰か確かめる(認証)」→「何をしてよいか決める(認可)」→「何をしたか記録する(課金/ログ)」
- RADIUSの台数制限:
- アクセスサーバの台数制限はない
- 例えば、無線LANの複数のアクセスポイントが、1台のRADIUSサーバと連携してユーザ認証できる
- Diameter:
- RADIUSの後継プロトコル
- 双方向の情報交換、拡張性の高さ、セキュリティの強化など、いろいろな改良が加えられている
- RADIUSの例え:
- 会社の各ビルの受付(アクセスサーバ)は来客の名前を聞くだけで、社員名簿は本社の奥の金庫(RADIUSサーバ)に1冊だけ置いておく。受付に泥棒が入っても名簿は盗まれず、名簿の更新も1か所で済む
② IEEE 802.1X
- IEEE 802.1X:
- イーサネットや無線LANでの、ユーザ認証のための規格
- 認証の仕組みとしてRADIUSを採用している
- 認証プロトコルには、PPPを拡張した「EAP」を使う
- EAPのバリエーション:
- EAP-TLSは、クライアント証明書で認証する
- EAP-MD5は、ハッシュ関数MD5を使ったチャレンジレスポンス方式で認証する
- IEEE 802.1Xの構成:
- サプリカント(認証を要求するクライアント)、オーセンティケータ(認証要求を受け付ける機器。IEEE 802.1X対応のスイッチやアクセスポイント)、認証サーバの3要素
- 注意(正式名):
- EAPを「Extended authentication protocol」と書く資料もあるが、規格(RFC 3748)での正式名は「Extensible Authentication Protocol(拡張認証プロトコル)」
- 試験では「EAP」の略語で出ることが多いので、「PPPを拡張した認証プロトコル」と覚えておけばよい
混同しやすいペア
- 識別 / 認証 / 権限管理
- 識別は、誰かを区別する(ユーザIDなど)
- 認証は、本当にその人で、使う権限を持っているかを確かめる
- 権限管理は、アクセス権を設定・コントロールする(ロールを使うこともある)
- 知識 / 所有 / 生体(特徴)
- 知識は、パスワードなど、本人だけが知っていること
- 所有は、ICカードやデジタル証明書など、本人だけが持っているもの
- 生体は、指紋や虹彩など、本人の体の特徴
- 固定式パスワード / ワンタイムパスワード
- 固定式パスワードは、同じパスワードを使い続ける
- ワンタイムパスワードは、ログインのたびに使い捨てのパスワードを使う
- チャレンジコード / レスポンス(ハッシュ値)
- チャレンジコードは、サーバが乱数で作って送る、使い捨てのお題
- レスポンスは、チャレンジコードとパスワードから作ったハッシュ値
- 時刻同期方式 / S/KEY方式
- 時刻同期方式は、トークンと認証サーバの時刻を合わせて、パスワードを作る
- S/KEY方式は、シードとシーケンス番号を使い、ハッシュの回数を1つずつ減らしていく
- ハッシュ値 / メッセージダイジェスト
- どちらも、ハッシュ関数で作った一定長の値(同じもの)
- Cookie型 / リバースプロキシ型 / SAML型
- Cookie型は、クライアントが保存した認証情報を、他のサーバへ自動的に送る
- リバースプロキシ型は、リバースプロキシサーバが各サーバの認証を代行する
- SAML型は、XMLの仕様で、複数のサービス間で認証情報をやりとりする
- シングルサインオン / Kerberos方式
- シングルサインオンは、一度の認証で複数のサーバを使えるようにする技術全般
- Kerberos方式は、チケットを使う認証方式。シングルサインオンに標準対応している
- 指紋認証 / 声紋認証 / 虹彩認証
- 指紋認証は、特徴点抽出方式やパターンマッチングで照合する
- 声紋認証は、声の波形を使う。風邪や加齢でエラーになることがある
- 虹彩認証は、虹彩の紋様を使う。経年変化がなく、一卵性双生児も見分けられる
- FRR / FAR
- FRRは、本人を誤って拒否する確率
- FARは、他人を誤って許可する確率
- リスクベース認証 / 2要素認証
- リスクベース認証は、普段と違う環境からのときだけ、追加の認証をする
- 2要素認証は、知識・所有・特徴のうち2つを、いつも組み合わせて認証する
- CAPTCHA / その他の認証
- CAPTCHAは、「人間かどうか」を確かめる(機械による自動入力を排除する)
- その他の認証は、「本人かどうか」を確かめる
- NCP / LCP
- NCPは、ネットワーク層プロトコル(IP、IPXなど)の設定を交渉する
- LCPは、認証や暗号化の有無を交渉する
- PAP / CHAP
- PAPは、平文で認証データを送る。盗聴に弱い
- CHAPは、チャレンジレスポンス認証で、一定の周期で認証する
- アクセスサーバ(RADIUSクライアント) / 認証サーバ(RADIUSサーバ)
- アクセスサーバは、ユーザからの接続を受け付け、認証を依頼する
- 認証サーバは、ユーザ情報を一元管理し、実際に認証する(AAA)
- 認証 / 認可 / 課金(アカウンティング)
- 認証は、本人かを確かめる
- 認可は、何をしてよいかを決める
- 課金/ログは、何をしたかを記録する
- RADIUS / Diameter
- RADIUSは、アクセスサーバと認証サーバを分けるプロトコル
- Diameterは、その後継。双方向の情報交換、拡張性、セキュリティを強化した
- EAP-TLS / EAP-MD5
- EAP-TLSは、クライアント証明書で認証する
- EAP-MD5は、MD5を使ったチャレンジレスポンス方式で認証する
- CHAP / EAP
- CHAPは、PPPの認証プロトコル(チャレンジレスポンス)
- EAPは、PPPを拡張した認証プロトコルで、IEEE 802.1Xで使う