身份验证错误:使用3DES算法对SAM进行DESfire

时间:2016-12-30 13:15:15

标签: nfc mifare 3des

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

我正在执行下一步:

  1. 使用GetVersion获取PICC SerialNumber(或UID)。

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

    获取版本2: Tx:90 AF 00 00 00 00 Rx:04 01 01 00 06 18 05 91 AF

    获取版本3: Tx:90 AF 00 00 00 00 Rx: 04 65 41 49 65 1B 80 8E 65 58 51 30 46 07 91 00

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

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

  3. 发送至SAM PICC_SN + ek(RndB)。

    Tx:80 41 01 03 0F 80 1B 65 49 41 65 04 31 15 1A 19 DB ED CD 5A Rx:61 20

  4. 从SAM加密(RndA + RndB_rotated)+上半年会话密钥

    Tx:00 C0 00 00 20 Rx: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 Rx:91 AE

  6. 所以,这是我从我的供应商那里收到的指南,我没有解释所使用的apdus;有些我在互联网上找到了它们,其他一些我猜到了。

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

    由于

    Pd:对于文本的格式很抱歉,似乎我无法正确使用发布工具,所有内容都在同一行中令人作呕......

1 个答案:

答案 0 :(得分:1)

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

cmd.exe

继续,我的芬兰身份验证:

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

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