MIFARE Classic非接触式卡标准创建于20多年前,尽管此后发现了许多漏洞,但它仍被广泛使用(特别是在莫斯科和圣彼得堡)。 在本文中,我们将回顾发现的漏洞,并描述如何修复它们。
资料来源:Instagram @ pro.ticketing传统上,对于此类条款,我们记得在俄罗斯,根据法律对伪造和门票销售进行起诉(《俄罗斯联邦刑法》第327条和第165条),并敦促读者保持警惕。
MIFARE经典结构
恩智浦的MIFARE Classic标准是一系列卡。 它包括MIFARE Classic 1K,4K,EV1 1K,EV1 4K,MIFARE ID,MIFARE Mini。 另外,该标准可以被其他较新的NXP卡(MIFARE Plus,JCOP等)模仿。
读卡器的卡操作基于ISO 14443A标准,频率为13.56 MHz。
MIFARE Classic 1K卡提供了以64字节扇区组织的存储区域。 每个扇区分为4个16字节大小的块:

对于4K卡,前2048个字节被组织成64个字节的32个扇区,其余部分被组织成256个字节(或16个块)的8个扇区。 每个扇区的最后一块称为扇区尾部,它包含该扇区的密钥和访问参数。 零扇区的零块是一个特殊的块,已锁定以进行写入,其中包含卡制造商的标识符和信息。 为了使一张卡具有几种不同的应用程序-例如,对于具有有关福利,地铁票和火车票的信息的社交卡-在零扇区的其余部分中写入如何使用每个扇区
-MIFARE应用程序目录(MAD) 。
在访问该扇区进行读取或写入之前,必须使用6字节密钥进行授权。 授权按照与5.2.2章中所述类似的三步协议进行。 标准ISO / IEC 9798-2:1999。 使用专有的流加密算法CRYPTO1:

- 读取器发送一个授权请求,指示授权发生的扇区号。
- 该卡从内部存储器读取访问密钥,生成随机序列,并将其返回给读取器。
- 读取器使用扇区访问密钥和CRYPTO1加密算法计算响应,然后将其与生成的新随机序列一起发送。
- 卡检查由读者计算出的响应。 然后,它计算对阅读器呼叫的响应并将其返回。
- 读取器检查卡的响应。
扇区内容的进一步传输以加密形式进行。 如果需要登录到另一个扇区(所谓的辅助授权),则将执行重新授权。 主要区别在于,整个交换首先使用旧密钥加密,然后使用新密钥加密。
MIFARE经典已知漏洞
地图密码学已得到充分研究。 找到了伪随机数生成器(PRNG)卡的实现漏洞和CRYPTO1算法的漏洞。 实际上,在以下攻击中使用了这些漏洞:
- 阴暗面-攻击利用了PRCH漏洞。 适用于EV1之前的MIFARE Classic卡(在EV1中,PRNG漏洞已被删除)。 对于攻击,您只需要一张地图,就不需要知道密钥。
- 嵌套 -攻击利用CRYPTO1漏洞。 该攻击是基于辅助授权进行的,因此对于一次攻击,您需要知道一个有效的卡密钥。 实际上,对于零扇区,他们经常使用标准密钥来与MAD配合使用-从零开始。 适用于CRYPTO1(MIFARE Classic及其仿真)上的所有卡。 该漏洞已在文章“车前子贴图的漏洞:圣彼得堡地面交通卡中的漏洞”漏洞中得到证明。
- 通过侦听交换进行攻击-攻击使用漏洞CRYPTO1。 要进行攻击,您需要窃听读卡器和卡之间的主要授权。 这需要特殊的设备。 适用于CRYPTO1(MIFARE Classic及其仿真)上的所有卡。 这篇文章在“劫持城市卡运输卡(下诺夫哥罗德)”中得到了证明。
在实践中,所有这些操作都使您可以获取卡的所有扇区的访问密钥,只有手头的卡已使用访问密钥进行了初始化。 此外,可以对卡的内容进行重放攻击,或者可以在具有可重写卡标识符的特殊空白上复制卡。
此外,访问密钥基础结构中还存在一个漏洞。 由于CRYPTO1上的加密是在读卡器的一侧实现的(CRYPTO1仅在硬件中实现),因此访问密钥如下:
- 在使用卡之前先转移到读卡器上,
- 要么存储在阅读器本身上的安全硬件存储中(例如MIFARE SAM ),
- 要么存储在阅读器的只读存储器中。
而且,如果您在信息终端或旋转门等特殊设备中可以使用安全的硬件密钥存储,则在Android应用程序中,只能选择传输密钥并将其存储在设备的内存中。 这样就可以通过黑客入侵应用程序或分析应用程序流量来拦截这些密钥。 “三驾马车卡的安全性研究”一文中所展示的内容。
漏洞管理方法MIFARE Classic
访问密钥多样化
多样化是通过使用卡特有的某些输入数据通过主密钥获取访问密钥的过程。 获取密钥的过程可以在与阅读器配合使用的应用软件中实现,也可以通过SAM模块实现。
例如,这可能是这样的:
- 作为多样化的输入,使用了卡号和扇区号,这是我们要接收的密钥。
- 该数据用主密钥加密(在SAM模块或应用程序软件中),结果被截断为6个字节,并用作对相应扇区的访问密钥。

