当用正方形和乘法攻击RSA时,可以通过查看幂算法本身来找出密钥。为了防止这种情况出现在软件中,我们可以在每个平方之后使用虚拟乘法。
然而,在AES上也存在相关功率分析等攻击,从定义上来说,这是很容易受到攻击的。如何在不使用任何噪声掩蔽硬件组件的情况下,在软件级别上防止此类攻击?
假设您想要更新一个硬件不能改变的侧通道电阻设备,如何才能继续使用DSA、AES之类的算法?
发布于 2023-05-04 19:45:14
软件可以做很多事情来阻止权力分析。从根本上讲,功率分析着眼于功耗,以提取在设备内部进行操作的信息。为了理解这些数据,需要了解设备功耗与设备执行的算法步骤之间的相关性。
较不为人所知的是密码组件操作方式的改变。对给定实现的功率分析可能需要在独特的输入上进行数百到数千次的功率跟踪。攻击者将他们选择的明文或密文输入到密钥加密函数中。限制可以使用密钥的次数,或者限制它将接受的输入范围,会限制攻击者提取密钥信息的能力。
例如,在使用攻击者执行密钥派生时,攻击者从主密钥控制当前。不需要执行允许攻击者对密钥进行2^128查询的k=AES_enc(Nonce,K_master)操作,而是可以在一个AES操作中将nonce分解为n位部件,每个部件与主密钥混合。类似地,旋转键的高层构造通常花费很少,但避免给攻击者从任何一个键中提取信息的时间。
在某个地方有一个来自微芯片的应用程序说明。
最后,考虑利率限制。使获取每一个能量轨迹需要更长的时间。例如,如果使用银行卡执行需要PIN输入的事务,则可以使用软件定时器将密码操作延迟到开机后5-10秒。
在线协议的速率限制的另一个选项是在设备允许使用敏感密钥之前使用非对称密码技术来执行初始的质询响应协议。例如,该设备可以存储2^N哈希应答值的Merkle树的根。它随机生成一个挑战0 ≤ challenge < 2^N,并期望接收相应的答案值和中间的叶散列,这些哈希可以用来到达存储的根哈希。这是一个简单的公钥加密技术,它只需要对称原语。捕获了k挑战响应对的攻击者被2^N/k减慢了攻击速度,除非他们正在执行在线攻击。
发布于 2023-05-05 14:05:12
如果一个人让软件看起来像在硬件上,你可以使一些东西是固定的时间和相对固定的力量。这包括通过软件决定硬件的行为,包括删除查找表和缓存命中。
我有一份关于AES S盒是如何在硬件中实现的文档.我在软件中使用了同样的架构,并验证了它是固定时间的。
遗憾的是,对于每一种加密算法,您都必须这样做。你可以用一种非最优的方式自动完成这件事。如果算法有一个逻辑树,您可以对NAND门进行卡诺缩减(我们可以实现任何电路),然后让CPU执行一系列逻辑操作。
https://crypto.stackexchange.com/questions/106397
复制相似问题