パスワードや多要素認証などを使用する電子認証のガイドラインは、2004年6月に米国国立標準技術研究所(NIST)が SP800-63 ver.1.0 が発行され、その後、テクノロジーの発展と共に、2017年6月にVer.3が公表され、2025年にはVer.4が公開される予定です。
電子認証は一般的なものとしてパスワードが知られていますが、昨今のECサイト等では、本来のWeb画面以外の経路、例えば、スマートフォンのSMSや電子メールにワンタイムパスワードを送信し、Web画面にその入力を求めるなど、経路外認証も増えてきました。また、銀行のオンラインバンキングでは、独立したワンタイムパスワード生成デバイスが採用されており、脅威の増大に連れて多要素認証が身近になっています。
記憶シークレット(パスワード)の要求事項
注:SP800-63BではパスワードやPINを「記憶シークレット」と呼んでいますが、ここでは、パスワードに置き換えています。
一般的にはパスワードや、数字ならばPINとして表されているものは、ユーザーによって決められ、記憶されるシークレットである。パスワードは攻撃者が正しい値を推測したり特定できないように、十分に複雑かつ秘密の状態にしておく必要がある。
- ユーザーが指定する場合、最低8文字以上を要求する (SHALL)
- パスワードの設定、変更を処理する際、一般的に利用されているパスワード、予想できるパスワード、セキュリティ侵害を受けたパスワードと比較する (SHALL)
- 過去にセキュリティ侵害にあったパスワードリスト
- 辞書に含まれる言葉
- サービス名や、ユーザー名、そこから派生するようなものなど、文脈によって特定可能な単語
- パスワードがこれらに該当したらユーザーは異なるパスワードを選びなおす必要があることを通知され、異なる値の選択を求められる (SHALL)
- アカウント乗っ取りのために試みた認証失敗の回数を制限する仕組みを実装する (SHALL)
- パスワードが侵害されている、もしくはユーザーの変更要求がない限り、パスワードを例えば定期的に変更するよう要求するべきではない (SHOULD NOT)
- パスワード入力時にペースト機能を利用できることを許可すべきである (SHOULD)
「SHALL(するものとする)」及び「SHALL NOT(しないものとする)」というキーワードは、刊行物に厳密に従うことを要求しており、内容と異なってはならない。
「SHOULD(すべきである」」及び「SHOULD NOT(すべきではない)」は、いくつかある選択肢の中で特定の推奨があることを示しており、他の選択肢については選択も除外もしない。ある行動指針を推奨するが、必須であることまでは要求しない。(否定の意味では)ある選択肢または行動指針を非推奨するが、禁止はしない。
「MAY(してもよい)」及び「NEED NOT(しなくてよい)」は、刊行物の範囲において、行動指針が許容できることを示す。
「CAN(できる)」及び「CANNOT(できない)」は、可能性や、能力があることを示す。その対象が物理的か一時的かにはかかわらない。
パスワードの課題
本項では、NIST SP800-63Bが要求事項改訂に至ったとする課題について解説します。
長さについて
NISTとカーネギーメロン大学の研究 で、5,000人の参加者に、様々なパスワードを生成させ、その強度を比較したところ、「8文字」・「複雑さ」・「辞書に含まれていない」パスワードよりも、何ら制約を課していない16桁のパスワードが優れていたことが判明しました。パスワードの適切な長さについては、システムの特性によるとしていますが、短すぎるパスワードは辞書攻撃や総当たり攻撃に弱いため、最低8文字とされています。また、長いパスワードが使えるように促進されるべきとしています。
複雑さの課題
複雑さとは、以下の複数の文字種の使用を条件とするもので、通常、3種類か4種類の使用を求めます。
- 英大文字
- 英小文字
- 数字
- 記号(特殊文字) 複雑さは攻撃の困難性を高める有効な手段として考えられていましたが、複雑さを求めることで別な弊害が発生することがフロリダ州立大学 らの研究で明らかになっています。ユーザーは複雑さを条件とされると、比較的高い確率で以下のような変更をすることが確認されました。そのため、複雑さを強制してもパスワードの推測が可能であり、強度の向上にはつながらないことが判明しています。
最初のパスワード password
大文字、小文字、数字の要求 Password1
大文字、小文字、数字、記号の要求 Password1!
また、長さが8桁で大文字、小文字、数字、記号のすべての使用を条件とした場合、制約から1桁から7けたまでの組み合わせと、大文字・小文字・数字・記号以外の組合せは除外されるため、組み合わせ数を大幅に下げることになるため効果的ではありません。
定期変更の課題
パスワードの定期変更を求めると、多くのユーザーにおいてパスワードの末尾の記号を増やす・減らす、などの推測しやすいパスワードを設定する傾向があることが分かっています。米国での大規模な研究 では、調査したアカウントの11%は、過去に設定されたパスワードが分かれば、5回未満で現在のパスワードを入手できることが確認されました。これは、5回でロックアウトするシステムの場合、11%のユーザーはオンラインでクラックされてしまう、という事を意味します。また、オフラインの場合は数秒で40%を超えるユーザーの、現在のパスワードの割り出しに成功しています。
安易な、つまり攻撃者にとって類推可能なパスワードを増やすだけであれば、定期変更を求めず、パスワードが危殆化した時だけ、変更するのは合理的といえます。
なお、パスワードに有効期限を設けて定期的に変更を強制する理由として、「パスワードが侵害された場合に備える」があります。しかし、パスワードが侵害されたならば即座に変更をするべきであり、次の定期変更日まで待つことはリスクを高めます。
パスワードの使い回しの課題
パスワードの使い回しは危険だという指摘は多数ありますが、さまざまなWebサイトごとにパスワードを変えて、それを覚えるのは大変ですし、いざ必要な時に素早くアクセスできないのはさらに苦痛です。こうしたことから、多くのユーザーはパスワードを使い回します。
SP800-63Bではそれを防止させるため、SP800-63B ではパスワード入力の際のペースト行為を許可しています。これは、パスワード管理ツールの利用を促し、強力なパスワードを手軽に利用するため、としています。
長いパスワードのメリット
パスワードの組み合わせは、以下の式で得られます。
組み合わせ数=b2n
ここで、b は利用可能な文字種であり、標準的な101キーボードではスペースを含めると95種類が利用可能です。パスワードの桁数が6桁であれば、735,091,890,625の組合せがあり、8桁ならば6,634,204,312,890,620と格段に多い組み合わせが考えられます。べき乗であることから、1桁増えれば95倍組み合わせが増えるため、桁数を長めにすることで総当たり攻撃を困難にすることが可能となります。
桁数組み合わせ数
桁数 | 組み合わせ数 |
---|---|
1 | 95 |
2 | 9,025 |
3 | 857,375 |
4 | 81,450,625 |
5 | 7,737,809,375 |
6 | 735,091,890,625 |
7 | 69,833,729,609,375 |
8 | 6,634,204,312,890,620 |
9 | 630,249,409,724,609,000 |
10 | 59,873,693,923,837,900,000 |
12 | 540,360,087,662,637,000,000,000 |
14 | 4,876,749,791,155,300,000,000,000,000 |
16 | 44,012,666,865,176,600,000,000,000,000,000 |
18 | 397,214,318,458,219,000,000,000,000,000,000,000 |
20 | 3,584,859,224,085,420,000,000,000,000,000,000,000,000 |