结果,每个卡都收到其唯一的扇区访问密钥。 即使任何特定卡的密钥被盗用,也不会导致大量使用这些密钥。 但是您需要了解,多样化只是一半的措施,不能保护单张卡片免遭破坏,并且不能修改Android应用程序以拦截和使用多样化的密钥。
过渡到MIFARE Plus和SL3安全级别
为了解决CRYPTO1中的漏洞,开发了MIFARE Plus系列卡。 映射的结构类似于MIFARE Classic,仅更新映射的密码。 它们可以在两种模式下工作:
- MIFARE经典仿真模式(此操作模式称为安全级别1或SL1),它使您可以在读卡器的现有基础结构上使用它们,而无需修改与卡兼容的软件;
- 安全级别3(SL3)模式,该模式要求对扇区进行授权并使用AES算法以及可选的安全性插件添加对数据交换进行加密。
这些卡上的PRNG漏洞已被消除,因此,在SL1模式下,这些卡仍然容易受到CRYPTO1的攻击,但是在SL3模式下,目前尚无已知攻击。
与SL1不同,SL3中的授权和加密可以在软件中实现。 因此,您可以防止自己通过Android客户端截取密钥。 为此,服务器必须执行授权和加密。 然后,密钥不会离开服务器,Android客户端仅代理卡中的请求和响应。 这将需要应用程序连接到Internet,这可能很不方便,因此您可以配置卡,以便使用一个键读取扇区,而使用另一个键记录。 然后,用户将能够在脱机时查看有关该卡的信息,并且他将能够补充余额或仅在线购买该卡的票。
不要忘记,对于AES密钥,可以通过修改16字节长的密钥的算法来实现多样化。
现有的基于MIFARE Plus SL1卡的运输卡可以分两个阶段切换到SL3模式:
- 使用MIFARE Plus的设备已准备好使用卡的设备(旋转门,收银台,自动售货机,终端)的基础结构。 针对读卡器的软件已根据使用卡完成了。
- 基于MIFARE Plus的已发行运输卡已转换为SL3模式-在卡的正常使用过程中可能会发生这种情况,例如,通过旋转门或将卡连接到信息终端。 卡片转移过程对乘客是不可见的,大约需要100毫秒。
切换到MIFARE DESFire
MIFARE DESFire卡的加密与MIFARE Plus相似-在使用该应用程序之前,根据选择卡发行者的算法之一执行三步授权:DES,3DES,AES。 使用可选的仿制插件以加密形式与卡进行进一步交换。
该卡的功能与MIFARE Classic不同。 卡存储器是在文件系统中组织的。 地图上可能有几个应用程序;每个应用程序可能有几个文件。

