Fox on Security

セキュリティリサーチャー(インシデントアナリスト)で、セキュリティコンサルタントのキタきつねの独り言。専門はPCI DSS。

パスワード定期変更不要だけ一人歩きしてないか

内容として決して間違っている訳ではないのですが、記事を読んでいてSP800-63で書かれている事との違和感を感じました。 

tech.nikkeibp.co.jp

 

 「企業IT利活用動向調査2019」速報によると、2018年3月に総務省がパスワードの定期的な変更は不要との見解を示したにも関わらず、これまで通りパスワードの定期変更を行っている」という企業が54.5%を占めた

 総務省定期的な変更がかえってパスワードの単純化や使い回しを助長して脆弱性を増大させるとしてパスワードを変更する必要はないという見解を示した。利用するサービスによってはパスワードの定期変更を求められるものの、実際にパスワードを破られたりアカウントが乗っ取られたり流出した事実がなければ定期的な変更よりも使い回しのない固有のパスワードの設定が求められるとした。

 JIPDECとITRは「企業はパスワード認証の問題点に対する理解と、多要素認証など他の認証方式との組み合わせの採用が望まれる」と指摘している。

(日経XTECH記事より引用)

 

◆キタきつねの所感

この指針が出た当時、大きなニュースとなっていましたが、

参考:

www.asahi.com

 

国民のための情報セキュリティサイトでは、パスワードの定期変更不要の部分についてNIST SP800-63を根拠に、次のように説明しています。

f:id:foxcafelate:20190420103640p:plain

定期的にパスワードを変更しても、結局(ユーザがパスワードを覚えきれないので)脆弱なパスワードを使ったり、他のサイトとパスワードを使いまわしてしまうのであれば、パスワードを定期的に変更する効果は薄いという事を指しているのだと思います。これは、パスワードリスト攻撃を起因とするインシデントが未だに出てくる現状を考えると、その通りだと思います。

 

では何がひっかかったのかと言えば、NIST800-63は、「パスワードの定期変更不要」だけしか書いてない・・・という訳ではないからです。

 

まず大きな変更という意味では、SP800-63Bは「パスワード」という表記から「記憶シークレット」に統一されているという概念変更の部分ですが、冒頭の5.1.1部分で(パスワード)桁数と文字種についても記載があります。

 

NISTの原文では、この様な形で書かれており、

f:id:foxcafelate:20190420161732p:plain


JIPDECの日本語翻訳では以下の形で訳されています。

5.1.1.1 記憶シークレットAuthenticator
記憶シークレットは,Subscriberにより選択されば場合少なくとも8文字とするものとする
(SHALL).記憶シークレットがCSPまたはVerifierによってランダムに選択されたものである場合は,少なくとも6文字であるものとし(SHALL)全て数字でもよい(MAY). CSPやVerifierが,危殆化した値のブラックリストに出現状況に基づいて指定された記憶シークレットを拒否した場合,Subscriberは別の記憶シークレット値を選ぶよう要求されるものとする(SHALL).記憶シークレットの複雑さに関する他の要件を課すべきではない(SHOULD).本件についての論拠はAppendix Aの Strength of Memorized Secrets に記載されている.

 

英語文、特に契約書面をやり取りした事がある人であれば、「SHALL」には敏感かと思います。契約や規定文では一般的な日本語の「~かも知れない」と訳される事はなく、この表現は義務(MUSTと同様)を表します

 参考:Shall, will(英文契約書用語の弁護士による解説)

 

とは言え、前段の8文字以上の部分に関しては、以前からのNISTの定義(推奨)と変わりません。IPAに翻訳文がある、SP 800-63(2006年版)では、『付録 A:パスワードのエントロピーと強度の推定』に次の様な例示があり、この部分がPCI DSSも含む、多くのセキュリティ基準策定の参考として使われてきました。とは言え、翻訳文を見ても『定期的なパスワード変更を要求している』部分がはっきりとしません。(※私の探し方が悪いのかも知れませんが・・・)例示には、例えば、以下の様な記載があったので、定期的なパスワード変更がこの規定(2006年版)で推奨されている事は分かるのですが・・・

  • システムにおいて、3回の試行が失敗したらパスワード認証を1分間ロックし、10年ごとにパスワードを変更することを求めるとすれば、標的を定めたパスワード推測攻撃に対するレベル2の要求事項を十分に満たすことになる。

パスワード関係でよく引用されるのは、以下の部分(上2つ)ですが、こちらは例示ではありますが、この規定(2006年版)に記載されていました。

  • 最低 8 文字のパスワードを使用する。加入者が 94 個の印字可能なアルファベット文字から選択する。
  • パスワードに、少なくとも大文字を 1 個、小文字を 1 個、数字を 1 個、特殊文字を 1個、それぞれ含めることを加入者に求める。そして、
  • 一般的な単語が含まれるのを防ぐために辞書を使用し、ユーザ名の並べ替えをパスワードとして使用することを防止する。

 

