目前市面上常见的IC卡,无论是学生卡,水卡,门禁卡,会员卡等大部分均为Mifare1S50卡,这类卡片存在易**、被复制等安全性风险。如果更换为CPU卡,固然安全性会有大幅度地提高,但是CPU卡本身价格相较于Mifare卡要高出不少,会让用户的采购成本负担加重。
本文基于上述情况:提出一种设备联网实现Mifare卡动态密钥的思路,希望能对读者起到一定程度的帮助。
·实现思路
·动态密钥实现原理说明
目前Mifare卡存在可**,易复制的原因主要是以下2点:
1.Mifare卡内部存储数据的结构为固定
2.Mifare卡扇区密钥可无限次验证(每个扇区密钥长度为6个字节)
基于上述2点,只要对Mifare卡的每个扇区密钥都进行足够多次的密钥验证(理论上只要执行281474976710655次密钥验证,范围:0x000000000000~0xFFFFFFFFFFFF),就能获取正确密钥。一旦密钥被获取,即可读取当前扇区其他数据,从而获取到卡片的全部数据,既完成**过程。再将数据全部写入到另外一张复制卡上面,即完成复制过程。
动态密钥是关键点:在于需要一个能够记录每次刷卡的动态数据(上图用的是卡号上传到服务器的时间,但不一定要用时间,用户可采用其他方式,例如随机数等)并且该数据能够与卡号存在对应绑定关系。
|