1万口座のうち1220件が、攻める側の持つ1000語の一覧に入る語を使っていました。
10語を全口座に1日1語ずつ試すと172件が破られます。1口座から見れば1日1回の失敗です。
口座ごとの制限は、1口座あたりの試行が少ない攻め方には掛かりません。
多要素認証を考える前に、1つ目の要素の状態を知る必要があります。出典は語の一覧との突き合わせを求めています。
記憶による秘密を設定・変更する要求を処理するとき、検証者は、よく使われる・予想される・すでに漏れていると分かっている値を含む一覧と、その秘密を突き合わせなければならないという規定です。
つまり一覧に載る語を使っている利用者がいることが前提になっています。その状態で何が起きるかを数えました。
1万口座に語を割り当てました。1220件が、攻める側の持つ1000語の一覧に入る語を使っています。
口座 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万回の失敗が並ぶので、合計で見れば分かります。
つまり必要なのは、口座ごとと全体の両方を見ることです。片方だけでは検出できません。
試す語を増やすほど、破れる口座が積み上がる。
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つ目の要素を置いたときに何件が残るかを数えました。
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件です。これは確率が低いのではなく、仕組みとして成り立たないためです。
出典はこの攻め方に名前を付けています。検証者へのなりすましは、偽の検証者が利用者をだまして、偽の場所へ認証させようとするものという説明です。
鍵が相手先に結びついていれば、偽の場所では鍵そのものが動きません。利用者が気づくかどうかに依存しません。
右端の列も見てください。この方式は手間が11.0分で、いちばん少ないものでした。
番号を伝える方式は4分の1までしか落ちない。
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
経路の保護と一覧との突き合わせが先です。そこが欠けたまま足しても、残る件数は変わりません。
多要素認証の話をする前に、1つ目の要素の扱いに条件があります。出典はこう定めています。
検証者は、盗み聞きと中間者による攻撃への耐性を備えるため、記憶による秘密を要求する際に、承認された暗号化と、認証された保護された経路を用いなければならないという規定です。
順序があります。経路と一覧が先で、2つ目の要素はそのあとです。
2番目が効きます。一覧に載る語を使えなくすれば、10語で172件という数字そのものが下がります。
この計測では12.2%が一覧の語を使っていました。この割合を下げるほうが、2つ目の要素より先に効きます。
2つ目の要素には利用者の時間がかかります。年220回のログインで11.0分から44.0分です。
1000人の組織なら年に183時間から733時間になります。方式の選び方で4倍違います。
引換券の有効期限を延ばせば、この回数そのものを減らせます。その扱いはセッションとJWTの記事で扱っています。
語の割り当ては式で作った偏りで、実在の流出一覧は使っていません。12.2%という割合も置いた値です。番号を伝える方式の越えられる割合(0.22〜0.30)も、公開された調査ではなく置いた値であり、実際の値は利用者への案内や画面の作りで変わります。仕組みとして0になるのは最下行だけで、そこは確率の話ではありません。ここで見せているのは、口座ごとの制限が攻め方によって効かなくなるという関係です。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る