2016年10月6日木曜日

Windows Hello 対応 UWP Appの作成

この件、私から申し上げることはあまり無く…なぜかというと、以下二つの日本MS 松崎氏のBlog記事で過不足なく全て説明されているからです。
この二つのURLを貼るためにこの記事は存在しています。


Windows Hello を使った App 開発
https://blogs.msdn.microsoft.com/tsmatsuz/2015/07/30/windows-hello-app/

Web Authentication API 紹介 (Windows Hello を使ったEdge 開発)
https://blogs.msdn.microsoft.com/tsmatsuz/2016/06/08/w3c-web-authentication-api-javascript/


拙作 F10 image bbs browser のWindows Hello 対応も、ほぼ上掲の案内に沿ったものです。アプリ固有のKey Name/Valueを指定してKeyCredentialManager.OpenAsync で開き、帰ってきたopenResutでopenResult.Credential.RequestSignAsyncでDialogを出す…という。


◇◇◇


このBlog では何度かWindows Hello について扱ってきました。
  1. UBF-Hello について (DDS社の指紋認証モジュールについて)
  2. UWP App の Microsoft Passport 対応例 (F10 を Windows Hello に対応させた話)
  3. Windows Hello 対応 UWP アプリの作成 について(この記事)
リンクだけも何なので、Windows Hello 絡みの話・Twitterで話してた事などもここにまとめてみます。


Microsoft Passport と Windows Hello の違いって何?


これは答えるのが大変な奴でして…個人的には
  • Windows Hello ... Windows 10 から使える生体認証フレームワーク
  • Microsoft Passport ... Windows Hello も使う多要素認証フレームワーク、話としてはもっと引いた絵の奴
等と答えてごまかしていたのですが、今年、2016年の夏あたりから雲行きが変わってきまして…Anniversary Update のタイミングで、以下の表記がTechNetのWindows Hello / Microsoft Passport のあらゆるドキュメントに差し込まれました。


『初回リリース時の Windows 10 には Microsoft Passport と Windows Hello が含まれており、これらが連携して多要素認証を提供していました。 展開を簡略化してサポート性を向上するために、Microsoft ではこれらのテクノロジを Windows Hello という名前で 1 つのソリューションに統合しました。 これらのテクノロジを既に展開済みのお客様に対しては、機能の変更はありません。 Windows Hello ではポリシー、マニュアル、およびセマンティクスが簡略化されているため、Windows Hello をまだ評価していないお客様でも容易に展開できます。 』


「Windows Hello for Business を使った本人確認の管理」 より
https://technet.microsoft.com/ja-jp/itpro/windows/keep-secure/manage-identity-verification-using-microsoft-passport


つまりブランドとしてのMicrosoft Passport はそっと下げて、これからはまとめてWindows Hello と呼びましょう!という話ですね。一件落着!!!!

(MSDN やTechNet にはまだまだMicrosoft Passport表記があります。また、結局呼び方変わっただけなので実体はそのままです。)


Windows Hello 対応作業 にあたって必要なデバイスは?


特にありません。
Windows Hello では、対応する生体認証…

  • 指紋認証 ... PC / Mobile 内蔵 または外付けの指紋センサ
  • 顔認証 ... PC 内蔵または外付けの IR顔認証センサ
  • 虹彩認証 ... Mobile 内蔵 の虹彩(瞳の中のパターン)を見るセンサ

に加えて、

  • PIN ... Personal Identification Number, つまりキーボードで入力する暗証番号

が使用できます。
API 上、UWP App から認証に使うデバイスの違いは見えないため、何を使っていても同じように実装・テストの作業が可能です。PIN でも同じです。

…もちろん、実際に動作する生体認証デバイスが有った方が作業は楽しいです。
そんな時はマウスコンピュータさんの顔認証・指紋認証デバイスを使うといいですね :)

Windows Hello 対応 セキュリティデバイス (マウスコンピュータ)
http://www.mouse-jp.co.jp/abest/windows_hello/


※あまりないとは思うのですが…明示的にTPM を使うコードを書く・テストする場合、TPM対応のハードウェアが必要になります。
Intel 系はCore も Atom も大体大丈夫なのですが、実はAMDのA10等統合系チップが未対応です。TPM対応作業が必要な人は注意です。


Windows Hello の顔認証、写真を表示したスマホ見せれば破れるんじゃん?


MSさんのWindows Hello 顔認証 解説ページで説明されています。

Windows Hello 顔認証
日本語  https://msdn.microsoft.com/ja-jp/library/windows/hardware/mt450467
英語  https://msdn.microsoft.com/en-us/library/windows/hardware/mt450467

赤外線カメラを使うため、写真やモニタの像を見る「可視光」はカメラに映りません。