2016-12-30 102 views
1

我无法完成身份验证阶段。 我使用的是什么: SAM模块由NXP的Mifare PICC DESFIRE身份验证错误:使用3DES算法对SAM进行DESfire

我之后的下一个步骤:

  1. 获得PICC的SerialNumber(或UID)与GetVersion。

    GET VERSION: TX:90 60 00 00 00 的Rx:04 01 01 00 02 18 05 91 AF

    GET VERSION 2: TX:90 AF 00 00 00 00 的Rx:04 01 01 00 06 18 05 91 AF

    GET VERSION 3: TX:90 AF 00 00 00 00 接收: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 接收:31 15 19 1A 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 接收:61 20

  4. 从SAM获取加密的(RndA + RndB_rotated)+第一半会话密钥

    的Tx: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 接收:91 AE

所以,这是我已经从接收到的导我的支持者,并且我没有解释使用的apdus;有些我在互联网上找到了他们,还有一些我猜到了。

我需要知道什么是什么是下一个命令我使用: 到SAM模块:80 41 01 03 LC数据 我需要知道它部署何种加密,为什么它需要PICC的UID(是这样的IV),我如何知道RndB,以及期待PICC结束认证的内容。

感谢

PD:对不起,文本的格式,似乎我无法正确地使用这些工具的发布,一切变得在它的恶心同一行...

回答

1

我解决了这个问题并完成认证。 错误是我要求使用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?