指紋認証は、指先の独自の乳頭パターンを使用してユーザーの身元を確認する生体認証方法です。この技術はモバイルデバイスのセキュリティ標準となり、低価格AndroidスマートフォンからSamsungやGoogle Pixelのフラッグシップモデルまで幅広く採用されています。Counterpoint Research(2025)によると、2025年に発売されたスマートフォンの85%以上に内蔵の指紋スキャナーが搭載されています。
主要ポイント
指紋認証は、指の表面の独自の乳頭パターンを分析してユーザーの身元を確認する生体認証方式です。各個人には胎生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大生体認証技術です。それぞれに長所と短所があり、特定の使用シナリオでの選択に影響します。
モバイルアプリ開発者にとって重要なのは、AndroidのBiometricPromptとiOSのLocalAuthenticationがセンサーの種類を抽象化していることです。ただし、古いAndroidデバイス(API 28未満)ではFingerprintManagerしか利用できない場合があります。その場合、アプリは明示的にセンサーの種類を確認し、代替認証方法を提供する必要があります。
Android 9(API 28)より前では、指紋スキャナーを統合する唯一の方法は、API 23で追加されたFingerprintManagerクラスでした。Android 9以降、Googleはすべての種類の生体センサーを統一的に扱うBiometricPromptの使用を推奨しています。ただし、API 23~27のデバイスでは、開発者は依然としてFingerprintManagerを必要とする場合があります。
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内で実行し、結果に暗号署名を付けることを保証します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。