指紋認証とは — 仕組みと応用

著者: IT Sectr 公開日: 2026-04-05 読了時間: 9 分

指紋認証は、指先の独自の乳頭パターンを使用してユーザーの身元を確認する生体認証方法です。この技術はモバイルデバイスのセキュリティ標準となり、低価格AndroidスマートフォンからSamsungやGoogle Pixelのフラッグシップモデルまで幅広く採用されています。Counterpoint Research(2025)によると、2025年に発売されたスマートフォンの85%以上に内蔵の指紋スキャナーが搭載されています。

主要ポイント

  • 指紋認証は、指の皮膚の独自の隆線と谷間である乳頭パターンを分析する生体認証方式です
  • 静電容量式スキャナーは最も一般的な方式で、皮膚の隆線と谷間の電位差を読み取ります
  • 超音波式スキャナーはFAR 0.001%の3Dセンサーで、濡れた指でも動作し、シリコン製の偽造指にも耐性があります
  • 光学式スキャナーはLED照明とCMOSセンサーを備えた低コストの選択肢で、精度は低く高品質な写真によるなりすましのリスクがあります
  • FingerprintManagerは指紋スキャナーを操作するAndroid APIです(API 28以降はBiometricPromptが推奨)

指紋認証とは?

指紋認証は、指の表面の独自の乳頭パターンを分析してユーザーの身元を確認する生体認証方式です。各個人には胎生12週目に形成され、物理的な損傷を除いて生涯変化しない独自の隆線と谷間のパターンがあります。

指紋は、目の虹彩や網膜パターンと並んで、自動識別に最も信頼性が高いと認められている3種類の生体特徴の1つです。乳頭線は特徴的な細部(特徴点)を形成します:終端点、分岐点、点、交差などです。指紋の独自性は、スキャン領域内の40~100個の特徴点の位置と種類によって決まり、異なる2人の人物が一致する数学的確率は640億分の1です。

最初の自動指紋識別システム(AFIS)は1970年代に法執行機関向けに登場しました。民生用デバイスへの大量採用は2013年のiPhone 5SとTouch IDから始まりました。現在では、スマートフォン、ノートパソコン、タブレット、ドアロック、決済端末に指紋スキャナーが搭載されています。

指紋スキャナーの仕組み

センサーの種類に関わらず、指紋認証プロセスは3つの段階から構成されます:画像取得、処理と特徴抽出、参照テンプレートとの照合です。各段階は、実装に応じてOSレベルまたはTrusted Execution Environmentレベルで実行できます。

指紋画像の取得

センサーが指の物理的なパターンを取得します。静電容量式アレイは、隆線(アレイに接触)と谷間(非接触)の間の電位差を読み取ります。光学式スキャナーはLED照明で指を照らし、CMOSセンサーで反射光を捉えます。超音波センサーは音波を発信し、皮膚のさまざまな深さから反射するエコーを分析します。これにより指の表面の汚れに強い3次元画像が得られます。

特徴点抽出とテンプレート作成

取得した画像はフィルタリング(ノイズ除去、コントラストの正規化、2値化)を経ます。アルゴリズムが乳頭隆線を特定し、細線化(1ピクセル幅にまで細める)した後、特徴点(線の終端と分岐点)を見つけます。各特徴点は座標(x, y)、方向角度、種類で記述されます。数学的テンプレートのサイズは2~10KBで、元の画像は含まれず、指紋を再現することはできません。

照合と判定

スキャン時に得られたテンプレートを、登録時に保存された参照テンプレートと照合します。アルゴリズムは一致する特徴点の数を計算します。認証成功には最低12~15個の特徴点の一致が必要です(メーカーが調整可能)。一致点数がしきい値を超えると認証成功とみなされます。モバイルデバイスでは、FARが0.001%を超えず、FRRが約2%になるようしきい値が設定されています。

指紋スキャナーの種類

現代のモバイルデバイスでは、読み取り技術、精度、製造コストが異なる3つの主要な指紋スキャナーが使用されています。方式の選択はデバイスの価格帯とセキュリティ要件によって決まります。

スキャナーの種類動作原理FAR搭載デバイス例
静電容量式隆線と谷間の静電容量の差を読み取るコンデンサアレイ0.001%iPhone(Touch ID)、Samsung Galaxy S9、Google Pixel 3
光学式LED照明+CMOSセンサー、指表面からの反射光を取得0.01%Xiaomi Redmi、Realme、低価格Androidスマートフォン
超音波式圧電トランスミッター+レシーバー、エコー信号から3D再構成0.0005%Samsung Galaxy S10+、Galaxy S21 Ultra、ディスプレイ内蔵型スキャナー

