USB に挿したり、スマートフォンに当てたりして使う小さなキーで、パスワードを入れずにサインインする。これが FIDO2 セキュリティキーです(FIDO2 は「ファイド ツー」と読みます)。Microsoft は、管理者や規制の厳しい業務のユーザーに、まずこのセキュリティキーをすすめています。
「鍵ペア」「署名」と聞くと難しそうですが、やっていることはハンコを押して見せるのとほとんど同じです。この記事では、まずハンコのたとえで全体をつかみ、そのあと登録とサインインを数コマのステップ図で見ていきます。くわしいシーケンスや設定は、後半にまとめます。
- セキュリティキーの中に、サイトごとの「ハンコ」(秘密鍵)がある。ハンコはキーの外に出ない
- Entra ID には「印影」(公開鍵)だけを預けておく。パスワードのような共通の秘密はない
- ハンコを押すとき、いま開いているサイトの「住所」(origin)も一緒に入る。だから偽のサイトでは使えない
たとえでつかむ:合言葉とハンコ
パスワードは「合言葉」です。自分も Entra ID も同じ合言葉を知っていて、言えたら本人とみなします。同じものを両方が知っているので、聞かれたり、偽の窓口に言ってしまったり、サーバから漏れたりすると、だれでも使えてしまいます。
FIDO2 は「ハンコと印影」です。ハンコは自分だけが持ち、Entra ID には印影だけを預けておきます。サインインのたびに Entra ID が新しい書類を出し、そこにハンコを押して見せます。Entra ID は、預かった印影と見比べて本人だと判断します。
このたとえと、本当の名前の対応は次のとおりです。後半の図や説明では本当の名前も使うので、ここで一度見ておいてください。
| たとえ | 本当の名前 | 中身 |
|---|---|---|
| ハンコ | 秘密鍵 | セキュリティキーの中にある。外に取り出せない |
| 印影 | 公開鍵 | Entra ID に登録しておく。見られても困らない |
| 毎回ちがう書類 | challenge | Entra ID がサインインのたびに出す乱数。前に押した書類は使い回せない |
| 書類に入る住所 | origin | いま開いているサイト。ブラウザが書き入れる |
| ハンコを押す | 署名 | 秘密鍵で書類に署名する。印影(公開鍵)で確かめられる |
| ハンコを使う暗証番号 | キーの PIN | キー自身が確かめる。Entra ID には送らない |
| サイトごとに別のハンコ | RP ID ごとの鍵ペア | RP ID は、サインインを受け付けるサイトを表す名前 |
登場するのは3つだけ
FIDO2 のサインインに出てくるのは、セキュリティキー、PC(ブラウザ・Windows)、Entra ID の3つです。
| 登場人物 | たとえでいうと | すること |
|---|---|---|
| セキュリティキー | ハンコを持つ人 | PIN を確かめてから、ハンコを押す(署名する) |
| PC(ブラウザ) | 書類を運ぶ人 | Entra ID とキーのあいだで書類を運ぶ。そのとき「いま開いているサイトの住所」を書き添える |
| Entra ID | 窓口 | 書類(challenge)を出し、預かった印影(公開鍵)と見比べる |
ブラウザとサイトのあいだの決まりを WebAuthn(W3C)、PC とキーのあいだの決まりを CTAP(FIDO Alliance)といい、この2つを合わせて FIDO2 と呼びます。大事なのは、真ん中の PC が「本当に開いているサイト」を知っていることです。これが、偽のサイトで使えない理由につながります。
1本のキーに、サイトごとのハンコ
1本のセキュリティキーで、いくつものサイトにサインインできます。ただし、同じハンコを使い回すわけではありません。サイトごとに、別のハンコ(鍵ペア)をキーの中で作ります。
Entra ID 用のハンコ(鍵 A)は、Entra ID 専用です。偽のサイトは名前(RP ID)が違うので、鍵 A を押させることができません。また、サイトごとにハンコが違うので、どこか1つのサイトから印影が漏れても、ほかのサイトには関係ありません。
登録:ハンコを作って、印影を預ける
最初に1回だけ、セキュリティキーを Entra ID に登録します。利用者がセキュリティ情報のページ(マイ アカウント ›› セキュリティ情報 ›› サインイン方法の追加 ›› パスキー)で行います。
ポイントは、キーの外に出るのは印影(公開鍵)だけという点です。ハンコ(秘密鍵)はキーの中で作られ、そのままキーの中に残ります。登録の前に MFA でサインインしておくのは、「本人がキーを登録している」ことを確かめるためです。
くわしい流れ
この記事のシーケンス図では、「○○ が確かめる」「○○ が払い出す」の箱で、だれが何を確かめ、だれが何を渡すのかを示します。箱に書いた名前が、その処理をする人です。
- ブラウザが確かめる:Entra ID から届いた RP ID(サイトの名前)が、いま開いているサイトのドメインに合うか。合わなければキーに頼みません
- キーが確かめる:キーの PIN が正しいか。PIN は Entra ID には送りません
- キーが払い出す:公開鍵と、鍵を指す資格情報 ID、キーの機種を表す AAGUID、構成証明(attestation)。秘密鍵は出しません
- Entra ID が確かめる:自分が出した challenge か、本当の origin か。設定していれば、構成証明と AAGUID が許した機種かも見ます
サインイン:毎回ちがう書類にハンコを押す
登録が終わると、サインインの画面で「顔、指紋、PIN、またはセキュリティ キー」を選び、キーを挿して PIN を入れるだけでサインインできます。裏では、次の4ステップが進んでいます。
- Entra ID が、毎回ちがう乱数(challenge)を「書類」として出します。前に押した書類は使えないので、盗み見た署名を使い回すことはできません
- ブラウザが、その書類に「いま開いているサイトの住所(origin)」を書き添えます。利用者が書き換えることはできません
- 利用者がキーに触れて PIN を入れると、キーが PIN を確かめてから、ハンコを押します(秘密鍵で署名します)
- Entra ID が、預かった印影(公開鍵)で署名を確かめ、書類が自分の出したものか、住所が本物のサイトかも確認します
キー(持っているもの)と PIN(知っているもの)の2つがそろうので、セキュリティキーでのサインインは、それだけで MFA になります。指紋センサー付きのキーなら、PIN の代わりに指紋(本人の体)でも構いません。
くわしい流れ
もう少しくわしく:ハンコを押す書類の中身
キーがハンコを押す「書類」は、キーが作る部分と、ブラウザが作る部分の2つでできています。
| 中身 | 作る人 | Entra ID が確かめること |
|---|---|---|
| RP ID のハッシュ | キー | 自分の RP ID のハッシュと同じか |
| UP・UV のフラグ | キー | キーに触れたか(UP)、PIN や指紋で本人確認したか(UV)。Entra ID は本人確認を必ず求める |
| 署名カウンター | キー | キーが対応していれば、サインインのたびに増える数。RP がキーの複製に気づくための手がかりとして使える |
| challenge | ブラウザ(Entra ID の値を入れる) | 自分が出した値か。前の署名の使い回しを防ぐ |
| origin | ブラウザ | 本物のサインインのサイトで開かれていたか |
偽のサイトでは使えない理由
ワンタイムコードやプッシュ通知の承認も MFA ですが、偽のサイトに誘導されると、コードを入力させられたり、承認させられたりして、使われてしまうことがあります。
FIDO2 では、だまされて偽の窓口に行ってしまっても、うまくいきません。偽の窓口の書類には偽の窓口の住所が書き添えられますし、そもそもキーは、偽の窓口用のハンコを持っていないからです。
| 守り | だれが | しくみ |
|---|---|---|
| RP ID の確認 | ブラウザ | RP ID は、開いているサイトのドメインか、その上位のドメインでなければならない。偽のサイトは本物の RP ID を名乗れない |
| サイトごとの鍵 | セキュリティキー | 鍵は RP ID ごとに作るので、偽サイトの RP ID 用の鍵はない |
| origin の確認 | Entra ID | origin はブラウザが入れて署名に含まれる。偽サイトを経由した署名は origin が違うので受け付けない |
| 共有する秘密がない | ― | Entra ID が持つのは公開鍵だけ。漏れてもサインインには使えない |
人の注意力に頼らず、ブラウザ・キー・Entra ID のしくみで偽のサイトを見分ける点が、パスワードやワンタイムコードとの大きな違いです。
よくある勘違い
キーの中に、パスワードが入っている?
入っていません。キーの中にあるのは、サイトごとに作った秘密鍵(ハンコ)です。Entra ID のパスワードとは関係がなく、パスワードを変えてもキーはそのまま使えます。
キーの PIN は、Entra ID に送られる?
送られません。キーの PIN は、ハンコを使うための暗証番号で、キーごとに利用者が決めます。確かめるのはキー自身です。Entra ID が受け取るのは、PIN を確かめたという印(UV のフラグ)と署名だけです。
キーを拾われたら、そのまま使われる?
PIN(または指紋)がわからなければ使えません。また、PIN を何度も間違えると、キーは PIN を受け付けなくなるので、試し続けて当てることもできません。回数の上限や、ロックされたあとの扱いは、キーの製品と CTAP の仕様によるので、製品の説明書で確かめてください。なくしたときは、すぐにキーの登録を削除します(あとの「キーをなくしたら?」を見てください)。
1本のキーをいろいろなサイトで使うと、危なくならない?
なりません。サイトごとに別のハンコ(鍵ペア)を作るので、どこか1つのサイトから印影が漏れても、ほかのサイトには影響しません。パスワードの使い回しとは、しくみが違います。
パスキーの種類
「パスキー」は、FIDO2 の鍵ペアでサインインする資格情報の呼び名です。セキュリティキーに入ったものもパスキーの一種で、Entra ID では、秘密鍵の置き場所によって2つに分けています。
| 項目 | デバイスに結び付くパスキー | 同期されるパスキー |
|---|---|---|
| 秘密鍵の場所 | 1台の機器の中だけ(キー・スマートフォン・PC の TPM) | 暗号化して、パスキーの提供元のクラウドで同期 |
| 構成証明 | 対応品なら確かめられる | 対応しない |
| Microsoft のおすすめ | 管理者や規制の厳しい業務のユーザーには、FIDO2 セキュリティキー | それ以外の多くのユーザー |
構成証明を必須にすると、デバイスに結び付くパスキーだけが使えるようになり、同期されるパスキーは登録できなくなります。
Windows Hello for Business とのちがい
Windows Hello for Business も、鍵ペアで認証するしくみです。違いは、秘密鍵がどこにあるかです。
| 項目 | Windows Hello for Business | FIDO2 セキュリティキー |
|---|---|---|
| 秘密鍵の場所 | その PC の TPM の中 | セキュリティキーの中 |
| 使える PC | 登録した PC だけ | キーを挿せば、ほかの PC でも使える |
| 向いている場面 | 毎日同じ PC を使う人 | 共用の PC、管理者、PC を替えたときの最初のサインイン |
| オンプレ AD への SSO | 信頼の種類を選ぶ(クラウド Kerberos 信頼など) | Entra Kerberos を使う |
Windows Hello for Business のしくみは「Windows Hello for Businessとは?」の記事で説明しています。
Windows へのサインインと、オンプレ AD への SSO
セキュリティキーは、ブラウザでのサインインだけでなく、Windows へのサインインにも使えます。Windows へのサインインでは、Entra ID から PRT をもらいます。PRT のしくみは「PRT(Primary Refresh Token)とは?」の記事で説明しています。
さらに Entra Kerberos を設定しておくと、Entra ID は PRT と一緒に部分的な TGTを渡します。PC はそれを DC に持っていき、本物の TGT に替えてもらいます。こうして、セキュリティキーでサインインしても、ファイルサーバなどオンプレの資源に SSO で入れます。
たとえでいうと、Entra ID が「仮の通行証」を渡し、DC がそれを「本物の通行証」に替えてくれる、という流れです。
くわしい流れは次のとおりです。
流れは、Windows Hello for Business のクラウド Kerberos 信頼とほとんど同じです。違うのは、署名するのが PC の TPM ではなくセキュリティキーである点だけです。Entra Kerberos のしくみ(AD の中の AzureADKerberos オブジェクトなど)は、「Microsoft Entra Kerberosとは?」の記事で説明しています。
使うための条件
| 項目 | Entra 参加 | ハイブリッド参加 |
|---|---|---|
| Windows のバージョン | Windows 10 1909 以降 | Windows 10 2004 以降 |
| Windows へのサインイン | Entra Kerberos がなくてもできる | Entra Kerberos がないとできない |
| オンプレ AD への SSO | Entra Kerberos が必要(ほかの方式はない) | Entra Kerberos が必要(ほかの方式はない) |
| DC | Windows Server 2016 以降(2016 は KB4534307、2019 は KB4534321 を適用)。サイトごとに書き込みできる DC が1台以上 | |
| Kerberos の暗号化方式 | DC で暗号化方式を制限しているなら、AES256_HMAC_SHA1 を許可する | |
| 同期する属性 | onPremisesSamAccountName・onPremisesDomainName・onPremisesSecurityIdentifier(Entra Connect の既定で同期される) | |
同期する属性は「Entra Connectは何を同期している?」の記事で説明しています。
似た使い方に見えて、しくみが別のものには次があります。
- スマートカード(証明書)のサインイン:キーの製品によっては、FIDO2 とは別にスマートカード(PIV)の機能を持っています。CA が発行した証明書で DC に直接認証するので、Entra Kerberos は使いませんが、FIDO2 ではなく証明書ベースの認証です
- Windows Hello for Business:PC の TPM の鍵でサインインするしくみで、キー信頼・証明書信頼・クラウド Kerberos 信頼を選べます。セキュリティキーとは別の資格情報です
- 社内の Web アプリ:Microsoft Entra アプリケーション プロキシ(または Microsoft Entra Private Access)を使うと、ブラウザで Entra ID にセキュリティキーでサインインしたあと、Kerberos の制約付き委任で社内の Web アプリに SSO できます。ただし Web アプリだけで、ファイルサーバなどには使えません
- オンプレの AD だけの環境(ドメイン参加だけの PC)では使えません。Entra 参加かハイブリッド参加が必要です
- RDP・VDI・Citrix でキーを使う場面(WebAuthn のリダイレクトを除く)、「別のユーザーとして実行」、サーバへのサインインでは使えません
- パスワードの期限が切れていると、セキュリティキーでのサインインもできません。先にパスワードを変更する必要があります
- ハイブリッド参加の PC を新しく用意したときは、ドメイン参加と再起動のあと、まずパスワードでサインインし、ポリシーが届くのを待ってからセキュリティキーを使います
- Entra Kerberos は RODC と同じルールで扱われるので、特権グループ(Domain Admins など)のメンバーは、セキュリティキーでオンプレの資源に入れません
設定のしかた(Entra ID の場合)
Entra ID:パスキー(FIDO2)を有効にする
Microsoft Entra 管理センター ›› Entra ID ›› 認証方法 ›› ポリシー ›› パスキー (FIDO2) で、対象のユーザー(グループ)に対して有効にします。設定は「パスキー プロファイル」にまとめ、グループごとに割り当てられます。
| 設定 | 意味 |
|---|---|
| Enforce attestation(構成証明を必須にする) | 登録のときに構成証明を求め、FIDO の Metadata Service で機種を確かめる。同期されるパスキーは登録できなくなる。あとから有効にしても、登録済みのものはそのまま使える |
| Passkey types(パスキーの種類) | デバイスに結び付くもの(Device-bound)・同期されるもの(Synced)のどちらを許すか |
| Target specific AAGUIDs(キーの制限) | AAGUID で機種を指定して、許可(Allow)または禁止(Block)する。登録とサインインの両方に効く |
AAGUID は、キーの機種ごとに決まった128ビットの番号です。個々のキーではなく機種を表します。構成証明を必須にしていないときは、キーが名乗る AAGUID を確かめようがないので、AAGUID の制限は目安と考えます。
Windows:セキュリティキーでのサインインを有効にする
| 方法 | 設定 |
|---|---|
| Intune(登録のとき) | デバイス ›› デバイスの登録 ›› Windows の登録 ›› Windows Hello for Business で「Use security keys for sign-in」を Enabled(すでに登録済みのデバイスには反映されない) |
| Intune(グループを指定) | カスタムのプロファイルで OMA-URI ./ を整数の 1 に設定 |
| グループポリシー(ハイブリッド参加だけ) | コンピューターの構成 ›› 管理用テンプレート ›› システム ›› ログオン の「Turn on security key sign-in」を有効 |
Windows でセキュリティキーを使う設定は、Windows Hello for Business の設定とは別のものです。Windows Hello for Business を使っていなくても有効にできます。
オンプレ AD:Entra Kerberos を用意する
オンプレ AD への SSO には、AzureADHybridAuthenticationManagement モジュールの Set-AzureADKerberosServer で、ドメインごとに Entra Kerberos のサーバオブジェクトを作ります。Windows Hello for Business のクラウド Kerberos 信頼と同じものなので、すでに作ってあれば、そのまま使えます。手順と、鍵の定期的な更新(-RotateServerKey)は「Microsoft Entra Kerberosとは?」の記事で説明しています。
よくある疑問
パスキーと FIDO2 セキュリティキーは別のもの?
セキュリティキーは、パスキーの置き場所の1つです。パスキーは「FIDO2 の鍵ペアでサインインする資格情報」の呼び名で、セキュリティキーの中に作ったものは「デバイスに結び付くパスキー」になります。Entra 管理センターでも、セキュリティキーは「パスキー (FIDO2)」の認証方法として設定します。
キーをなくしたら?
利用者はセキュリティ情報のページで、なくしたキーを削除できます。管理者は、ユーザーの 認証方法 から、そのパスキーを削除します。秘密鍵はキーの中にしかないので、なくしたキーの中身をほかの機器に移すことはできません。新しいキーを登録し直します。
Windows Hello for Business があれば、セキュリティキーは要らない?
毎日同じ PC を使うなら、Windows Hello for Business だけで足ります。セキュリティキーが役に立つのは、共用の PC を使う場面、別の PC で初めてサインインする場面、管理者のように特に強い保護がほしい場面です。Microsoft は、最初の資格情報には持ち運べるもの(セキュリティキーやパスキー)を用意し、それを使って PC ごとの Windows Hello for Business を登録する進め方を示しています。
確かめ方
セキュリティキーで Windows にサインインしたあとは、dsregcmd /status の「SSO State」で PRT とオンプレ用のチケットを確かめます。サインインしたユーザーのままで実行します。
| 項目 | 意味 |
|---|---|
| AzureAdPrt | PRT があれば YES |
| OnPremTgt | Entra Kerberos からもらった、オンプレの資源に使うチケットがあれば YES |
| AzureAdJoined・DomainJoined | ハイブリッド参加なら両方 YES |
オンプレの資源で資格情報を聞かれるときは、DC が Entra Kerberos に対応しているかを nltest で、Entra Kerberos のサーバオブジェクトの状態を Get-AzureADKerberosServer で確かめます。Get-AzureADKerberosServer では、AD 側の KeyVersion と Entra ID 側の CloudKeyVersion が同じになっているかを見ます。
確認に使うコマンド
PC01(コマンドプロンプト・サインインしたユーザー):参加の状態・PRT・オンプレ用のチケットを表示する
dsregcmd /status | findstr /i "AzureAdJoined DomainJoined AzureAdPrt OnPremTgt"
PC01(コマンドプロンプト・サインインしたユーザー):持っている Kerberos のチケットを表示する
klist
PC01(コマンドプロンプト):Entra Kerberos に対応した DC を探す
nltest /dsgetdc:corp.example.com /keylist /kdc
管理用サーバ(PowerShell・管理者):Entra Kerberos のサーバオブジェクトの状態を表示する
Get-AzureADKerberosServer -Domain corp.example.com -UserPrincipalName admin@example.onmicrosoft.com -DomainCredential (Get-Credential)
まとめ
| 項目 | ひとことで |
|---|---|
| たとえ | 毎回ちがう書類(challenge)に、自分だけのハンコ(秘密鍵)を押して見せる。Entra ID は印影(公開鍵)で確かめる |
| FIDO2 | WebAuthn(ブラウザとサイト)と CTAP(PC とキー)を合わせた、パスワードを使わない認証の規格 |
| 鍵 | サイト(RP ID)ごとに、キーの中で鍵ペアを作る。秘密鍵は外に出ず、サイトには公開鍵だけを登録する |
| サインイン | キーが PIN を確かめ、challenge と origin を含むデータに署名する。Entra ID が公開鍵で確かめてトークンを払い出す |
| フィッシング | ブラウザが RP ID と origin を、キーがサイトごとの鍵を、Entra ID が origin を確かめるので、偽サイトでは使えない |
| パスキー | デバイスに結び付くもの(セキュリティキーなど)と、同期されるもの。違いは秘密鍵の置き場所 |
| Windows とオンプレ AD | Windows のサインインで PRT をもらい、Entra Kerberos があれば部分的な TGT を DC で本物の TGT に替える |
| 確かめ方 | dsregcmd /status の AzureAdPrt・OnPremTgt、nltest /keylist、Get-AzureADKerberosServer |
FIDO2 セキュリティキーの強さは、「秘密鍵がキーから出ない」ことと、「サイトごとの鍵と origin で、偽のサイトをしくみで見分ける」ことの2つにあります。利用者が気をつけなくても守られる、という点が、ほかの MFA との大きな違いです。
- Authentication methods in Microsoft Entra ID – passkeys (FIDO2)(Microsoft Learn)
- How to enable passkeys (FIDO2) in Microsoft Entra ID(Microsoft Learn)
- Enable FIDO2 security key sign-in to Windows 10 and 11 devices(Microsoft Learn)
- Enable passwordless security key sign-in to on-premises resources(Microsoft Learn)
- Microsoft Entra ID attestation for passkey (FIDO2) vendors(Microsoft Learn)
- Plan a phishing-resistant passwordless authentication deployment(Microsoft Learn)
- Cloud Kerberos trust deployment guide(Microsoft Learn)
- Kerberos Constrained Delegation for single sign-on (SSO) to your apps with application proxy(Microsoft Learn)
- Web Authentication: An API for accessing Public Key Credentials(W3C)
- Authenticator data(MDN)
- Client to Authenticator Protocol (CTAP) v2.1(FIDO Alliance)
コメント