生体認証とは、ユーザーの固有の生理学的特性に基づいて本人確認を行う方法です。パスワードとは異なり、生体データはリモートで盗難されたり、総当たり攻撃で解読されたりすることはありません。Statista(2025年)によると、最新のスマートフォンの80%以上に生体認証センサーが内蔵されています。
重要なポイント
生体認証とは、ユーザーの固有の生理学的または行動的特徴に基づいて本人確認を行うプロセスです。従来の方法(パスワード、PINコード、ワンタイムトークン)とは異なり、生体認証は個人に結びついており、他の人に譲渡することはできません。
この方法は、生体認証特性を事前に保存されたテンプレートと測定・比較することに基づいています。この技術は、高価な企業向けシステムから消費者向けデバイスへの大量採用へと進化してきました。指紋スキャナーを搭載した最初の量産スマートフォンは2011年のMotorola Atrix 4Gで、現在では100ドルからのデバイスに生体認証センサーが搭載されています。
生体認証は、パスワード認証の主要な問題である人間の記憶を解決します。Hypr(2024年)の調査によると、平均的なユーザーは100以上のオンラインアカウントを持っていますが、使用する固有のパスワードはわずか5つです。生体認証は複雑な組み合わせを覚える必要をなくします。
生体認証のプロセスは、登録(enrollment)と検証(verification)の2つのフェーズで構成されます。登録時に、システムは生体サンプルをキャプチャし、特徴を抽出して、参照テンプレートを作成します。検証時には、新しいサンプルを保存されたテンプレートと比較し、アルゴリズムが一致度を計算して判定を下します。
デバイスのセンサーが生の生体信号をキャプチャします。静電容量式マトリックスを介した指紋画像、ドットプロジェクターを介した3D顔マップ、マイクを介した音声スペクトルなどです。キャプチャの品質は、その後の認識精度に直接影響します。最新のセンサーは、指紋で1ミリメートルあたり50〜300の測定ポイント、顔で最大30,000ポイントを使用します。
アルゴリズムは生データから固有の特徴を抽出します。指紋の場合は特徴点(乳頭線の終端と分岐点)、顔の場合は目の間隔、鼻の形状、顎の輪郭などです。これらの特徴は2〜20KBの数学的テンプレートに変換されます。元の画像は保存されず、特徴テンプレートのみが保存され、そこから元の画像を復元することはできません。
システムは取得したテンプレートを参照テンプレートと比較し、類似度を計算します。値が設定されたしきい値を超えると、認証は成功と見なされます。しきい値は利便性とセキュリティのバランスを決定します。低いしきい値はFalse Acceptance Rateを増加させ、高いしきい値はFalse Rejection Rateを増加させます。モバイルデバイスの場合、一般的なしきい値はFAR 0.001%、FRR約2%に設定されています。
モバイルデバイスは、精度、速度、偽造耐性が異なる複数の種類の生体認証センサーをサポートしています。それぞれの種類に独自の適用分野とセキュリティレベルがあります。
モバイルデバイスで最も一般的な生体認証のタイプです。静電容量式スキャナーは、皮膚の隆線と谷間の電位差に基づいて乳頭パターンの画像を作成します。Galaxy S10で初めて採用された超音波スキャナーは、音波を使用して指紋の3D再構築を行います。濡れた指でも動作し、シリコン製の偽造指にも耐性があります。
2つのアプローチがあります。2Dカメラ(単純なフロントカメラ)と3Dスキャン(構造化光またはToF)です。Apple Face IDは、ユーザーの顔に30,000以上の赤外線ドットを投影し、正確な3Dマップを作成します。Neural Engine上のアルゴリズムはミリ秒単位でデータを処理し、ひげ、メガネ、ヘアスタイルなどの外見の変化に適応します。
目の虹彩は最も安定した生体認証特性の1つで、年齢とともにほとんど変化せず、指紋のように怪我の影響も受けません。Samsung(Galaxy S8〜S10)の虹彩スキャナーはIRカメラを使用して、虹彩の最大240の固有特性を分析します。これらのシステムのFARは0.0001%未満ですが、キャプチャ速度は顔スキャナーより遅くなります。
音声生体認証は、声道の物理的特性(基本周波数、フォルマント、音色)を分析します。この技術は、音声アシスタント(SiriやGoogle Assistant)で特定のユーザーを認識するために使用されています。主な欠点は、周囲の騒音に対する感度と、攻撃者による音声録音の可能性です。
Android 9(API 28)以降、Googleはデバイス上のすべての種類の生体認証センサーを抽象化する統一BiometricPrompt APIを提供しています。開発者は指紋スキャナーと顔認識で別々のコードを書く必要はありません。BiometricPromptが利用可能なセンサーを自動検出し、標準のダイアログを表示します。
val executor = ContextCompat.mainExecutor(context)
val biometricPrompt = BiometricPrompt(activity, executor,
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(
result: BiometricPrompt.AuthenticationResult
) {
// アクセス許可 — コンテンツを表示できます
binding.showContent()
}
override fun onAuthenticationFailed() {
// 生体認証が認識されませんでした — ユーザーに通知
binding.showError("指紋が認識されませんでした")
}
override fun onAuthenticationError(
errorCode: Int,
errString: CharSequence
) {
// 回復不能なエラー — 生体認証が利用できません
binding.showFallback()
}
}
)
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("アプリにサインイン")
.setSubtitle("指紋で本人確認")
.setNegativeButtonText("PINを使用")
.build()
biometricPrompt.authenticate(promptInfo)
上記のコードは、BiometricPromptを使用した完全な生体認証サイクルを示しています。onAuthenticationSucceededコールバックは、Trusted Execution Environmentでのテンプレート検証成功後に呼び出されます。生体認証センサーのないデバイスでは、BiometricPromptが自動的にPINまたはパターン入力画面を表示するため、開発者はこのシナリオを個別に処理する必要はありません。
重要なセキュリティ要件として、すべての生体認証操作はTEE(Trusted Execution Environment) — プロセッサのハードウェア分離領域 — で実行される必要があります。Android BiometricPromptは、BiometricManager.Authenticators.BIOMETRIC_STRONGプロバイダーを通じてTEEの使用を保証し、ユーザー空間からの改ざんは不可能です。
生体認証はパスワードに比べて大きな利点を提供しますが、アプリケーションのセキュリティを設計する際に開発者が考慮すべき基本的な制限もあります。
重要な制限として、生体認証は意図の証明にはなりません。ユーザーは物理的にまたは強制されてデバイスのロック解除を強いられる可能性があります。そのため、バンキンググレードのアプリケーション(PSD2、PCI DSS)の規制当局は多要素認証を要求しており、生体認証はその1つの要素としてのみ機能します。
生体認証テンプレートの安全性は、ハードウェア保護メカニズムによって確保されています。iOSのSecure EnclaveとAndroidのTrusted Execution Environment(TEE)です。これらの分離されたコプロセッサは、メインプロセッサやオペレーティングシステムからのアクセスなしで、生体データのキャプチャ、処理、比較操作を実行します。
重要なセキュリティ原則は、元のサンプルを保持しないことです。センサーは指紋画像や顔写真ではなく、特徴の数学的表現のみをTEEに渡します。Android 13+では、BiometricPrompt APIがTEE内部で生成された暗号鍵で認証結果をさらに暗号化します。このアプローチにより、サーバーからの生体データベースの盗難は無意味になります。攻撃者は暗号化されたテンプレートのみを入手し、元のデータは取得できません。
国際規格ISO/IEC 24745:2022およびFIDO2は、生体認証ストレージの要件を規定しています。元の画像を保存してはならず、テンプレートは不可逆的に変換され、センサーと比較モジュール間のデータチャネルはハードウェア保護される必要があります。モバイルアプリケーション開発時には、生体認証トランザクションのエンドツーエンド暗号化を保証するプロトコルであるFIDO2 WebAuthnの使用が推奨されます。
よくある質問
指紋、顔、声、虹彩などのユニークな身体的特徴を使ってデバイスやアプリケーションにログインすることです。パスワードを入力する代わりに、ユーザーがスキャナーに指を置いたりカメラを見たりすると、システムが認識してアクセスを許可します。
主な種類は、静電容量式および超音波式の指紋スキャナー、3D顔認識(Face ID、Windows Hello)、虹彩スキャナー、音声アシスタント向けの音声生体認証です。低価格デバイスでは、フロントカメラによる2D顔認識も見られます。
Face IDは30,000の赤外線ドットを持つ3D顔マップを使用するため、写真やマスクに耐性があります。指紋スキャナーは乳頭パターンを分析します。Face IDのFARは約0.0001%、Touch IDは約0.001%です。Face IDは非接触シナリオでより便利ですが、約0.5秒遅くなります。
はい、ただし難易度はセンサーの種類によって異なります。単純な2D顔スキャナーは写真でだまされる可能性があります。超音波指紋スキャナーとFace IDは、ハードウェア手段によって偽造やマスクから保護されています。3Dセンサーを回避するには高価なシリコンレプリカが必要であり、そのような攻撃は一般ユーザーにとって経済的に非現実的です。
iPhoneではSecure Enclaveに、AndroidではTEE(Trusted Execution Environment) — メインのOSやアプリケーションからアクセスできないハードウェア分離プロセッサ — に保存されます。元の画像は保存されず、2〜20KBの数学的特徴テンプレートのみが保存され、そこから元の指紋や顔を復元することはできません。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。