1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【WBF】プライベートプールの設定

Last updated at Posted at 2020-07-15

プライベートプールとは?

Windows Biometric Framework(以下WBF)では、生体認証デバイスを使用する際に、"その生体認証デバイスをどのように使用するか"に関する設定の集まりである"プール"というものを設定する必要があります。この"プール"には"システムプール"と"プライベートプール"の2種類があります。"システムプール"はWindows Helloが使用しています。サードパーティがWBFを使用したアプリケーションを開発する場合は、"システムプール"、"プライベートプール"を用途に合わせて使用します。
システムプールとプライベートプール.png
サードパーティがシステムプールを使用する場合は、Windows Helloと設定や生体認証データを共有する事になるため、自アプリで生体情報の登録を実装しなくても、Windows Helloに登録済みの生体情報で認証ができるなどの利点があります。逆にデータを共有したくない場合は、プライベートプールを作成する事になります。プライベートプールはいくつでも作成する事ができるので、各アプリケーションごとにそのアプリ用のプライベートプールを用意できます。また同じアプリケーション内でも用途に合わせて複数のプライベートプールを使用する事もできます。

構成情報の保存先

構成情報は"プールの構成情報"と"データベースの構成情報"の2つに分かれて、レジストリに保存されています。"プールの構成情報"は各生体認証デバイスごとに、"データベースの構成情報"はデバイスとは切り離して定義されます。"プールの構成情報"と"データベースの構成情報"は1対1で結び付くものではないため、異なるデバイス(異なるプール)が同じデータベースを参照していれば、そのデバイス間で生体認証データが共有される事になります。
プールとデータベース.png
例えば、上記のような例ではデバイスAとデバイスBのシステムプールは同じデータベースを参照しているので、デバイスを切り替えても、システムプールを使うアプリケーションでは切り替え前のデバイスで登録した情報をそのまま使用する事が可能となります。

データベースの構成情報

データベースの構成情報は下記のレジストリにあります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WbioSrvc\Databases

下記の例では、5つのデータベースが設定されている事が分かります。
レジストリ_データベース.png

データベースは下記の情報から構成されます。

名前 説明
Attributes データベースの特性に関する情報。詳細は下記URL参照。
https://docs.microsoft.com/en-us/windows/win32/secbiomet/winbio-storage-schema
AutoCreate ?
AutoName ?
BiometricType データベースに保存された生体認証データの種類。詳細は下記URL参照。
https://docs.microsoft.com/en-us/windows/win32/secbiomet/winbio-biometric-type-constants
ConnectionString データベースを識別するためにデータベースサーバーに送信できる文字列値。
FilePath データベースがコンピュータディスク上にある場合のパスとファイル名。
Format データベース内のテンプレートの形式を識別するGUID。
InitialSize ?

"?"部分については、名前から何となく用途は想像できるものの、公式に情報が見つからなかったので特に説明は記載しません。

プールの構成情報

各生体認証デバイスのプールの構成情報は下記のレジストリにあります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\(デバイスインスタンスパス)\ Device Parameters\WinBio\Configurations

デバイスインスタンスパスは、デバイスマネージャーで使用したい生体認証デバイスのプロパティを開き、[詳細]タブにて確認できます。
デバイスインスタンスパスの確認.png

下記の例では、1つのプールが設定されている事が分かります。
レジストリ_プール.png

プールは下記の情報から構成されます。

名前 説明
SystemSensor この値が”1”の場合はシステムプール、
それ以外はプライベートプール。
SensorMode センサーモード。詳細は下記URL参照。
https://docs.microsoft.com/en-us/windows/win32/secbiomet/winbio-sensor-mode-constants
DatabaseId プールが使用するデータベースのGUID。
SensorAdapterBinary プールが使用するセンサーアダプターのファイル名。
EngineAdapterBinary プールが使用するエンジンアダプターのファイル名。
StorageAdapterBinary プールが使用するストレージアダプターのファイル名。

プライベートプールの設定

それでは実際に新しいプライベートプールを設定していきます。ここでは各種設定はシステムプールと同じ、データベースだけ異なるものを参照するプライベートプールを設定します。

(1) 使用したい生体認証デバイスのシステムプールが使用しているデータベースを確認します。
下記の例では、GUIDが”7B5D3242-420A-4287-BCFE-495C28DD9F21”のデータベースを使用しています。
システムプールの確認.png

(2) 新しいデータベース用のGUIDを用意します。
GUIDが作成できるツールなら何でも構いませんが、私は[Visual Studio 2019]の[ツール]→[GUIDの作成]から作成しました。

(3) データベースを定義しているレジストリ下に(2)で用意したGUIDのキーを作成し、下記を設定します。

名前 説明
Attributes (1)で確認したデータベースの”Attributes”と同じ値。
AutoCreate “1”固定。
AutoName “1”固定。
BiometricType (1)で確認したデータベースの”BiometricType”と同じ値。
ConnectionString 空文字。
FilePath 空文字。
Format (1)で確認したデータベースの”Format”と同じ値。
InitialSize “32”固定。

データベースの設定.png

(4) プールを定義しているレジストリ下に(2)で用意したGUIDのキーを作成し、下記を設定します。

名前 説明
SystemSensor “0”固定。
SensorMode システムプールの”SensorMode”と同じ値。
DatabaseId (3)で定義したデータベースのGUID。”{}”は不要。
SensorAdapterBinary システムプールの”SensorAdapterBinary”と同じ値。
EngineAdapterBinary システムプールの”EngineAdapterBinary”と同じ値。
StorageAdapterBinary システムプールの”StorageAdapterBinary”と同じ値。

プールの設定.png

以上で、プライベートプールの設定は完了です。

プライベートプールを使用したコードの実装については下記を参考にしてください。
https://docs.microsoft.com/en-us/windows/win32/secbiomet/private-pool-identity

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?