トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

パスワードの要件と課題 のバックアップ(No.7)


・パスワードについて?

パスワードの要件と課題

パスワードに関する現在の要件と課題を理解するために、「NIST SP800-63B」からパスワードに対する要求事項(抜粋)をあげ、変更の理由となった研究を紹介します。

NIST SP800-63-3の記憶シークレット(パスワード)の要求事項

注:SP800-63BではパスワードやPINを「記憶シークレット」と呼んでいますが、ここでは、パスワードに置き換えています。

一般的にはパスワードや、数字ならばPINとして表されているものは、ユーザーによって決められ、記憶されるシークレットである。パスワードは攻撃者が正しい値を推測したり特定できないように、十分に複雑かつ秘密の状態にしておく必要がある。

  • ユーザーが指定する場合、最低8文字以上を要求する (SHALL) ーパスワードの設定、変更を処理する際、一般的に利用されているパスワード、予想できるパスワード、セキュリティ侵害を受けたパスワードと比較する (SHALL)
    • 過去にセキュリティ侵害にあったパスワードリスト
    • 辞書に含まれる言葉
    • サービス名や、ユーザー名、そこから派生するようなものなど、文脈によって特定可能な単語
  • パスワードがこれらに該当したらユーザーは異なるパスワードを選びなおす必要があることを通知され、異なる値の選択を求められる (SHALL)
  • アカウント乗っ取りのために試みた認証失敗の回数を制限する仕組みを実装する (SHALL)
  • 例えば異なる文字種の組合せをパスワードに課すべきではない (SHOULD NOT)
  • パスワードが侵害されている、ユーザーの変更要求がない限り、パスワードを例えば定期的に変更するよう要求するべきではない (SHOULD NOT)
  • パスワード入力時にペースト機能を利用できることを許可すべき (SHOULD)

「SHALL(するものとする)」及び「SHALL NOT(しないものとする)」というキーワードは、刊行物に厳密に従うことを要求しており、内容と異なってはならない。

