Windows Helloは指紋などの生体情報を認証に使う、いわゆる「バイオメトリクス認証」だ。バイオメトリクスの利用に関して、一般に世間から懸念として挙げられるのは「認証の精度と安全性」と「登録した生体情報が悪用される可能性はないのか」の主に2点だろう。
特に後者に関しては、「登録した生体情報を誰が管理するのか」「生体情報は“取り換え”がきかないので盗まれると危険」ということが問題とされている。だが少なくとも、Windows Helloに関しては、この問題をクリアしていると考えている。
銀行口座の本人確認や空港での出入国審査など、現在広く普及しているサービスで指紋認証や顔認証の仕組みが採用されており、実際に使ったことがある方もいるだろう。
これらのサービスでは認証情報がATMやKIOSKデバイスなどで共有されており、例えば一度特定の場所で登録された認証情報は別の場所に移動しても有効だ(成田空港で出入国審査の自動化ゲートを登録しておけば、羽田空港でも利用可能になるなど)。逆に、これが生体情報を提供することに抵抗を与える理由の1つにもなっているかもしれない。
Windows Helloにおける生体認証は、「デバイスにひも付いた」認証であり、登録した生体情報はデバイス内に保存され、Windows Helloを利用するときにのみ使われる。つまり、Microsoftのサーバに登録されるようなことはない。
Windows Helloは登録したデバイス上で利用者本人を確認する手段としてのみ用いられ、認証後は後述するMicrosoft Passportの仕組みを使ってWindows本体へのサインインだけでなく、各種サービスのログインが透過的に行えるようになる。
Microsoft Passportは1回のログイン動作で複数のサービスへのアクセスを透過的に行えるようになる、一種の「シングルサインオン(SSO)」の仕組みだと考えてもらっていいだろう。
ということで、Windows HelloはこのMicrosoft Passportとの併用が前提となっている。そして、Windows Helloに必要な「4桁数字のPIN」がなぜパスワードより安全なのかという秘密もこの点にある。
Microsoft Passportが複数のサービスへのログイン情報を管理するSSO(シングルサインオン)的な仕組みだとすれば、そのMicrosoft Passportにログインするための最初の認証を行うのがWindows Helloということになる。さらにいうと、Microsoft Passportの利用はWindows Helloだけでなく、「4桁数字のPINコード」も利用できる。つまり、Windows HelloかPINコードのいずれかをこの最初のログイン動作に利用できるわけだ。
もうお気付きかもしれないが、Windows Helloをセットアップする際に登録したPINとは、「Microsoft Passportを利用するための準備」だったというわけだ。希望するユーザーは、ここでさらに生体情報を登録して「Windows Helloも利用できる」ということになる。4桁数字のPINコードがパスワードよりセキュリティ的に安全という理由は、このMicrosoft Passportの仕組みにある。
一般に、Microsoftアカウントを含むWeb上のサービスへのログイン動作には「ID」+「パスワード」が利用されている。IDは自分で決めることもあるが、多くは「メールアドレス」が利用されているだろう。この時点で、特定の人物をターゲットにした場合にIDの入手は比較的容易で、パスワードがセキュリティの要になる。
パスワードは単純な数字や単語の組み合わせでは、いわゆる「辞書攻撃(ブルートフォース)」のような力業で簡単に破られる可能性がある。だがパスワードを複雑化すれば入力が面倒だし覚えにくい、そもそもキーボードのないスマートフォンやタブレットでは複雑なパスワードの入力は困難だ。
また、サービスごとに異なるパスワードを覚えるのを嫌い、複数のサービスで1つのパスワードを使い回しているというユーザーもいるだろう。この場合、1つのサービスでパスワードが漏えいすれば、芋づる式に他のサービスへのログインも危険にさらされることになる。これが「パスワードの弱点」だ。
「利便性」と「安全性」――この問題を一挙に解決するのがMicrosoft Passportになる。まず前述のように、パスワードの入力動作はPINとWindows Helloに置き換えられるため、PCであってもスマートフォンであっても、簡単にログイン動作が行える。
「なぜパスワードよりPINが安全なのか」だが、これはMicrosoft Passportが「デバイスにひも付いた2段階認証」だという点に起因する。PINにしろWindows Helloの生体情報にしろ、認証に必要な情報は全て登録を行ったデバイス内部に暗号化された状態で保管され、サーバに保存されたり、他のデバイスやユーザーと共有されることはない。
さらに、Microsoft Passportで透過的にアクセス可能な各サービスは、公開鍵暗号(PKI)の仕組みを使って1対の鍵のペアが生成され、これをサービス側と当該のデバイス側(Microsoft Passport)で保管することで、互いに認証が行われる。PKIの公開鍵暗号はペアとなった鍵(秘密鍵と公開鍵)の組み合わせでしか動作しないため、鍵ペアの片方を持っていること自体が認証となる。
PINまたはWindows HelloでMicrosoft Passportを呼び出し、Microsoft Passportは各サービスに保存している鍵ペアの片方で認証を行って透過的なアクセスを実現している。
つまり、最初に登録したPINは当該のデバイス(さらにいえばユーザー)でしか有効ではなく、Microsoft Passportで保管されているログイン情報も「パスワードではない」ため、仮に悪意ある第三者がハッキングを行ってもサービス側とデバイス側ともに「特定のデバイスとサービスの間でのみ有効な鍵情報」しか入手できず、どのデバイスやブラウザからでも利用可能な共通で複雑なパスワードよりも安全性が高いと言える。
なお、仮にハッキングやデバイスの紛失で鍵情報が露呈してしまっても、サービス側で該当する鍵の利用を中止して再発行するだけでいいので、情報漏えいの被害を最小限に食い止めやすい。
Copyright © ITmedia, Inc. All Rights Reserved.