2025~2026年には、OLED画面の直下に統合されたディスプレイ内蔵型(in-display)スキャナーが普及しています。光学式(低価格帯)と超音波式(プレミアム帯)があります。利点は、本体に独立したボタンや領域が不要で、ベゼルレスディスプレイを実現できることです。光学式ディスプレイ内蔵スキャナーの欠点は、強い日光が画面のピクセルを通してCMOSセンサーを飽和させる脆弱性です。

指紋認証と顔認識の比較

指紋認証と顔認識は、モバイルデバイスにおける2大生体認証技術です。それぞれに長所と短所があり、特定の使用シナリオでの選択に影響します。

  • 精度(FAR) — 超音波式指紋スキャナー:0.0005%、3D Face ID:0.0001%。深度カメラを使用する場合、顔認識の方が正確
  • 速度 — 静電容量式スキャナー:200~300ms、光学式:400~600ms、3D顔認証:600~1000ms。静的なシナリオでは指紋の方が高速
  • 非接触 — Face IDや2D顔認証はデバイスに触れる必要がないが、指紋はスキャナーとの物理的接触が必要
  • 条件 — 指紋は濡れた指では動作しないが、マスクや手袋では動作する。Face IDはマスク装着時(Apple Watchなし)やIRカメラが遮られた場合に動作しない
  • センサーコスト — 静電容量式スキャナー:約0.5~1.5ドル、超音波式:約3~5ドル、3D TrueDepthカメラ:約12~15ドル

モバイルアプリ開発者にとって重要なのは、AndroidのBiometricPromptとiOSのLocalAuthenticationがセンサーの種類を抽象化していることです。ただし、古いAndroidデバイス(API 28未満)ではFingerprintManagerしか利用できない場合があります。その場合、アプリは明示的にセンサーの種類を確認し、代替認証方法を提供する必要があります。

Androidでの指紋認証の実装

Android 9(API 28)より前では、指紋スキャナーを統合する唯一の方法は、API 23で追加されたFingerprintManagerクラスでした。Android 9以降、Googleはすべての種類の生体センサーを統一的に扱うBiometricPromptの使用を推奨しています。ただし、API 23~27のデバイスでは、開発者は依然としてFingerprintManagerを必要とする場合があります。

kotlin
class FingerprintAuthHelper(
    private val context: Context
) {
    private val manager =
        context.getSystemService(Context.FINGERPRINT_SERVICE)
            as FingerprintManager?

    fun isFingerprintAvailable(): Boolean {
        return manager?.isHardwareDetected() == true
            && manager?.hasEnrolledFingerprints() == true
    }

    fun authenticate(callback: FingerprintManager.AuthenticationCallback) {
        if (isFingerprintAvailable()) {
            manager?.authenticate(
                null,
                CancellationSignal(),
                0,
                callback,
                null
            )
        }
    }
}

// 使用方法:
val helper = FingerprintAuthHelper(context)
helper.authenticate(object : FingerprintManager.AuthenticationCallback() {
    override fun onAuthenticationSucceeded(
        result: FingerprintManager.AuthenticationResult
    ) {
        // 指紋が認識されました — アクセス許可
        binding.showContent()
    }

    override fun onAuthenticationFailed() {
        binding.showError("指紋が認識されませんでした")
    }
})

上記のコードは、古いAndroidデバイス向けにFingerprintManagerを使用した完全な認証サイクルを示しています。FingerprintManagerはデフォルトではTEEを使用せず、認証結果がユーザースペースに返されるため、BIOMETRIC_STRONGフラグを使用するBiometricPromptよりも安全性が低いことに注意が必要です。新しいプロジェクトでは常にBiometricPromptを使用し、FingerprintManagerはAPI 23~27との下位互換性のためだけに使用すべきです。

FingerprintManagerからBiometricPromptに移行する際は、セキュリティモデルの変更を考慮してください。BiometricPromptはすべての生体認証操作がTEE(Trusted Execution Environment)で実行されることを保証します。TEE内部の暗号鍵で署名された認証結果は、ユーザースペースコードから偽造できません。AndroidX Biometricライブラリはさらに、生体認証を暗号操作(鍵暗号化やデータ署名)にバインドするためのBiometricPrompt.AuthenticationResult.getCryptoObject()インターフェースを提供します。

セキュリティ基準と偽造防止

