Windows Hello for Business とは？

# はじめに
唐突ですが、あなたの会社では **Windows Hello** ではなく、**Windows Hello for Business** を使っていますか？ と聞かれても、IT 部門か、Microsoft Entra テナントの 構築／運用 をしている人でもない限り、答えられないんじゃないかと思います。

そのくらい、見た目では 両者の見分けがつかないのですが、裏方では 違うプロセスで動作しているサービスだと 私は思います。

Windows Hello for Business を採用すると、セキュリティ が向上し リスクが低減します。
Professional Edition 以上のクライアント OS であれば利用でき、クラウド・オンプレの どちらの認証基盤からでも 有効化 することができ、それ以外の 追加コストなく 利用ができるため、ビジネスシーンでは 是非使っていきたいサービスとなっています。

**公開情報**

https://learn.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business?wt.mc_id=mvp_407731

:::note info
**表記について**
本記事では、**W**indows **H**ello **f**or **B**usiness の頭文字をとって **WHfB** と記載しています。
:::

---

# Windows Hello for Business を使うと、なぜ セキュリティが高まるのか？
図にしてみました。パスワードは、8文字～12文字 の英数字が一般的。
文字数が少ない為、ハッキングされやすいです。
しかし、秘密鍵は、数キロビット の暗号鍵となっており、ハッキングが非常に困難です。
この秘密鍵を 扱いやすくしているのが、生体認証や PIN、 TPM の仕組みです。

**①：ID + パスワード のみの 認証**
ハッキングされやすい。
類推したパスワードで外部から テナントにサインインされるリスクがありますし、PC 上にキーロガーが仕込まれてしまった場合、簡単にパスワードを盗まれてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/08377fa2-7f0a-7ac3-7d4f-e1cf272d17e1.png)

---

**②：パスワード + MFA を使った 認証**
仮に パスワードが漏洩しても、MFA によって 本人確認が加わるため、ハッキングされにくくなります。
しかし、認証の手間が掛かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bc6a2b6c-47a3-f19b-1162-e09d217d1b54.png)

---

**③-a：WHfB 登録時**
初回登録時のみ、 MFA を使って認証します。そのため、本人のみが、WHfB に登録できます。
生体認証 と PIN を登録し、TPM にてキーペア（秘密鍵＋公開鍵）が生成され、公開鍵 を Microsoft Entra ID に保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/680496b7-cd56-db37-07d6-d8a5f3994c60.png)

---

**③-b：WHfB を使った 認証**
本人（生体認証 or PIN を知る人）のみが、TPM（秘密鍵）を使って 署名付きのサインイン要求を出す事ができます。
認証の手間が掛からず、ハッキングが困難になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f8f558c5-8e22-c43a-6240-d0bfd5e466d7.png)

:::note warn
**nonce とは？**
nonce について、以下で説明されていますが、１回限りのランダムデータを生成しています。
https://e-words.jp/w/nonce.html

nonce を受け取って署名し、サインインをリクエストする事によって Microsoft Entra ID 側で、たった今 本人が認証したことを検証することができます。その要求は、通信が傍受されていたとしても、再利用する事が出来ません。
:::

---

:::note info
**参考**
図は、以下の公開情報を解釈して 記載しています。

**公開情報：Microsoft Entra join authentication to Microsoft Entra ID**
https://learn.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business/how-it-works-authentication?wt.mc_id=mvp_407731#microsoft-entra-join-authentication-to-microsoft-entra-id

・User provides gesture（橙色）= 生体認証 or PIN
・Sign nonce WHfB privkey（緑色）= nonce を署名
・Validate signature WHfB pubkey（紫色）= 署名済み nonce を 公開鍵で検証

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/16e96573-224a-7541-b372-39a82d44bdb4.png)
:::

---

**PIN の安全性**
さらに TPM は、ハードウェアレベルで 複数回の認証試行に対して耐性があります。
そのため、盗難に遭った PC に対して PIN を無作為に入力されたとしても、ロックアウトされるため、秘密鍵 が守られます。

どのような動作によって守られているのかは、以下の記事を参照いただくとイメージしやすいと思います。

https://qiita.com/carol0226/items/317403405fb23f4a391f