使用该卡首先要根据其标识符和授权来选择应用程序。 接下来是处理文件-创建,删除,读取,写入。 文件可以是各种类型,例如,内存的平坦区域,钱包余额,可循环重写的文件。
过渡的主要困难是您需要升级与卡兼容的软件。 有必要从划分为扇区的存储器的使用转移到应用程序和文件,并且相应地,将授权顺序从扇区更改为对应用程序和/或文件的授权。 在硬件方面,卡对读取器的基础结构施加与MIFARE Plus相同的限制。
与MIFARE Plus相比,优点是更容易实现基于MIFARE DESFire的多品牌卡-在一种介质上的不同卡组合:Troika-Strelka,Troika-Podorozhnik,能够记录运输票证的社交卡)。 在MIFARE Plus中,这是通过管理地图上各种应用程序的扇区来实现的。 在这里,每个系统都可以使用所需的应用程序,并且可能不知道地图上还有其他任何应用程序。 第二个优点是,其他类型的文件使您可以实现一些特殊情况-例如,用一个访问密钥补充钱包余额,并从另一个余额中支出资金或退还所花费的金额。
如今,SIM卡制造商(STM,Gemalto,G&D和Oberthur)已经具备商用SIM卡和带有MIFARE DESFire仿真功能的内置安全功能。
Oyster卡(伦敦公共交通卡)于2009年转让给MIFARE DESFire;自2010年以来,不再使用MIFARE Classic卡。 SUBE运输卡(阿根廷)正在过渡到MIFARE Plus SL3。 在都柏林的公共交通中,基于MIFARE Classic构建了3种类型的卡:Luas(电车),Dublin Bus和DART(郊区铁路),并已由已经基于MIFARE DESFire的一张Leap卡取代。 现代运输解决方案最初通常是建立在安全媒体上的。
切换到其他运输卡(CALYPSO,CIPURSE,FeliCa)
从安全角度来看,这些卡类似于MIFARE Plus和DESFire卡-基于AES的加密技术,三步授权,可以进行仿真,安全硬件存储-
安全访问模块(SAM) ,许多卡可以模拟MIFARE Classic。 它们还基于ISO / IEC 14443A标准工作。
MIFARE-冠军
ABI Research 2017年第一季度2017年,MIFARE卡在全球运输中的份额为75%,据预测,到2021年将不会低于70%。
MIFARE在世界上的份额减少主要是由于其他卡的增长,其他卡主要包括银行卡(EMV)和卡虚拟化(切换到智能手机)以代替票务承运人功能。 银行卡比交通卡受到更好的保护-但是您必须为此付费。 为银行卡提供服务需要在线进行,由于银行认证要求,读取器的价格更高,运输运营商因补充运输卡而损失了现金流量。 所有这一切都建立了一定的力量平衡,这两个标准(MIFARE和EMV)都可以找到自己的利基并占领它们。
如今,除恩智浦(Calypso,CIPURSE)以外的其他标准上的运输卡数量还不到5%。 基本上,这些技术集中在历史上已经开发了地图的国家(日本和法国),到目前为止还没有超越它们。 这是可以理解的-创建用于生产和支持卡片的本地生态系统在经济上并不总是合理的,应该由市场支持。 俄罗斯有可能加入许多支持这些标准的国家。 为此,首先需要政治解决方案。
单击下面的链接以获取有关Mifare Classic的更多信息:
结论
我们将很乐意在文章评论和instagram@pro.ticketing上回答问题。 在2019年1月,我们公司为莫斯科运输领域的一个新项目开设了多个
职位空缺 ,包括可能吸引
3-4人的团队 。 在公共交通出行支付和验证的新技术领域
,初创公司的
加速器已经开放。