ネットロアをめぐる冒険

ネットにちらばる都市伝説=ネットロアを、できるかぎり解決していきます。

パスワードは定期的に変更してはいけないのか、デジタルネイティブの末路

f:id:ibenzo:20160630005932j:plain

お久しぶりでございます。どうしても眠くて眠くてなかなか更新できませんでした。更新できない間に、ああ、これを取り上げればよかったという話題がどんどん通り過ぎていきました。

さて、こんなIT関係の話が話題です。

nlab.itmedia.co.jp

NIST(米国国立標準技術研究所)が、デジタル認証のガイドラインとして、「SP800-63B」という名称で、「パスワードの定期変更をするべきではない」「秘密の質問も使用してはならない」という報告書を出した、というお話です。確かに、何日か経つとパスワードの変更を強制的に求められるのって、ちょーめんどうですよね。

 

うーん、しかしながらこの話、GoogleUSなどで検索をかけてみたんですが、実は日本以外でそれほど話題になっていないんですね*1。この話は、いったいどこまで正確なんでしょうか。検証してみたいと思います*2

 

 

***

 

800-63Bとは何か

そもそも、NISTが出した「800-63B」とは何でしょうか。

NISTと聞いてもぴんとこないかもしれませんが、「アメリカ国立標準技術研究所」という日本語名称にあるとおり、もともとは度量衡関係の機関です。キログラム原器なんて、教科書で見た人もいるんじゃないんでしょうか*3

そういった技術関係の促進のために設置されている機関で、昨今ではIT分野に関しても、国家の基準となるような報告をいくつも出しているんですね。なので、基本的には、アメリカ合衆国のためのガイドラインということになります。

 

SP800シリーズは、セキュリティ関連の報告で、「SP800-63」は「電子的認証に関するガイドライン」についてです。「SP800-63」については、2004年6月に初めて作成されています。

 

「電子認証に関するガイドライン」

https://www.ipa.go.jp/files/000025342.pdf*4

 

その後、2011年12月に「SP800-63-1」として、大幅な改訂が行われています。

www.ipa.go.jp

上記が詳しく、「アサーションプロトコルとKerberosに対する詳細要件」「「トークンとクレデンシャル管理(Token and Credential Management)」章の新設」などの変更があるそうなのですが、日本語なのに全く何を言っているかわかりません。まあ、年月も経ち、電子的認証の環境が大きく変わり、それによるトークンの種類の増加など、現状に対応していった、というところなんでしょう。

 

で、今回2016年6月に出た「SP800-63B」は、その改訂というか、まだ草稿段階なので「To be completed」の部分もあるのですが、大きな改訂のひとつになるということです。

 

TOP

NIST-Digital Authentication Guideline: Public Preview

「SP800-63B」

https://pages.nist.gov/800-63-3/sp800-63b.html#appA

 

 

現在は11の章立てに分かれているのですが、今回の話で必要なところは大きく2つ。

 

○4.Authenticator Assurance Levels(AAL)

