セキュリティ・ID

多要素認証とは|5回で止める制限があっても、10語を全口座に試すと172件が破られた

試行制限だけでは何が防げないのか2つ目の要素で何件止まるのか要素によって何が違うのか

1万口座のうち1220件が、攻める側の持つ1000語の一覧に入る語を使っていました。

10語を全口座に1日1語ずつ試すと172件が破られます。1口座から見れば1日1回の失敗です。

この記事の要点

  • 10語で172件
  • 1口座あたり1日1回
  • 番号方式は38〜52件残る
  • 鍵の方式は0件

5回で止める制限があっても、10語を全口座に試すと172件が破られた

口座ごとの制限は、1口座あたりの試行が少ない攻め方には掛かりません。

多要素認証を考える前に、1つ目の要素の状態を知る必要があります。出典は語の一覧との突き合わせを求めています。

記憶による秘密を設定・変更する要求を処理するとき、検証者は、よく使われる・予想される・すでに漏れていると分かっている値を含む一覧と、その秘密を突き合わせなければならないという規定です。

つまり一覧に載る語を使っている利用者がいることが前提になっています。その状態で何が起きるかを数えました。

1語を全口座に試す

1万口座に語を割り当てました。1220件が、攻める側の持つ1000語の一覧に入る語を使っています。

text
口座 10000件。うち 1220件(12.2%)が、攻める側の持つ 1000語の一覧に入る語を使っている
攻め方を2つ比べる。どちらも試行の総数は同じにする

試す語の数  試行の総数  1口座あたりの試行  破れた口座  1日1語ずつ試した場合
1語               10,000回               1回         66件                    1日
5語               50,000回               5回        137件                    5日
10語             100,000回              10回        172件                   10日
50語             500,000回              50回        343件                   50日
200語          2,000,000回             200回        608件                  200日

10語の行を見てください。試行の総数は10万回ですが、1口座あたりでは10回です。

1日1語ずつなら、1口座から見て1日1回の失敗です。5回15分の制限には掛かりません。

どこを見れば気づけるか

口座ごとの失敗回数だけを見ていると、この攻め方は見えません。1日1回はごく普通の入力間違いだからです。

見えるのは全体の失敗回数です。1日1万回の失敗が並ぶので、合計で見れば分かります。

つまり必要なのは、口座ごとと全体の両方を見ることです。片方だけでは検出できません。

試す語を増やすほど、破れる口座が積み上がる。

単位: 件200語608件50語343件10語172件5語137件1語だけ試す66件1万口座での実測。1日1語ずつなら、どの行でも1口座あたりの失敗は1日1回にとどまる。
図1 ── 試した語の数と、破れた口座
出典NIST SP 800-63B「Digital Identity Guidelines: Authentication and Lifecycle Management」2026-08-18 確認
When processing requests to establish and change memorized secrets, verifiers SHALL compare the prospective secrets against a list that contains values known to be commonly-used, expected, or compromised.
原文NIST SP 800-63B「Digital Identity Guidelines: Authentication and Lifecycle Management」 この内容の有効期限2027-02-18

2つ目の要素で172件が38件まで落ちる。0件にできるのは1つだけ

番号を伝える方式は、その番号を誰に渡すかを利用者が判断します。そこが残ります。

多要素認証の手前で、出典は試行の制限も求めています。検証者は、利用者の口座に対して行える認証の失敗回数を実効的に制限する、頻度の制限の仕組みを実装しなければならないという規定です。

前の節で見たとおり、これだけでは足りません。2つ目の要素を置いたときに何件が残るかを数えました。

要素ごとの残り

text
1語を全口座に試す攻め方で 10語ぶん試すと、172件が語を破られる
その先に2つ目の要素を置いたとき、何件が残るかを見る

2つ目の要素            越えられた件数  1万件に対する割合  1人あたりの年間の手間
2つ目なし                           172件               1.72%                  0.0分
メールで届く番号                         43件               0.43%                 44.0分
アプリが出す番号                         38件               0.38%                 33.0分
携帯への確認の押し込み                      52件               0.52%                 14.7分
鍵が相手先に結びつく方式                      0件               0.00%                 11.0分

番号を伝える3つの方式では、38件から52件が残ります。172件からは4分の1ですが、0にはなりません。

残る理由は同じです。番号は、渡す相手が正しいかを判断できません

0になる理由

最下行だけが0件です。これは確率が低いのではなく、仕組みとして成り立たないためです。

