web-dev-qa-db-ja.com

スマートフォンのセキュアエレメントを使用することで、実際にバンキングアプリにセキュリティ上のメリットがありますか?

私の銀行のAndroidアプリケーションでは、物理的なトークンジェネレーター(ATMカードを挿入して有効なPIN提供されます)通常、銀行のWebインターフェイスを使用するときに必要になりますが、これは、暗号化キーなどを格納できるハードウェアSecure Elementが付属する電話でアプリを使用する場合にのみサポートされます。

セキュアエレメントのないデバイスはキーをメモリまたは永続ストレージに保存する必要があるため、同じデバイスにインストールされたマルウェアによる攻撃に対して脆弱であるため、当初、これは私にとって良い決定のように思われました。

ただし、これを考えると、Secure Elementを使用すると実際には1つ残されるという印象を受けましたソフトウェアでキーを保護する場合よりも、これらの攻撃に対して脆弱です;次の2つのアプローチを比較してください。

  • システムはオペレーティングシステムに依存してキーへのアクセスを制限します。他のアプリはユーザーランドにいる間はそれらにアクセスできませんが、攻撃者がデバイスへのrootアクセスを獲得した場合、キーを盗み、必要なものに署名または暗号化できます。銀行アプリのふりをする。これにより、トランザクションを偽造することができます。
  • システムはSEにキーを格納し、オペレーティングシステムに依存してこのハードウェアへのアクセスを制限します。他のアプリはユーザーランドにいる間はそれらにアクセスできませんが、攻撃者がルートアクセスを取得した場合彼らは署名するように指示できますそして、彼らが望むものは何でも暗号化する、銀行アプリのふりをする。これにより、トランザクションを偽造することができます。

このため、この目的でハードウェアチップを使用することは、私にとっては無意味なようです。機密性の高い資料の保存に依存する同様のアプリケーションについても同様です。

ここで何か不足していますか? セキュアエレメントがこのバンキングアプリに明確なセキュリティ上の利点を提供し、それを強制することを合理的にする状況はありますか?

8
AardvarkSoup

したがって、どちらのシナリオも、攻撃者が電話にrootアクセスできることを前提としています。セキュリティに関しては、攻撃者がrootアクセス権を持つとゲームオーバーになると一般的に考えられています。そうは言っても、あなたの質問についてはまだ興味深いことが言われています。

あなたは尋ねました:

セキュアエレメントがこのバンキングアプリに明確なセキュリティ上の利点を提供し、それを強制することを合理的にする状況はありますか?

少し生意気である:はい、通常のユースケースでは、ユーザーにパスワード/ピンロックがあり、攻撃者はrootアクセス権を持ちません。


もう少し詳しく:

「それを義務づけるのに合理的」と言うとき、ソフトウェアにキーを保存することにより、Secure Element以外のデバイスを使用するユーザーに同じ機能を提供することと比べて、いくつかのことが頭に浮かびます:

  1. Android> 6.0(およびiOSを想定)では、暗号化はセキュアエレメント/セキュアエンクレーブ内で行われるため、秘密鍵がユーザーランドに入ることはないため、潜在的な脆弱性/バンキングアプリ自体のずさんなコーディングの影響を受けません。または、彼らが使用するソフトウェア暗号ライブラリ。 (一般的には良い習慣です)。

  2. 秘密鍵はSecure Elementのキーストアから出ることはないため、それらをデバイスから抽出してサーバーからスプーフィングを実行することは不可能です。物理デバイスから行う必要があります。所有者は、デバイスが盗まれたことを発見した場合、リモートワイプを実行できます。これにより、秘密キーがクリアされ、攻撃されます。

  3. キーストアがパスワードで保護されている場合、ソフトウェアキーストアの場合は、ファイルをサーバーに抽出し、パスワードをブルートフォースコンテンツにブルートフォースできます。セキュアエレメントの場合、いくつかのブルートフォース攻撃の後、キーをワイプできます。

  4. まだ実験段階ですが、AndroidとiOSは、ハードウェアキーストアがキーのロックを解除して暗号化を実行するタイミングについて、きちんとしたアクセス制御メカニズムを提供し始めています。たとえば、次の方法でSEに暗号を要求するようにアプリをプログラムできます。「このデータに署名しますが、パスワード、指紋、またはPINを使用してデバイスがロック解除され、5分以上前にデバイスがロック解除された場合のみ、最初にログインを求めるプロンプトを再度表示します。」このレベルの制御は、ソフトウェアベースのキーでは基本的に不可能です。

これらのいずれも、デバイスへのrootアクセス権を持つ攻撃者に対して100%万能ではありませんが、ハードウェアキーストア/暗号モジュールが何らかの価値を付加することを示していると思います。私の専門家の意見では、デバイスにセキュアエレメントがある場合にのみ、物理的なトークンジェネレーターをバイパスできるようにすることは、バンキングアプリにとって防御可能な選択です。

[[免責事項:AndroidセキュアエレメントはAndroid 6.0で大幅な見直しが行われたため、上記の内容はAndroid <6.0には適用されません。 SEで暗号化を行わず、秘密鍵をユーザーランドに返しました。]

6
Mike Ounsworth

単なる考えです。

バンキングアプリと、それが銀行のサーバーと通信する方法は、技術的には健全で、事実上ハッキングできない可能性があります。電話自体はどうですか?

私の主な懸念は、電話自体のセキュリティです。盗まれたり紛失したりした場合、Finder /泥棒がする必要があるのはロック画面を回避することだけです。

多くの人がロック解除パターンを使用しています。これは、物理的な画面のスミアパターンを調べることで追跡できます。攻撃者がロック解除パターンの追跡に成功すると、攻撃者は私です(バンキングアプリに関する限り)。

ですから、銀行のアプリはかなり安全かもしれませんが、電話自体のセキュリティが今や最も弱いリンクだと感じています。

0
Dohn Joe