2013-03-26 4 views
7

スマートカードと通信できるマイクロコントローラを搭載したプロトタイプボードを開発しました(ATRを読んだり、APDUコマンドへの応答を発行したり読むことができます)。 Android搭載のスマートフォンやタブレット。私たちのボードにはUSB接続があり、それを介してAndroid経由でMCUに読み書きすることができます。Androidでスマートカードリーダーを開発する

最後の目標は、PKCS#11をサポートしているAndroidプラットフォーム上に機能するスマートカードリーダーを用意し、カードと通信できるようにスマートカードリーダーのエンドユーザーにライブラリを提供することです。

私はこの件に関していくつかの議論を読んでおり、その中にはカスタムAndroidを構築してこれを行う必要があると述べているものがあります。私は、USB経由で周辺機器(カードリーダー)と通信できるときに、なぜAndroidを再構築しなければならないのかを理解するために、Androidアーキテクチャに精通していません。 CCIDのようなインターフェースを実装するライブラリを提供すれば、ユーザは自分のライブラリをターゲットの.apkファイルに統合することによって、Android USBスタックを使って自分のリーダーと通信することができます。

私たちが気づいていない上記の計画に問題はありますか?私は、上記のライブラリの実装を開始する際に問題を引き起こす一般的なAndroidやスマートカードリーダー(たとえばセキュリティ)に関する基本的なものを見逃していることに懸念しています。

+0

[この情報はAndroidでのUSB接続に関する情報](http://developer.android.com/guide/topics/connectivity/usb/index.html)はあなたの質問にお答えしますか? – Joe

+0

セキュリティは、主にスマートカード自体によって提供されます。主な脆弱性は、電話(PINなど)の秘密のデータが別のマルウェアアプリケーションによって取得されていることです。 PINがリーダーを離れないPINパッドリーダーは利点があります。いくつかの推奨事項:セキュリティ保護されたメッセージングを使用して伝送路を保護し、暗号化されていない電話機には何も保存せず、PINをキャッシュしないでください。 – guidot

+0

カスタムAndroid ROMが必要であるというオリジナルのディスカッションにリンクしておくと便利です。その部分は私にも意味をなさない。プロジェクトに隠された要件があるかもしれませんが、おそらくあなたが取り上げなかったか、見えなかった(そしてあなたのプロジェクトにはほとんど関係していない可能性があります)。彼らの議論はかなり古く、Android 3.0以上で導入されたAndroid USBホストを先行しているかもしれません。 –

答えて

1

カスタムプラットフォーム用のカスタマイズされたジンジャーブレッドディストリビューションにUSB周辺機器を統合しました。 Androidプラットフォームをカスタマイズする唯一の理由は、USBデバイスにアクセスできるドライバを追加または変更することだけです。お使いのUSBデバイスが標準のAndroidデバイスでサポートされているプロトコルを既に使用している場合は、あなたの運を楽しんでください!あなたのほとんどすべてのセット。しかし、あなたの勝利を祝う前に、私は様々なデバイスでそれを試してみましょう。 AndroidとKernelのレベルでは、Googleは非常に多くのドライバソースコードを持つベアボーンの配布を提供しています。携帯電話/タブレットメーカーは、デバイスが使用しているハードウェアに応じてどの低レベルのドライバとプロトコルを含めるかを決める必要があります。携帯電話やタブレットではメモリの量が制限されているため、一般的なルールは必要なものだけを含めることです。 PC-Linuxアーキテクチャでは、ハードディスクの容量が非常に大きいため、存在するすべてのドライバが含まれ、検出されたものに応じて必要なものを選択して選択させるので、問題はありません。

この簡単な回答が役に立ちます。