指紋の偽造防止は、スキャナーメーカーにとって主要な課題の1つです。最新のセンサーは、ライブネス検出と偽造指のブロックにハードウェアとアルゴリズムの両方の手法を組み合わせて使用しています。各手法には限界がありますが、総合することで大量攻撃に対する偽造を経済的に非現実的なものにしています。

主な保護手法には以下が含まれます:皮膚深度分析(超音波スキャナーがエコー戻り時間で表皮の厚さを測定)、皮膚のスペクトル分析(光学スキャナーが異なる波長での皮膚の反射率を評価 — シリコンとゼラチンは異なるスペクトルを持つ)、脈拍検出(指の毛細血管内の血流の微小振動)、電位差検証(生きた皮膚は合成素材とは異なる特定の電気インピーダンスを持つ)。

ISO/IEC 30107-3:2023規格は、生体認証システムのプレゼンテーション攻撃検出(PAD)に対する耐性レベルを定義しています。金融アプリケーションには、レベル2(PAD Level 2)が推奨され、FARが0.01%以下の状態で、偽造指を使用した攻撃の少なくとも95%を自動検出することが求められます。SamsungとQualcommの3D Sonic Sensor超音波スキャナーはPAD Level 2の要件を満たしていますが、低価格の光学式スキャナーは通常、Level 1以上の認証を通過しません。

よくある質問

静電容量式スキャナーと超音波式スキャナーの違いは?

静電容量式スキャナーは皮膚の隆線と谷間の電位差で指紋を読み取ります — 乾いた清潔な指でのみ動作します。超音波式スキャナーは音波を発信し、反射エコーから3次元マップを構築します — 汚れ、水、薄い手袋も透過し、より高い精度を提供します。

最も信頼性の高い指紋スキャナーの種類は?

超音波式スキャナーは3次元スキャンとFAR 0.0005%により最も信頼性が高いと考えられています。濡れた指、シリコン製偽造指、汚れに強いです。静電容量式スキャナーは精度は低い(FAR 0.001%)ものの、高速で低コストです。光学式スキャナーは最も信頼性が低く(FAR最大0.01%)、透明フィルムに印刷された高品質の指紋で騙される可能性があります。

指紋は銀行取引に使用できますか?

はい、ただし制限があります。規制当局PSD2とPCI DSSは多要素認証を要求しています。指紋は1つの要素(あなた自身)に過ぎません。支払いの承認には、第2の要素としてPINコードやワンタイムパスワード(あなただけが知っているもの)も必要です。Apple Payでは、Secure Enclaveを介して取引に署名するために指紋が使用されます。これはStrong Customer Authentication(SCA)の要件を満たします。

指紋が傷ついた場合はどうすればよいですか?

切り傷、火傷、皮膚の剥離などの場合、指紋が一時的に認識されないことがあります。その場合、デバイスは代替認証方法としてPINコードまたはパスワードを要求します。皮膚が治癒した後は、設定で古い指紋を削除し、新しい指紋を登録することをお勧めします。Androidデバイスでは、バックアップ用に複数の指を登録することもできます。

デバイスに指紋を保存するのは安全ですか?

はい。最新のデバイスは指紋画像ではなく、ハードウェア分離領域(TEEまたはSecure Enclave)に数学的テンプレートを保存します。テンプレートはチップに組み込まれた鍵で暗号化され、OSやアプリケーションから読み取ることはできません。Android 9+では、BiometricPromptがすべての生体認証操作をTEE内で実行し、結果に暗号署名を付けることを保証します。

まとめ

  • 指紋認証は乳頭パターンに基づく識別方式で、FARは0.0005%(超音波式)から0.01%(光学式)
  • 3種類のスキャナー — 静電容量式(高速、低コスト)、光学式(低価格、低精度)、超音波式(高信頼性、高コスト)
  • ディスプレイ内蔵型スキャナー — ベゼルレスデバイスのOLED画面下に光学式または超音波式センサーを配置する最新トレンド
  • FingerprintManager — API 23~27向けの旧Android API。新規プロジェクトではTEE保証のあるBiometricPromptを使用
  • ISO/IEC 30107-3 — 生体認証システムのプレゼンテーション攻撃検出(PAD)の国際規格
  • ライブネス検出 — 生きた指とシリコン製偽造指を区別するための深度分析、皮膚スペクトル、脈拍検出
  • 多要素認証 — PSD2およびPCI DSSの要件に従い、銀行グレードのアプリケーションでは指紋をPINコードと組み合わせる必要あり

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください