顔認証の仕組みとは?顔データが流出しない理由
画像出典: 写真: mikemacmarketing(CC BY 2.0 / Wikimedia Commons)
顔認証・指紋認証で読み取られたデータは、端末内の隔離されたチップ(iPhoneのSecure Enclave、AndroidのTEE)の中だけで照合され、サーバーには送られません。外部サービスに渡るのは公開鍵と署名だけです。ただし双子や近親者による誤認識、マスクや怪我による認証失敗といった限界はあり、パスコードという逃げ道は必ず残しておく必要があります。
スマホのロック解除に顔をかざす、決済アプリで指紋を当てる。1日に何十回も繰り返している動作ですが、「読み取られた顔や指紋がどこへ行くのか」を説明できる人は多くありません。
不安の正体はだいたいここにあります。パスワードなら「サービス側に預けている」という感覚がありますし、流出のニュースも見慣れています。顔や指紋も同じように、どこかのサーバーに画像が積み上がっているのではないか——そう想像すると落ち着かないのは自然なことです。
結論から言うと、その心配のほとんどは設計によって解消されています。ただし「まったく問題がない」わけでもありません。安心してよい根拠と、まだ残っている限界を、順番に分けて見ていきます。
顔認証の仕組みは?何を読み取っているのか
まず、顔認証が「顔写真を撮って見比べている」のではない、というところから揃えておきます。ここが一致していないと、以降の話がぼやけてしまいます。
iPhoneのFace IDでは、画面上部のTrueDepthカメラが赤外線のドットを数千個、顔に投影します。そのドットがどう歪んで返ってくるかを読み取ることで、鼻の高さや目のくぼみといった凹凸を数値化した「深度マップ」を作ります。同時に赤外線の2D画像も撮影します。暗闇でも動くのは、可視光ではなく赤外線を使っているからです。
作られた深度マップと赤外線画像はデジタル署名され、Secure Enclaveへ送られます。Secure Enclaveというのは、同じチップの中に置かれた隔離された小部屋のようなプロセッサです。同じ端末の中にありますが、iOS本体やアプリからは中身を覗けません。
| 段階 | 読み取り | 変換 | 照合 | 結果 |
|---|---|---|---|---|
| 行われる場所 | TrueDepthカメラ | TrueDepthカメラ | Secure Enclave内部 | Secure Enclaveから外へ |
| 扱われるもの | 赤外線ドットの反射 | 深度マップ+赤外線2D画像(署名付き) | 顔の数学的表現(暗号化) | 一致したかどうかの可否のみ |
| 端末の外へ出るか | 出ない | 出ない | 出ない | 出ない |
Appleの公表データをもとに作成
上の表で「端末の外へ出るか」の行だけを横に読むと、どの段階でも答えが変わらないことが見えます。読み取りから結果まで、外へ出る矢印がどこにもない——これが生体認証の設計の骨格です。
Secure Enclaveの内部で行われるのは、顔の照合そのものです。Appleの説明では、顔の照合は専用に訓練されたニューラルネットワークによってSecure Enclaveの内部でのみ実行されます。登録した顔の数学的表現は暗号化された状態でここに保管され、Secure Enclaveだけがアクセスできます。
指紋認証も設計思想は同じです。センサーが読んだ指紋の隆線パターンは、その場で特徴量に変換され、隔離された領域で照合されます。読み取った画像そのものが持ち回されるわけではありません。
顔データは本当に外に出ないのか?
ここが一番知りたいところだと思います。Appleの公式サポート文書には、Face IDデータについて次の3点が明記されています。
- 暗号化され、Secure Enclaveのみがアクセスできる
- デバイスの外に出ることはなく、Appleのサーバーにも送信されない
- 端末のバックアップにも含まれない
3つ目が地味に効いています。バックアップに含まれないということは、iCloudやPCに保存されたバックアップファイルが万が一漏れても、そこに顔のデータは入っていない、ということです。だから機種変更のとき、Face IDは引き継がれず新しい端末で登録し直しになります。面倒に感じる手順ですが、外に出さない設計の裏返しです。
Androidも同じ方向で作られています。AOSP(Android Open Source Project=Androidの基盤となる公開ソースコード)の生体認証は、精度と安全性に応じてClass 3・Class 2・Class 1という3段階のクラスがCDD(端末メーカーが満たすべき互換性の要件を定めた文書)で定義されています。このうちClass 3とClass 2については、生体データの取得・登録・認識処理をTEE(Trusted Execution Environment=端末内の隔離された実行環境)などのセキュアな環境内で行うことが要件になっています。生の生体データやそこから作られたテンプレートは、この隔離環境の外からアクセスできない仕様です。
メーカーは違っても、「隔離された場所で照合し、外に出さない」という骨格は共通している、と理解しておけば大きく外しません。
サービス側のサーバーには何が届いているのか?
もうひとつ気になるのが、銀行アプリやショッピングサイトで顔認証を使ったときです。あれは相手のサーバーに顔を送っているのでは、と思ってしまいます。
ここで登場するのがFIDO(ファイド)という認証の方式です。パスキーの土台にもなっている考え方で、設計はこうなっています。
- 登録するとき端末の中で鍵のペア(秘密鍵と公開鍵)を作り、公開鍵だけをサービス側に登録します。秘密鍵は端末から出ません。
- ログインするときサービスから届いた確認用のデータに、端末内の秘密鍵で署名します。この署名を行う前に、本人かどうかを端末が生体認証で確認します。
- サーバーが検証するとき受け取った署名を、登録済みの公開鍵で検証します。サーバーが見ているのは署名であって、顔でも指紋でもありません。
| 持っているもの | 端末の中 | サービスのサーバー |
|---|---|---|
| 顔・指紋のデータ | あり(隔離領域内) | なし |
| 秘密鍵 | あり(外に出ない) | なし |
| 公開鍵 | あり | あり(登録済み) |
| 署名データ | 作る | 受け取って検証する |
FIDO Allianceの公表データをもとに作成
上の表を縦に見ると、サーバー側の列に「なし」が並ぶのが分かります。生体情報そのものがネットワークを流れることはなく、サービス側のサーバーに保管もされません。顔認証は「サーバーに顔を送る手段」ではなく、「端末の中の鍵を使ってよいか、端末が本人に確認する手段」だと捉えると、位置づけがすっきりします。
この構造の副産物として、サービス側がデータ流出を起こしても、そこから顔や指紋が漏れることはありません。漏れるのは公開鍵ですが、公開鍵は名前のとおり公開されても困らないものです。
写真やマスクでは突破できないのか?
この対策のために、Face IDには照合用とは別に「なりすまし検知専用」に訓練されたニューラルネットワークが積まれています。平面の写真には深度がなく、精巧なマスクにも本物の顔とは違う特徴が出るため、それを見分ける役割です。
加えて、TrueDepthカメラは2D画像と深度マップを撮る順序をランダムに変え、端末ごとに固有のランダムパターンを投影します。撮影のたびに投影されるパターンが変わるので、「以前の読み取りを記録しておいて、そのまま再生する」といったデジタル的な偽装が成立しにくくなります。物理的な偽物と、記録の再生。その両方に別々の手が打たれている、という構造です。
また、顔を認識するには目が開いてカメラのほうを向いている必要があります(設定でこの要求を切ることもできますが、既定では有効です)。寝顔でこっそり、というシナリオへの備えはここにあります。
それでも残る限界は?
ここからが、安心の根拠と同じくらい大事な話です。生体認証は万能ではなく、限界がはっきりしています。
他人が偶然一致してしまう確率
Appleは、Face IDで他人が偶然一致する確率を100万分の1、Touch ID(指紋認証)を5万分の1と説明しています。数字だけ見れば十分に低いのですが、Apple自身が例外を明示しています。双子や似ている兄弟姉妹、そして13歳未満の子どもについては、顔の特徴が近かったり成長途上だったりするため、この統計的な確率が変わるとされています。該当する場合はパスコードを使うようApple公式が案内しています。
本人なのに弾かれるケース
逆方向の失敗もあります。Face IDはiOS 15.4以降、マスクを着けていても目元が映っていれば認証できるようになり(iPhone 12以降が対象)、帽子・スカーフ・メガネ・多くのサングラスにも対応します。それでも、顔にけがをした、指先が濡れている・荒れている、といった状況では通らないことがあります。生体は書き換えられない代わりに、日々変化するものだからです。
技術そのものが発展途上であること
写真やマスクによるなりすましへの対策は、メーカー側で継続的にアップデートされ続けている領域です。「今の時点で破られていない」ことと「将来にわたって破られない」ことは別だ、という前提は持っておくのが健全です。
生体は変更できません。パスワードは漏れたら変えられますが、指紋は変えられない——だからこそ、外に出さない設計になっているわけです。裏を返すと、生体認証を「絶対に破られない鍵」と考えて、パスコードを誕生日のような単純な数字にしてしまうのが一番危険です。生体認証が通らないときの逃げ道はパスコードであり、そこが弱ければ全体の強度はパスコードの強さまで落ちます。
今日できる、現実的な設定の見直し
しくみが分かったところで、手を動かせるところを整理します。数分で終わります。
- パスコードを6桁以上、できれば英数字混在の「カスタム」に変更する(生体認証の最終的な強度はここで決まります)
- 「画面注視認識機能(Face IDを使用するには注視が必要)」がオンになっているか確認する
- 双子や似た兄弟姉妹がいる、子どもが使う端末である場合は、顔認証ではなくパスコードを主にする
- 銀行・決済アプリでパスキーが提供されていれば、SMSのワンタイムパスワードより優先して設定する
- 顔や指紋の登録が古いまま精度が落ちていると感じたら、登録をリセットして取り直す
特に1つ目です。生体認証を強くしたいなら、実は見直すべきはパスコードのほうだった——というのは、しくみを追いかけると自然に出てくる結論です。顔や指紋は「毎回パスコードを打たなくて済むようにする速い入口」であって、鍵そのものを置き換えるものではありません。
顔のデータがどこにも送られていないと分かれば、生体認証は便利さのために我慢する妥協ではなく、むしろ積極的に使ってよい仕組みだと思えるはずです。不安なままオフにしておくより、しくみを知ったうえでオンにして、弱いところだけ手当てする。それが一番現実的な落としどころです。
よくある質問
顔認証で読み取った顔のデータはサーバーに保存されますか?
保存されません。iPhoneのFace IDでは顔の数学的表現は暗号化されてSecure Enclave内に保管され、デバイスの外に出ることも、Appleのサーバーに送信されることもなく、端末のバックアップにも含まれません。Androidでも、Class 3・Class 2の生体データは端末内のTEEなどの隔離環境で処理され、その外からはアクセスできない仕様が要件になっています。
アプリやWebサイトで顔認証を使うとき、相手のサーバーには何が送られていますか?
送られるのは、端末内の秘密鍵で作られた署名データだけです。FIDO方式では登録時にサービス側へ公開鍵のみを登録し、生体情報そのものはネットワークを流れず、サービス側のサーバーにも保管されません。顔認証は「端末内の秘密鍵を使ってよいか」を端末が本人に確認する役割を担っています。
顔写真やマスクで顔認証を突破されることはありますか?
Face IDには照合用とは別に、なりすまし検知専用に訓練されたニューラルネットワークが搭載されており、写真やマスクによる解除を防いでいます。TrueDepthカメラは2D画像と深度マップの撮影順序をランダム化し、端末固有のランダムパターンを投影することで、物理的な偽装と記録の再生の両方に対抗しています。ただし、なりすまし対策はメーカーが継続的にアップデートしている発展途上の領域です。
双子や子どもでも顔認証を安全に使えますか?
Appleは、双子や似ている兄弟姉妹、13歳未満の子どもについては顔の特徴が近い、あるいは成長途上であるため、他人が偶然一致する統計的な確率が変わると説明しています。懸念がある場合は顔認証ではなくパスコードによる認証を使うことが公式に推奨されています。
※記事で使用した内容・数値は変更される場合があります。最新情報は公式サイトをご確認ください。