「SHOULD(すべきである」」及び「SHOULD NOT(すべきではない)」は、いくつかある選択肢の中で特定の推奨があることを示しており、他の選択肢については選択も除外もしない。ある行動指針を推奨するが、必須であることまでは要求しない。(否定の意味では)ある選択肢または行動指針を非推奨するが、禁止はしない。

「MAY(してもよい)」及び「NEED NOT(しなくてよい)」は、刊行物の範囲において、行動指針が許容できることを示す。

「CAN(できる)」及び「CANNOT(できない)」は、可能性や、能力があることを示す。その対象が物理的か一時的かにはかかわらない。

パスワードの課題

本項では、NIST SP800-63Bが要求事項改訂に至ったとする課題について解説します。

長さについて

NISTとカーネギーメロン大学の研究で、5,000人の参加者に、様々なパスワードを生成させ、その強度を比較したところ、「8文字」・「複雑さ」・「辞書に含まれていない」パスワードよりも、何ら制約を課していない16桁のパスワードが優れていたことが判明しました。パスワードの適切な長さについては、システムの特性によるとしていますが、短すぎるパスワードは辞書攻撃や総当たり攻撃に弱いため、最低8文字とされています。また、長いパスワードが使えるように促進されるべきとしています。

Of Passwords and People:Measuring the Effect of Password-Composition Policies : https://users.ece.cmu.edu/~lbauer/papers/2011/chi2011-passwords.pdf

複雑さの課題

複雑さとは、以下の複数の文字種の使用を条件とするもので、通常、3種類か4種類の使用を求めます。

  • 英大文字
  • 英小文字
  • 数字
  • 記号(特殊文字) 複雑さは攻撃の困難性を高める有効な手段として考えられていましたが、複雑さを求めることで別な弊害が発生することがフロリダ州立大学らの研究で明らかになっています。ユーザーは複雑さを条件とされると、比較的高い確率で以下のような遷移をすることが確認されました。そのため、複雑さを強制してもパスワードの推測が可能であり、強度の向上にはつながらないことが判明しています。
    最初のパスワードpassword
    大文字、小文字、数字の要求Password1
    大文字、小文字、数字、記号の要求Password1!

Testing Metrics for Password Creation Policies by Attacking Large Sets of Revealed Passwords : http://www.cs.umd.edu/~jkatz/security/downloads/passwords_revealed-weir.pdf

また、長さが8桁で大文字、小文字、数字、記号のすべての使用を条件とした場合、制約から1桁から7けたまでの組み合わせと、大文字・小文字・数字・記号以外の組合せは除外されるため、組み合わせ数を大幅に下げることになるため効果的ではありません。

定期変更の課題

パスワードの定期変更を求めると、多くのユーザーにおいてパスワードの末尾の記号を増やす・減らす、などの推測しやすいパスワードを設定する傾向があることが分かっています。米国での大規模な研究 では、調査したアカウントの11%は、過去に設定されたパスワードが分かれば、5回未満で現在のパスワードを入手できることが確認されました。これは、5回でロックアウトするシステムの場合、11%のユーザーはオンラインでクラックされてしまう、という事を意味します。また、オフラインの場合は数秒で40%を超えるユーザーの、現在のパスワードの割り出しに成功しています。
安易な類推可能なパスワードを増やすだけであれば、定期変更を求めず、パスワードが危殆化した時だけ、変更するのは合理的といえます。
なお、パスワードに有効期限を設けて定期的に変更を強制する理由として、「パスワードが侵害された場合に備える」があります。しかし、パスワードが侵害されたならば即座に変更をするべきであり、次の定期変更日まで待つことはリスクを高めます。

The Security of Modern Password Expiration:An Algorithmic Framework and Empirical Analysis : https://www.cs.unc.edu/~reiter/papers/2010/CCS.pdf

パスワードの使い回しの課題

パスワードの使い回しは危険だという指摘は多数ありますが、さまざまなWebサイトごとにパスワードを変えて、それを覚えるのは大変ですし、いざ必要な時に素早くアクセスできないのはさらに苦痛です。こうしたことから、多くのユーザーはパスワードを使い回します。
それを防止させるため、SP800-63B ではパスワード入力の際のペースト行為を許可しています。これは、パスワード管理ツールの利用を促し、強力なパスワードを手軽に利用するため、としています。

長いパスワードを実装する場合

パスワードの組み合わせは、以下の式で得られます。

組み合わせ数=bn

ここで、b は利用可能な文字種であり、標準的な101キーボードではスペースを含めると95種類が利用可能です。パスワードの桁数が6桁であれば、735,091,890,625の組合せがあり、8桁ならば6,634,204,312,890,620と格段に多い組み合わせが考えられます。べき乗であることから、1桁増えれば95倍組み合わせが増えるため、桁数を長めにすることで総当たり攻撃を困難にすることが可能となります。

桁数組み合わせ数
CENTOR:195
CENTOR:29,025
CENTOR:3857,375
CENTOR:481,450,625
CENTOR:57,737,809,375
CENTOR:6735,091,890,625
CENTOR:769,833,729,609,375
CENTOR:86,634,204,312,890,620
CENTOR:9630,249,409,724,609,000
CENTOR:1059,873,693,923,837,900,000
CENTOR:12540,360,087,662,637,000,000,000
CENTOR:144,876,749,791,155,300,000,000,000,000
CENTOR:1644,012,666,865,176,600,000,000,000,000,000
CENTOR:18397,214,318,458,219,000,000,000,000,000,000,000
CENTOR:203,584,859,224,085,420,000,000,000,000,000,000,000,000


但し、ユーザーに長いパスワードを求めると次のような弊害が発生します。

  • 文字列の繰り返し 12341234、monkeymonkey、monkeyeknom
  • 連続した文字列 111111111・・・ qwerty・・・
    繰り返しや連続した文字列は、機械的に攻撃用の辞書データを作成できることから、好ましくありません。ある程度の長さを要求する場合は、これらの弊害を取り除くロジックの実装が必要になります。これは、パスフレーズを利用する上でも、同様です。