我想知道JavaCard中的Util.*函数是否通常是旁路抵抗的。
是否存在一些具有抗旁路功能的JavaCards?
我查看了几个公开的JavaCard安全目标。但这两个函数都没有列出Util.*函数的安全声明。
在没有本机代码的帮助下,在Java中实现旁路抵抗似乎很难,如果不是不可能的话。因此,JavaCard应该具有抗侧信道Util.*功能,对吗?
发布于 2017-05-23 17:57:48
不,我想我没见过这样的事情。但似乎没有什么需要:
arrayCopy(byte[] src, short srcOff, byte[] dest, short destOff, short length)arrayCopyNonAtomic(byte[] src, short srcOff, byte[] dest, short destOff, short length)arrayFill(byte[] bArray, short bOff, short bLen, byte bValue)arrayFillNonAtomic(byte[] bArray, short bOff, short bLen, byte bValue)复制和填充操作通常不会对数组中的位做任何操作。它们复制或替换字节,但无论字节的内容如何,它们都会这样做。只有在EEPROM或闪存级别才会发生泄漏-而这不太可能在Java Card级别上解决。
Warning:仍应避免数据的虚假复制,写入持久性内存尤其可能泄漏信息。
getShort(byte[] bArray, short bOff)makeShort(byte b1, byte b2)setShort(byte[] bArray, short bOff, short sValue)现在这些函数基本上也不考虑字节的内容。它们只是将内存的值复制或移位到正确的位置,同样与内容无关。
对于复制和短处理函数,理论上您可以创建一个不安全的函数来抵御旁路攻击,但通常您应该是安全的:使它们不安全实际上比使它们安全更难。
arrayCompare(byte[] src, short srcOff, byte[] dest, short destOff, short length)现在,这将需要特定的编程来避免旁路攻击。
目前似乎还没有侧通道安全版本的arrayCompare。这有点烦人,因为在3.0.5中,它可以提供使用SensitiveResult保护数组比较结果的功能。
这是应该在规范中修改的东西,但现在您可能会坚持自己编写它。
当然,特定的供应商可能会确保此呼叫的安全;这将是有意义的。但是,依赖于特定的供应商功能会使您的applet在不同实现之间的可移植性较差。
如果数据访问易受攻击以及特定于平台的缓解措施的影响,请查看您的平台文档。
https://stackoverflow.com/questions/44126307
复制相似问题