とはいえ、紛失した PC を そのまま 永続的に放置することは危険です。
何万分の１の確率で PIN がヒットする可能性もありますし、TPM ロックアウトを発生させながらでも、非常に長時間をかけて ゆっくりと総当たり攻撃をすることは可能です。そのため、紛失が確実であれば、デバイスのワイプ (Intune にて実施可) や Entra ID のパスワードリセットなどを講じる必要があります。
TPM ロックアウトの仕組みは、そのような対策を講じるまでの時間稼ぎだと考えると良いと思います。

---

**Support Blog：WHfB 使うと MFA が求められないけど、ホントにセキュアなのか？ という話**

https://jpazureid.github.io/blog/azure-active-directory/why-are-my-users-not-prompted-for-mfa-as-expected/

**さらなるセキュリティ向上：多要素ロック解除**
でも、PIN って 6 桁程度の文字数なので、入力時の操作を他人に見られたら・・などのリスクもあります。
その場合には、多要素ロック解除 も合わせて導入すると、さらにセキュリティレベルを高められます。
名前こそ、ロック解除 ですが、サインイン時にも この多要素の条件が適用されます。
多要素ロック解除は、以下の記事で紹介しています。

https://qiita.com/carol0226/items/51487eeb06871cb65a7a

---

# Windows Hello と Windows Hello for Business の似ているところ
(1) OS のサインインの際に、PIN や 生体認証 を利用できる
(2) OS 上の表記は、"Windows Hello" になっていて同じ

:::note warn
(2) が特に厄介で、クライアント PC 上での見た目は、一見 どちらを使っているのかどうか分からないです。
:::

---

# Windows Hello と Windows Hello for Business の違い
**Windows Hello の場合**　(non Business)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5d2e0134-dbdb-1029-e7d1-fcf5cca8d60a.png)

Windows Hello も、サインイン 時に PIN を利用できますが、クラウド（Microsoft アカウント）の認証時には PC 上に保存されている パスワード がそのまま使われます。WHfB のように、秘密鍵は使われていません。その点で WHfB に比べて、セキュリティは下がります。

---

両者の違いを一覧化してみました。

|  |Windows Hello|Windows Hello for Business|
|:-:|:-:|:-:|
|認証|**Microsoft アカウント**<br>高速 ID Online (FIDO) v2.0|Microsoft Entra ID アカウント<br>Active Directory アカウント<br>高速 ID Online (FIDO) v2.0|
|目的|個人向け<br>生体認証<br>便利な PIN|企業向け<br>生体認証<br>PIN|
|セキュリティ|対称シークレット (**パスワード**) <br>パスワード ハッシュ|非対称 (公開/秘密キー)<br>証明書ベース<br>TPM（必須 or 優先 選択可）|
|リスク|サーバーから盗まれたり、<br>ユーザーからフィッシングされ、<br>リモートで使用されたりする可能性|低|
|環境|スタンドアロン<br>WORKGROUP|クラウド単独展開<br>ハイブリッド展開<br>オンプレミス展開<br>※展開方式については次章で説明|
|有効化|任意|クラウド単独展開 (既定で有効 **※１**)<br>ハイブリッド展開 (GPO で有効化)<br>オンプレミス展開 (GPO で有効化)|
|利用の強制|任意|強制|
|サポート|すべての Edition<br>※Home 含めて|Professional<br>Enterprise<br>Education|
|その他|－|PINリセット<br>デュアル登録<br>動的ロック<br>多要素ロック解除<br>リモートデスクトップ(RDP)サインイン|

:::note info
**※１**：クラウド単独展開
Microsoft Entra Join で参加した PC は、既定で WHfB が有効になります。
Intune を使うことで、グループ単位で無効化したり、設定のカスタマイズが可能になります。
:::

**公開情報：Windows HelloとWindows Hello for Businessの違いは何ですか?**
https://learn.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business/faq?wt.mc_id=mvp_407731#windows-hello-windows-hello-for-business--------

---

# WHfB の展開方式について
WHfB を利用するためには、いくつかの展開方式があります。
それぞれ、利用シーン、動作、要件 に差があるため、必要な展開方式を選択する必要があります。

**公開情報：Windows Hello for Businessデプロイを計画する**
https://learn.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business/deploy?wt.mc_id=mvp_407731

厳密には、上記の公開情報を読み込んで 比較検討する必要がありますが、ざっくり抜粋すると、以下のような感じです。

