当初のFIDOは、AgnitioとInfineon Technologies、Lenovo、Nok Nok Labs、PayPal、Validityなど6社が設立した業界団体だった。しかし、セキュリティの重要性が認識されるにつれてGoogle、Microsoft、Discover(クレジットカード会社)、ING(銀行)、American Express(クレジットカード会社)など200社以上が参加する事実上の業界標準に育った。
Microsoft PassportではMicrosoftアカウントやAzure ADにログインする際に、パスワードではなくPIN(4桁の数字)を利用する。これだけみると、4桁の数字より8桁や12桁の英数字を利用するパスワードの方が、セキュリティ強度は高いように思われるかもしれない。
Microsoft Passportは、このPINの登録時に2つ要素によって認証を行っている。PIN登録時に必ずモバイルアプリ、電話、テキストメッセージなど、PC以外のデバイスを使って本人確認を行っており、これによってユーザーが作成するPINの正当性を高めている。
PIN作成時にはRSA暗号などによって、「公開鍵」と「秘密鍵」の2つが作成される。秘密鍵はクライアントデバイスのハードウェアとして登載されているTPM(Trusted Platform Module)というセキュリティチップの内部に暗号化して保存される。公開鍵は、IDとともにサーバに送信され、保存される。TPMは、セキュリティに特化した独立プロセッサであるため、物理的に分かれているTPMへ保存される情報のセキュリティ強度は非常に高い。
例えば、Microsoftアカウントへアクセスするには、まず認証サーバにIDを送信し、サーバから「nonce」というランダムな数字がクライアントへ送られる。クライアントではnonceに秘密鍵を使って署名し、サーバに送信する。サーバではクライアントから送られたnonceの番号を確認し、そのIDの公開鍵を使って秘密鍵で署名されたデータを検証する。ここで一致すれば、クライアントにアクセスを許可するためのトークンというデータを発行する。
この流れは分かりにくいかもしれないが、サーバへアクセスする時にパスワードが一切ネットワークを流れない。サーバ側もパスワードを管理する必要が無い。サーバには公開鍵が置かれているものの、公開鍵から秘密鍵は類推できないようになっている(一方通行の鍵)。このため、TPMというセキュリティチップ内部にある秘密鍵が漏れることはほとんど無い。
実は、Windows HelloではPINの数字を顔認識、虹彩認識、指紋認識などの生体認証に置き換えているだけだ。
Copyright © ITmedia, Inc. All Rights Reserved.