M1 卡
一句话定义
M1 卡(Mifare Classic)是带扇区密钥的逻辑加密卡,密钥一旦泄露整张卡可被完整复制,因此只适合内部低风险场景。
扇区与密钥结构
一张标准 M1 卡有 16 个扇区,每个扇区 4 个块,每块 16 字节,合计 1KB。每个扇区末尾是控制块,存放两组密钥(Key A 和 Key B)以及访问控制位。
读写某个扇区前,读卡器必须先用该扇区的密钥做认证,认证通过才允许读写。听上去是加密的,问题出在认证过程本身。
为什么能被破解
M1 使用的 Crypto-1 加密算法在 2008 年已被完整逆向并公开。攻击者用一个几十元的读卡器,配合已知的算法实现,可以在几秒到几分钟内解出某个扇区的密钥 —— 这个方法通常叫「Nested Attack」。拿到密钥后,整张卡的内容就能读出来,再写进一张空白卡,得到一张完全一样的复制卡。
换句话说:M1 的密钥保护是「防误操作」,不是「防攻击」。它能挡住正常使用中的误改,挡不住有备而来的复制。
什么场景还能用
M1 并非不能用,关键看风险能不能承担:
可以用的场景:内部食堂、单位补贴饭卡、单笔金额小、卡丢失或复制损失由单位兜底、有消费限额和黑名单。
不建议用的场景:对外经营的餐厅、储值金额较大、涉及退款纠纷、需要经得起审计、卡可以被带出单位使用。
国万的处理方式是把金额从卡里拿出来:卡上只保留卡号,余额与权限全部在服务器。这样即使卡被复制,复制卡也无法用到别的读卡器上,而且服务器有 白名单与黑名单 和限额兜底。
和 CPU 卡的取舍
两者的差价主要体现在卡单价上,M1 便宜不少。如果食堂是内部使用、金额可控,M1 配合服务器扣款和限额机制,风险是可接受的。
但如果是对外经营、储值金额大、或者项目本身要求「卡必须防复制」,就应当直接上 IC 卡 / ID 卡 / CPU 卡 里的 CPU 卡 —— 这时候省下的卡成本,抵不上一次复制卡纠纷的代价。