2

融合されていないスマートカードを持っていました(つまり、事前にパーソナライズされていませんでした)。ATR= があり3B F9 13 00 00 81 31 FE 45 4A 43 4F 50 32 34 32 52 33 A2ます。

Q1: カードのヒストリカル バイトはどこにありますか? それらをどのように分析できますか?

Q2: カードのモデルはどこで確認できますか? インターネットで ATR を検索しましたが、何も見つかりませんでした。

GPJなどのツールを使用して、本当に空白のカード (融合されていないカードを意味します) のアプレットを一覧表示しようとすると、次の出力が表示されます。

>> gpj -list

>> java -jar gpj.jar -list
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
Found card in terminal: ACS CCID USB Reader 0

ATR: 3B F9 13 00 00 81 31 FE 45 4A 43 4F 50 32 34 32 52 33 A2

DEBUG: Command  APDU: 00 A4 04 00 07 A0 00 00 01 51 00 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain GP211 A0 00 00 01 51 00 00 , SW: 6A 82

DEBUG: Command  APDU: 00 A4 04 00 08 A0 00 00 00 18 43 4D 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain GemaltoXpressPro A0 00 00 00 18 43 4D 00 , SW:6A 82

DEBUG: Command  APDU: 00 A4 04 00 08 A0 00 00 00 03 00 00 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain OP201a A0 00 00 00 03 00 00 00 , SW: 6A 82

DEBUG: Command  APDU: 00 A4 04 00 07 A0 00 00 00 03 00 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain OP201b A0 00 00 00 03 00 00 , SW: 6A 82

net.sourceforge.gpj.cardservices.exceptions.GPSecurityDomainSelectionException:Could not select any of the known Security Domains!
at net.sourceforge.gpj.cardservices.GlobalPlatformService.open(Unknown Source)
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown Source)

上記の出力は、ツールが選択する SC を見つけられなかったことを意味します。

私はインターネットで多くのことを検索し、最終的に、個人化前の手順にキー ( Transport-Key )が必要であることがわかりました。

いくつかの知識を共有させてください!

パーソナライゼーション前の手順は次のとおりです (JCOP の場合)。

  1. ATRの依頼
  2. Select コマンドでルート アプレットを選択します (Transport-Key はこのアプレットの AID です)。
  3. ブート コマンド
  4. 必要な数の Read、WRITE、ADMINEXEC、SB_NAT_APPLET_INSTRUCTION、および AUTH コマンドが可能です。
  5. PROTECT コマンド
  6. コマンドを融合する
  7. カードをリセットします。

ステップ 4 では、IC をデフォルト設定で初期化します (IC の必要なライフサイクルの構成、通信動作の定義、ATR および/または ATS パラメータ、またはアプレットのプリロード)。

ところで、最初の 2 つの手順 (1 と 2) を実行してから、カードをリセットし、アプレットをもう一度一覧表示しようとしました。

>> gpj -list

>> java -jar gpj.jar -list
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
Found card in terminal: ACS CCID USB Reader 0

ATR: 3B F9 13 00 00 81 31 FE 45 4A 43 4F 50 32 34 32 52 33 A2

DEBUG: Command  APDU: 00 A4 04 00 07 A0 00 00 01 51 00 00
DEBUG: Response APDU: 6F 64 84 08 A0 00 00 01 51 00 00 00 A5 58 9F 65 01 FF 9F 6E 06 47 91 23 47 41 00 73 49 06 07 2A 86 48 86 FC 6B 01 60 0B 06 09 2A 86 48 86 FC 6B 02 02 02 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2B 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02 90 00
Successfully selected Security Domain GP211 A0 00 00 01 51 00 00

DEBUG: Command  APDU: 80 50 00 00 08 E7 41 23 4E F5 3B EB E3
DEBUG: Response APDU: 00 00 41 98 00 17 14 97 42 48 FF 02 00 00 BA FF B1 51 C8 BD F1 69 59 8D 80 D6 72 66 90 00

javax.smartcardio.CardException: Card cryptogram invalid.at net.sourceforge.gpj.cardservices.GlobalPlatformService.openSecureChannel(Unknown Source)
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main
(Unknown Source)

ご覧のとおり、アプレットは AID= で表示されA0 00 00 01 51 00 00ます。しかし、私はEXTERNAL AUTHENTCATコマンドをうまく実行できませんでした!

Q3: 外部認証が失敗したのはなぜですか? SDキーを設定していないから?

OpenSC Toolを使用してこのアプレットを選択しようとしました:

>> opensc-tool -s 00A4040007A0000001510000

