1 TypeA-M1-S50

1.1 暴力破解

暴力破解是破解工作永远的话题,只要你拥有庞大的计算资源,管你什么密码都能破解。而且,在 CRYPTO1 算法的细节没有被泄露之前,最有效的方法就是暴破了。还有一个很重要的原因就是,M1 卡是被动卡,需要读卡器为它提供能量,一旦读卡器切断了电源,卡中的临时数据就会丢失,这样就没有办法记录下攻击者究竟输错了多少次密码,卡永远不会因为密码输入错误太多而被锁定,只要攻击者有时间慢慢跟它耗,密码肯定会出来的。
这里列举一些常见的 M1 卡密钥
FFFFFFFFFFFF A0A1A2A3A4A5 D3F7D3F7D3F7 000000000000 A0B0C0D0E0F0 A1B1C1D1E1F1 B0B1B2B3B4B5 4D3A99C351DD 1A982C7E459A AABBCCDDEEFF B5FF67CBA951 714C5C886E97 587EE5F9350F A0478CC39091 533CB6C723F6 24020000DBFD 000012ED12ED 8FD0A4F256E9 EE9BD361B01B

1.2 重放攻击

重放攻击是基于 M1 卡的 PRNG 算法漏洞实现的,当卡接近读卡器获得能量的时候,就会开始生成随机数序列,但这有一个问题,因为卡是被动式卡,本身自己不带电源,所以断电后数据没办法保存,这时基于 LSRF 的 PRNG 算法缺陷就出来了,每次断电后再重新接入电,卡就会生成一摸一样的随机数序列,所以我们就有可能把这个序列计算出来,所以只有我们控制好时间,就能够知道在获得能量后的某一刻时间的随机数是多少,然后进行重放攻击,就有可能篡改正常的数据。如果卡的所有权在我们手上的时候,我们甚至不需要浪费太多的时间就可以实现。

1.3 克隆卡片

这是一个很简单也很实用的方法,因为M1卡自带扇区可以保存数据,所以大部分的卡片会选择加密扇区后将数据保存在里面,所以我们完全可以克隆一张带有一样数据的克隆卡。这就会用到一种叫 UID 卡的特殊 M1 模拟卡,前面说到每张 M1 卡在 0 扇区第 1 段都会有一个全球唯一的 UID 编号,而且这个块在出厂之后是被厂商设定保护无法修改的,UID 卡就是没有设定 0 扇区保护的卡,所以你可以随意的修改你想要的 UID,这样我们就可以克隆出一张连 UID 都相同的卡片了。

1.4 密钥流窃听

利用神器 Proxmark 3 可以嗅探到全部扇区都加密的 M1 卡,在卡和已经授权的读卡器交换数据的时候进行窃听,就能把 tag 数据读取出来,利用 XOR 算 Key 工具就可以把扇区的密钥计算出来,这也是 PRNG 算法的漏洞所导致的。

1.5 验证漏洞

验证漏洞是目前使用最多的M1破解手段,在读卡器尝试去读取一个扇区时,卡会首先发一个随机数给读卡器,读卡器接到随机数之后利用自身的算法加密这个随机数再反馈回给卡,卡再用自己的算法计算一次,发现结果一致的话就认为读卡器是授权了的,然后就用开始自己的算法加密会话并跟读卡器进行传送数据。这时候问题就来了,当我们再次尝试去访问另一个扇区,卡片又会重复刚才那几个步骤,但此时卡跟读卡器之间的数据交换已经是被算法加密了的,而这个算法又是由扇区的密钥决定的,所以密钥就被泄露出来了。因此验证漏洞要求我们至少知道一个扇区的密钥,但目前大部分的扇区都没有全部加密,所以很容易就会被破解。