多要素認証とは ― 認証の3要素とシングルサインオン
多要素認証は、
多要素認証とは、種類の違う要素を2つ以上使う認証
銀行やSNSのログインで、パスワードのあとにスマホに届くコードを求められることがあります。これが多要素認証(multi-factor authentication)の代表です。多要素認証は、本人かどうかを、種類の違う要素を2つ以上使って確かめる認証です。
パスワードが盗まれても、攻撃者がもう1つの要素を持っていなければ、不正アクセスを防げます。要素の種類は記憶・所持・生体の3つで、これを認証の3要素と呼びます。
記憶は、パスワードのように本人が知っていることです。所持は、ICカードやスマホのように本人が持っているものです。生体は、指紋のように本人の身体の特徴です。
生体の要素では、本人を誤って拒否したり、他人を誤って受け入れたりする誤りが起こることがあります。その割合を表す指標と、しきい値の決め方は、生体認証の記事で説明しています。
大事なのは、手段の数ではなく、要素の種類の数です。パスワードのあとに秘密の質問に答えさせても、どちらも記憶なので、多要素認証にはなりません。パスワードとスマホに届くコードを組み合わせると、記憶と所持の2種類になるので、多要素認証です。
多要素認証と一緒に出てくる用語も、3要素との関係で見分けられます。多段階認証・ワンタイムパスワード・パスワードレス認証・シングルサインオンです。
認証の3要素:記憶・所持・生体
3つの要素は、本人であることの証拠の種類が違います。次の表に、それぞれの例と、破られ方をまとめます。
| 要素 | 例 | 破られ方 |
|---|---|---|
| 記憶(知っていること) | パスワード、PIN、秘密の質問の答え | 推測される。入力を盗み見られる。入力を記録するソフトで盗まれる |
| 所持(持っているもの) | ICカード、スマホの認証アプリ、セキュリティキー | 紛失する。盗まれる。複製される |
| 生体(身体の特徴) | 指紋、顔 | 複製される。誤って一致と判定される |
破られ方は、要素ごとに違います。そのため、種類の違う要素を組み合わせます。1つが破られても、もう1つも破られない限りログインできません。同じ種類を重ねても、破られ方が同じなので、この効果は得られません。
パスワードは、電話で担当者を名乗る相手に聞き出されたり、画面を盗み見られたりして破られることがあります。これらの手口はソーシャルエンジニアリングの記事で解説しています。別のサービスから漏れたパスワードをそのまま試されるパスワードリスト攻撃もあります。多要素認証は、こうしてパスワードが破られても、もう1つの要素がなければログインできないようにする対策です。
秘密の質問の答えも、記憶の要素です。パスワードを決めるときに、秘密の質問を使わせてはなりません。アメリカの国立標準技術研究所(NIST)の最新の指針が、そう定めています。
SMSで届くコードは、コードを受け取る電話を持っていることを確かめるので、所持にあたります。ただしNISTは、電話回線で秘密を送る方式に条件を付け、メールで送る方式は認めていません。
動かして確かめる:この組み合わせは多要素になるか
次の図で、迷いやすい組み合わせを試せます。パスワードと秘密の質問、SMSのコードと認証アプリのコードなどです。
認証の手段を押して選ぶと、判定が出ます。もう一度押すと外れます。
- パスワード記憶(本人が知っていること)
- PINコード記憶(本人が知っていること)
- 秘密の質問の答え記憶(本人が知っていること)
- SMSで届くコード所持(本人が持っているもの)
- 認証アプリのコード所持(本人が持っているもの)
- ICカード所持(本人が持っているもの)
- セキュリティキー所持(本人が持っているもの)
- 指紋生体(本人の身体の特徴)
- 顔生体(本人の身体の特徴)
多段階認証との違いは、数えるものの違い
多段階認証は、認証を何回かに分けて行う方式です。数えるのは段階の数で、各段階が同じ要素でもかまいません。多要素認証が数えるのは、要素の種類の数です。
認証を2回に分ける二段階認証も、多段階認証の1つです。総務省の用語集によると、多要素認証と違い、同じ要素で2つの段階に分ける場合も二段階認証と呼びます。
| 組み合わせ | 多段階認証 | 多要素認証 |
|---|---|---|
| パスワードのあとに、秘密の質問に答える | ○ | ×(どちらも記憶) |
| パスワードのあとに、SMSのコードを入力する | ○ | ○(記憶と所持) |
| パスワードのあとに、別のパスワードを入力する | ○ | ×(どちらも記憶) |
逆に、ICカードを読み取らせてPINを入力する認証は、1回の操作で所持と記憶の2要素を確かめます。段階の数と要素の数は、別々に数えます。
ワンタイムパスワードの仕組み
ワンタイムパスワード(OTP)は、1回しか使えない使い捨てのパスワードです。認証アプリのOTPは、時刻と秘密の値から6桁を計算して作ります。
スマホとサーバは、登録のときに、同じ秘密の値を1回だけ共有します。ログインのたびに、それぞれが秘密の値と現在時刻を混ぜて、6桁を計算します。利用者が入力した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に通知します。
この通知を、アサーションと呼びます。RPは、IdPからのアサーションを検証してから、利用者を受け入れます。アサーションの形式には、OpenID ConnectのIDトークンや、SAMLのアサーションがあります。OpenID Connectは、アプリに権限を渡す仕組みのOAuthを元に作られています。
利用者は、サービスごとにパスワードを覚えなくて済みます。サービスの側も、自前で認証の仕組みを持たなくて済みます。パスワードを受け取るのはIdPだけなので、同じパスワードを各サービスに登録する使い回しとは別物です。
認証がIdPの1か所に集まるので、そこに多要素認証をかければ、つながるすべてのサービスに効きます。反対に、IdPのアカウントが破られると、つながるサービスにまとめて入られます。SSOでは、IdPの認証を強くすることが特に大事になります。
AWSでは、Amazon Cognitoのユーザープールが、自分のアプリとGoogleなどのIdPとの間を取り持ちます。
社内のネットワークに接続する機器の認証を1か所にまとめる仕組みには、RADIUSがあります。
練習問題(全6問)
正解:記憶・所持・生体
認証の
正解:パスワードと、
パスワードは
正解:多段階認証は
数える
正解:共有した
登録の
正解:1回の
認証を
正解:公開鍵暗号を
FIDOは
選んでから「採点する」を押すと、解説つきで答え合わせができます。
参考にした資料
- NIST SP 800-63B-4 Authentication and Authenticator Management(3要素とOTP)
- NIST SP 800-63C-4 Federation and Assertions(IdPとRP、SSO)
- RFC 6238 TOTP: Time-Based One-Time Password Algorithm(時刻ベースのOTP)
- RFC 4226 HOTP: An HMAC-Based One-Time Password Algorithm(回数ベースのOTP)
- FIDO Alliance Passkeys(パスワードレス認証)
- 総務省 国民のためのサイバーセキュリティサイト 用語集(二段階認証)
- IPA 不正ログイン対策特集ページ(多段階認証と多要素認証)
関連記事
おすすめの本 PR
セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