出典はこの攻め方に名前を付けています。検証者へのなりすましは、偽の検証者が利用者をだまして、偽の場所へ認証させようとするものという説明です。

鍵が相手先に結びついていれば、偽の場所では鍵そのものが動きません。利用者が気づくかどうかに依存しません。

右端の列も見てください。この方式は手間が11.0分で、いちばん少ないものでした。

番号を伝える方式は4分の1までしか落ちない。

2つ目なし越えられた172止めた172件メールの番号43129172件アプリの番号38134172件鍵が結びつく172172件語を破られた172件がどこまで進めるか。番号方式の越えられる割合は置いた値で、鍵の方式だけが仕組みとして0になる。
図2 ── 2つ目の要素ごとの、越えられた件数
出典NIST SP 800-63B「Digital Identity Guidelines: Authentication and Lifecycle Management」2026-08-18 確認
Verifiers SHALL implement a rate-limiting mechanism that effectively limits the number of failed authentication attempts that can be made on the subscriber's account as described in Section 5.2.2.
原文NIST SP 800-63B「Digital Identity Guidelines: Authentication and Lifecycle Management」 この内容の有効期限2027-02-18

2つ目を足す前に、1つ目の扱いが要件を満たしているか

経路の保護と一覧との突き合わせが先です。そこが欠けたまま足しても、残る件数は変わりません。

多要素認証の話をする前に、1つ目の要素の扱いに条件があります。出典はこう定めています。

検証者は、盗み聞きと中間者による攻撃への耐性を備えるため、記憶による秘密を要求する際に、承認された暗号化と、認証された保護された経路を用いなければならないという規定です。

順序があります。経路と一覧が先で、2つ目の要素はそのあとです。

確かめる順序

  1. 経路が保護されているか。ここが欠けると他が意味を持たない
  2. 一覧と突き合わせているか。1220件の前提を減らせる
  3. 口座ごとの失敗を制限しているか。総当たりを止める
  4. 全体の失敗を見ているか。1語を全口座に試す形を見つける

2番目が効きます。一覧に載る語を使えなくすれば、10語で172件という数字そのものが下がります

この計測では12.2%が一覧の語を使っていました。この割合を下げるほうが、2つ目の要素より先に効きます

手間の見積もり

2つ目の要素には利用者の時間がかかります。年220回のログインで11.0分から44.0分です。

1000人の組織なら年に183時間から733時間になります。方式の選び方で4倍違います。

引換券の有効期限を延ばせば、この回数そのものを減らせます。その扱いはセッションとJWTの記事で扱っています。

余談 この計測での注意

語の割り当ては式で作った偏りで、実在の流出一覧は使っていません。12.2%という割合も置いた値です。番号を伝える方式の越えられる割合(0.22〜0.30)も、公開された調査ではなく置いた値であり、実際の値は利用者への案内や画面の作りで変わります。仕組みとして0になるのは最下行だけで、そこは確率の話ではありません。ここで見せているのは、口座ごとの制限が攻め方によって効かなくなるという関係です。

出典NIST SP 800-63B「Digital Identity Guidelines: Authentication and Lifecycle Management」2026-08-18 確認
The verifier SHALL use approved encryption and an authenticated protected channel when requesting memorized secrets in order to provide resistance to eavesdropping and MitM attacks.
原文NIST SP 800-63B「Digital Identity Guidelines: Authentication and Lifecycle Management」 この内容の有効期限2027-02-18

よくある質問

試行制限があれば安全ですか
攻め方によります。1語を全口座に試す形では、1口座あたりの失敗が1日1回で、5回15分の制限に掛かりません。
2つ目の要素でどれだけ止まりますか
この計測では172件が38〜52件になりました。0件になったのは1つの方式だけです。
番号を入力する方式では何が残りますか
偽の画面に番号を入れてしまう場合です。番号は誰に渡すかを判断できません。
利用者の手間はどれくらいですか
年220回のログインで11.0分から44.0分でした。要素によって4倍の開きがあります。

まとめ

  • 制限は攻め方で無効になる
  • 2つ目の要素が効く
  • 番号方式は渡す先を選べない
  • 鍵の方式は仕組みで防ぐ

今日から始められること

  1. 1口座あたりの失敗回数を監視しているか確かめる
  2. 全体の失敗回数も見ているか確かめる
  3. 使われている語が一覧に載っていないか調べる
  4. 2つ目の要素の方式を確認する

実務で組んだ多要素認証のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る