前号: No 394 / 次号: No 396 / 一覧(note.com)へ / ブログページに戻る

メールマガジン「がんばりすぎないセキュリティ」No395 (25/03/03)

多要素認証は時代遅れなの?(395号)


多くのサービスでは利用時にログイン認証を行います。

ずっと前はパスワードのみでの認証が主流でしたが、2010年以降くらいは「安全のため多要素認証をご利用ください」や「より安全なパスキーをご利用ください」といったことが言われるようになりました。

ですが、なぜ多要素認証だったら安全だと言えるのでしょうか?

また、最近になってGoogleで「SMS(ショートメッセージサービス)による多要素認証を止める」という話がでてきます。

ですが、多要素認証自体が安全ではなくなったというわけではありません。
多要素認証は今も有効な認証強化策ですし、当面は使われ続けるでしょう。

ですが、多要素認証の安全性を仕組みから説明しているページがあまりないようですので、そのあたりを中心にお話をします。


1. 多要素認証

認証というのは、本人かどうかを確認する作業を言います。 一般的には、利用者ID(メールアドレスなど)と秘密情報(パスワードなど)を使ってその組合せが正しいかを調べます。 ところが、面倒が故にカンタンなパスワードを使う人が後を絶ちません。 また、パスワードを使い回す人も多いため、どこかのサービスでパスワード漏洩が起きると、多数のサービスに悪意の第三者がログインできてしまう点も問題です。 こういったパスワードの欠点を補うべく登場したのが多要素認証でした。 英語ではMFA(Multi Factor Authentication)と呼ばれます。 ところで、認証(本人確認)の方法としては大きく三つの方法(要素)があります。  1. 知識:本人だけが知っていること  2. 所持:本人だけが持っている物  3. 属性:本人の身体的特徴 このうち二つ以上の方法(要素)を用いて認証を行うものを「多要素」認証と呼びます。 例えば、会社のビルで守衛さんに社員証を見せながら入館しますよね。あれは社員証を掲示し、その顔社員と照合して本人確認を行っています。 社員証(所持)と顔の照合(属性)という2つの要素を使って本人確認を行っているのですね。 また、銀行のキャッシュカードも同様で、ATMでお金を引き出すには、カード(所持)と暗証番号(知識)の2つが必要ですよね。 同様の考え方をインターネットなどのサービス認証で実現しているのが多要素認証という方式です。

2. 多要素認証の認証コードが短い理由

皆さんは不思議に思いませんか? 多要素認証で、スマホなどに送られてくる認証文字列(以降、認証コードと書きます)って、2ケタか3桁、長くても6ケタ程度です。 安全なパスワードについては、10文字以上だ、使い回しはするな、などとウルサいのに、なぜ認証コードはこんなので問題にならないのでしょう? この理由はパスワードと認証コードの役割の違いにあります。 前章で書いたように、本人確認のための方法は三つです。 そのうちパスワードは「本人しか知らない知識」を求めるものです。 知識を求めるものだから、本人でないと正解が出せない複雑さが必要です。 一方、認証コードは知識ではなくスマホの「所持」を確認するものです。手元にあることが確認できれば、それで十分です。だから、認証コードは数桁の数字なのです。 加えて、認証コードは使い捨てです。一度しか使えませんから短くても十分に安全だというわけです。 一方、パスワードは変更せずに使い続けるものです。だから十分に複雑でないと危ないということなんですね。

3. 多要素認証の仕組み

多要素認証を行うには事前にいくつかの仕込みが必要です。 例えば、本人の身体的特徴を用いた認証(属性による認証)をしたければその属性を事前登録しないといけません。 指紋認証を行うなら、本人の指紋を登録しなくちゃ、ってことです。 同様にスマホの保有(所持による認証)をしたければ、そのスマホの保有を事前登録しないといけません。 とはいうものの、属性を用いた多要素認証はインターネット上のサービスでは少数派で、大半は知識(パスワード)と所持(スマホ)の二要素です。 さて、多要素認証を行う場合の手順ですが、方式によっていろいろですが、以下にSMS(ショートメッセージサービス)を送るタイプの手順を示します。  1. ログイン画面を出します。  2. (利用者が)IDとパスワードを入力します。  3. パスワードをチェックします。  4. 登録済み電話番号に認証コードを送ります。  5. 認証コードの入力画面を出します。  6. (利用者が)認証コードを入力します。  7. 認証コードの一致を確認します。  8. ログイン完了です。 この通り、かなり裏側の仕組みも複雑です。多要素認証はサービス運営側にとっても面倒な話ですが、不正ログインの防止にはかなり有効な手法だから、今も利用されているのです。 一般に、不正ログインを狙うような犯罪者は、パスワードを入手済みでない限り、様々なパスワードを使ってログインを試します。もちろん手入力などはせず、自動で延々とログイン処理を繰り返すようなプログラムを作ってコンピュータに実行させます。 ところが、多要素認証を使われるとこのシナリオが使えません。 うまくパスワードが見つかっても、スマホが手元になければ認証コードがわからないからです。 もちろん、認証コードが偶然当たるまで繰り返すことも可能ですが、認証コードは毎回再発行されますから、順番に繰り返せばアタるというものではありません。さらに、この攻撃の都度、本来のユーザに大量のSMSが送信されます。 パスワード攻撃は本人に気づかれないように行うのが鉄則です。 大量のSMSが送信されるような攻撃では、本人やサービスの運営元に対処されちゃいますので。

