NFC の保護

Android はオフホスト カード エミュレーション(セキュア エレメントを使用した NFC カード エミュレーション)をサポートしています。詳しくは、ホストベースのカード エミュレーションの概要をご覧ください。

交通機関での FeliCa 使用のような特定の用途では、デバイスの画面がロックされていたりオフになっていたりする場合や、デバイスの電源がオフになっている場合に、オフホスト カード エミュレーションが許可されます。

セキュア NFC は Android 10 で導入された機能で、デバイスの画面ロックが解除されているときにのみオフホスト NFC カード エミュレーションを有効化します。この機能を実装すると、ユーザーはセキュア NFC を有効にしてセキュリティを強化できます。

実装

セキュア NFC 機能を実装するには、NCI 2.0 標準をサポートする NFC コントローラを備えたデバイスで、Android オープンソース プロジェクト(AOSP)NFC フレームワークを使用する必要があります。セキュア NFC 機能に対応したハードウェア(ro.boot.hardware.sku)を、config_skuSupportsSecureNfc 属性を使用して NFC リソース XML ファイルに追加してください。

フレームワーク API

セキュア NFC を実装するには、Android オープンソース プロジェクトにある次のフレームワーク API を実装します。

設定 UI

設定アプリで、ユーザーがセキュア NFC 機能を有効または無効にできる切り替えスイッチを追加します。設定アプリのデフォルト設定をカスタマイズして有効または無効にできます。

図 1 は、設定アプリ([設定] > [接続済みのデバイス] > [接続の設定] > [NFC] > [NFC の使用にロック解除を要求])でセキュア NFC を有効または無効にする切り替えスイッチの例を示したものです。

セキュア NFC の UI フロー

図 1. セキュア NFC を有効または無効にする切り替えスイッチの例

セキュア NFC が有効で、ユーザーが NFC リーダーにデバイスを置くと、Android により [NFC を使用するには、ロックを解除してください] という通知がロック画面に表示されます(図 2 を参照)。

セキュア NFC の通知

図 2. ロック画面で NFC の通知を使用するには、ロックを解除してください

検証

実装を検証するには、セキュア NFC 機能を有効にして、デバイスの画面がオフの場合またはロックされている場合と、デバイスの電源がオフになっている場合に NFC カード エミュレーションが無効になることを確認します。