本記事は、 2020 年 5 月 26 日に Azure Active Directory Identity Blog に公開された記事 (Biometrics – Keep Your Fingers Close) を翻訳したものです。原文は こちら より参照ください。
「利用者がシステムに立ち寄って指紋をスキャンすると (もしくはカメラを見つめるかマイクに話しかけると)、あっという間にログインできるようなシステムが欲しい」。こんなご要望を特に製造業、政府系サービス、自動発券機の利用シナリオなどでお客様からよく伺います。
機械に近づくと、初めてそれを使う場合でも指紋や顔で簡単にログオンできるというのは確かに魅力的なシナリオのように思います。何かを購入して持ち歩いたり、落として無くしたりすることもなく、フィッシングにも会いませんし誰かに勝手に使われたりすることもありません。また、従業員が職場や高いセキュリティの求められる場所でスマートフォンなど SNS につながったデバイスを使用する必要もありませんから、いろんな人がそういうものをあなたに売りつけようとしてくると思います。
こんなシナリオを実現するためには、ユーザーの生体情報をリモートにある資格情報保存サーバーに登録し、クライアントで生体情報をスキャンしたら、スキャンしたものとサーバー側で保存してあるものをマッチングさせて、あら不思議、同じユーザーですねと確認することになります。これはすごい!もうこれでいんじゃない?!
残念ながら、生体情報を中央で管理してユーザーを認証することには、いくつかの大きな問題があります。生体情報を中央で管理する方法は、個人の特定 (ある程度の範囲内でユーザーが誰であるか推定する) につながる可能性があるのです。2020 年初頭の時点では、リモートの生体情報を利用する方法は 認証、つまり利用者が何者であるかを 立証 することには適していません。
リモートに保存されている生体情報を使用して認証を行う際の問題点は、生体署名にまつわる 3 つの主要な問題点に由来します。
生体情報は秘密ではない。 ソーシャル メディアに自ら顔の映った写真を投稿したり、よりスムーズに入館できるよう個人を識別するシステムに指紋を登録したりするよりも前から、我々の身体的な状態は簡単に取得することが可能でした。あなたが外の世界に示した姿がそのままキャプチャされているといえます。あなたが外の世界に自らを晒すことで、生体情報が画像やビデオ、指紋として取得され、場合によっては悪意を持って生体情報が取得されることになります。皆さんは既に様々なところでその特徴が収集されているのです。
どのような人にとっても生体情報の選択肢は非常に限られている。 10 本の指、2 つの目、1 つの顔、1 つの声、1 つのパルス信号 … 色々と新しいアイデアを考えたとしても選択肢は 20 個ほどしかなく、生体情報が漏洩したときに使用不可として失効できるものは限られています。現実的に言えば、ユーザビリティを考慮するとさらに選択肢は限られており、利き手の指数本と顔ぐらいになります。さらに通常、予算の制約により組織が単一の生体認証機器しか使えないと考えると、選択肢はより狭まります。4 桁の PIN でさえ 1 万の組み合わせしかありません。あなたの指紋情報が漏洩したときに失効して使用不可にできる指の数はもっと限られています。
生体情報はシステム間で再利用できる可能性がある。 ほとんどの生体認証システムは生体情報の型 (テンプレート) を保存しており、使用された生体認証の精細な画像などを保存しているわけではありません。テンプレートの例としては、顔や指紋の主要な基準点の間の距離などが一般的です。しかし、技術によっては、生体認証の照合に使用されるデータが類似している場合があるため、あるシステムから抽出された指紋テンプレートを別のシステムで使用できるように変換できる場合があり得ます。.jpg ファイルを .bmp ファイルや .png ファイルの形式に変換できるように、データの有効性を維持しながらあるテンプレートを別のテンプレートに変換できる可能性があるのです。最近のシステムの中には、システムの各アルゴリズムのバージョン間でテンプレートが変換されないようになっているものもありますが、既に動作しているシステムがこのような新しいアルゴリズムに移行してすべてのテンプレートを再登録するというのは、現実的に非常に難しく不可能とも言えます。一度どこかで生体情報が漏洩すれば、もう二度とその情報は使えなくなってしまうのです。
生体情報テンプレートは簡単に盗まれる。 生体情報は近似でのマッチングに依存しているため、特定の値を不可逆的に変換するハッシュ化を利用することはありません。中央のデータベースに保存されているテンプレートは、元の値が取得できる形で暗号化する必要があります。攻撃者が鍵を見つけてしまえば、データベース内のすべてのユーザーのテンプレートを抽出することができてしまいます。そして、テンプレートが一度抽出されてしまえば、互換性のあるすべてのシステムまたはテンプレートを変換できるシステムにおいてテンプレートが攻撃者の手に渡ることになります。システムに複数のうちいずれかの生体認証情報でサインインする機能がある場合、攻撃者は新しいテンプレートを追加することで、正しいユーザーのログインに影響を与えることなく、攻撃者のテンプレートをすでに登録済みの ID に使用することができます (パスワードのような単一値の認証情報では、パスワードが変更されれば正しいユーザーがログインできなくなるので、書き換えにすぐ気づくことができます)。
合理的な議論を行うには、生体情報が秘密情報ではなく、さらにその点は重要でないという前提において、生体認証のメカニズムが完全性を保証するよう以下のような点を明確にすることが必要です。
- サーバー上に登録されたユーザーの情報が改ざんされないこと。
- 生体情報読み取り機 (指紋スキャナーなど) が正当に構成されており改ざんされていないこと。
- 生体情報読み取り機とストレージ機構の間の通信経路が完全に安全であること。
これらのことは、理論的には様々な暗号技術を組み合わせることで実現可能です。例えば、すべての生体情報読み取り機に鍵ペアが埋め込まれていて、すべてのリクエストに公開鍵で署名し、経路上のすべての機器が製造元の証明書機関を用いてチェックして、さらに読み取り機の型式番号で検索して、それがハッキングされていない既知の有効なリーダーであることを確認するようにします。さらに、ファームウェアのチェックサムを使用してハードウェアが細工されていないことを確認し、要求の署名にその結果を含めることもできます。データベースが改ざんされていないことを確認するために分散型台帳を使うことなども可能です。
しかし、これら各ステップは実際の世界で行うには困難であることがわかっています。正しく動作しないプロトコルやアルゴリズム、各種製品など挙げるときりがありません。また、攻撃者からすると、読み取りセンサーとサーバーの間の経路上のすべてのステップが攻撃対象になるのです。
生体認証は、社会的にリスクを抱えた人や貧困層の人々、避難民など一部の課題を解決するために重要なテクノロジーとなっていますが、誤った使用がなされるリスクも高いと考えられます。このような理由から、この問題が 標準化フォーラム で扱われ、調査や第三者による検証を募りながら進められているのは非常に良いことだと思います(私はこういった理由から標準化プロセスを広く支持しています - 標準化はセキュリティを高める強力な取り組みですから)。
これらの標準が受け入れられ、実装され、時間をかけてテストされるまでは、私たちは何か他のモノを使用し、攻撃の可能性を最小限にするべきです。FIDO2 のような標準や Windows Hello を実装した時の目標は、テンプレートを取得したデバイスにテンプレートの使用を限定し、テンプレート自体を安全なハードウェアに格納することで、テンプレートと安全なストレージの間の経路を最短にし、生体認証テンプレートが傍受される可能性を最小化することです。テンプレートは、安全なハードウェア (TPM など) が暗号に関する処理にアクセスするためだけに使用されます。安全なハードウェア (TPM など) では、鍵ペアの作成、公開鍵の公開、秘密鍵によるメッセージの署名などの操作を保護するためにテンプレートが使用されます。
このような設計であれば、生体認証の通信経路を乗っ取るには、ハードウェアへの直接アクセスが必要で、仮に何者かが認証装置を乗っ取ったとしても、取得されたテンプレートは他の場所では役に立ちません。重要なことは、ユーザーが直接所有していないデバイスにおいては、生体認証データを一切収集する必要がないということです。これは生体情報をローカルの認証機器に登録されなければならず、一方で我々は任意のデバイスに近づいて指紋をスキャンすることはできなくなるということを意味します。このアプローチでは、生体認証はすでに登録されているローカル デバイスでしか使用できません。
それに比べて、中央管理型の生体情報は、読み取り機に加え、読み取り機が接続されているデバイス、そのデバイス上のソフトウェア、そのデバイスと生体情報が保存されているサーバーとの間のネットワーク、そしてサーバー自体も攻撃にさらされる可能性があります。しかもその経路のどれもが製造元ベンダー以外の組織によって検証されたセキュリティ メカニズムを持ち合わせていないのです。
厳密に検証されたメカニズムがなければ、中央管理型の生体認証は、改ざん、傍受、窃取および共有への対策が不十分な状態となります。適切に管理されていないシステムの一つでテンプレートが漏洩してしまい、その結果、他のすべてのシステムであなたの顔情報が悪用される状態となったらどうしましょうか?あなたの顔情報にテンプレートを追加することで、攻撃者があなたになりすますことができるとしたらどうなるでしょうか?あなたの個人データを管理している会社が、あなたの個人データを他の組織と共有したり、盗まれたデータがあなたの同意なしに他の場面であなたを自動的に識別するために使用されたりしたらどうなるでしょうか?
これが、マイクロソフトが現在、中央管理型の生体情報を使用した認証をサポートしない理由です。セキュリティの問題は至る所に広がっており、その影響はあまりにも大きいのです。しかし、特に社会的にリスクを抱えた人や避難民、貧困層の人々にとって、身元の証明のために 15 ドルのお金を払うことは困難であり、これは結果としてデジタル ID の恩恵を最も必要としている多くの人がそれを享受できない状態となることを意味します。私は、これは解決すべき非常に重要な問題であると考えており、今後解決できる問題であるとも考えています。
しかし、今のところ、生体認証において、マイクロソフトとしては生体情報の収集と保存を安全なハードウェア環境に限定することを推奨します。Windows Hello では、FIDO と同様に、生体情報をローカル デバイスに登録する要件を設けています。これはセキュリティとプライバシーの両方の理由から望ましい方法です。生体情報はローカル環境で認証機能のロックを解除するためにのみ使用され、認証機能の内部で使用されることはありません。
ただ、これでは我々が理想とする「初めて使うデバイスまで手ぶらで近づき、あとは生体情報でサインインするだけ」というシナリオが実現するのはまだ先ということになります。現状では、我々は何かしらの認証機器を提示し、生体認証でそのロックを解除しなければなりません。上記のシナリオほど魔法のようなものではありませんが、この方法の方がよりセキュアで、個人情報が秘匿され、将来も安全性が高いものとなります。
生体情報のみで認証する際の問題を解決したいとお考えの方々、または私が何か見落としているとお気づきの方は、ぜひ私の Twitter @alex_t_weinert まで連絡いただき、考えを共有ください。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。