誰が「パスワードは複雑なものにしろ」と言ったのか
いつものように yomoyomo さんの記事を起点に小咄を。
この記事の元ネタが更にあって,ボクらの Bruce Schneier 先生の記事で紹介されている以下の記事。
これは古のパスワード生成ルール「パスワード文字列は英数字と記号の三種盛りにしろ」とか「パスワードは定期的に変更しませう」とかの元ネタが何かって話らしい。 記事によると Robert Morris さんと Ken Thompson さんが1979年11月に公開した “Password Security: A Case History ” という論文が大元なんだとか。 Ken Thompson さんは Go 言語開発者のひとりなんだね。
この記事では言及されてないが,更に悪いことに,この考え方で NIST SP 800-63 のほうも実装されてしまったらしい。 このせいで悪名高きパスワード生成ルールが世に蔓延ることになったわけだ。
以下は改訂された NIST SP 800-63-3 が正式リリースされた2017年の ZDNET Japan の記事。
“How some of the world’s most brilliant computer scientists got password policies so wrong” では更に
などと書いている。 ユーザによるパスワード生成の実態をサービスプロバイダ側が把握できなかったせいで「間違い」が放置されたままだったというのだ。 少なくとも論文が登場した1979年には公開鍵暗号は発明されてたんだからハッシュ関数を使うのではなく公開鍵暗号を使えばよかったとか言ってるようだ。
まぁ「研究者」としてならこれはこれで正しいのかも知れないが,エンジニアとしてはパスワード情報の秘匿に公開鍵暗号を使うのが「善」なのか首をひねるところがある。 そもそも記事で挙げている RSA は20世紀当時は特許でガチガチに固められていて,しかも米国外では(軍事的な理由で)使用不可なアルゴリズムだったので,実質的には無理な話だったと思う。
いや,パスワードを(ハッシュ化ではなく)暗号化するのはいいけど,その鍵をどうやって管理するのかって話ですよ。 厳格な管理が要求される Bitcoin 交換所でもたまに漏洩事件が起きたりするんだよ。
もしもの話として,パスワードを公開鍵暗号の公開鍵で暗号化するとして,ひとつの鍵ペアで全部のパスワードを暗号化するわけないし(そんなことして万が一秘密鍵が解読されたり漏れりしたら全ユーザのパスワードが晒されてしまう),そうなるとユーザごとに鍵ペアが必要ってことになるだろう(無数の鍵ペアを使うにしても秘密鍵をひとつところに置いていれば同じことだがw)1。 つか,そんなことするくらいならパスワード認証なんかやめて公開鍵暗号を使って認証すればいいぢゃん。 ssh みたいに。
パスワード生成のルール化はどちらかというとユーザ体験(UX; User eXperience)の問題と言える。 パスワードの複雑化や定期更新を強制するのは,そのほうがシステム管理側が楽だからだ。 そして面倒な部分をユーザ側に「転嫁」しているのだ。 セキュリティ・マネジメントの観点で「転嫁」戦略は悪いことではないが,不特定のユーザにそれを強いてもユーザはただ迂回するだけである。 これは「悪い UX」の典型と言える。
そういえば『はじめて学ぶ ビデオゲームの心理学』に UX の起源みたいな話があって
という感じに UX 自体が1990年代以降の考え方らしい。 ルールによってユーザの行動がどう変わるかみたいな話を1979年の論文で考慮しろってのが無理筋である。
まぁ,歴史に「たられば」はないっちうことやね。
ところで,最初に挙げた yomoyomo さんの記事を読んで気がついたのだが NIST SP 800-63-4 のドラフト版って2022年に公開されてるんだね。 しかもパブコメの募集は先々月の10月で締め切られているらしい。
まぁでもここから正式版が出るまでが長いならなぁ NIST は。 気長に待ちましょうか。
ブックマーク
参考図書
- 暗号化 プライバシーを救った反乱者たち
- スティーブン・レビー (著), 斉藤 隆央 (翻訳)
- 紀伊國屋書店 2002-02-16
- 単行本
- 4314009071 (ASIN), 9784314009072 (EAN), 4314009071 (ISBN)
- 評価
20世紀末,暗号技術の世界で何があったのか。知りたかったらこちらを読むべし!
- セキュリティはなぜやぶられたのか
- ブルース・シュナイアー (著), 井口 耕二 (翻訳)
- 日経BP 2007-02-15
- 単行本
- 4822283100 (ASIN), 9784822283100 (EAN), 4822283100 (ISBN)
- 評価
原書のタイトルが “Beyond Fear: Thinking Sensibly About Security in an Uncertain World” なのに対して日本語タイトルがどうしようもなくヘボいが中身は名著。とりあえず読んどきなはれ。ゼロ年代当時 9.11 およびその後の米国のセキュリティ政策と深く関連している内容なので,そのへんを加味して読むとよい。
- 暗号技術入門 第3版 秘密の国のアリス
- 結城 浩 (著)
- SBクリエイティブ 2015-08-25 (Release 2015-09-17)
- Kindle版
- B015643CPE (ASIN)
- 評価
SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。
- はじめて学ぶ ビデオゲームの心理学 脳のはたらきとユーザー体験(UX)
- セリア ホデント (著), 山根 信二(監修) (著), 山根 信二 (翻訳), 成田 啓行 (翻訳)
- 福村出版 2022-12-15 (Release 2023-07-03)
- Kindle版
- B0C9Z7KGRN (ASIN)
- 評価
Kindle 版が出ている。ゲームデザイナやゲームエンジニアだけでなく,ソフトウェア・エンジニアは全員読むべき。あと,ゲーマーな人も読むといいよ。感想はこちら。
-
さらに別のもしもの話として,生のパスワード情報を暗号化してどっかに保持って(実際の認証ではなく)統計情報にのみ使うとして,その結果をユーザの行動にどう反映させるのか,という問題もある。メディアで定期的にヤバいパスワードランキングが公表されるが,あれはそういったパスワード情報が既に攻撃手段として用いられている(だろう)と分かってるからできることだ。一方,私たちユーザ側の考え方としては,拙文「「パスワードのベストプラクティス」が変わる」でも書いてるが「パスワードを覚えるなんて脳みその無駄使い」である。人間は複雑というか機械が予測不能な文字列をいくつも思いつけるようにはできていない。パスワード認証を使うならパスワード管理ツールで生成も管理も任せてしまったほうが安全ってことだと思う。 ↩︎