Using reader with a card: ACS CCID USB Reader 0
Sending: 00 A4 04 00 07 A0 00 00 01 51 00 00
Received (SW1=0x90, SW2=0x00):
6F 64 84 08 A0 00 00 01 51 00 00 00 A5 58 9F 65 od......Q....X.e
01 FF 9F 6E 06 47 91 23 47 41 00 73 49 06 07 2A ...n.G.#GA.sI..*
86 48 86 FC 6B 01 60 0B 06 09 2A 86 48 86 FC 6B .H..k.`...*.H..k
02 02 02 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B ...c...*.H..k.d.
06 09 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2B ..*.H..k..Ue...+
85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 04 ...Hd...f...+...
01 2A 02 6E 01 02                               .*.n..

Q4: この出力の意味は何ですか?

以下では、 get-dataスクリプトの後のGP Shellの出力も確認できます。

.:: gpshell get_data.txt

establish_context
enable_trace
enable_timer
card_connect
command time: 281 ms
get_data -identifier 9F7F
Command --> 80CA9F7F00
Wrapped command --> 80CA9F7F00
Response <-- 9F7F2A4790507547912347410041980017149742484812420500000000143E24303
137313400000000000000009000
9F7F2A4790507547912347410041980017149742484812420500000000143E243031373134000000
0000000000
command time: 62 ms
get_data -identifier 66
Command --> 80CA006600
Wrapped command --> 80CA006600
Response <-- 664B734906072A864886FC6B01600B06092A864886FC6B020202630906072A86488
6FC6B03640B06092A864886FC6B040255650B06092B8510864864020103660C060A2B060104012A0
26E01029000
664B734906072A864886FC6B01600B06092A864886FC6B020202630906072A864886FC6B03640B06
092A864886FC6B040255650B06092B8510864864020103660C060A2B060104012A026E0102
command time: 47 ms
card_disconnect
command time: 141 ms
release_context
command time: 0 ms

.::

Q5: この出力の意味は何ですか? どうすれば分析できますか?

4

3 に答える 3

10

Q1: カードのヒストリカル バイトはどこにありますか? それらをどのように分析できますか?

A1:このサイトに ATR を入力すると、ATRが解析されます。それに基づいて、カードの履歴バイトは です4A 43 4F 50 32 34 32 52 33

Q2: カードのモデルはどこで確認できますか? インターネットで ATR を検索しましたが、何も見つかりませんでした。

A2:このサイトではすべてのことが簡単にできるので、何もする必要はありません :) おめでとう、あなたのカードが認識されました! ですNXP JCOP v2.4.x

Q3: 外部認証が失敗したのはなぜですか? SDキーを設定していないから?

A3:エラーはCard cryptogram invalidです。カード側と gpj 側で使うキーが違うようです。カードに設定されているキーと、gpj にも同じように設定されているキーを知る必要があります。

Q4: この出力の意味は何ですか?

A4: Java Cards の作業を続けたい場合は、グローバル プラットフォームのドキュメントを読むことが重要です。select コマンドの応答メッセージで返されるデータ フィールドについては、GP ドキュメントのセクション 9.9.3.1 で説明されています。

あなたの結果に基づいて、各部分を分離し、以下に各タグをリストします。太字の 16 進バイトがタグであることに注意してください。

6F 64 84 08 A0 00 00 01 51 00 00 00 A5 58 9F 65 od......Q....Xe
01 FF 9F 6E 06 47 91 23 47 41 00 73 49 06 07 2A ...nG# GA.sI..*
86 48 86 FC 6B 01 60 0B 06 09 2A 86 48 86 FC 6B .H..k.`... .H..k
02 02 02 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B ...c...
.H..kd
06 09 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2B ..*.H..k..Ue...+
85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 04 ...Hd...f...+...
01 2A 02 6E 01 02

タグ 6F:ファイル制御情報 (FCI テンプレート) [必須]--> 64

タグ 84:アプリケーション/ファイル AID [必須] --> 08 A0 00 00 01 51 00 00 00

タグ A5:専有データ [必須]--> 58

タグ 9F65:コマンド メッセージのデータ フィールドの最大長 [必須]--> 01 FF

タグ 9F6E:アプリケーション プロダクション ライフ サイクル データ [オプション]--> 06 47 91 23 47 41 00

タグ 73:セキュリティ ドメイン管理データ [オプション]--> 49 06 07 2A 86 48 86 FC 6B 01 60 0B 06 09 2A 86 48 86 FC 6B 02 02 02 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2B 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02

Q5: この出力の意味は何ですか? どうすれば分析できますか?

A5: Global Platform のこのwiki を確認して、すべての GP コマンドを学習し、出力を自分で分析してください。

そして最後に、二度とこのような長い質問をしないでください :( パーツを分割して、各パーツを別々の質問として質問してください、ありがとう :)

于 2015-01-04T17:03:29.210 に答える