融合されていないスマートカードを持っていました(つまり、事前にパーソナライズされていませんでした)。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 の場合)。
- ATRの依頼
- Select コマンドでルート アプレットを選択します (Transport-Key はこのアプレットの AID です)。
- ブート コマンド
- 必要な数の Read、WRITE、ADMINEXEC、SB_NAT_APPLET_INSTRUCTION、および AUTH コマンドが可能です。
- PROTECT コマンド
- コマンドを融合する
- カードをリセットします。
ステップ 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: この出力の意味は何ですか? どうすれば分析できますか?