ITの教科書検索
入門読了 約12分

多要素認証とは ― 認証の3要素とシングルサインオン

多要素認証は、記憶・所持・生体のうち種類の違う2つ以上で本人を確かめる認証です。多段階認証との違いや、ワンタイムパスワード・パスキー・SSOとの関係も分かります。

目次
  1. 多要素認証とは、種類の違う要素を2つ以上使う認証
  2. 認証の3要素:記憶・所持・生体
  3. 動かして確かめる:この組み合わせは多要素になるか
  4. 多段階認証との違いは、数えるものの違い
  5. ワンタイムパスワードの仕組み
  6. パスワードレス認証(FIDO)
  7. シングルサインオン(SSO)
  8. 練習問題
  9. 参考にした資料

多要素認証とは、種類の違う要素を2つ以上使う認証

銀行やSNSのログインで、パスワードのあとにスマホに届くコードを求められることがあります。これが多要素認証(multi-factor authentication)の代表です。多要素認証は、本人かどうかを、種類の違う要素を2つ以上使って確かめる認証です。

パスワードが盗まれても、攻撃者がもう1つの要素を持っていなければ、不正アクセスを防げます。要素の種類は記憶・所持・生体の3つで、これを認証の3要素と呼びます。

記憶は、パスワードのように本人が知っていることです。所持は、ICカードやスマホのように本人が持っているものです。生体は、指紋のように本人の身体の特徴です。

生体の要素では、本人を誤って拒否したり、他人を誤って受け入れたりする誤りが起こることがあります。その割合を表す指標と、しきい値の決め方は、生体認証の記事で説明しています。

大事なのは、手段の数ではなく、要素の種類の数です。パスワードのあとに秘密の質問に答えさせても、どちらも記憶なので、多要素認証にはなりません。パスワードとスマホに届くコードを組み合わせると、記憶と所持の2種類になるので、多要素認証です。

多要素認証と一緒に出てくる用語も、3要素との関係で見分けられます。多段階認証・ワンタイムパスワード・パスワードレス認証・シングルサインオンです。

認証の3要素:記憶・所持・生体

3つの要素は、本人であることの証拠の種類が違います。次の表に、それぞれの例と、破られ方をまとめます。

要素例破られ方
記憶(知っていること)パスワード、PIN、秘密の質問の答え推測される。入力を盗み見られる。入力を記録するソフトで盗まれる
所持(持っているもの)ICカード、スマホの認証アプリ、セキュリティキー紛失する。盗まれる。複製される
生体(身体の特徴)指紋、顔複製される。誤って一致と判定される

破られ方は、要素ごとに違います。そのため、種類の違う要素を組み合わせます。1つが破られても、もう1つも破られない限りログインできません。同じ種類を重ねても、破られ方が同じなので、この効果は得られません。

パスワードは、電話で担当者を名乗る相手に聞き出されたり、画面を盗み見られたりして破られることがあります。これらの手口はソーシャルエンジニアリングの記事で解説しています。別のサービスから漏れたパスワードをそのまま試されるパスワードリスト攻撃もあります。多要素認証は、こうしてパスワードが破られても、もう1つの要素がなければログインできないようにする対策です。

秘密の質問の答えも、記憶の要素です。パスワードを決めるときに、秘密の質問を使わせてはなりません。アメリカの国立標準技術研究所(NIST)の最新の指針が、そう定めています。

SMSで届くコードは、コードを受け取る電話を持っていることを確かめるので、所持にあたります。ただしNISTは、電話回線で秘密を送る方式に条件を付け、メールで送る方式は認めていません。

動かして確かめる:この組み合わせは多要素になるか

次の図で、迷いやすい組み合わせを試せます。パスワードと秘密の質問、SMSのコードと認証アプリのコードなどです。

認証の手段を押して選ぶと、判定が出ます。もう一度押すと外れます。

よくある組み合わせ
手段が選ばれていません上の手段を押すと、要素の種類と判定がここに出ます。

多段階認証との違いは、数えるものの違い

多段階認証は、認証を何回かに分けて行う方式です。数えるのは段階の数で、各段階が同じ要素でもかまいません。多要素認証が数えるのは、要素の種類の数です。

認証を2回に分ける二段階認証も、多段階認証の1つです。総務省の用語集によると、多要素認証と違い、同じ要素で2つの段階に分ける場合も二段階認証と呼びます。

組み合わせ多段階認証多要素認証
パスワードのあとに、秘密の質問に答える○×(どちらも記憶)
パスワードのあとに、SMSのコードを入力する○○(記憶と所持)
パスワードのあとに、別のパスワードを入力する○×(どちらも記憶)

逆に、ICカードを読み取らせてPINを入力する認証は、1回の操作で所持と記憶の2要素を確かめます。段階の数と要素の数は、別々に数えます。

ワンタイムパスワードの仕組み

ワンタイムパスワード(OTP)は、1回しか使えない使い捨てのパスワードです。認証アプリのOTPは、時刻と秘密の値から6桁を計算して作ります。

スマホとサーバは、登録のときに、同じ秘密の値を1回だけ共有します。ログインのたびに、それぞれが秘密の値と現在時刻を混ぜて、6桁を計算します。利用者が入力した6桁と、サーバが自分で計算した6桁が一致すれば、秘密の値を持つ端末だと確かめられます。

