スマートカードと通信できるマイクロコントローラを搭載したプロトタイプボードを開発しました(ATRを読んだり、APDUコマンドへの応答を発行したり読むことができます)。 Android搭載のスマートフォンやタブレット。私たちのボードにはUSB接続があり、それを介してAndroid経由でMCUに読み書きすることができます。Androidでスマートカードリーダーを開発する
最後の目標は、PKCS#11をサポートしているAndroidプラットフォーム上に機能するスマートカードリーダーを用意し、カードと通信できるようにスマートカードリーダーのエンドユーザーにライブラリを提供することです。
私はこの件に関していくつかの議論を読んでおり、その中にはカスタムAndroidを構築してこれを行う必要があると述べているものがあります。私は、USB経由で周辺機器(カードリーダー)と通信できるときに、なぜAndroidを再構築しなければならないのかを理解するために、Androidアーキテクチャに精通していません。 CCIDのようなインターフェースを実装するライブラリを提供すれば、ユーザは自分のライブラリをターゲットの.apkファイルに統合することによって、Android USBスタックを使って自分のリーダーと通信することができます。
私たちが気づいていない上記の計画に問題はありますか?私は、上記のライブラリの実装を開始する際に問題を引き起こす一般的なAndroidやスマートカードリーダー(たとえばセキュリティ)に関する基本的なものを見逃していることに懸念しています。
[この情報はAndroidでのUSB接続に関する情報](http://developer.android.com/guide/topics/connectivity/usb/index.html)はあなたの質問にお答えしますか? – Joe
セキュリティは、主にスマートカード自体によって提供されます。主な脆弱性は、電話(PINなど)の秘密のデータが別のマルウェアアプリケーションによって取得されていることです。 PINがリーダーを離れないPINパッドリーダーは利点があります。いくつかの推奨事項:セキュリティ保護されたメッセージングを使用して伝送路を保護し、暗号化されていない電話機には何も保存せず、PINをキャッシュしないでください。 – guidot
カスタムAndroid ROMが必要であるというオリジナルのディスカッションにリンクしておくと便利です。その部分は私にも意味をなさない。プロジェクトに隠された要件があるかもしれませんが、おそらくあなたが取り上げなかったか、見えなかった(そしてあなたのプロジェクトにはほとんど関係していない可能性があります)。彼らの議論はかなり古く、Android 3.0以上で導入されたAndroid USBホストを先行しているかもしれません。 –