Mifare 是最常用的射频卡,具体介绍网上太多,我就不说了.,很多城市的最早的地铁公交卡都是用这种卡,后来被破解后都换成智能卡了.
但是由于技术成熟,使用方便,成本低,现在很多小区门禁卡,停车卡,食堂饭卡,包括很多医院的就诊卡都用的这种卡.


简单介绍下,一张卡就好像一张白纸,S50有16个分区,每一个分区可以设置单独的两个密码KeyA和KeyB. 而KeyA是永远不能读的, KeyB在默认情况下是可以读到的.
.(简单可以这样理解, 注意,每个扇区可以设置KeyA和KeyB独立的访问条件)

而分区1比较特殊,分区1的第一段写着卡的硬件ID,这个是出厂时就写进去了,不能更改,并且全球唯一(当然这只是约定). 淘宝上有UID白卡, 这种卡可以给分区1写入任意的硬件ID.

08年的时候,发现卡漏洞,这种卡已经很容易被破解, 网上买个读卡器 ACCR122U (一百多)就可以破解.
大概的破解原理是因为这种卡不能产生随机数.而用上位机控制随机数的产生来破解..
但是如果是全扇区加密的卡(就是16个分区都加密) ,那么需要使用Proxmark破解,淘宝居然二三百..

推荐软件 (mifare classic tool) 这个软件使用Android也可以破解, 使用的是穷举方式.
https://github.com/ikarus23/MifareClassicTool


问题: 既然这种卡已经被破解,也就是写什么别人也能看得到,但是我们还必须用这种卡,那么我们如何存储数据并且防止被破解?

设计要求:
我们是一家连锁店,,使用mifare卡作为用户标识卡...
1, 防止更改卡内数据(如卡号,信息等)
2, 防止卡被复制.
3,防止第三方制作卡(我们的系统以后可能会有加盟商,不能让加盟商自己私自买新卡用我们的系统.,需要通过我们这里制作.)
4,保证稳定,快速的读取,并且易于量产加密重置等.(需要单独写一个卡批量加密工具,用于量产.)

网上大都是Mifare的介绍或者如何破解等...不知道别人是如何设计的...
所以在这里写一下自己的思路..

卡内只保存卡号, 不保存任何金额等其他信息.要求与实体卡上印的卡号一致.

将卡号加密后,存储到指定分区M中,并且设置分区密码为固定密码 MA 和 MB..
根据卡号(+硬件ID) 生成对应卡号的校验数据K.(或者根据算法生成).
使用固定密码 NA 作为密匙A,
读取卡硬件ID,使用加密算法 Fun(ID) 计算出16位密码NB.

将校验数据K存入分区N中,并且使用NA和NB作为分区密码..

将其他分区使用固定的密码全部填入随机的垃圾数据,
写卡完成..

读卡时,只使用密码B读取,(只给客户端下发KeyB的密码,更安全.)
使用密码MB读取分区M ,获取卡号,
读取硬件ID,计算校验分区N的密码NB.读取校验信息.
(根据情况操作,可在客户端确认,如何客户端不可信,需要在服务端确认..)获取校验信息,通过服务端确认卡校验信息是否有效,或者通过服务端解密卡ID..

总结:
虽软卡硬件被破解了,写什么都看得见..当然完全可以通过软件算法来防止卡被进一步破解更改数据...
卡上写的信息越少越安全,只在卡上写卡号,不储存用户信息金额等.

当然校验信息需要和校验每张卡独有的硬件ID绑定.来防止卡被复制..
但是网上有可写UID的白卡,就是可以在不破解算法的情况下完全复制..(我们小区的门禁卡我就复制了好几张,不然去物业办一张十块.)
这个时候只能人为的控制,比如消费或者退卡的时候,前台需要确认卡上的标识,或者确认人员信息等.
(有的医院退卡需要缴费清单)

这个用了不到两个星期来设计并完成.目前已经稳定工作了两年,写了大概十几万张卡..
中途碰到过公司采购一批小厂商生产的垃圾卡,上万张卡的KeyB坏掉了,不能读取..只能通过改程序来兼容..

写出来做个笔记, 只是不晓得别人是怎么设计的....