○5.Authenticator and Verifier Requirements(認証者及び検証者の必要条件*5

 

AALというのは、私には非常に難解だったのですが、すごーく簡単に言うとセキュリティのレベルだと思ってください。AALはレベル3まであり、そのレベルによって、必要な認証情報が変わってくる、というわけです。たとえば、AAL1では単一の認証でよいものが、AAL2になると、それを複数組合さなければならなくなる、みたいな。

 

つまり、この報告書では、アメリカ合衆国においては、AALのレベル別に、セキュリティの基準を設け、それぞれの認証に必要な事項はこれこれこういうことですよ、というガイドラインを書いているわけです。これがのちのち、アメリカの政府や企業におけるひとつの基準にになっていく、重要な文章なわけですね。

 

パスワードは定期的に変更してはいけない、という書き方ではない

さて、「パスワードを定期的に変更してはいけない」という箇所は、「5.1.1. Memorized Secrets」という章にあります。

 

「Memorized Secrets*6」は少なくとも「8文字」以上でありASCIIを使って云々という条件づけを行ったあとに、こう続きます。

 

Verifiers SHOULD NOT impose other composition rules (mixtures of different character types, for example) on memorized secrets. Verifiers SHOULD NOT require memorized secrets to be changed arbitrarily (e.g., periodically) unless there is evidence of compromise of the authenticator or a subscriber requests a change.

 

検証者は他の複合的なルール(例えば違う文字種の組み合わせのような)をmemorized secretsに課すべきではない。検証者は、認証者の危殆化の証拠があるか、加入者が変更の要求をしない限り、任意に(例えば定期的に)memorized secretsの変更を要求するべきではない

 

この文章における「SHOULD NOT」は「可能な限り推奨されるもの」とありますので*7なかなか強めな表現ですねうーん、よく考えると、「しないほうがいい」ぐらいの意味なので、強めというのはいいすぎかなという気もします。

 

要するに、検証者側は定期的なパスワードの変更を要求するべきではないということであり、自らがセキュリティのレベルアップを目的に変更を行うことは構わん、というところでしょうね。細かいところですが、「パスワードの定期変更は無意味だ」とまでは書いていないわけです。しかし、NISTは、パスワードの管理者側による定期的な変更の有用性に関しては否定的だというのは正しいようです。

 

冒頭に挙げたねとらぼさんでは「ユーザーが前のパスワードに数字を加えるなど、予測しやすい変更を行ってしまいがち」とありますが、その理由は特にこのガイダンスには記載がありません。「Appendix」には、「パスワードの長さや複雑さは攻撃者にとっては意味がない」的なことが書いてありますので、そっちの意味の方が強いかと*8

 

いずれにせよ、前々からこの「パスワードの定期変更」の有用性をめぐっては議論になっていたようで、連邦取引委員会も「無意味だからやめろ」と言っています。

Time to rethink mandatory password changes | Federal Trade Commission

上記の記事を読むと、この「パスワードの定期変更」に関して、様々な研究があり、その多くが「使用者が類推しやすいパスワードの変更してしまう」ために、ハックされやすいという結論になっていることが興味深いです*9

 

 

「秘密の質問」は禁止されていない

「秘密の質問」に関する内容は、恐らく以下の文かと思われます。

 

Memorized secret verifiers SHALL NOT permit the subscriber to store a “hint” that is accessible to an unauthenticated claimant. Verifiers also SHALL NOT prompt subscribers to use specific types of information (e.g., “What was the name of your first pet?”) when choosing memorized secrets.

 

検査者は非認証要求者がアクセスできるような「ヒント」を加入者が記憶することを許可しないほうが良いしてはいけない*10。検査者はまた、加入者がmemorized secretsを選ぶときに、特定の情報(例えば「初めて飼ったペットの名前は?」)の使用を促さないほうが良いしてはいけない。

 

ここだけを読むと、特に「秘密の質問」自体を否定しているようには見えません。あくまでも、「加入者がパスワードを選ぶとき」という条件なので、検査者側が「秘密の質問」を明示してしまうことで、パスワード自体がその「質問」と関連したものになってしまい、類推されやすくなる危険性がある、ということなんじゃなかろうかと思いました。わかりにくい文章ですね。

 

まあ、ちょっと回りくどい書き方なので、こうも考えられます。もしmemorized secretsが、パスワードだけでなく秘密の質問それ自体も含むのだとしたら、確かに既に質問は誰にでもアクセスできる情報として存在しており、そこからmemorized secrets=秘密の質問をハックすることは容易にはなりえます。そう考えるなら、「秘密の質問」を認証の保障ととらえることは、この文章の中では不適切になります。たとえばAALのレベル2のような、多要素的な認証管理には不適切ではないか、ということなんでしょうか。明示されていないので、憶測にはなりますが。先述の「パスワードの定期変更」が「SHOULD NOT」だったのに比べて「SHALL NOT」と控えめなので、「ないほうがいいと思うけどなー」ぐらいの意味なんでしょうかね。

何を寝ぼけていたのか、「SHALL NOT」は「MUST NOT」と互換が可能なほど強い否定表現なので、上記の記述はマチガイです。「秘密の質問」の運用面で不適切、という意見に変わりはありませんが、この英語のマチガイは本当に自分でも驚くほど恥ずかしいものなので、こっそり直させてください。

 

 

今日のまとめ

①「SP800-63B」はNISTのセキュリティ関係のガイドラインであり、基本的にはアメリカ合衆国内での適用である。今回のものは2011年以来の改訂であり、まだ草稿段階である。

 

②文章内では、管理者側の「パスワードの定期変更」は有効ではないという書き方であり、「パスワードの定期変更」それ自体が無意味だという話ではない。

 

③「秘密の質問」に関しては、禁止というよりも、それで認証の保障とするには不適切ではないか、ぐらいのやや弱いという意味ととらえられる。

 

今回のNISTの報告書の変遷を見ると、確かに今回の改訂で、初めて「パスワードの定期変更」に関することが明示されたようです。明示されたということは、NIST自身が明示する必要があったわけで、ということは、NISTはその昔に、自らが「パスワードの定期変更」の有用性について書いていたんじゃないかな、という推測が成り立つわけです。

 

というわけでアーカイブを探ってみると、おお、古いですね、1985年のNISTの文章にこんなものがありました。

 

FIPS 112 - Password Usage

 

「Password Usage」つまり、パスワードの運用法といったところでしょうか。3章の「Acceptable Basic Criteria」の「Lifetime」という項に、

 

3.3.1 Passwords shall have a maximum lifetime of 1 year.

 

とあります。「パスワードの期限は最長1年間」というわけです。これはつまり、1年経ったら定期変更しろということになりますな。少なくとも30年も前から、このパスワードの定期変更に関する意識が、アメリカにはあったことになります。だからこそ、今回のその否定は、話題にのぼるのでしょう。

 

「デジタル・ネイティブ」なんて言葉がちょっと流行った時期もありましたが、もはやその言葉も遠くになりつつなるほど、我々の周りはデジタル化されてきているわけです。しかしどうにも、こういう話を聞くたびに、あまり便利になった気がしないのは、なんででしょうかねえ。

 

 

 

 

 

 

*1:たとえば

https://www.google.co.jp/?hl=en&gws_rd=cr&ei=aMxzV97fLobo0ATe9IOADQ#hl=en&q=nist+800-63B

*2:今回の英語は専門用語だらけでかなり苦労しました。

*3:まあ、Wikipediaでも見てください。

アメリカ国立標準技術研究所 - Wikipedia

教科書に載っているのはフランスにあるほうの原器な気もしますが

*4:ただしこれはVersion1.02で2006年4月に改訂されたものの翻訳

*5:「検証者」ってなんやねん、と思うんですが、今回は情報処理推進機構の翻訳に則りました。

*6:これは訳し難い言葉ですね。ググっても、このNISTしか使ってないんじゃないんでしょうか。定義としては「commonly referred to as a password or PIN if it is numeric」つまり、「パスワードやPINコード」のようなものとなるので、「パスワード」と訳してもいいんですが、そういった数値的なものを指すので、あながちそうとも書けないし・・・と言った感じで、今回はそのまま英語を使いました。

*7:The terms “SHOULD” and “SHOULD NOT” indicate that among several possibilities one is recommended as particularly suitable, without mentioning or excluding others, or that a certain course of action is preferred but not necessarily required, or that (in the negative form) a certain possibility or course of action is discouraged but not prohibited.ざっくり意訳しましたが

*8:なかなか面白かったのが、「複雑さ」を求めるときに「大文字」「数字」「記号」を含むパスワードを要求されたとしても、恐らく利用者が選ぶパスワードは「Password1!」が多くなるのではないか、という推論です。これは極端な例ですが、結局、ユーザーは類推可能なパスワードを選びがちなので、そこに脆弱性があるということです。その意味ではねとらぼさんの記述は正しいのかな、と思います

*9:たとえば以下の研究

Quantifying the Security Advantage of Password Expiration Policies∗

http://people.scs.carleton.ca/~paulv/papers/expiration-authorcopy.pdf

The Security of Modern Password Expiration:
An Algorithmic Framework and Empirical Analysis

https://www.cs.unc.edu/~reiter/papers/2010/CCS.pdf

*10:このstoreは、オートコンプリート機能のようなものかな、と思い、記憶と訳しました。あるいはこの時点で「ヒント」は、秘密の質問のようなものを含んでいるのかもしれません。