Authentication Error: DESfire against SAM with 3DES algorithm

Authentication Error: DESfire against SAM with 3DES algorithm

我无法完成身份验证阶段。 我在用什么: NXP 的 SAM 模块 Mifare Desfire PICC

我正在执行以下步骤:

  1. 使用 GetVersion 获取 PICC 序列号(或 UID)。

    获取版本: 发送:90 60 00 00 00 Rx:04 01 01 00 02 18 05 91 AF

    获取版本 2: 发送:90自动对焦00 00 00 00 Rx:04 01 01 00 06 18 05 91 AF

    获取版本 3: 发送:90自动对焦00 00 00 00 接收:04 65 41 49 65 1B 80 8E 65 58 51 30 46 07 91 00

  2. 从PICC获取加密(RndB)。

    发送:90 0A 00 00 01 00 00 Rx:31 15 1A 19 DB ED CD 5A 91 AF

  3. 发送到 SAM PICC_SN + ek(RndB).

    发送:80 41 01 03 0F 80 1B 65 49 41 65 04 31 15 1A 19 DB ED CD 5A 接收:61 20

  4. 从 SAM 加密(RndA + RndB_rotated) + 1st half Session Key

    发送:00 C0 00 00 20 接收:F3 10 55 B1 D3 18 91 5B 92 48 16 1F E1 58 D5 CB E9 F3 51 04 41 8A 4E A5 A2 B5 67 CA FF D8 D2 35 90 00

  5. 发送加密的PICC(RndA + RndB_rotated).

    Tx: 90 AF 00 00 10 F3 10 55 B1 D3 18 91 5B 92 48 16 1F E1 58 D5 CB 00 接收:91AE

所以,这是我从我的供应商那里收到的指南,我没有关于所使用的 apdus 的解释;有些是网上找的,有些是我猜的。

我需要知道的是我使用的下一个命令是什么: 到 SAM 模块:80 41 01 03 Lc 数据 我需要知道它部署的是什么加密,为什么它需要PICC的UID(这是IV),我怎么知道RndB,以及期望PICC结束身份验证的原因。

谢谢

Pd: 抱歉文本格式问题,我似乎无法正确使用发帖工具,所有内容都在同一行,令人作呕...

我解决了问题并完成了身份验证。 错误是我请求使用 keyNo = 0 加密的 RndB,而来自 SAM 密钥加密的相应密钥应该是 keyNo = 2。 所以:

--> 90 0A 00 00 01 02 00
<-- 91 B6 08 CE 9F B5 34 3B 91 AF

进行中,我是芬兰语认证:

--> 90 AF 00 00 10 0F DC FA B6 37 5F 30 34 D7 93 2D A1 3D D6 11 10 00
<-- E9 C2 F2 69 FE 38 78 28 91 00

但现在我遇到了下一个问题。我已经通过身份验证,我可以读取 PICC 的数据,但我担心它是加密的。我想它是用会话密钥加密的,所以我需要一些 apdu 命令连同数据和会话密钥一起发送到 SAM,以便解密从 PICC 检索到的数据。 我对吗?如果那是...哪个是 SAM APDU?