指紋認識は、極めて安全な認証方法であると考えられています。指紋センサーを騙す様々な方法がSNSなどで紹介されることがありますが、どの方法も、結局のところ、シリコンパッドを使用するか、導電性インクの印刷物を使用するなど、携帯所有者の指を物理的に模倣することを目的としています。そのためには、どんな指でもいいわけではなく、システムに登録された指の高画質画像を手に入れる必要があります。
一言で言えば、これらすべての方法には現実世界では手間がかかるものばかりです。しかし、純粋なデジタルの世界とその恩恵から離れることなく、何らかの方法でよりエレガントに指紋認証をハッキングすることは可能でしょうか?実は、中国の研究者Yu Chen氏とYiling He氏は最近、指紋で保護されたほぼすべてのAndroidのスマホに、総当たり攻撃を仕掛ける方法についての研究を発表しました。彼らはこの攻撃をBrutePrint(ブルートプリント)と呼んでいます。
指紋はなぜ一人一人違うのか
今回発表された内容を検証する前に、背景理論について簡単に説明します。まず、指紋は人それぞれユニークで、生まれてから死ぬまで指紋の形状は生涯変わりません。
さかのぼること1892年、イギリスの科学者フランシス・ゴルトン卿は、「指紋”(Finger Prints)」というタイトルの論文を発表しました。指紋に関する当時の科学データを分析した彼の研究は、鑑識において指紋を実用化するための基礎理論となりました。
とりわけゴルトン卿は、指紋の一致確率が「236未満、つまり約640億分の1」であると計算しました。法医学の専門家は、今でもこの数字を使用しています。
ちなみに、本格的な解剖学や、指紋の独自性の背後にある生物学的要因に興味がある場合は、このテーマに関する新しい研究論文をご覧ください。
指紋センサーはどの程度信頼できるのか
しかし、ゴルトン卿の研究とそこから生まれたものは、(暖かい)アナログ世界に関するもので、例えば指紋の採取や、犯罪現場に残された指紋とボブおじさんのものとの照合などです。しかし、(冷たい)デジタル現実では少々事情が異なります。デジタル指紋の品質は、センサーの種類、そのサイズと解像度、そして、少なからず「画像」の後処理と照合アルゴリズムなど、複数の要因に左右されます。
開発者は、デバイスをなるべく安い購入価格にしなければならないうえ(そうでないと誰も買いません)、瞬時の認証を実現しなければなりません。さもなければ時間がかかるという苦情に悩まされます。そしてユーザーの信頼を損なわないために、エラーをなるべく回避しなければなりません。これらを考慮すると、認証システムはあまり正確ではなくなってしまいます。
そのため、スマホに使用されるセンサーの場合、一部の指紋が一致する確率については、有名な640億分の1とは決して言えない数字であることが想像できます。たとえば、AppleはTouch IDの確率を50,000分の1と見積もっています。したがって、予算に優しいセンサーモデルの場合、確率はさらに高くなると想定できます。
これにより、指紋認証の確率は、数十億分の一から数千分の一になります。これは総当たり攻撃を実行すれば成功する可能性があることを意味します。したがって、潜在的なハッカーが攻撃を成功させるには、指紋認識の試行回数の制限という障壁だけ乗り越えればよいのです。通常、指紋認証の試行回数は5回までで、その後は指紋認証のロックアウト期間があります。
犯罪者はこの障害を突破できるのでしょうか?Yu Chen氏とYiling He氏は、このような攻撃が成功する可能性を指摘しています。
BrutePrint:指紋保護されたAndroidスマホに対する総当たり攻撃の準備
リサーチャーは、Androidスマホの一般的な指紋センサー実装に欠陥があることを前提にしています。テストされたモデルのいずれも、センサーとシステム間の通信チャネルを暗号化していませんでした。これにより、認証システムに対する中間者攻撃(Man-in-the-middle attack, MITM)を仕掛けることができます。デバイスが、マザーボードのSPIポートを介してスマホに接続されている場合、指紋センサーからの受信メッセージを傍受したり、指紋センサーをエミュレートして自分のメッセージを送信したりすることができます。
研究者らは、そのようなデバイス(疑似センサー)を構築し、スマホのセンサー画面を自動クリックするためのガジェットを追加しました。したがって、ハードウェアコンポーネントの部分は、複数の指紋画像を自動モードでスマホに送信するように設定されました。
そこから、研究者らは総当たり攻撃用の指紋サンプルの準備を進めました。彼らはデータベースのソースを明らかにしておらず、攻撃者がどのように入手するかについては一般的な推測(研究コレクション、漏えいデータ、独自のデータベース)にとどめています。
次のステップとして、指紋データベースがAIに送信され、総当たり攻撃のパフォーマンスを最大化するための指紋辞書のようなものが生成します。指紋画像は、研究に使われたスマホにインストールされているセンサーによって生成されたものと一致するようにAIによって調整されました。
BrutePrintの根底にある2つの脆弱性:Cancel-After-Match-FailとMatch-After-Lock
BrutePrint攻撃は、2つの脆弱性を悪用しています。研究者たちは、見たところどのAndroidスマートフォンにも例外なく搭載されている指紋認証フレームワークの基本ロジックにおいて脆弱性を発見しました。この脆弱性は「Cancel-After-Match-Fail」と「Match-After-Lock」と呼ばれています。
Cancel-After-Match-Fail脆弱性
Cancel-After-Match-Fail(CAMF)は、指紋認証メカニズムの2つの重要な機能を悪用します。一つ目は、マルチサンプリングに依存しているという事実です。つまり、各認証試行では1つだけではなく、一連の2~4つの指紋画像(スマホのモデルに応じて)が使用されます。二つ目は、認証の試行は失敗するだけでなく、エラーが発生する可能性もあり、この場合は最初に戻ることになるという事実です。
これにより、エラーをトリガーするために事前に編集されたフレームで終わる一連の画像を送信できます。したがって、一連の画像の1つが一致をトリガーすると、認証が成功します。そうでない場合、サイクルはエラーで終了し、その後、貴重な試みを無駄にすることなく新しい一連の画像を送信することができます。
Match-After-Lock脆弱性
二つ目の脆弱性はMatch-After-Lock(MAL)です。指紋認証ロジックでは、失敗した後にロックアウトされる期間が設けられていますが、多くのメーカーは、Androidバージョンにこの機能を正しく実装できていません。そのため、ロックアウトモードで指紋認証を成功させることはできませんが、新しい画像を送信し続けることができ、システムはそれに対して「true」または「false」の正直な回答を返します。つまり、正しい画像が検出されると、ロックアウトされた状態から出た直後にそれを使用して、認証を成功させることができます。
Cancel-After-Match-FailおよびMatch-After-Lockを悪用した攻撃
一つ目の脆弱性を悪用した攻撃は、テストされた純正のAndroidを搭載したすべてのスマホで成功しましたが、何らかの理由でHarmonyOSでは機能しませんでした。Match-After-Lockは、vivoとXiaomiのスマホ、およびHarmonyOSを搭載したHuaweiの両機種において機能しました。
研究に参加したすべてのAndroidおよびHarmonyOSスマートフォンは、記載されている攻撃の少なくとも1つに対して脆弱であることが判明しました。これは、それらすべてが悪意のある指紋認証の試行を無制限に許可したことを意味します。
研究では、指紋が1つだけ登録されているAndroidスマホの認証システムをハッキングするのに2.9時間から13.9時間かかりました。しかし、特定のモデルで指紋の登録数が最大限のスマートフォン(Samsungの場合は4つ、その他のすべての場合は5つ)では、時間は大幅に短縮され、ハッキングにかかる時間は0.66時間から2.78時間になりました。
iPhoneは安全なのか
iPhoneで採用されているTouch IDシステムは、BrutePrint攻撃に対してより耐性があることが判明しました。調査によりますと、iPhoneの主な利点は、指紋センサーとシステムの他の部分との間の通信が暗号化されていることです。したがって、Touch IDを搭載したデバイス上で準備された指紋を傍受したり、システムに送信したりする方法はありません。
一方でこの研究では、iPhoneは指紋認証の試行回数を最大化するための操作に対して部分的に脆弱である可能性を指摘しています。ただし、これは悪いことではありません。Androidは、試行回数を延々と増やすことができますが、iPhoneでは5回から15回までしか増やすことができません。
そのため、iOSユーザーは安心してください。Touch IDは、AndroidとHarmonyOSの両方で使用されている指紋認証よりもはるかに信頼性が高いと言えます。それに加えて、現在ではほとんどのiPhone機種がFace IDを使用しています。
BrutePrint攻撃の危険性
単刀直入に言えば、BrutePrint攻撃が、主要な脅威になる可能性は低いといえます。そのため、Androidユーザーはそれほど心配する必要はありません。それはなぜか、理由を説明します。
- BrutePrint攻撃にはデバイスへの物理的なアクセスが必要です。この要因だけで、この攻撃は発生する可能性が大幅に低くなります。
- さらに、攻撃を実行するには、デバイスを開いてマザーボード上の特定のコネクタを使用する必要があります。ユーザーに気づかれずにそれを行うのは容易ではありません。
- 攻撃には数時間単位の相当な時間がかかります。
- そしてもちろん、BrutePrintには、カスタム機器、指紋データベース、訓練されたAIなど、ハードウェアとソフトウェアの両方に関して、独特のセットアップが必要です。
これらの要因を組み合わせる、起業家精神を持った人々が研究に基づいて使いやすい商用製品を開発しない限り、そのような攻撃が現実的になる可能性は極めて低いと考えられます。
AndroidをBrutePrint攻撃から保護する方法
現段階ではBrutePrint攻撃の被害に遭う可能性は低いという結論に至りましたが、身を守るためのヒントをいくつか紹介します。
- できるだけ少ない指紋(理想的には1つだけ)を登録しましょう。認証に使用する指の数が増えるほど、システムは前述の戦術や他の攻撃に対して脆弱になります。
- このオプションがあるアプリには、追加のPINまたはパスワード保護を使用することを忘れないでください。
- ちなみに、Kaspersky for Android有料版のAppLock機能を使用すると、アプリごとに別々のパスワードを使用できます。