昨年夏のリリース時から「パスワードは時代遅れです」というメッセージで世の中を混乱の渦に巻き込んできたWindows 10ですが、半年が経過した今でも「やっぱり意味がよくわからない」という声をしばしば耳にします。
※ちなみにTH2のビルドだと「PINのセットアップ」というメッセージになっています。
これまでも各所の記事やセミナなどでは簡単に話をしたことはあるのですが、ちょうど前回から書き始めているWindows 10のドメイン参加やサインインの仕組みの大前提になる話でもあり、良い機会でもあるので簡単にまとめておきたいと思います。
(ちなみに多分に私見が入っています)
◆何が議論されているのか?
まず、これまで起きている議論はどういうものなのか、簡単にまとめておきます。
Windows 10をセットアップすると「PINはパスワードを使用するよりも早くて安全です」というメッセージ表示されます。また、短いPINが長いパスワードより安全な理由として「PINはこのデバイスでしか動作しないからです」と説明されています。
これを見て、
「数字4桁のPINの方がなんでパスワードより安全なの?」
とか、
「Windows 10ではPINに数字以外が使えるようになったし桁数も増やせるから!!」
とか、
「Windows Helloで生体認証と組み合わせられるから安全なんだ!」
とか、
「PINは端末とセットだからパスワードより安全なんだ!」
など、色々な疑問や意見がやり取りされて来ました。
それぞれの疑問や意見を見ると、もっともらしいものもありますが、いまいち何の話をしているのかがよくわからない、というのが正直な感想です。
◆なぜモヤモヤするのか?
まず、これらの議論を考えるうえで圧倒的に欠けているのは、「安全かどうか?」という話の大前提は「相対論」である、という点だと思います。
つまり、疑問が発生するのは「何と何を」、「どうやって」比べて相対的に「安全」なのか?という前提が抜け落ちているからではないでしょうか?
例えば、桁数や複雑性を比較軸としてPINとパスワードを比べると、パスワードの方が安全、という結果になることが多いと思いますし、有効範囲(端末をまたいで使えるか)の広さを考えるとPINの方が安全(でも結局同じPINを使いまわすんじゃない???)みたいな話です。
このあたりがごっちゃになってしまっているので、ある一部分を切り取るとPINの方が安全に見えるし、違う見方をするとそうでもない、という話になり混乱を招いているといったところでしょう。
◆整理してみる
では、軸を整理してきちんと比較すればPINとパスワードのどちらが安全なのかが見えてくるんでしょうか?
まずリスクとなりうるポイントを洗ってみます。
# | ケース | PIN | パスワード | コメント |
---|---|---|---|---|
① | のぞき見される | × | ○ | 通常、複雑性はパスワードの方が有利 |
② | 通信経路で盗まれる | ○ | × | PIN自体は通信経路を流れないのでPINの方が有利 |
③ | フィッシングサイトに入力する | ○ | × | PINでサイトへログインすることは無いのでPINの方が有利 |
④ | サービスのDBから漏えいする | ○ | × | PINでサイトへログインすることは無いのでPINの方が有利 |
⑤ | リストを使ってサインインを試行 | ○ | × | PINは端末とセットなので、漏れたPINで別端末へログインはできない |
⑥ | リスト攻撃される | ○ | × | PINでサイトへログインすることは無いのでPINの方が有利 |
いかがでしたか?
結論は出ましたか?
一見PINが安全に見えますが、やっぱりモヤモヤは止まりません。
◆ではマイクロソフトは何が言いたかったのか?
結論から言いますと、そもそも単純にPINとパスワードを比べてしまっている段階で間違えているんだと思います。
マイクロソフトが言いたかったのは、Windows 10で新たに採用された「Microsoft Passport」を使ったサインインは従来のIDとパスワードを使ったサインインに比べて安全である、ということを言いたかったんだと思います。
ただ、その安全性を正しく理解するには、ベースとなっているFIDOの考え方やデジタル署名やTPMなどの用語を説明し理解してもらう必要性がある中、メッセージを単純化しようとして「やりすぎた」んではないか?と私は思います。
Microsoft Passportを使ったサインインの本質は、端末内(TPM)に保存された秘密鍵を使ってデジタル署名をしたサインイン要求を、認証サーバ側にあらかじめ登録したペアとなる公開鍵を使って検証することをもって正当性を判断することにあります。
この仕組みにおいてPINなどユーザを認証するための情報(クレデンシャル)はリクエストに署名するための秘密鍵へアクセスするために端末内でだけ使われるため、ネットワーク上を流れず、従来のサインインに比べて安全である、ということです。
参考)Windows 10におけるサインイン時のフロー(Azure AD参加/Microsoft Passport利用)
これが認証サーバはデバイスを、デバイスは利用者を信頼・認証する、つまり「利用者の認証と端末の認証を分離する」というFIDO(https://fidoalliance.org/)そしてMicrosoft Passportの基本的な考え方です。
この考え方では利用者の認証手段を問いませんので、もちろん従来通りパスワードを使って問題はありませんが、
・端末内だけで使うため利便性を上げるにはシンプルな方法が望ましい
・パスワードは使いまわしや漏えいしていることが前提なのでもはや単体で使っても安全ではない
などの理由でPINがデフォルト、さらに利便性と安全性を高めるためにWindows Helloを使った生体認証を使うことが出来るように設計されているのだと考えられます。
つまり、最終的にマイクロソフトが言いたかったことは、
「Microsoft Passportという新しい仕組みを使うことでクレデンシャルの盗難が起きないようにしたから、パスワードのように運用上面倒なものを使わなくても安全ですよ」ということです。
少しはすっきりしましたかね。。。やっぱり難しいですね。
参考)昨年のidconで使った資料:FIDO in Windows 10
http://www.slideshare.net/naohiro.fujie/fido-in-windows10
0 件のコメント:
コメントを投稿