もう少し遡って調べてみると、2009年4月に発行され、2016年4月に引退した『SP800-118(DRAFT Guide to Enterprise Password Management)』には、パスワードの定期的変更について推奨する内容が記載されています。この規定が、SP800-63(2017年版)へと吸収されて(移行して)いますので、要求はされていたのだろうと思いますが・・・

 

f:id:foxcafelate:20190420164917p:plain

 

前置きが長くなりましたが、私はSP800-63Bはもっとパスワードに対して要求しているという事が、あまり重要視されてないのは少し問題な気がします。和訳文章が読みにくいのですが、例えばJIPDECの日本語翻訳では5.1.1.2には多くの『SHALL』が書かれています

 

f:id:foxcafelate:20190420220505p:plain

f:id:foxcafelate:20190420220700p:plain

 

パスワードの定期的変更以外で、SP800-63Bに記載がある注目すべき要求事項としては、私は以下の点が気になりました。

①Subscriberが選択した記憶シークレットに対して最低64文字を許可すべきである(SHOULD) 

 ※ユーザ選択のパスワードは、最低64文字を許容すべきである

②記憶シークレットの複雑さに関する他の要件を課すべきではない(SHOULD)

 ※パスワードの複雑性要件(大小英数記号・・・)は要求されない

②すべての印字可能なASCII [RFC 20] 文字(スペースも同様)は記憶シークレットとして許容されるべきである(SHOULD) ※スペースもパスワードとして使えるべきである

③記憶シークレットは,CSP(例えばEnrollment時など)やVerifier(ユーザが新しいPINを要求した時など)によりランダムに選択されるもので,最低6文字であるものとし(SHALL) 

 ※システムで初期パスワードをランダムで生成する場合は6文字以上でなければいけない

④(③は)Approve済み乱数生成器[SP 800-90Ar1] を利用して生成されるものとする(SHALL)

 ※正しい乱数発生でパスワードが生成されなければいけない

⑤記憶シークレットを選択する際,VerifierはSubscriberに対して特定のタイプの情報(例えば,「あなたが飼った最初のペットの名前はなんですか?」といったもの)の入力を求めないものとする(SHALL NOT).

 ※パスワードを忘れた際のヒント(=秘密の質問)は実施してはいけない

⑥記憶シークレットの設定,変更の要求を処理する際,Verifierは候補となっているシークレットの値
を,一般的に利用されている値,予想されうる値,危殆化した値として知られている値を含むリスト
に対し,比較するものとする(SHALL)

 ※容易なパスワード、辞書単語等はパスワード設定時にチェックされなければならない

⑦VerifierはSubscriberに対して,ユーザが強力な記憶シークレットを選択するのを支援するために,パ
スワード強度メーター [Meters] のようなガイダンスを行うべきである(SHOULD)

 ※パスワード強度メータの導入をすべきである

 

いずれもサービス事業者にはインパクトがある内容だと思います。特に⑤の秘密の質問はNISTが禁止(かえって脆弱性がある)している事がもっと深刻に受け止められるべきではないでしょうか。

また、⑥のパスワード登録時のチェックも、

過去に漏洩した語彙集から得られるパスワード
辞書に含まれる言葉
・繰り返しまたはシーケンシャルな文字 (例: ‘aaaaaa’,’1234abcd’)
・サービス名や,ユーザ名,そこから派生するようなものなど,文脈で特定可能な単語

と例示補記されている事から考えると、パスワードリスト(辞書)攻撃でハッカー側が使う”辞書”を防衛側も持ってチェックする必要がある事を示唆しています。

この背景にはパスワードの限界というものをNISTは想定していると思われ、より長くて覚えやすいパスフレーズへの転換をユーザ及びサービス事業者に求めていると見る事も出来るかと思います。

 

総務省は国民に『パスワードの使いまわし』を防ぐ意味で、NISTのSP800-63Bを引用して(定期的な変更は不要)と記載しているのだと思いますが、パスワードを使いまわす立場の国民(ユーザ)に対する説明としては正しいとしても、ここだけ切り出して(サービス事業者が実施すべき部分を語らずに)、だからパスワードは総合的に安全であるとは言えないはずです。

 

参考:SP800-63Bの内容については、以下の説明も分かりやすいかと思います。

www.slideshare.net

 

今回のJIPDECとITRの調査は企業(サービス事業者)向けのものであった様ですが、パスワードの定期的変更だけでなく、『秘密の質問を廃止したか』であったり、『パスワード登録時の辞書チェック実施レベル』や、『パスワード設定桁数』などを俯瞰してNIST(SP800-63B)基準との対比を狙った方が、面白い結果が得られたのではないでしょうか?

SP800-63では『パスワードの定期変更廃止』ばかりに注目が集まりその他の規定(推奨)項目をよく読んでない事が、あぶり出されたのではないかと思います。

 

www.itr.co.jp

 

 

 

èªè»¢è»ã®ã©ã¤ããã¤ãã¦èµ°ã£ã¦ããã¤ã©ã¹ã

 

更新履歴

  • 2019年4月20日AM(予約投稿)