Logo ja.androidermagazine.com
Logo ja.androidermagazine.com

Androidはどのように指紋を保存しますか?

Anonim

指紋センサーなしのiPhoneのリリースは、認証に指紋を使用することと、データがどのように安全に保存されるかについての話をもたらしました。 すごい。 あなたがそれがどのように行われているのか心配していなくても、心配する必要のない方法でそれが行われるように、他の多くの人々が心配する必要があります!

まず第一に、Appleは同様のソリューションを使用します。指紋センサー付きの古いモデルを使用している場合、以前と同じように安全に使用できます。 同じことは、以前のマシュマロを発売し、サムスン独自の方法を使用した古いサムスンの携帯電話にも当てはまります。

Googleが指紋データを保存する方法は、現在の技術で可能な限り最も安全な方法です。 また、一度見てみると、全体の概要がどれほどシンプルであるかが魅力的です。 シンプルで安全なことは、常に勝利の組み合わせです。

ストレージは、その性質上、あまり安全ではありません。 ポストイットのメモに何かを書いてファイルキャビネットに入れるのと同じことです。 そこにある必要があるからです。あなたができる最善のことは、誰がそれにアクセスできるかを制御することです。 ファイルキャビネットの場合はロックを使用し、電話の場合は暗号化を使用します。 指紋データの場合、物事はさらに一歩進んでいます:Trusted Execution Environment(TEE)。

TEEは、電話機のハードウェア内の独立した分離領域です。 TEEは独自のプロセッサとメモリを使用するか、メインCPU上の仮想化されたインスタンスを使用できます。 どちらの場合も、TEEはハードウェアで保護されたメモリと入出力保護を使用して完全に分離および絶縁されます。 TEEで許可された場合にのみ取得できますが、取得することはありません。 電話機がルート化されているか、ブートローダーのロックが解除されている場合でも、TEEは分離されており、そのままです。

独自のメモリとオペレーティングシステムを備えた別のプロセッサを使用して、指紋データを分析および保存します。

Googleは、Trusty TEEと呼ばれるものを使用してこれをサポートしています。 Trusty OSという適切な名前の非常に小さく効率的なオペレーティングシステムがTEEハードウェア上で実行され、カーネルドライバーがシステムとの通信を可能にします。 開発者が使用するAndroidライブラリ(ご想像のとおり、Trusty API)があり、TEEに対して「はい」または「いいえ」の質問を尋ねることができます。 TEEには指紋データだけが保存されるわけではありません。 DRMキーやメーカーのブートローダー暗号化キーなどもTEEに存在し、指紋データと同じように機能します。アプリケーションから提示されたデータが、保存している既知の良好なデータと一致するかどうかを答えます。

他のメーカーはTrusty OSを使用するか、別のシステムを使用できます。 すべての基準が満たされ(以下にリストされている)、TEEが分離され、絶縁されている限り、Pixel Imprint(以前のNexus Imprint)を使用するために必要なセキュリティ基準を満たします。

ARM TrustZone TEEブロック図。

Androidスマートフォンに指紋を登録すると、センサーはスキャンからデータを取得します。 Trusty OSは、TEE内でこのデータを分析し、検証データのセットと暗号化された指紋テンプレートの2つを作成します。 これは、ジャンクデータを解読するキーも持っているTEEを除くすべてのジャンクデータのようです。 この暗号化された指紋テンプレートは、TEEまたは携帯電話の暗号化されたストレージの暗号化されたコンテナに保存されます。 3つの暗号化レイヤーは、データを取得することはほぼ不可能であることを意味し、たとえそれを解読する方法がなければ役に立たないこともあります。

Androidでは、指紋データを一意のキーで保護する必要があります。別の電話に持ち込んだり、別のユーザーに再利用したりすることはできません。

検証データはTEE内に保存されます。 スキャナーに指を置いて何かをしようとすると、スキャナーはデータのプロファイルを作成します。 Trusty APIを通じて、関連するアプリケーションはカーネルにTEEに正しいかどうかを尋ねます。 TEEは、個別のプロセッサとメモリを使用して、保存された検証データをチェックし、十分なデータが一致する場合、yesと言います。 一致するデータが十分にない場合、noと表示されます。 この成功または失敗の応答は、結果を確認するためにAPIが読み取れるソフトウェアトークンとしてカーネルに返されます。

TEE自体はスタンドアロンOSとハードウェアを使用してセキュリティを確保していますが、指紋テンプレートはソフトウェアベースの暗号化を使用しています。 有効にするには、非常に特定のキーで署名する必要があります。 このキーは、デバイス固有の情報、ユーザー固有の情報、および時間固有の情報を使用して作成されます。 つまり、ユーザーを削除したり、デバイスを変更したり、指紋を再登録しようとすると(システムは既存の指紋を上書きしているかどうかを確認できます)、キーは認識されなくなり、指紋の解読に使用できなくなりますテンプレート。

指紋センサー付きのAndroid携帯電話を製造するすべての企業が従う必要がある基本的なルール:

  • すべての指紋データ分析はTEE内で実行する必要があります
  • 指紋に関連付けられているすべてのデータは、TEEまたは信頼できるメモリ(メインCPUからも見えないメモリ)に保存する必要があります
  • 指紋プロファイルデータは、暗号化された電話ストレージに保存されている場合でも自己暗号化する必要があります
  • ユーザーアカウントを削除するには、そのユーザーの指紋に関連付けられているデータを安全に消去する必要もあります。
  • 指紋プロファイルが保存される場所は、アプリケーション、プロセス、またはルートユーザーを含むユーザーに表示されてはなりません。
  • あらゆる種類の指紋データを、クラウド、コンピューター、またはアプリケーションを含む他のソースにバックアップしてはいけません
  • 指紋認証は、それを要求したプロセスで使用する必要があります(指紋データを共有せず、正しいかどうかを確認するためのyesまたはnoの回答だけでも)

明確な標準仕様がいくつかある場合、それらを満たすことは難しくありません。 これにより、指紋データを使用しているAndroidスマートフォンが安全に保存され、他のシステムプロセスやアプリがアクセスできなくなります。 暗号化、特にハードウェアを使用した暗号化が進化するにつれて、指紋データを安全に保つこの方法も進化します。 Android Zがリリースされたら振り返って、どのくらい進んでいるかを見るのは面白いでしょう。