我无法完成身份验证阶段。 我在用什么: 恩智浦的SAM模块 Mifare Desfire PICC
我正在执行下一步:
使用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
从PICC获取加密(RndB)。
Tx:90 0A 00 00 01 00 00 Rx:31 15 1A 19 DB ED CD 5A 91 AF
发送至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
从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
发送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
所以,这是我从我的供应商那里收到的指南,我没有解释所使用的apdus;有些我在互联网上找到了它们,其他一些我猜到了。
我需要知道的是我使用的下一个命令是什么: 到SAM模块:80 41 01 03 Lc数据 我需要知道它部署了什么加密,为什么它需要PICC的UID(这是IV),我怎么知道RndB,以及期望PICC结束身份验证的内容。
由于
Pd:对于文本的格式很抱歉,似乎我无法正确使用发布工具,所有内容都在同一行中令人作呕......
答案 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?