PN532 MiFare Ultralight C相互认证
有没有人设法使用这种芯片使用超轻量级C卡进行相互认证? 我了解身份验证程序,但查看芯片手册中的命令集并尝试了几件事情,我认为这实际上是不可能的,但是我认为我会在放弃芯片组并重新使用CJS编码器之前发布此处验证PN532 MiFare Ultralight C相互认证
在此先感谢
是的,有可能具有Mifare超轻C.使用进行相互认证以下步骤:
第1步:发送开始认证命令。 (1A 00)到卡片
步骤2:卡片产生一个8字节随机数RndB。该随机数是用多样化密钥(用ek(RndB)表示)加密的DES/3DES,然后发送给终端。
步骤3终端对收到的ek(RndB)执行DES/3DES解密操作,从而检索RndB。然后RndB左移8位(第一个字节移动到RndB的末尾),产生RndB'。现在终端本身产生一个8字节的随机数RndA。该RndA与RndB'连接并使用DES/3DES解密(两个块的解密使用密码块链接(CBC)发送模式链接)。该令牌dk(RndA + RndB')被发送到卡。
步骤4:卡对收到的令牌运行DES/3DES加密,从而获得RndA + RndB'。该卡现在可以通过将其与通过在内部将原始RndB左移8位而获得的RndB'进行比较来验证发送的RndB'。成功的验证证明卡和终端具有相同的秘密(密钥)。如果验证失败,卡停止验证过程并返回错误消息。由于该卡还接收到由终端产生的随机数RndA,它可以在RndA上执行8位的左旋转操作以获得RndA',该RndA'再次被加密,导致ek(RndA')。这个令牌被发送到终端。
步骤5:终端在接收到的ek(RndA')上运行DES/3DES解密并因此获得RndA'用于与终端内部旋转的RndA'比较。如果比较失败,则终端退出该程序并可能暂停该卡。
STEP 6:卡套的验证状态为“已验证”
哪一部分给了你一个问题吗?
感谢您的回复,我在其他地方读过,它是可能的,经过数小时的检查代码解决了它,当我意识到我将一个读取响应的字节数设置为错误的值,所以离开数据在缓冲区中。一个简单的错误导致了巨大的头痛。 – watersa8 2017-03-27 16:01:40