スマホの認証アプリサーバ現在時刻秘密の値秘密の値現在時刻登録で1回だけ共有混ぜて計算混ぜて計算HMACで計算HMACで計算6桁にする6桁にする画面に表示482 913自分で計算した値482 913入力して送る一致すれば合格
登録のときに共有するのは秘密の値だけです。ログインのたびに、認証アプリとサーバが、それぞれ秘密の値と現在時刻から6桁を計算します。利用者が入力した6桁がサーバの計算結果と一致すれば、秘密の値を持つ端末だと確かめられます。図の数字は説明用の例です。

この方式は、RFC 6238が定める時間ベースのOTP(TOTP)です。現在時刻を30秒ごとの番号に直して使うので、同じ30秒の間は同じ6桁になります。30秒を過ぎると番号が進み、別の6桁になります。

この区切りが長いほど、盗まれた6桁を使える時間も長くなります。RFC 6238は、安全性と使いやすさの釣り合いとして、30秒を勧めています。通信の遅れで区切りをまたいだ場合に備えて、サーバは1つ前の区切りまでを受け付けてよいとしています。

時刻の代わりに、使うたびに増える回数を混ぜる方式もあります。これが、RFC 4226が定める回数ベースのOTP(HOTP)です。TOTPは、この計算の入力を時刻に置き換えたものです。値は6桁以上と決められています。

OTPは、秘密の値を持つ端末がなければ作れないので、所持の要素です。ただし、人が入力する方式には弱点があります。偽サイトで6桁を入力させ、その場で本物のサイトへ中継されると、破られます。NISTは、人が入力する方式を、フィッシング耐性があるとは認めていません。

パスワードレス認証(FIDO)

パスワードレス認証は、パスワードを使わずに認証する方式です。代表的な規格が、FIDO Allianceの定めるFIDOです。FIDOの仕組みを使った認証情報は、パスキーと呼ばれます。

FIDOは、公開鍵暗号を使います。登録のときに、そのサイト専用の鍵ペアを作り、公開鍵をサーバに登録します。ログインでは、端末が秘密鍵で署名を作り、サーバが登録済みの公開鍵で検証します。署名の仕組みは、公開鍵暗号のデジタル署名と同じ考え方です。

利用者が行う操作は、端末のロック解除と同じです。生体、PIN、パターンなどで承認します。FIDO Allianceによると、生体情報は端末の中にとどまり、サーバには送られません。端末の中での生体の照合にも、生体認証の記事で説明しているFRR・FARの考え方が当てはまります。

NISTによると、鍵ペアは、作ったドメインでしか使えません。そのため、偽サイトでは使えません。利用者が6桁を入力する手順もないので、入力した値を中継される方法も通りません。NISTは、フィッシング耐性があると認めるには、暗号を使う認証が必要としています。

端末を持っていることは所持、ロック解除に使う生体やPINは生体や記憶にあたります。パスワードを使わなくても、この2つを組み合わせれば、多要素認証になります。

シングルサインオン(SSO)

シングルサインオン(SSO)は、1つのアカウントと認証手段で、複数のサービスを使えるようにする仕組みです。一度認証すれば、つながる別のサービスで、改めて入力する必要がありません。

認証を受け持つ側を、IdP(Identity Provider)と呼びます。認証を任せてサービスを提供する側は、RP(Relying Party)です。IdPが本人を確かめ、認証済みであることを、RPに通知します。

利用者アプリAIdP認証を受け持つアプリB1 アプリAを開く2 認証を依頼3 認証する(1回だけ)4 認証済みを通知あとで、別のサービスを使う5 アプリBを開く6 認証を依頼7 認証済みを通知認証の入力は不要
最初にアプリAを開いたときだけ、利用者はIdPで認証します。その後に別のアプリBを開いても、IdPが認証済みの通知を返すだけで、利用者は入力しません。図では、依頼と通知が届く経路を省いています。

この通知を、アサーションと呼びます。RPは、IdPからのアサーションを検証してから、利用者を受け入れます。アサーションの形式には、OpenID ConnectのIDトークンや、SAMLのアサーションがあります。OpenID Connectは、アプリに権限を渡す仕組みのOAuthを元に作られています。

利用者は、サービスごとにパスワードを覚えなくて済みます。サービスの側も、自前で認証の仕組みを持たなくて済みます。パスワードを受け取るのはIdPだけなので、同じパスワードを各サービスに登録する使い回しとは別物です。

認証がIdPの1か所に集まるので、そこに多要素認証をかければ、つながるすべてのサービスに効きます。反対に、IdPのアカウントが破られると、つながるサービスにまとめて入られます。SSOでは、IdPの認証を強くすることが特に大事になります。

AWSでは、Amazon Cognitoのユーザープールが、自分のアプリとGoogleなどのIdPとの間を取り持ちます。

社内のネットワークに接続する機器の認証を1か所にまとめる仕組みには、RADIUSがあります。

練習問題(全6問)

Q1認証の3要素の組み合わせとして正しいものは?
Q2次のうち、多要素認証になる組み合わせはどれ?
Q3多段階認証と多要素認証の違いとして正しいものは?
Q4時間ベースのワンタイムパスワードで、スマホの認証アプリが毎回違う6桁を表示できる理由として正しいものは?
Q5シングルサインオンの説明として正しいものは?
Q6FIDOのパスワードレス認証が、フィッシングに強い理由として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

目的別の本の選び方を見る

セキュリティの記事を続けて読む

セキュリティ 全37本中21本目