基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,認証についてシンプルにまとめています。はじめに,認証者と被認証者,第三者認証についての説明を,次に,認証の種類とディジタル署名について説明します。そして,本人認証については,パスワード認証,ワンタイムパスワード(チャレンジレスポンス認証,時刻同期方式による認証(トークンによる認証),ハッシュ関数を用いた認証(S/Key)),所有物による認証,生体(バイオメトリクス)認証,リスクベース認証,CAPTCHAを,メッセージ認証については,MAC,HMACの説明をします。さらに,公開鍵基盤(PKI)や時刻認証についても説明します。たくさんありますが,どれも大切な内容ですので,理解できるまで繰り返し,じっくり読んでみましょう。
認証
認証とは,システムの利用者や機器(物)などを,何かの情報を基にその真正性を確認することをいいます。本人認証のことを認証という場合が多いですが,他にも,送信データの改ざんの有無を確認するメッセージ認証や,あるデータがある時刻に存在し,その後,改ざんされていないことを確認する時刻認証などがあります。
真正性とは,通信相手が主張どおり(本物)であることを確認する特性のことをいいます。
認証する側を認証者,認証される側を被認証者といいます。
第三者認証
第三者認証とは,認証局などの第三者に問い合わせて,被認証者の正当性を確認することをいいます。三者間認証(英語ではcertification)ともいいます。たとえば,クレジットカード使用時に,お店がクレジットカードの発行元に照会するといったことが,これに当たります。
※ 認証局については後述。
ちなみに,二者間での認証は二者間認証といい,英語ではauthenticationといいます。
認証の種類
本人認証(詳細は後述)
人を認証します。単に認証という場合は,この本人認証を指す場合が多いです。
本人認証の方法
知識認証(WYK:What You Know)
利用者本人のみが知り得る情報で認証する。
例)パスワード,PINなど
所有物認証(WYH:What You Have)
利用者本人のみが所有している物で認証する。
例)トークン,ICカードなど
生体認証(WYA:What You Are)
利用者本人を識別する生体的特徴で認証する。
例)指紋,静脈,筆跡など
二要素認証と二段階認証
二要素認証とは,上記の3つの認証方法のうち,異なる2つの認証方法を組み合わせて行う認証のことをいいます。二段階認証とは,上記の3つの認証方法のうち,異なる2つの認証方法を段階を経て行う認証のことをいいます。複数の認証方法を利用することで,認証強度を高めることができます。
機器や装置の認証(詳細は後述)
機器や装置を認証します。通信相手がクライアントの場合はクライアント認証,サーバーの場合はサーバー認証といいます。
機器や装置の認証方法
ディジタル署名,クッキー,公開鍵証明書など
プログラムの認証
動作しているプログラムなどを認証します。
メッセージ認証(詳細は後述)
送信メッセージなどの内容が正しいことを認証します。
時刻認証(詳細は後述)
メッセージが,その日時に存在していたことを証明します。
ディジタル署名
ディジタル署名は,電子署名において公開鍵暗号方式を利用したものをいいます。平文に対して暗号技術を利用し署名します。
ディジタル署名で確認できること
改ざん検出
受信者側で,受け取った平文から求めたハッシュ値と,暗号文(ディジタル署名)を復号したハッシュ値を比較することにより第三者による改ざんや受信者による改ざんを検出できる(送信者自身の改ざんは検出できない)。
なりすまし検出(送信者の認証)
暗号文(ディジタル署名)を送信者の公開鍵で復号することにより送信者を認証することができる(真正性)。
否認防止
送信者が送信した事実を否認できない。
ディジタル署名で使用される暗号方式
- RSA
- DSA
- ECDSA
※ 詳細は,「暗号化 -情報処理シンプルまとめ」を参照してください。
本人認証
パスワード認証
パスワード認証は,最も一般的な本人認証で,ユーザーIDとパスワードを使用し認証します。
メールの送受信などでは,パスワードを平文のまま送信することがあります。その場合,パスワードを盗聴されてしまうと,本人になりすまして不正使用される恐れがでてきます。また,パスワードを暗号化していても,そのまま送信すれば認証されてしまいます。
安全なパスワード
パスワードは,第三者に不正使用されにくい安全なものを設定しなければなりません。安全なパスワードの条件としては,次のようなものがあります。
- 個人情報からは推測できないこと
- 辞書にある英単語などを,そのまま使用しないこと
- 英字(大文字/小文字)と数字,記号が混在していること
- 適切な長さ(8文字以上)の文字列であること
- 類推しやすい単語の並びや,安易な組み合わせにしないこと
また,パスワードは定期的に変更する必要があります。
パスワードの保管
サーバーなどにパスワードを保管する場合は,ふつうハッシュ化したもの(ハッシュ値)を保管します。ハッシュ値は盗聴されても元のパスワードには戻せませんので,パスワードの漏えいを防ぐことができます。ただし,パスワードを忘れてしまった場合は,新しいパスワードを発行しなければなりません。
ソルト(レインボー攻撃対策)
レインボー攻撃とは,あるハッシュ値から元の平文を求めようとする攻撃です。多数の平文とそのハッシュ値を一覧表にしたものを使い,ハッシュ化したパスワードなどから元のパスワードを求めようとします。この攻撃を防ぐためには,パスワードにソルトというランダムなデータを加えてハッシュ化し,同じパスワードから同じハッシュ値が求まらないようにします。
ワンタイムパスワード
パスワードは,一度盗聴されると本人になりすまして不正使用される恐れがでてきます。ワンタイムパスワードは,毎回異なるパスワードを使用するため,なりすましを防ぐことができ,認証強度を高めることができます。
リプレイ攻撃対策
リプレイ攻撃とは,盗聴した認証情報をそのまま使って接続先にアクセスするような攻撃です。パスワードを暗号化していても,そのまま送信すれば認証されてしまいます。ワンタイムパスワードは,毎回異なるパスワードを使用するため,この攻撃を防ぐことができます。
ワンタイムパスワードの種類(詳細は後述)
- チャレンジレスポンス認証
- 時刻同期方式による認証(トークンによる認証)
- ハッシュ関数を用いた認証(S/Key)
チャレンジレスポンス認証
チャレンジレスポンス認証では,まず,利用者(被認証者)が認証サーバーなどにユーザーIDを送ります。認証サーバーはユーザーIDを受け取るとチャレンジという情報を作成して利用者に送ります。利用者はチャレンジを受け取り,これにパスワードを加えてレスポンスという情報を演算により求め,認証サーバーに送り返します。認証サーバーは,チャレンジと認証サーバーに保管してある利用者(ユーザーID)のパスワードからレスポンスを求め,受け取ったレスポンスと比較し,一致した場合に認証します。
チャレンジは、乱数や時刻などを使用して毎回異なるものを作成します。レスポンスは,ハッシュ関数や公開鍵暗号方式,共通鍵暗号方式を使用して求めます。
ハッシュ関数を用いたチャレンジレスポンス認証は次のとおりです。
時刻同期方式による認証(トークンによる認証)
時刻同期方式では,トークンというデバイスを使用します。キーホルダーやカード型,USBタイプなどがあります。スマートフォンなどにインストールして利用するソフトウェアタイプもあります。
トークンの情報は,あらかじめ利用者と認証サーバーなどの間で共有しておきます。利用時には,利用時現在の時刻から生成したワンタイムパスワードを使います。
ハッシュ関数を用いた認証(S/Key)
ハッシュ関数を用いた認証方式には,S/Keyもあります。
S/Keyでは利用に先立ち,乱数から作成したSeed(種)をもとに利用する回数(たとえば,100回利用する場合は100回)ほどハッシュ化したハッシュ値を認証サーバーなどに登録しておきます。利用時には,まず,利用者がユーザーIDを認証サーバーなどに送ります。認証サーバーはSeedとシーケンス番号(利用回数-1)を利用者に送り,利用者はそのSeedをもとにシーケンス番号回(たとえば,100回利用する場合は100-1=99回)ハッシュ化したハッシュ値を認証サーバーに返します。認証サーバーは受け取ったハッシュ値をもう1回ハッシュ化し,登録しておいたハッシュ値と比較し認証します。このとき,認証サーバーに登録しておいたハッシュ値は破棄し,利用者から送られてきたハッシュ値と置き換えます。また,利用回数がなくなったら(0になったら),新しくハッシュ値を登録する必要があります。
所有物による認証
所有物による認証では,認証情報を格納した認証デバイス(トークン)を用いて認証します。認証デバイスには,さまざまなものがあります。
- 認証デバイスの画面にワンタイムパスワードを表示するもの
- 認証デバイスに公開鍵暗号方式で使用する秘密鍵を内蔵したもの
- 指紋認証などの生体認証を行う認証デバイス
※ デバイスとは、特定の機能を持った機器や装置のことをい います。
具体的には、次のような装置を使います。
- USBメモリ
- ICカード(接触型、非接触型)
- スマートフォンなど(ソフトウェアをインストールすると認証デバイスとして使用できる)
生体認証(バイオメトリクス認証)
生体認証は,体の一部や行動の特徴を利用して認証します。
体の一部を利用した認証
指紋認証
指紋認証の場合,指紋の端点や分岐点と,その位置関係,向きや流れのパターンを,あらかじめ電子データとして登録しておき,パターンマッチング方式により認証します。
静脈認証
血管の分岐点の特徴(分岐の角度や,分岐点間の長さ)により認証します。
虹彩認証
瞳孔から外に向くしわの特徴により認証します。虹彩は経年変化があまりないので,パターン更新の必要は,ほとんどありません。
顔認証
顔の輪郭や,目,鼻、口などの特徴により認証します。
DNA認証
DNAの特徴により認証します。ただ実際には,認証に時間がかかるため,ほとんど使用されていません。
行動の特徴を利用した認証
筆跡
文字を書く速度や筆圧により認証します。
声紋
声の特徴(音質)により認証します。
キーストローク
キーボードを打つ速度やタイミングの特徴により認証します。
指紋や顔,声紋は偽造できるため,本人になりすまして不正使用される恐れがあります。
一方,静脈や虹彩は偽造しにくいので,なりすましの可能性は低いです。
本人拒否率(FRR:False Rejection Rate)と他人受入率(FAR:False Acceptance Rate)
生体認証では,利用者の生体情報と,あらかじめ登録しておいた生体情報を照合して認証します。このとき,完全に一致することはありませんので閾値(しきいち)を設定します。この閾値はどのように設定しても,誤って他人を受け入れたり,本人を拒否する可能性があります。
本人拒否率
本人拒否率とは,誤って本人を拒否する確率のことをいいます。本人拒否率を低くすると,本人であることを拒否される確率は低くなりますが,他人を受け入れる確率は高くなりますので安全性は低下します。
他人受入率
他人受入率とは,誤って他人を受け入れる確率のことをいいます。他人受入率を低くすると,他人を受け入れる確率は低くなりますが,本人であることを拒否される確率は高くなりますので利便性は低下します。
その他
リスクベース認証
リスクベース認証とは,普段とは異なるIPアドレスや,OS,ブラウザなどからアクセスがあった場合に,追加認証を行うことをいい,認証強度を高めることができます。
CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)
CAPTCHAとは,人間には認識可能でコンピューターには認識の難しい画像の文字を利用者に入力させることにより,利用者がコンピューターではないことを確認するために使われる技術のことをいいます。
メッセージ認証
メッセージ認証は,送信メッセージなどの内容が正しいことを認証します。
MAC(Message Authentication Code)
MAC(メッセージ認証コード,または,メッセージ認証符号)とは,送信メッセージに送信者と受信者が共有する秘密鍵を加えて生成したコードのことをいいます。改ざん検出や,送信者の確認ができます。しかし,共通鍵を使用するため,メッセージの作成者が送信者であることは保証されません。
HMAC(Hashbased MAC)
HMACとは,MACの生成にハッシュ関数を利用したものをいいます。MD5やSHA-1などのハッシュ関数が利用できます。
公開鍵基盤(PKI:Public Key Infrastructure)
公開鍵基盤とは,電子署名や相手認証などで利用する公開鍵と対になる秘密鍵の対応を保証する技術基盤のことをいいます。公開鍵と秘密鍵の対だけでは,公開鍵の所有者を特定することはできません。そのため,信頼できる認証局に公開鍵証明書を発行してもらうことにより真正性を保証してもらいます。
※ 公開鍵証明書を電子証明書、またはディジタル証明書ということもあります。
公開鍵証明書
公開鍵証明書の発行
認証局(CA:Certificate Authority)
公開鍵証明書を発行・管理する通信当事者とは独立した第三者認証機関。
登録局(RA:Registration Authority)
公開鍵証明書の発行要求や,失効要求を行う。
発行局(IA:Issuing Authority)
公開鍵証明書の発行や失効などを行う。
リポジトリ
公開鍵証明書やCRL(失効リスト)などを保管する。また,証明書を利用者に配布したり,検索サービスの提供も行う。
公開鍵証明書の利用
申請者であるAさんの通信相手(Bさん)は,この公開鍵証明書によりAさんの公開鍵の真正性を確認し,ディジタル署名などによる認証を行います。
※ 認証局のディジタル署名は認証局の秘密鍵で暗号化されている。認証局の公開鍵で復号し,証明書ダイジェスト(公開鍵証明書部分をハッシュ化したハッシュ値)と比較すれば公開鍵証明書の検証ができる。そして,公開鍵証明書の真正性が検証できれば,その中にあるAさんの公開鍵の真正性も認証局によって証明されたことになる。
※ 認証局の真正性については,別の信頼できる第三者機関からCA証明書を入手することにより確認できる。
CRL(Certificate Revocation List:失効リスト)
公開鍵証明書には有効期間があります。しかし,有効期間内であっても秘密鍵が漏えいしたり紛失した場合には信頼性が損なわれます。その場合は,認証局に失効申請をし,CRLに登録してもらいます。失効した公開鍵証明書はリポジトリで公開されますので,利用者は認証局から最新のCRLをダウンロードすることにより,失効情報を確認することができます。
OCSP(Online Certificate Status Protocol)
OCSPは,公開鍵証明書の失効状態をリアルタイムで問い合わせるプロトコルです。CRLの場合はダウンロードした失効情報を利用しますが,OSCPはオンラインで利用しますので,CRLの失効情報よりも新しいものが得られます。また,余分な通信も発生しません。
時刻認証
時刻認証は,メッセージに日時を表す情報を付け加えてタイムスタンプを作成することにより,ディジタル署名では証明できない存在性(その日時にメッセージが存在していたこと)を証明することができます。これにより,メッセージの作成者自身による改ざんも検出できます。
送信者(Aさん)は,平文のハッシュ値をTSA(時刻認証局)に送信してタイムスタンプを生成してもらい,平文と一緒にBさんに送信します。受信者(Bさん)は,受け取ったタイムスタンプを復号し,時刻情報を確認します。さらに,受け取った平文をハッシュ化したものと,タイムスタンプを復号して得たハッシュ値を比較します。こうすることで,受け取った平文がその時刻に存在したことと,その時刻以降の改ざんの有無を検出できます。
時刻認証で確認できること
- タイムスタンプに記録されている時刻に,そのデータが存在したこと
- その時刻以降,データが改ざんされていないこと
TSA(時刻認証局,タイムスタンプ局)
TSAとは,タイムスタンプの発行や,その有効性を保証する機関のことをいいます。PKIの場合,公開鍵証明書には有効期間があり,また,CRLに登録されている場合は,その期間が存在し,署名時点での正当性を検証できません。そこで,TSAがタイムスタンプの正当性を保証することにより,平文がその時刻に存在したことと,その時刻以降の改ざんの有無について証明できます。
まとめ
今回は,認証について,シンプル(じゃないかも!?)にまとめてみました。みなさん,理解できましたか?難しいようでしたら,繰り返し,じっくり読んでみましょう。認証については,ITパスポート試験や,基本情報技術者試験,応用情報技術者試験などの情報処理技術者試験で出題があります。しっかり,頑張りましょう。