Mifare经典1k可以安全地用于小额支付吗?
我有一个系统,在一个街机游戏沙龙使用。你正在从收银员那里得到一张卡,并且可以加满它,例如100分(它们写在卡片上,而不是在数据库中,只使用ID)。然后你可以到每台机器上,扫描读卡器上的卡片,你的点数就会减少,剩下的点会显示在lcd上。
因此,每次你扫描卡,它写新的数据和检查它的完整性。
这是否可能是完全防弹的,不能通过某些自定义硬件复制?
我将创建硬件来接受街机游戏的付款,并为自上而下的操作创建软件/硬件。
我正在考虑一个解决方案,在这个解决方案中,我将保存卡唯一id的散列(带有一些秘密种子),以及当前点数数量,并将其保存在卡的eeprom中(当然,还包含点数数量)。我可以将其封装在AES或3 3DES块中,以获得额外的安全性。我将在硬件中存储密钥和散列,这样就会非常安全。
我担心的是:
非常感谢您的任何投入。
发布于 2016-11-28 13:50:44
Mifare经典可以完全复制。你也可以用可变的UID买卡--我刚订了一堆。需要非默认密钥的卡块可以在PC上使用廉价硬件破解。例如: Proxmark或Adafruit PN532 / PN532 V3,使用libnfc和一些其他程序。所有所需的工具都是在Kali linux中使用的。
我还没有幸运地访问这些需要非默认密钥的块,但这只是因为我还没有付出很大的努力。Desfire EV1是2008年后的修订版,这些卡被认为是安全的,而且是不可复制的p.t.如果你知道这是不正确的,请提供链接。
很多地方都使用Mifare的经典标签来进行访问控制--更强大的功能--但我不会用NXP (没有中国仿冒)的任何东西来实现任何涉及金钱的事情。
谷歌'mifare经典克隆‘。
从阅读各种来源,我估计它将需要最多25-30分钟,从这些卡片上的所有数据。对于使用默认键的卡,它所用的时间不到一秒钟。Adafruit PN532 (它有一个像样的天线)可以在7cm的距离内完成-这个范围可以通过定制天线来增加。从3-4厘米处可以读到火。似乎卡处理和通信所需的功率越多,扫描仪的范围就越小。琐事:一层铝箔就能阻止这.不需要“钢铁钱包”。把它粘在一个标准的信用卡持有者上,然后把它放在你的钱包里。
编辑:任何来自戊酯和工程师的补充信息都将对OP有用。请纠正我对NFC可能产生的任何误解;)
发布于 2016-11-27 22:40:31
你可以利用这样的计划。然而,有一些事情需要处理。
在卡中存储的金额,连同卡UID +数量的散列,可以防止将金额从一张卡复制到另一张。
但是,它并不阻止用户读取卡数据,在游戏中使用卡(从而减少了数量),然后重写先前的卡数据以恢复其初始数量。为了防止这一点,你必须确保只有授权终端(游戏机)才能在卡片上写字。
Mifare将通过允许您在卡中加载自定义密钥来解决此问题,这将保护扇区不被读和/或写入。这些钥匙必须被机器知道。
现在,为了防止卡模拟/克隆,如果您在卡中加载自定义密钥,您也可以解决这个问题。终端必须在交易前使用您的自定义密钥进行身份验证,因此您必须确保这张卡是真实的。请注意,在这一点上,您甚至不必在卡中存储amount+UID的散列,以保证金额不会转移到另一张卡,因为只有您的机器(您信任的机器)才能读/写真正的卡。
因此,如果您适当地设置mifare扇区的密钥和访问位,那么基本上是可以的。你也必须保护你的游戏机器硬件,因为黑客可以访问这样一台机器,可能会发现如何改变卡中存储的数量。
关于你的详细问题:
发布于 2016-11-28 14:16:57
在我看来,货币“储存”唯一合理的安全选择是将卡作为GUID的一个有点安全的容器,并集中处理实际的余额验证和修改。
EMV信用卡的标准策略通常将离线购买(如果有的话)限制为20美元的累积,这是有原因的;有太多不同的攻击场景,除非风险足够低,否则无法保证离线系统的安全,即使您使用的芯片安全(且昂贵得多)。
如果这是一家“街机游戏沙龙”,也就是说人们可以提前支付几个小时的娱乐费用,那么风险就很低,你可以用非技术手段来减轻风险(让一个人在你的游戏厅里呆上十几个小时,而不加满卡?),但如果它涉及赌博和可能赢钱,那就完全不同了。
https://security.stackexchange.com/questions/143724
复制相似问题