第四十三个知识点:为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就不太实用。

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

  1. 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法

    第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-45-de ...

  2. intel:spectre&Meltdown侧信道攻击(四)—— cache mapping

    前面简单介绍了row hammer攻击的原理和方法,为了更好理解这种底层硬件类攻击,今天介绍一下cpu的cache mapping: 众所周知,cpu从内存读数据,最开始用的是虚拟地址,需要通过分页机 ...

  3. 第二十三个知识点:写一个实现蒙哥马利算法的C程序

    第二十三个知识点:写一个实现蒙哥马利算法的C程序 这次博客我将通过对蒙哥马利算法的一个实际的实现,来补充我们上周蒙哥马利算法的理论方面.这个用C语言实现的蒙哥马利算法,是为一个位数为64的计算机编写的 ...

  4. 第三十三个知识点:Bellcore攻击是如何攻击使用CRT的RSA的?

    第三十三个知识点:Bellcore攻击是如何攻击使用CRT的RSA的? 注意:这篇博客是由follow论密码计算中消除错误的重要性(On the importance of Eliminating E ...

  5. NeHe OpenGL教程 第四十三课:FreeType库

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. Java进阶(四十三)线程与进程的区别

    Java进阶(四十三)线程与进程的区别 1.线程的基本概念   概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必 ...

  7. 网站开发进阶(四十三)html中,路径前加“/” 与不加“/”的区别

    网站开发进阶(四十三)html中,路径前加"/" 与不加"/"的区别 前言 <script src="js/downloadify.js&quo ...

  8. Gradle 1.12用户指南翻译——第四十三章. 构建公告插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  9. “全栈2019”Java第四十三章:封装

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. Zookeeper之创建组,加入组,列出组成员和删除组

    public class CreateGroup implements Watcher { private static final int SESSION_TIMEOUT=5000; //ZooKe ...

  2. nodeJs,Express中间件是什么与常见中间件

    中间件的功能和分类 中间件的本质就是一个函数,在收到请求和返回相应的过程中做一些我们想做的事情.Express文档中对它的作用是这么描述的: 执行任何代码.修改请求和响应对象.终结请求-响应循环.调用 ...

  3. Linux磁盘分区(二)之挂载卸载常用命令

    Linux磁盘分区(二)之挂载卸载常用命令 转自:https://blog.csdn.net/qq_36183935/article/details/81053383           https: ...

  4. html标签设置contenteditable时,去除粘贴文本自带样式

    在一个div标签里面加了可编辑的属性,从别的地方复制了一串文本,只想把文本内容存到接口里面,结果发现文本自带的标签和样式都会存进去. $(".session-new-name"). ...

  5. Springboot集成velocity

    1.加入maven包 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. frp实现基于反向代理的内网穿透

    个人博客主页: xzajyjs.cn frp是什么 简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP.TCP.UDP等众多协议 ...

  7. 开发中Design Review和Code Review

    一.Design Review 详解 翻译为设计评审,也就是对需求设计进行审核,防止出现异常问题,例如下面的这些 可用性 外部依赖有哪些?如果这些外部依赖崩溃了我们有什么处理措施? 我们SLA是什么? ...

  8. 攻击科普:DDos

    目录 一.DDoS 攻击究竟是什么? 二.DDoS 攻击多少G是什么意思? 二.DDoS攻击种类 ICMP Flood UDP Flood NTP Flood SYN Flood CC攻击 DNS Q ...

  9. 0RAYS元旦招新赛

    一共有4道pwn题,题目不算难,但是挺考验调试能力的. pie 一个main函数就四次溢出... 第一次leak canary,第二次leak libc,第三次直接覆盖返回地址为one_gadgets ...

  10. SpringMVC编程:初始化项目部署后,主页404代码问题解决

    SpringMVC 主页404问题 初始化项目后,Tomcat服务器显示404报错问题! 问题解决的原因是:项目依赖的jar包没有随着项目一块打包部署在Tomcat服务器上面,即缺少项目lib依赖. ...