11

スマートカードと通信できる(ATRの読み取り、APDUコマンドへの応答の発行と読み取りなどが可能な)マイクロコントローラーを備えたプロトタイプボードを開発しました。次に、このハードウェアをAndroid携帯電話またはタブレットで使用したいと思います。ボードにはUSB接続があり、Android経由でMCUの読み取りと書き込みを行うことができます。

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

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

上記の計画に私たちが気付いていない問題はありますか?上記のライブラリの実装を開始するときに問題が発生する、AndroidまたはSmartCardリーダー全般に関する基本的なもの(セキュリティなど)が欠落しているのではないかと心配しています。

4

3 に答える 3

2

カスタムプラットフォーム用にカスタマイズされたジンジャーブレッドディストリビューションにUSB周辺機器を統合しました。Androidプラットフォームをカスタマイズする唯一の理由は、USBデバイスへのアクセスを可能にするいくつかのドライバーを追加または変更することです。USBデバイスがすでに標準のAndroidデバイスでサポートされているプロトコルを使用している場合は、運を楽しんでください。あなたのほとんどすべてのセット。しかし、あなたの勝利を祝う前に、私はさまざまなデバイスでそれを試してみました。Androidおよびカーネルレベルでは、Googleは多くのドライバーソースコードを備えた非常にベアボーンディストリビューションを提供しています。デバイスが使用しているハードウェアに応じて、どの低レベルのドライバーとプロトコルを含めるかを決定するのは、電話/タブレットの製造元です。携帯電話/タブレットではメモリの量が制限されているため、一般的なルールは必要なものだけを含めることです。

この簡単な答えがお役に立てば幸いです。

于 2013-04-17T13:26:05.067 に答える
2

この分野でさらに調査を行った後、利用できるいくつかの解決策があります。

  1. カスタムドライバを作成します(簡単な通信、カードをリセットして電源を入れるための簡単なコマンド)。この場合、リセット/電源コマンドとT = 1通信プロトコルを実装する必要がありますが、この方法の大きな欠点は、カードリーダーでのみ機能することです。これは大きな制限です。
  2. コントローラにCCIDインターフェイスを実装し、それをAPDUコマンドにラップします。この方法はスケーラブルであり、仕様に準拠している限り(多くのメーカーは準拠していないため、pcsc-liteにサポートされているリーダーのリストがあります)。この方法は、多くのリーダーを販売したい場合に最も費用効果が高くなります。ここで仕様を見つけることができます
  3. すでにCCID通信が実装されているアセンブリにCCIDチップを追加します。このようなチップは複数のベンダーによって製造されており、STMelectronicsには多くのベンダーがありますが、そのような場合、最終的なリーダーのコストが高くなり、プロトコルを完全に制御することはできません。

Android側に関しては、seekはpcsc-liteドライバーのポートを提供し、試していませんでしたが、ソースコードから、元のドライバーからusb apiを変更し、JNIインターフェイスを使用して通信したことがわかります。 cコード。

于 2019-08-21T15:59:54.093 に答える
1

リーダーのCCID実装についてはわかりませんが、Androidの場合、いくつかのC / C ++ポートがありますが、それらが機能するかどうかはわかりません。アンドロイドの部分では、CCIDプロトコルを実装するのは非常に簡単です。これを見てください。最も難しい部分は、リーダー用のファームウェアを作成することです。注意が必要な細部がたくさんあります。

于 2019-03-11T16:57:56.000 に答える