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

电器工程 智能卡
2022-02-07 04:47:19

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

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

2个回答

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

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

CPU 也是如此。智能卡 CPU 具有大量普通 CPU 根本不需要的内置安全功能。例如,它们不应该通过它们吸收的电流量泄漏有关它们执行的代码的任何信息,或者通过射频辐射泄漏任何东西。

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

也就是说,可以使用具有更多内存的智能卡。您可以购买超过 100kb 内存的它们。不过它们很​​贵。

评论中将密钥从 RSA 更改为 ECC 的建议非常好。与同等安全级别的 RSA 相比,ECC 的密钥大小小得多。因此,您可以从有限的非易失性内存中获得更多收益。ECC 也可能更快。

这就是智能卡的工作方式。如果您想要 U 盘,您知道在哪里可以找到它。

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

智能卡的设计(应该是这样的)如果您尝试绕过软件界面并直接读取它们的内存,则不能。唯一的外部接口是电源线和串行线。其他一切都在法拉第笼内(以对抗排放测量),该笼受到一层腐蚀性化学物质(我认为是酸)的保护,因此如果您尝试在保护层上打孔,芯片(尤其是内存)将被损坏无法恢复。

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

许多因素使智能卡比非安全敏感芯片慢。由于智能卡没有自己的电源,它们需要经常写入闪存——它们无法将内容缓存在 RAM 中。否则,对手可能会在(对他而言)有利的时候切断电源。软件必须使用恒定时间算法(以避免定时攻击),而不是可能的最快算法。软件必须以冗余编写,以防对手向卡照射激光以翻转内存中的一些位并将软件置于不应访问的状态(是的,这是真正的攻击)。

诸如此类的安全措施是有代价的。此外,由于攻击不断改进,芯片的设计也必须跟上。根据摩尔定律,大多数类型的芯片变得越来越强大,但对于智能卡,工程改进主要用于应对新攻击的需要。

有些支持 4k RSA 密钥。但它们并不常见。几年前,Java Card 3被引入以支持 Java 语言的几乎所有特性;我认为能够做到这一点的卡将能够使用 4k RSA 进行签名。但他们并没有真正采用,部分原因是通过增加安全保护来进行工程改进,部分原因是许多工程改进都涉及非接触式卡,这需要更少的功耗和更快的响应时间。

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

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

进一步阅读: