1

一直在尝试使用 ACS ACR1281 1S Dual Reader ICC 从我的 National eID 读取数据。它需要基本访问控制 (BAC) 身份验证。我能够正确进行身份验证,但是当我尝试使用遵循 ICAO Doc 9303 第 11 部分中的规范的安全消息传递选择 EF.COM (01 1E) 时出现错误

下面是我发送的 APDU 命令

Select EF.COM

// Send APDU
00 A4 02 0C 02 01 1E 00 
// APDU Response
90 00

a) Mask class byte and pad command header:
 CmdHeader = ‘0CA4020C80000000’
b) Pad data:
 Data = ‘011E800000000000’
c) Encrypt data with KSEnc:
 EncryptedData = ‘6375432908C044F6’
d) Build DO‘87’:
 DO87 = ‘8709016375432908C044F6’
e) Concatenate CmdHeader and DO‘87’:
 M = ‘0CA4020C800000008709016375432908C044F6’
 App D-6 Machine Readable Travel Documents
f) Compute MAC of M:
    i) Increment SSC with 1:
    SSC = ‘887022120C06C227’
    ii) Concatenate SSC and M and add padding:
    N = ‘887022120C06C2270CA4020C800000008709016375432908C044F68000000000’
    iii) Compute MAC over N with KSMAC:
    CC = ‘BF8B92D635FF24F8’
g) Build DO‘8E’:
 DO8E = ‘8E08BF8B92D635FF24F8’
h) Construct and send protected APDU:
 ProtectedAPDU = ‘0CA4020C158709016375432908C044F68E08BF8B92D635FF24F800’

// Send APDU
00 A4 02 0C 15 87 09 01 7C 76 3C 70 98 06 45 BD 8E 08 20 42 68 2C D0 BE 14 A0 00
// APDU Response
6A 87

KsEnc 和 KsMac 是在外部验证 0x82 后计算的会话密钥。但我不断收到6A 87 - Lc 与 P1-P2 不一致作为反馈。我正在使用 PCSC 5.0.0 库与卡 (ICC) 对话。我不确定我在哪里想念它,请帮忙。

4

1 回答 1

2

亨利,从您对@guidot 的最新评论来看,您好像两次发送了 SELECT EF.COM?首先没有安全消息,这将破坏您使用 BAC 建立的可信通道,然后是安全 APDU,然后尝试使用不再存在的会话密钥/可信通道。

于 2020-07-30T10:56:24.330 回答