|デプロイモデル|必要な最小構成|おすすめ度|
|:-:|:-:|:-:|
|クラウド単独展開|Microsoft Entra テナント<br>Microsoft Entra Join|★★★|
|ハイブリッド展開<br>(Cloud Kerberos 信頼)|オンプレミス ドメイン<br>Microsoft Entra テナント<br>Microsoft Entra Hybrid Join<br>Microsoft Entra Kerberos 認証| ★ |
|ハイブリッド展開<br>(キー信頼)|オンプレミス ドメイン<br>Microsoft Entra テナント<br>Microsoft Entra Hybrid Join<br>証明書|   |
|ハイブリッド展開<br>(証明書信頼)|オンプレミス ドメイン<br>Microsoft Entra テナント<br>Microsoft Entra Hybrid Join<br>証明書<br>AD FS|   |
|オンプレミス展開<br>(キー信頼)|オンプレミスドメイン<br>証明書<br>AD FS|   |
|オンプレミス展開<br>(証明書信頼)|オンプレミスドメイン<br>証明書<br>AD FS|   |

AD FS は、旧来の認証基盤であり 現在利用中の場合に限られるため、限定的です（当記事では選択肢から除外）

Microsoft Entra Join を実施した PC は、既に、**クラウド単独展開** での利用となっています。

現在、オンプレミスのドメインに参加した PC を運用中の場合は、Microsoft Entra Hybrid Join を構成して、**ハイブリッド展開 (Cloud Kerberos 信頼)** で対応することをお勧めします。

※キー信頼、証明書信頼 は、よほどの理由 が無い限りは選択することはないと思います。

---

# クラウド単独展開 の 構成方法
クラウド単独展開の要件は、以下の １つだけです。
**"Microsoft Entra Join" を実施すること**

Microsoft Entra Join については、以下の記事を参照ください。

https://qiita.com/carol0226/items/8c2bbc0f480913eaeed4

そのあと、物理 PC や 仮想マシンのコンソールセッション にてサインインすることで、WHfB への初回登録が発生し、登録後に利用が開始されます。

:::note warn
**注意事項**
過去に、WHfB について、以下の記事を投稿していました。
以下の記事では、Intune を使って WHfB を有効化する説明になっていますが、誤りです。

**[廃版] Intune で Windows Hello for Business を構成する**
https://qiita.com/carol0226/items/0b39b3a659c41bcc0d88
:::

---

:::note info
**ポイント**
WHfB の利用には Intune は必須ではありません。
しかし、WHfB の設定をカスタマイズする場合に、Intune が必要です。
:::

**WHfB の設定をカスタマイズする**
以下の公開情報を参考に、Intune を利用することで、カスタマイズが可能です。

https://learn.microsoft.com/ja-jp/mem/intune/protect/windows-hello?wt.mc_id=mvp_407731

**WHfB を 無効化する場合**
PC 単体では、ローカルグループポリシー で設定できます。
管理側で、テナント単位で無効化する場合は、Intune が必要です。
つまり、これをやらない限りは、Microsoft Entra Join すると、WHfB は有効になっちゃうという事です。

以下の Support Blog が参考になります。

https://jpazureid.github.io/blog/azure-active-directory/how-to-disable-whfb/

---

# ハイブリッド展開 (Cloud Kerberos 信頼) の構成方法
オンプレミスドメインに参加した PC 向けには、ハイブリッド展開を使って、GPO で WHfB を有効化する必要があります。

ハイブリッド展開 (Cloud Kerberos 信頼) の構成方法については、以下に記事化してあります。

https://qiita.com/carol0226/items/0c06016f18e57bf44cb0

---

# Windows Hello for Business 登録時の動作

## ① 初回ログオン
WHfB の構成が 有効 になっている デバイス に 初回サインインする際に、以下の通り **組織の要件により** という説明が表示されます。このおかげで Windows Hello for Business であることが判ります。

画面上の表記は **"Windows Hello"** のままであり、**"～for Business"** が付いていないので、判りづらいです。

:::note warn
**注意事項**
WHfB は、物理PC のログオンか、仮想マシンのコンソールセッション でのみ発動します。
リモートデスクトップ (RDP) 接続時は、発動しません。
:::

**Windows 10**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7b344aa7-a94c-f37f-cc6b-c32a03a303f3.png)

**Windows 11**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4fcc0258-56b2-f3fd-5e37-11205e5dc7aa.png)

---

## ② 生体認証の登録
WHfB に対応した 生体認証デバイス（赤外線カメラ / 指紋 / 静脈など）が搭載されていると、登録の画面に遷移します。デバイスが無い場合は、SKIP されて **③ PIN の入力** へ遷移します。

