我知道这是一个很难的问题,但如果解密或认证失败,那么抵御定时攻击的良好防御措施就不会发出信息吗?因此,如果攻击者提供了错误的HMAC (例如,比较并发现这是false ),则只需将任何内容返回给攻击者(这是在考虑网络环境,但我不想将其限制在网络环境中)。
还有其他方法来抵御时机攻击吗?我找到了像这 (免费PDF)和这 (免费PDF)这样的论文。后者似乎是一项改变AES的建议,以帮助它防止时机攻击的可行性,我不认为我应该继续去实现它我自己。
所有这些论文都很好,但它们读起来太长了,老实说,有时候它们只是把我弄丢了。那么,是否有任何针对定时攻击的实际实现示例?我更希望这些例子适用于任何密码,但具体的密码也会很好。
我应该注意到,我在这个主题上找到了一些答案:就像这个AES-定时攻击一样,但答案(到处都是)是:抓住最坏的时间,让它持续那么长时间。对于实现来说,这并不是一种可行的方法,对吗?
博士
发布于 2015-03-05 13:45:07
不,因为定时攻击与错误没有任何关系。定时攻击意味着分析密码操作完成泄漏秘密信息所需的时间。这实际上与错误消息无关;查看服务器在CTR模式下解密某些内容所需的时间攻击(在CTR模式下,AES原语运行在具有秘密密钥的公开明文上),通过测量消息之间的延迟来获取有关密钥的信息,这也是一种定时攻击。另一方面,如果出了问题,我们有很好的理由返回错误--这意味着需要重新发送消息,因为你不知道它是否在传输过程中被破坏了,或者消息本身是否有问题。
现在,有一些攻击与能够知道消息中有错误有关;针对TLS的贵宾攻击就是这样的一种攻击,在这种攻击中,知道填充是坏的告诉攻击者有关明文的宝贵信息。这可能是您从错误消息的角度考虑的问题,补救措施的一部分可能是不发送详细的错误消息(真正的解决方法是使用消息完整性机制来保护明文,这样攻击者就无法提取选定的密文攻击)。但时机攻击与此无关。
防范定时攻击的方法是确保执行密码操作所需的时间不依赖于任何秘密信息。它可以依赖密钥长度或消息长度,因为这通常不被认为是秘密的;它不能依赖于密钥的实际值或消息的内容。这比做固定时间比较等复杂得多;您还需要担心其他因素(比如缓存),这些因素并不直接控制,但却会影响运行操作的时间(这是密码的直接硬件实现的优点之一:当您完全控制执行时,只有Intel或AMD工程师才能控制时间)。
https://crypto.stackexchange.com/questions/24275
复制相似问题