4. Googleが多要素認証を廃止?

この記事を書いている2025年2月にGoogleがSMSを用いた多要素認証を廃止するという発表を行いました。 これを見て、「多要素認証ってもう古いの?」と誤解される方もおられそうですので、この点をお話しておきます。 まず、Googleは多要素認証の全てを廃止するわけではありません。 今回の発表は「SMS(ショートメッセージサービス)による多要素認証の廃止」です。 では、SMSによる多要素認証がダメなのか?というと電話番号を盗んで、SMSの内容を盗み見る方法が存在しているためです。 この方法はかなり条件が特殊ですので、誰もが実施できるものではないのですが、いろんな事情があり解消できていません。 その状況でGoogleとしてはSMSを使い続ける必然性がないという判断をしたということでしょう。一方、QRコードを用いた多要素認証(画面に表示されたQRコードを登録済みの電話でスキャンすると認証が行われる)は今後も当面の間は利用できるようです。

5. 多要素認証の限界

上記のとおり、多要素認証はかなり有用性が高いのですが、それでも完璧とは言えません。 というのは、悪意の犯罪者にうまく乗せられて、正しいと信じて認証コードを入力するような事件/事故が一定数発生しているからです。 いわゆるオレオレ詐欺(特殊詐欺)と同様の仕組みです。 フィッシングメールなどで「お客様のサービスが不正利用されているようですので、以下のリンクをクリックしてご確認ください」といったメールが来て、そのリンクをクリックした場合を思い浮かべてください。 アクセス先はいかにも本物に見えるログイン画面。(本物をコピーして作りますから本物っぽいのは当然です)ここにIDとパスワードを入れると、次の画面には「登録済みのスマホに認証コードを送りましたから、入力してください」と出てきます。 これもいかにも本物の画面だし、実際スマホには認証コードが届いていますから、疑わずにその認証コードを入力します。 この手順で犯罪者側はログインができてしまいます。 どういうことかと言いますと、実はニセの画面を出している裏で犯罪者たちは本物のサイトでログインをしているのです。 もちろん、IDとパスワードは被害者が入力したものをそのまま使いますから、問題なくログインでき、サイト側は多要素認証のために認証コードをスマホに送信します。 裏でこんなことをしているとは夢にも思わない被害者は、素直に送られてきた認証コードを次の画面に入力してしまいます。 果たして、犯罪者たちは不正ログインに成功し、そのサービスが自由に使えます。 こういった攻撃(AITM攻撃などと呼びます)に対しては多要素認証といえど、対抗することは困難です。 なお、このようなだましに弱いのはSMSに限らず、多要素認証という仕組みの限界と言えます。 人の操作が伴う限りだまされる可能性はゼロにできないからです。

6. まとめ

多要素認証というパスワードだけに頼らない認証方式があります。 現状では大半が、登録済みのスマホを使った方式になります。 SMS(ショートメッセージサービス)を使って、認証コードを送ってくるもの、画面に表示されたQRコードをスマホで写してURLにアクセスする方式、専用アプリ(Authenticatorなど)を使う方式などがあります。 多要素認証が出てきた当初は「これでパスワードを盗まれても安心」と思われましたが、上述のAITM攻撃のような人の心理を利用した攻撃も登場しています。 確かに多要素認証に完全ではありませんが、利用できるサービスでは是非ご利用いただきたいと思います。 では、多要素認証より優れた認証方式があるのか?というと、実はあります。 パスキーという方式があり、数年前からサービス利用が始まっています。 前章で「人の操作が伴う限りだまされる可能性はゼロにできない」と書きましたが、パスキーは人による操作を極力減らし、システムで安全性を確保しようというアプローチです。 例えば、Google、Docomo、Amazonといったサービスでパスキーが利用できます。 Googleなどはパスキー方式をイチオシとしているようです。 このメルマガでも2023年6月にパスキーの話を書いています。 (もう2年近く前になるのでまたアップデート版を書きます)  No310 パスキーはパスワードを置き換えるのか?  https://note.com/egao_it/n/ndbaff037d2da 今回は多要素認証のお話をしました。 次回もお楽しみに。 (本稿は 2025年3月に作成しました)

前号: No 394 / 次号: No 396 / 一覧(note.com)へ / ブログページに戻る