0. 顔認証のセットアップ開始画面 で、**セットアップ** を押して顔認証の登録を開始します。**今はスキップ** を押すと、生体認証を SKIP して、**③ PIN の入力** へ遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/662845ff-0313-c4f8-ee8e-f036f9ba2e09.png)
　<br>
0. **顔の登録** の登録を行います。画面に表示された指示に従って、顔の位置を調整してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c38cc3ed-10dd-1771-f50a-6e1d66c816e0.png)

---

:::note warn
**生体認証に対応したデバイスとは？**
WHfB の顔認証は、映像だけでなく 赤外線が使われて 厳密なチェックが行われます。
そのため、単なる Web カメラ などは、WHfB の生体認証に対応していません。
利用の際には、デバイスが WHfB に対応しているかどうか、必ず 確認してください。
なお、Surface に搭載されているカメラは、WHfB に対応しています。

**Surface のデバイスマネージャー を開いたところ**
下図の緑枠が、生体認証デバイス であり、これが必要です。
赤枠の カメラ のみでは NG です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0cf2d617-58d5-fc56-f5f7-e44f72734cf7.png)

**公開情報：ハードウェアの要件**
https://learn.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business?wt.mc_id=mvp_407731#hardware-requirements
:::

---

## ③ PIN の登録
0. **次へ** を押して進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1bdedb52-074d-666c-9ec2-10b1e7ece3a7.png)
　<br>
0. PIN の登録には、MFA での認証が必要です。
Entra ユーザーアカウントに MFA（スマホや電話）の登録が済んでいない場合は、ここで 登録が促されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d2e847f6-ae12-bca2-d5b9-70523491e4d5.png)
　<br>
0. MFA の認証が成功すると、PIN を設定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a6d05ceb-7099-565c-1eaf-9dbe2b95d727.png)
　<br>
0. 以下のように表示されると、PIN の設定 および WHfB の登録が完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f65b82e8-10d7-b23c-d5f1-32bc697b983e.png)

---

# Windows Hello for Business 登録後の動作
WHfB の設定後は、パスワードを使用せず、顔認証 や PIN を使って サインインが可能になります。

顔認証の場合は、マウスのクリックや 任意のキーの押下で 顔認証 が行われ サインイン できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6518aee5-d4cf-fc08-ba3d-b25de403c70b.png)

PIN の場合は、以下のように 設定した PIN を入力して サインイン できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c3ba0766-b9e0-71b3-884c-833364db66bb.png)

---

# Windows Hello for Business 利用の見分け方
基本的に PC が Microsoft Entra ID に参加していれば WHfB が利用されますが、ハイブリッド展開（オンプレミスドメインへ参加）の場合は、判りづらいです。

「設定パネル」を使って、「アカウント」－「サインインオプション」から、「PIN の変更」が可能になっています。その際の振る舞いの違いによって、判断することができます。

わざと PIN 変更 しようとして、4 桁 の PIN を入力してみてください。

**Windows Hello の場合**
PIN のルールが単一なので シンプルなエラーです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9bc14071-26a6-0dc5-5023-0d211dbb679f.png)

**Windows Hello for Business の場合**
組織で定められた要件の詳細が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6f8fb342-5a69-d87d-dc0a-a50b74a7372b.png)

上記、画面の色が違って見えますが、これは キャプチャを取得する PC が 別モノだったせいです。
色で識別できるわけではないので、ご注意ください。

---

# Next Step

記事の途中でも紹介しましたが、WHfB のさらに高度なオプション機能です。
こちらにチャレンジいただくのも良いかもしれません。

https://qiita.com/carol0226/items/51487eeb06871cb65a7a

# 参考情報

https://jpazureid.github.io/blog/azure-active-directory/whfb-configuration-explanation/

https://jin-kuro.com/windowshelloforbusiness-azureadmfa/

https://jin-kuro.com/hybridkeytrust-whfb/

上記の記事の おまけ欄に、**Windows Hello for Businessのプロビジョニングはイベントログの「User Device Registration」という項目に記録される** と説明されていて、WHfB のプロビジョニング時に イベントログ 358 が出るみたいですね。後日、私も実機で確認してみたいと思います。

以下のサイトの **主な機能** で説明されている TPM についての解説が判りやすいです。

https://www.ubiquitous-ai.com/products/tpm/