2

下の画像はubuntupcsc_scanでの出力で、ATR analyzeでわかるように、私の javacard は 3 つの論理チャネルをサポートしています。

ここに画像の説明を入力

これは、CLA の下位ニブル ビットについて言及したISO 7816-4の一部であり、論理チャネル番号を示します。

ここに画像の説明を入力

問題は、基本論理チャネル以外の別の論理チャネルを介して INITIAL-UPDATE APDU コマンドを送信したいのに、なぜ失敗するのかということです。

CLA = 80[ Basic logical channel ]での初期更新

< 80 50 00 00 08 00
< 00 00 00 00 00 00 00 00
> 611C

< 00 C0 00 00 00 1C 
> 00 11 60 01 03 8A 79 0A F9 FF 02 00 35 F3 92 EC 2B 6F F5 10 2E BD 74 41 2F 25 B4
> 90 00

CLA = 81 or 82[補足論理チャネル]による初期更新

< 81 50 00 00 08 00
< 00 00 00 00 00 00 00 00
> 6881

< 82 50 00 00 08 00
< 00 00 00 00 00 00 00 00
> 6881

ご覧のとおりSW = 6881、[= Logical channel not supported] を受け取りました。なぜ?


アップデート :

「javacard に 2 つまたは 3 つの論理チャネルがある場合は、2 つまたは 3 つのアプレットを同時に選択できることを意味します」これは正しいですか? はいの場合、複数のチャネルを持つことの他の利点は何ですか? 「いいえ」の場合、このチャネルは何のためのものですか?

4

1 に答える 1

2

これがどのように処理されるかは、むしろ ISO 7816-4 の解釈に依存します。ISO 7816-4 は、スマート カードの内部状態についてほとんど指定していません。この特定の問題を解釈に任せておくのは、確かに十分に曖昧です。

これで通常、MANAGE CHANNEL (INS = 70h) APDU を使用して複数の論理チャネルを持つことができます。CLA バイトのビットを指定するだけでは、別のチャネルに切り替えることはできません。最初にチャネルを開く必要があります。さらに、認証またはファイル システムの状態が新しいチャネルに引き継がれるとは言いません。

論理チャネルは、複数のアプリケーションを同時に実行するためのオプションとして表示されます。論理チャネルは、単一 (半二重) 通信チャネルを介してコマンドをインターリーブするために使用されます。これは、端末 (PC) でスマート カード通信を必要とするさまざまなサービスがある場合に便利です。

明らかに、論理チャネルには大きな欠点があります。各論理チャネルの状態を保持する必要があります。場合によっては、状態を混在させる必要がある場合もあります (つまり、PIN VERIFY が両方のチャネルに使用される場合があります)。これは、特に一時メモリ (RAM) の使用に関する問題です。

通常、2 つの論理チャネルを持つカードのみが表示されます。ほとんどの場合、そのうちの 1 つだけが使用されます。99% の場合、単一のサービスへの排他的アクセスのみを許可し、スマート カード サービスを順番に実行する方が適切です。現在、多くのカードが 30 MHz 以上で動作していますが、合計で 8 KiB の RAM しか搭載されていないことに注意してください。

MANAGE CHANNEL の使用を試みることはできますが、ATR が嘘をついており、すべてのアプリケーションが論理チャネル (Global Platform Card Manager など) をサポートしているわけではない可能性があります。また、Global Platform は独自の APDU コマンド/応答 (CLA に設定された最上位ビット = 80h) を使用するため、公式には Global Platform 仕様のみを参照する必要があることに注意してください。

于 2014-06-29T12:31:10.370 に答える