为什么智能卡的处理能力和内存如此有限?[关闭]


8

为什么像SLE5528这样的普通智能卡几乎总是限于<16K的可用内存和非常慢的8位处理器?是什么限制因素使得提高这些限制在技术/经济上不可行?

编辑:也许我应该就为什么我问这个问题提供更多背景信息。对于工作中的客户,我们必须集成一个基本上用作密钥库的智能卡模块(类似于可在诸如PKCS11之类的高级编程库中使用的模块)。我们一直在达到此设备的极限(不能存储多个密钥,不能存储任何大于1k的密钥,必须等待至少5秒钟才能获取密钥列表,等等)。在供应商端,我唯一能联系到的人是给我一个“这就是智能卡工作方式”答案的供应商。好像没有真正的市场可以将大小大于4K的RSA密钥存储在卡上。我很想知道背后的真正原因。


具有更多资源的卡的市场可能很小,并且制造商的利润不足。除非您询问制造商,否则这个问题将引起很多猜测。
尼克·阿列克谢耶夫

功能划分-智能卡的作用不只是识别特定任务。人们已经提出了在SIM卡上运行Android之类的黑客手段,但这并不是在产品总体设计中的正确位置。
克里斯·斯特拉顿

是的,我一直想知道为什么它们不能在八核戊烯上运行……
PlasmaHH 2015年

“有限”-比较什么。为什么还需要更多呢?
安迪(aka Andy)

@ChrisStratton我可以理解这一点,但是即使在身份验证和记帐领域,它仍然不够。一个很好的例子是OpenPGP卡,其密钥大小非常受限制,最终驱使人们使用USB随身碟来进行PGP签名而不是使用智能卡。
JDoe

Answers:


11

为什么像SLE5528这样的普通智能卡几乎总是限于<16K的可用内存和非常慢的8位处理器?是什么限制因素使得提高这些限制在技术/经济上不可行?

安全功能导致价格上涨,这是额外的价格。从技术上讲,您无法将智能卡的非易失性存储器与普通闪存或eeprom存储器进行比较。例如,可以打开普通闪存,将引线键合到芯片上,然后读出存储器内容。使用智能卡是不可能的(或更现实的是:它应该如此复杂和昂贵,以至于不值得)。

CPU也是一样。智能卡CPU具有大量内置安全功能,而普通CPU根本不需要。例如,他们不应泄漏他们执行的代码上的任何信息,也不会泄漏任何射频辐射泄漏的信息。

也就是说,所有这些旁通道盲区不仅在制造成本上而且在计算性能上都有代价。安全比快速更重要。

也就是说,可以使用具有更多内存的智能卡。您可以购买超过100kb的内存。他们虽然昂贵。

注释中的建议是将密钥从RSA更改为ECC是一项很好的建议。与相同安全级别的RSA相比,ECC的密钥大小小得多。因此,您可以从有限的非易失性存储器中获得更多收益。ECC也可能会更快。


6

这就是智能卡的工作方式。如果需要USB记忆棒,则知道在哪里可以找到它。

智能卡旨在确保安全性。它们的目的是防篡改。他们旨在存储秘密并自杀,而不是放弃他们的秘密。您不能(通过合理的努力,除非实现缺陷)从数据中提取或克隆数据。

智能卡的设计(假定是)使您如果尝试绕过软件界面并直接读取其内存,则不会。唯一的外部接口是电源线和串行线。其他所有东西都在法拉第笼中(用于抵抗排放测量),该笼由一层腐蚀性化学物质(我认为是酸)保护着,因此,如果您试图在保护层上打洞,则芯片(尤其是内存)会被破坏,无法恢复。

该芯片经过设计,可以消耗恒定的功率,从而避免由于功耗而泄漏信息。它的设计还允许操作花费恒定的时间。因此,智能卡芯片没有诸如指令流水线或电源管理之类的硬件优化来减少散热。智能卡芯片通常包含的部件实际上并没有任何作用,从而使排放和功耗变得更恒定或更难以分析,并使逆向工程变得困难。

许多因素使智能卡比不对安全敏感的芯片慢。由于智能卡没有自己的电源,因此它们需要相当频繁地写入闪存-它们负担不起在RAM中缓存内容。否则,对手可能会在有利的时候(对他而言)切断权力。软件必须使用固定时间算法(以避免计时攻击),而不是最快的算法。万一对手在卡上发出雷射以翻转内存中的某些位并使软件处于无法访问的状态(是的,这是真正的攻击),则必须冗余编写软件。

诸如此类的安全措施是有成本的。此外,由于攻击持续改善,因此芯片的设计必须跟上。遵循摩尔定律,大多数类型的芯片变得越来越强大,但是对于智能卡,工程上的改进大部分被抵抗新攻击的需要所吸收。

还有支持4K RSA密钥卡。但它们并不常见。几年前,引入了Java Card 3来支持Java语言的几乎所有功能。我认为能够执行此操作的卡可以使用4k RSA签名。但是它们并没有真正采用,部分原因是工程改进是通过增加安全保护来进行的,部分原因是非接触卡已经进行了许多工程改进,从而需要更少的功耗和更快的响应时间。

但是4k RSA的市场并不多。随着智能卡达到这一点,ECC变得广泛可用。您可以使用更小的ECC密钥获得与4k RSA相同的安全级别。从RSA切换到ECC的唯一缺点是在整个基础架构中都支持该算法,但是嵌入式设备(例如智能卡)是最困难的部分:如今,服务器端几乎所有支持ECC的东西。

如果您确实需要更强大的功能,则可以使用具有“真正”计算能力的USB软件狗,该软件狗可以存储加密密钥并通过PKCS#11接口执行加密操作。这些加密狗的物理防篡改能力与典型的PKCS#11几乎没有相同。这是安全性和性能之间的折衷。

进一步阅读:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.