[Feelings & Sharing] [科普]M1卡的加密原理
Tofloor
poster avatar
柚子
deepin
2022-10-03 00:25
Author

这个其实是我bilibili一期科普视频的稿子(那期视频被我删掉了),现在把稿子放上来,希望能帮到有需要的人。(bilibili那期视频我可能会重置一下,内容有亿点枯燥,应该没什么人爱看),这篇稿子的内容是我自己买了读写卡器加上查阅网络资料自己研究的,如有错误欢迎指出!

[科普]你的校卡是如何被破解的

  • 你的校卡又没钱了,但你实在没钱拿来充值,于是你选择了破解校卡,在这个过程中到底发生了什么?
  • IC卡是怎样被破解的,IC卡分为接触式IC卡和非接触式IC卡,而非接触式IC卡又分为很多种,其中使用最广泛的是M1卡。
  • M1分为16个扇区(0-15),每个扇区又分为4个区域块(块0、块1、块2、块3),每个扇区都有独立的一对密码keyA和keyB,第0扇区的块0(即绝对地址0块),它用于存放厂商代码,其他扇区可以存储其他的数据,比如,你的钱。
  • 所以,我们破解校卡,主要破解的是校卡每个加密扇区的两组密码。
  • IC卡密码破解一般采用这几种方法
  • 使用默认密码攻击,如果你的校卡恰巧使用了默认密码,那么恭喜你,你就成功看到你卡里的加密数据了。
  • 不过,一般的卡都不会用默认密码加密重要的数据
  • nested authentication 攻击,这种方法可以在你已知16个扇区中任意一个扇区的密码后,快速获得其他扇区的密码。
  • 这是什么原理呢?我们从卡的验证算法说起,开始验证的时候,卡会主动给读卡器发送一个随机数(明文),读卡器通过跟密码相关的加密算法加密随机数,得到一个加密随机数,并把这个加密随机数发送给卡,卡用自己的密码解密后,发现与之前自己发送的随机数一致的话,那则认为验证通过,之后的所有数据都通过此算法加密传输。
  • 怎么样,发现漏洞没有?只有第一次卡与读卡器交流是用明文的,后面的交流都是加密的,也就是说只要我们知道16个扇区任意一个扇区的密码,后面的交流里,卡与读卡器传输的数据都是包含其他扇区密码的加密数据。这也是为什么nested authentication攻击必须要知道某一个扇区的密码,然后才能破解其他扇区的密码。
  • darkside攻击,那假如16个扇区的密码我们都不知道,怎么办?
  • 经过研究人员的大量测试后,发现算法还存在其他漏洞,当读卡器发送的加密数据中某8bit部分全部正确的时候,卡会给读卡器发送一个加密的4bit数据告诉读卡器验证不通过,那么这4bit的加密数据就相当于把密码给带出来了,再结合刚刚的算法漏洞破解出密码。
  • 当你把一切都搞好,一抬头,发现警察已经等候多时了。
Reply Favorite View the author
All Replies
gfdgd_xi
deepin
Ecological co-builder
2022-10-03 19:01
#1

like

Reply View the author