使用Mifare卡加密数据 笔记的更多相关文章

  1. ID卡学习笔记

    前言: 我也来篇关于当时学习ID卡的笔记.前段时间小区装门禁.一个钮扣型的ID卡就要30块.非常黑心.因为其ID卡的成本也就是1块钱以下.因此我也加入到这方面的研究.用来模拟ID卡的T5557卡成本2 ...

  2. 开发企业微信打卡API笔记

    获取企业微信打开API上面的数据 根据企业ID和打卡模块的secret获取access_token 打卡传参body为json格式的字符传 创建打卡对象把参数写入,useridlist为list格式. ...

  3. SD卡学习笔记

    最近调试了SD卡,遇到了一些小问题,记录一下,分享一下. 1.    SD卡 卡槽旁边的一个小开关 我们平时见过的SD卡都是小的SD卡,可以放在手机上的.现在大多数的开发板上也是小的SD卡的卡槽,插入 ...

  4. [SD卡] FPGA笔记之SD卡

    1.数据怎么存进去的? 其中的sd_miso就是接收的1位数据,n个时钟下就收到n个数据,比如n=21. 2.如何做到先发送高位?

  5. MIFARE系列3《卡能源和数据传递》

    在MIFARE卡中,能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上,不再需要额外的组件.线圈嵌入塑料中,形成了一个无源的非接触卡. 读卡器向IC发一组固定频率的电磁波,卡内有一个IC串联 ...

  6. 破解简单Mifare射频卡密钥杂记

    先要了解一点大学城浴卡用的是什么卡,经查证是Mifare S50卡,也有叫ISO14443A的(协议名).本来想看看大学城浴卡有没有安全漏洞,没想到浴卡公司在安全性上几乎是蔑视我们大学生的智商,虽然被 ...

  7. 由Mifare 1卡破解带来的危险以及应对方法

    今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...

  8. RFID-RC522、FM1702SL、M1卡初探

    catalogue . 引言 . RC522芯片(读卡器)简介 . FM1702SL芯片(读卡器)简介 . RFID M1卡简介 . 读取ID/序列号(arduino uno.MFRC522芯片 Ba ...

  9. Mifare系列7-安全性(转)

    文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38087245 飞利浦的MIFARE卡 由于它的高安全性在市场上得到广泛应用,比如 ...

随机推荐

  1. WebApi 参数绑定方法

    WebAPI 2参数绑定方法   简单类型参数 Example 1: Sending a simple parameter in the Url 01 02 03 04 05 06 07 08 09 ...

  2. mysql常用基础操作语法(十二)~~常用数值函数【命令行模式】

    数值函数是常用函数之一,也是学习mysql必会的,常用的有如下一些: 1.ceil:返回大于某个数的最小整数值: 2.floor:和上一个相反,返回小于某个数的最大整数值: 3.round:返回某个数 ...

  3. pat1071-1080

    1071 #include<iostream> #include<cstdio> #include<cstring> #include<vector> ...

  4. java实现马踏棋盘问题

    1.问题描述: 在国际象棋中,马走日,用户输入棋盘的起始位置从x:0-4,y:0-3输出从这一点开始,马走完整个棋盘的各个方案,并输出方案数 2.输入样式: 请输入棋盘马起始位置: 0 0 3.输出样 ...

  5. 深究ASP.NET Session

    Session 本质 & 访问方法 Session 本质 是 HttpSessionState 类 link Session 访问方法 HttpContext.Session Page.Ses ...

  6. 安装Apache Maven

    Apache Maven的安装是一个简单的过程:解压提取文件,将解压后的bin目录,配置到系统环境变量PATH中,以便于系统各目录下使用shell,都可以操作mvn command. 详细步骤: 1. ...

  7. 下一代 Android

    据闻,Android M 是下一代 Android 的开发代号.那么,对于 M,Google 正在实验着什么? 指纹识别 根据此前的消息,Nexus 6 据称原本是包含指纹识别传感器的,但后来在开发过 ...

  8. 【BZOJ2843】极地旅行社(Link-Cut Tree)

    [BZOJ2843]极地旅行社(Link-Cut Tree) 题面 BZOJ 题解 \(LCT\)模板题呀 没什么好说的了.. #include<iostream> #include< ...

  9. 【BZOJ3992】序列统计(动态规划,NTT)

    [BZOJ3992]序列统计(动态规划,NTT) 题面 BZOJ 题解 最裸的暴力 设\(f[i][j]\)表示前\(i\)个数,积在膜意义下是\(j\)的方案数 转移的话,每次枚举一个数,直接丢进去 ...

  10. 【BZOJ4012】开店(主席树)

    [BZOJ4012]开店(主席树) 题面 Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱 ...