NFCを使用してSIMカードにAndroidアプリケーションデータを保存する方法は?
質問
NFCアプリケーションを開発しています。私のアプリケーションは秘密情報を処理し、そのデータをSIMカードに保存したいと思います。それは可能ですか、それが可能なら、どうすればこれを行うことができますか?私の携帯電話のAndroidバージョンはAndroid 2.3.5です。
解決
TL; DR-莫大な努力なしでは現在不可能です。
SIMカードをカードエミュレーションモードの安全な要素として使用します - これは、 GSM協会. 。安全な要素(SIMまたは統合チップ上)にアクセスするには、信頼できるサービスマネージャー(TSM)を使用する必要があります。あなたの場合、TSMはバイナリSMSメッセージを使用してSIMカードにデータを送信します。問題は、携帯電話のNFCにとって非常に早い時期であることです。タグの読み取り/書き込みは十分に簡単ですが、安全な要素にアクセスすることはできません。 SIMをカードエミュレーションの安全な要素として使用するNFCスマートフォンの非常に限られた試行があり、トライアルはすべて、特定の国の特定のモバイルネットワークオペレーター(MNO)に限定されています。
あなたがこれをしたいなら、あなたはする必要があります 仕様を読んでください, 、TSMを書いてから、MNOSとの必要な契約を取得して、SIMを使用することを許可します。
幸運を!
他のヒント
ケビンが言うように、それは多くの努力なしでは不可能です。
それを行う1つの方法は、することです TSMを使用します。しかし、それはあなたが達成しようとしていることにとっては非効率的です そして、それは「オンライン」である必要があります。いくつかの情報をTSMサーバーに送信し、SIMカードにデータを送信します。
== Phone == | | == TSM ==
Application | ---- Network ----> | Server
SIM card | <----------------- |
そして、TSMだけでは不十分です。また、SIMカード資格情報が必要です。これらの資格情報がなければ、TSMからSIMカードデータを更新することはできません。これらの資格情報は、モバイルオペレーターによって制御されます。最後に、TSMはまったく必須ではありません。
上記のスキーマを使用すると、リンクを確立することにより、より明白な方法があります:application-> simcard。今回は、ネットワークがない場合でも機能します。しかし、Androidはある意味で考案されており、アプリケーションとSIMカードの間に直接接触はありません。興味があるなら、いくつかの解決策があります、 それはよく説明しています その記事で.
ここにいくつかの要件があります:
- RILレイヤーにパッチを当てる必要がある場合があります
- Androidのソースコードにパッチを当てる必要があります
- SIMカード(UICC)の資格情報が必要です(開発者SIMカードを購入できますが、オペレーターの資格情報が含まれていないため、ネットワークを接続することはできません)
- SIMカード用のソフトウェアを開発する方法を知る必要があります(通常はJavacard)
- ...
秘密データを安全な方法で保存する最も簡単な方法は、多くの頭痛のないことなしで、特別なSDカードを安全な要素として使用することです。 何もパッチを当てる必要はなく、ルートアクセスを持つ必要はなく、SIMカード資格情報を持つ必要はありません。データをホストするには、独自のSDカード「ソフトウェア」を開発する必要がある場合があります。
セキュリティは、保護レベルと比較して脅威レベルについてです。安全な要素は、データを保護するにはあまりにも多くの作業である可能性があります。どのデータを保護しようとするかに応じて、十分に保護される組み込みのAndroidメカニズムを使用できます。
同様の要件があります。私のアプローチは、GSMオペレーターのSIMを使用しないことです。しかし、私はGSMオペレーターに私のSIMを使用させる方法を見つけることに取り組んでいます。次に、安全なアイテムをカードに保存するための独自のアクセスメカニズムがあります。
ヤシン・イルマズ