电梯卡

💡 原文中文,约11600字,阅读约需28分钟。
📝

内容提要

文章复盘校园电梯M1卡复制实验:原卡因0扇区物理只读可长期使用,普通CUID复制卡则被读卡器以默认Key B篡改UID,造成一卡一密失配而报废。作者通过Dump差分破解了半字节反序校验算法和线性密钥派生,并指出锁死0扇区、慢刷避免回写掉电可延长寿命,但根本方案是升级CPU卡。

🔎

延伸解读

复制卡失效的根源:0扇区可写与一卡一密失配

文章揭示普通CUID复制卡仅能刷1~2次便报废,关键在于其0扇区0块可被读卡器用默认Key B改写UID。原卡因0块物理熔断只读,UID恒定,与扇区密钥始终匹配;复制卡UID被篡改后,读卡器按新UID推算的密钥与卡内旧密钥失配,认证失败。这提醒我们,复制卡能否存活,首先取决于0扇区是否被硬件或软件锁死。

动态回写与慢刷纪律:扇区5的保活要点

电梯读卡器每次刷卡都会向扇区5的块20/21回写楼层状态和校验码,且校验采用半字节反序求和。若刷卡过快导致回写掉电,校验码损坏,卡片会报错失效。因此,即便锁死0扇区,仍需贴稳约0.5秒再移开,避免在低电量或强干扰环境下刷卡。这属于使用纪律,而非算法漏洞。

多人共用同一UID的可行性边界

文章指出,在脱机、宽松、无防潜回的读头环境下,多人持有同一UID的加密0扇区卡在物理层面可行,但必须错峰(间隔≥5秒)、慢刷、被拒重刷。规模增大或读头联网审计时,多副本状态失步会触发防抖、冷却或日志异常,风险从密码学转向策略与运维层。本质上仍是M1存储卡单份状态可复制的局限。

根本出路:从M1存储卡升级到CPU卡

作者认为,锁0扇区、慢刷等只是延长M1卡寿命的补丁,无法改变其“带密码的软盘”本质——只要能读出全卡Dump,就能完整克隆。真正终结复制卡的是CPU卡(如DESFire EV3或国密CPU卡),其密钥永不离开晶圆,每次刷卡通过真随机数挑战-应答认证,导出Dump的概念本身将不复存在。

❓

Q&A

为什么用原卡数据复制的CUID卡刷一两次就报错报废?

因为读卡器开启了防CUID功能,会用默认Key B向复制卡的0扇区0块写入随机假UID(如22 CE 21 7E)。CUID卡0块可写,UID被篡改后,读卡器按新UID推算的一卡一密与卡内原密钥失配,认证失败,报红灯闪+滴滴滴三声,卡片永久报废。原卡0块物理只读,不受影响。

电梯卡块尾的校验码是怎么算出来的?

校验算法为:将块内前15个字节分别做半字节反序(高低4位互换),求和后对256取模。公式:Checksum = (Σ Swap(Byte_i)) mod 256,其中Swap(x)=((x&0x0F)<<4)|(x>>4)。该算法通过原卡与失效复制卡的四组数据差分联立验证,分毫不差。

怎么让复制卡长期使用而不被读卡器毁掉?

核心是保护0扇区不被改写:可软锁0扇区ACL、更换0扇区密钥,或使用FUID/UFUID卡硬件熔断0块只读。同时刷卡时贴稳约0.5秒,避免扇区5回写掉电;不要用未锁0块的普通CUID卡。硬锁0块的FUID/UFUID卡可无限次使用,与原卡寿命一致。

多人共用同一UID的复制卡可行吗?有什么限制?

在脱机、宽松、无防潜回的环境下物理可行,但必须遵守纪律:同UID两次刷卡间隔≥5秒、慢刷、被拒后原地重刷。规模不能大(建议2~3人),且不能开启防潜回或联网审计,否则会因状态多副本失步、并发冲突而暴露风险。

为什么说M1卡从根本上无法防克隆?

因为M1卡是存储卡,验证逻辑是读卡器发送密码、读出扇区数据,只要数据能被读出就能完整镜像克隆。其安全依赖算法保密和0扇区未锁,违背柯克霍夫原则。根本解决方案是升级到CPU卡(如DESFire EV3、国密SM1/SM4),采用密钥不出晶圆的动态挑战-应答认证。

电梯读卡器一次刷卡过程中底层做了哪些步骤?

共5步:1)明文寻卡并校验BCC,用0x40拦截一代UID卡;2)根据UID现场推算扇区5的Key A并认证;3)读取块20/21,执行ΣSwap校验并核对楼层权限;4)绿灯放行同时将新楼层状态、滚动计数及校验和回写扇区5;5)用默认Key B向0扇区0块写入随机假UID,原卡硬件拒绝,未锁0块的CUID卡被改写自爆。

🏷️

标签

➡️

继续阅读