という記事を見た。
この論文が犯した過ちは二つがあり、一つ目は複数の文字種(小文字、大文字、数字、記号)を含めることがパスワードの安全性を高めるというパスワードの複雑化の推奨で、現実には「p@ssword」や「Password1」といった推測しやすいパターンはセキュリティ向上にはつながらなかった。
二つ目は、パスワードをハッシュ化して保存する方法を提案したことで、結果的にこれがが研究者によるパスワードの実態調査を著しく困難にしてしまい、結果として、パスワードに関する知見の蓄積が停滞しまった。
ということなので、ほんとかなと思って元記事などを辿ってみる。
元のStuart Schechterの記事はこちら
1つ目のパスワードの文字種の複雑化については以下のように記載している。
First, was Morris and Thompson’s confidence that their solution, a password policy, would fix the underlying problem of weak passwords. They incorrectly assumed that if they prevented the specific categories of weakness that they had noted, that the result would be something strong. After implementing a requirement that password have multiple characters sets or more total characters, they wrote:
These improvements make it exceedingly difficult to find any individual password. The user is warned of the risks and if he cooperates, he is very safe indeed.
まず、Stuartの記事ではtotal charactersと文字種だけでなく文字数についても触れている。さらに元論文を辿るとthese improvementsは以下を指している。
The password entry program was modified so as to urge the user to use more obscure passwords. If the user enters an alphabetic password (all upper-case or all lower-case) shorter than six characters, or a password from a larger character set shorter than five characters, then the program asks him to enter a longer password. This further reduces the efficacy of key search.
短いパスワードが入力されたら文字数を長くするように依頼するようなプログラムを書けという話である。現行のNIST SP 800-63が推奨しているパスワードは8文字以上にしろというのと同じ方向性かと思われる。
ただし、論文全体として文字数が多いか文字種を多くするのが良いように書かれているのも確かである。しかし、基本的に文字種やパスワードの長さによって総当たり攻撃に時間がかかるという話をしており、それ自体は事実である。ただ、文字種を強制することで利便性が悪くなることや覚えられないというデメリットに対してそれを上回る効果があるのかという問題があり、NIST SP 800-63では否定されている。
2つ目のパスワードのハッシュ化についてだが、まずStuartの記事でもRobertとKenがハッシュ方式を発明したわけではないと指摘しており、UNIXに導入したり、それを推奨したことを問題としているようである。
While Morris and Thompson did not invent password hashing, they implemented it into Unix, strongly recommended it, and their paper would be the one most cited to support the necessity of password hashing.
ただし、論文の中で提案しているのは、ソルトを付けて総当たり攻撃に対する耐性をつけるべきという話であり、この論文自体がパスワードのハッシュ化自体と関係性が強いかは疑問がある。
ハッシュ化しないのならばどう保存するのかという点については、Stuartは公開鍵方式で暗号化する方法を提案しているようだ。
With RSA, passwords could be hashed with a function that was one-way without the private key, and the private key stored on a system detached from any network and safely behind locks, guards, and whatever other physical security measures one might dream of. When scientists needed to test if password policies were working, they could take the file with the numeric hashes into the locked room with the key, analyze them, and leave with a new set of rules to try. Alas, to my knowledge, nobody has ever used this approach, because after Morris and Thompson’s paper storing passwords in any form that can be reversed became taboo.
1案としてはありかもしれないが、一方向性を持たず開発者がユーザのパスワードを見えてしまうのは問題だろう。パスワードの利用状況を研究できるメリットと、パスワードを開発者や研究者に見られてしまうかもしれないデメリットを比較すると、一般の人はデメリットの方を大きく評価しそうである。