第四十三个知识点:为AES描述一些基础的(可能无效)的对抗侧信道攻击的防御

原文地址:http://bristolcrypto.blogspot.com/2015/07/52-things-number-43-describe-some-basic.html

侧信道防御:为什么

对于一个现代的严肃的密码学方案,我们一般需要某种形式的安全证明。在AES中,我们认为如果攻击者不知道密钥,那么它就是一个随机排列。然而如果攻击者有侧信道信息,这可能不再安全。因此,我们能做什么防御它呢?理想的,我们可以创建一个完全不受侧信道攻击影响的实现,然而,然而,这实际上意味着实现必须完全隔离,绝对没有输出流——这使得它相当没有意义!

也许我们可以确保,无论我们做什么,AES实现是否通过侧信道泄漏信息都无关紧要?这就引出了泄漏弹性密码学(leakage resilient cryptography)领域,这确实是一个非常强的安全需求。在这些条件下(这种情况很少)安全的方案往往比那些避免(/忽略)问题的方案效率低得多。由于在设计中必须始终进行权衡,因此在实践中,我们倾向于使用假定AES不泄漏任何信息的方案,并将它们与包含防御一些更简单的侧通道攻击的实现相结合。这样做的目的是将攻击成本比安全信息的价值更高,这样(即使他们可以做到)就没有敌人会攻击这个系统,因为它不再可行了。

一些基本的防御

因此,考虑到这一点,让我们考虑一些基本的防御措施,以抵御一些不太复杂的侧通道攻击。正如问题中所指出的,这些技术可能很容易被忽略,所以请将本文视为解释一般概念,而不是提供任何明智的建议!

时间攻击

弱点:一些实现的运行时间取决于它们的输入。因此,通过通过观察系统需要多长时间来响应,可以了解到一些关于键/输入的信息。

防御:常数时间实现。就像标题所说的,最好的对抗时间防御的方法就是确保实现需要花费常数时间运行,同时如今的大多数实现都是常数时间的。这可能在硬件上不是很难,但是在软件上却很难,因为微代码(内部处理器的程序)通常是商业机密。

功率分析(DPA,SPA)

弱点:一些实现的功耗与关键材料相关,这通常是由于存储值时的汉明距离。更多信息,请阅读两周前的博客。

防御1:掩码不是直接使用AES Sbox,而是将掩码应用于输入值,并在掩码Sbox中查找它(实际上,Sbox的值被重新排序以适应掩码)。然后,尽管攻击者可能能够检测到某些内部变量之间的关联,但这些变量都是隐藏的,并且不像以前那样(直接)对应于关键材料。更复杂的掩蔽方案实例化起来会更复杂,但是会导致更好的攻击抵抗力。

防御2:在进行功率分析攻击时,攻击者使用他们知道AES方案内部结构的事实。如果我们在我们的实现中打乱s盒的顺序(通过一些秘密排列),对手将不知道他们的读数如何与内部关键材料相对应。另一种变体是故意使用非决定论,允许处理器自行对某些指令集合重新排序。

缓存流

弱点:如果适当的单元已经在处理器缓存中,那么使用查找表(例如SBox)的mplem朝向的效率将会提高或降低。通过将大部分查找表推出缓存,攻击者可以观察是否调用了适当的单元格,从而泄漏信息。如果可以观察到加载缓存的成本,也可以观察到定时攻击或功率分析。

防御:不要对秘密数据使用查询表!这个列表中最简单的防御方法——如果您不想泄漏使用了哪些查找条目的信息,那么就不要使用查找表。对于AES,这是合理的,因为AES Sbox实际上可以作为输入字节上的一个简单函数来计算。这对于(例如)没有这种结构的DES Sbox就不太实用。

最新文章

  1. MongoDB Java Driver操作指南
  2. 如何解决ajax重复提交的问题
  3. Python导入Scipy子模块时出错
  4. http错误码
  5. 矩阵乘法快速幂 codevs 1250 Fibonacci数列
  6. matlab中textread
  7. repo sync下载脚本
  8. Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
  9. android:installLocation简析
  10. openstack 控制节点大流量对外发包,nf_conntrack,table full droping packets
  11. WPF学习(1)WPF概述
  12. BZOJ 2209: [Jsoi2011]括号序列 [splay 括号]
  13. vue之nextTick全面解析
  14. 201521123008《Java程序设计》第五周实验总结
  15. metasploit联动beef启动
  16. 海量数据处理算法(top K问题)
  17. matplotlib使用
  18. P2089 烤鸡(搜索简单题)
  19. Apache自带压力测试工具----linux环境中ab命令简介及结果分析
  20. python网络编程(一)

热门文章

  1. Portrait Photography Beginners Guide
  2. vue3 使用 data、computed、methods
  3. Ecshop 后台导出订单Excel时, 内存溢出的解决方法
  4. MapStruct对象转换
  5. 如何将List集合中相同属性的对象合并
  6. Output of C++ Program | Set 9
  7. java中的原子操作类AtomicInteger及其实现原理
  8. idea如何在git上将分支代码合并到主干
  9. jQuery中的html()、text()和val()的用法
  10. DevOps和SRE的区别