当前位置: 首页 > news >正文

建材做网站好吗网络软件开发

建材做网站好吗,网络软件开发,微商网站怎么做的,2020十大装修公司作者#xff1a;A. Moghimi, J. Wichelmann, T. Eisenbarth, and B. Sunar. 发布#xff1a;International Journal of Parallel Programming 时间#xff1a;Aug 2019. 笔记#xff1a; 缓存定时攻击 1、攻击原理 共享缓存存在定时侧信道的风险#xff08;例如在处理…作者A. Moghimi, J. Wichelmann, T. Eisenbarth, and B. Sunar. 发布International Journal of Parallel Programming 时间Aug 2019. 笔记 缓存定时攻击 1、攻击原理 共享缓存存在定时侧信道的风险例如在处理并发任务的资源争用产生的时延 (1)之前的工作 ①CacheBleed 1)针对缓存组冲突 ②MemJam 1)利用写后内存读取的错误依赖绕过恒定时间技术 2)假设攻击者能够与受害者在同一物理核心内的一个逻辑处理器对上协同定位。在加密攻击中攻击者可以测量受害者加密的时间。攻击者进一步知道受害者使用的是哪种加密实现但她不需要知道受害者的二进制或s-Box表的偏移量。 2、解决方法 最简单的方法是最小化查找表的内存占用来减少时间差异 例如在高级加密标准AES中使用单个8位S-Box而不是T-Tables使得在嘈杂的环境中对AES的缓存攻击效率低下因为对手只能区分4条不同缓存线之间的访问。 (1)恒定时间即控制时间差异 ①原理 1)设计密码操作的存储器访问以遵循统一的密钥无关模式 2)采用小表并在每次查找时访问所有缓存行 ②缺陷 取决于底层。MemJam指出处理器不断发展每一个新版本都会悄悄推出新的微体系结构功能而这种微妙功能的多样性使得全面评估变得不可能。一个很好的例子是对OpenSSL RSA分散收集实现的缓存组冲突攻击它表明具有缓存内级别分辨率的对手可以成功绕过依赖于缓存线粒度的恒定时间技术。 摘要 缓存攻击利用加密实现的内存访问模式。 恒定时间实现技术已成为对抗缓存定时攻击的不可或缺的工具。这些技术设计密码操作的存储器访问以遵循统一的密钥无关模式。 然而恒定时间行为取决于底层架构底层架构可能非常复杂并且通常包含未发布的功能。CacheBleed攻击针对缓存组冲突从而使微体系结构侧通道对手只能观察到具有缓存线粒度的内存的假设无效。 在这项工作中我们提出了MemJam这是一种侧通道攻击利用写后内存读取的错误依赖性并提供高质量的缓存内级定时通道。作为概念验证我们演示了针对AES的恒定时间实现的首次密钥恢复攻击以及当前“英特尔集成性能原件”英特尔IPP加密库中具有缓存保护的SM4实现。此外我们通过在使用上述AES的恒定时间实现执行加密的飞地上再现AES密钥恢复结果演示了对SGX的第一次缓存内级定时攻击。我们的结果表明我们不仅可以使用这个侧通道来有效地攻击依赖内存的密码操作还可以绕过所提出的保护措施。与仅限于旧代处理器的CacheBleed相比MemJam是第一个适用于所有主要英特尔处理器包括支持SGX扩展的最新一代处理器的缓存内级别攻击。 引言 在密码实现中定时信道可以通过依赖于密钥的操作引入这可以被本地或远程对手利用。现代微体系结构很复杂支持各种共享资源操作系统最大限度地实现了并发任务之间的资源共享。从安全角度来看具有不同权限的并发任务共享相同的硬件资源这些资源可能会暴露出可利用的定时通道。利用微体系结构时序通道的一个典型模型是间谍进程引起与受害者进程的资源争用并测量其自身或受害者操作的时序。观察到的定时行为为对手提供了受害者资源使用模式的有力证据从而泄露了关键的运行时数据。在共享资源中对缓存的攻击受到了极大的关注其实用性已在云计算等场景中得到证明。缓存攻击的一个明显特征是能够跟踪高时间和空间分辨率。因此他们擅长利用具有秘密相关存储器访问的密码实现。这种易受攻击的实现的例子包括使用S-Box表和模幂运算的有效实现。 【S-box即“substitution box” 是密码学领域的一个基本组件其功能是实现数据的非线性置换。】 依赖密钥的缓存活动的弱点促使研究人员和从业者保护密码实现免受缓存攻击。最简单的方法是最小化查找表的内存占用。在高级加密标准AES中使用单个8位S-Box而不是T-Tables使得在嘈杂的环境中对AES的缓存攻击效率低下因为对手只能区分4条不同缓存线之间的访问。将小表与缓存状态规范化相结合即在每次操作之前将所有表条目加载到缓存中可以在异步模式下击败缓存攻击在异步模式中对手每次操作只能执行一次观察。更先进的侧通道如线程调度程序的利用、对中断执行的英特尔软件保护扩展SGX的缓存攻击、性能下降和其他微体系结构资源的泄漏提醒我们恒定时间软件实现的重要性。实现恒定时间内存行为的一种方法是采用小表并在每次查找时访问所有缓存行。开销是有限的并且通过我们在现代处理器中可以实现的并行性来最小化。一些公共密码方案采用的另一种恒定时间方法是在存储器中交错乘法器称为分散-聚集技术。 恒定时间实现有效地消除了利用明显的密钥相关泄漏的第一代定时攻击。普遍的观点是performance penalty是唯一的不利因素一旦paid就没有必要再担心了。然而这与现实相去甚远恒定时间实现实际上可能会给人一种虚假的安全感。一个经常被忽视的事实是恒定时间实现和相关保护是相对于底层硬件的[25]。事实上有一些主要障碍阻碍我们获得真正的持续时间行为。处理器不断发展每一个新版本都会悄悄推出新的微体系结构功能而这种微妙功能的多样性使得全面评估变得不可能。一个很好的例子是对OpenSSL RSA分散收集实现的缓存组冲突攻击它表明具有缓存内级别分辨率的对手可以成功绕过依赖于缓存线粒度的恒定时间技术[26]。因此在下一个处理器版本中看似完美的恒定时间实现变得不安全——或者更糟的是可能会发现未识别的行为从而使早期的假设无效。 贡献 我们提出了一种名为MemJam的攻击该攻击利用了写后读取内存的错误依赖性并在常规和SGX环境中展示了针对两种不同加密实现的密钥恢复这两种加密实现可以安全地抵御缓存攻击。总之 伪依赖性攻击 对写入后读取的内存的伪依赖性进行的侧通道攻击。我们展示了如何显著降低受害者对特定内存块的访问速度以及如何利用这种读取延迟来恢复受害者内存访问的低地址位。 对受保护的AES和SM4的攻击 利用针对缓存攻击进行保护的AES与SM4实现上的缓存内级别信息进行攻击。这些实现是从“英特尔集成性能原件”英特尔IPP中选择的该原件针对安全性和速度进行了优化。 对SGX Enclave的攻击 第一次对SGX Enclave的缓存内级攻击在连续时间AES实现中得到密钥恢复结果的支持。上述AES的恒定时间实现是SGX SDK源代码的一部分。 绕过保护 绕过显著的保护如基于恒定时间技术[724]、静态和运行时分析[2728]以及缓存架构[29303132]的建议。 我们唯一的假设是攻击者能够与受害者在同一物理核心内的一个逻辑处理器对上协同定位。在加密攻击中攻击者可以测量受害者加密的时间。攻击者进一步知道受害者使用的是哪种加密实现但她不需要知道受害者的二进制或s-Box表的偏移量。 相关工作 侧信道 包括功率、电磁和定时信道在内的侧信道已经研究了几十年[13334]。可以通过处理器高速缓存构建定时侧信道以针对诸如RSA[15]、ECDSA[14]、ElGamal[9]、DES[13]和AES[28]之类的加密操作执行密钥恢复攻击。在多处理器系统上攻击在共享LLCL3三级缓存上——所有核心之间的共享资源——即使攻击者和受害者位于不同的核心中也能表现良好[8]。FlushRoad、PrimeProbe、EvictRoad和FlushFlush是针对不同对抗场景提出的一些攻击方法[21112]。性能降级攻击可以提高信道分辨率[1921]。LLC攻击在云中非常实用攻击者可以识别特定受害者的位置[59]。尽管LLC攻击适用但对核心专用资源如L1缓存的攻击同样重要[2335]。系统级对抗性场景中对SGX的攻击是值得注意的例子[2036]。还有其他共享资源可用于构建定时信道[37]。如果分支已被受害进程占用则分支目标缓冲区BTB的利用会泄漏[222336]。处理器中的逻辑单元可能会泄露有关算术运算的信息[3839]。CacheBleed提出缓存组冲突和读取后内存写入的错误依赖性作为具有缓存内粒度的侧通道[26]。然而当前的英特尔处理器上不存在缓存组冲突泄漏我们验证了作者的说法即所提出的读后写错误依赖侧通道不允许有效的攻击。 防御 已经提出了软件和硬件策略如替代查找表、数据独立的内存访问模式、静态或禁用缓存以及缓存状态规范化以防御缓存攻击[7]。ScatterGather技术已被RSA和ECC实现所采用[24]。特别是有人提出在AES的S盒表中引入冗余和随机性[18]。提出了一种自定义内存管理器[40]、宽松包含缓存[31]以及基于缓存分配技术CAT的解决方案如Catalyst[29]和vCat[32]以抵御LLC争用。Sanctum[30]和Ozone[41]是针对缓存攻击的新处理器设计。还提出了使用性能计数器的基于检测的对策可用于检测云环境中的缓存攻击[2742]。MASCAT[28]被提出用代码分析技术来阻止缓存攻击。CachD[43]检测生产软件中潜在的缓存泄漏。尽管如此这些建议假设对手无法区分缓存行内的访问。也就是说具有缓存线内粒度的攻击被认为超出了范围。Doychev等人提出了唯一一种将全地址位视为泄漏模型的软件泄漏检测器[44]。 背景 多任务 【并发和并行它们虽然都说是多个进程同时运行但是它们的同时不是一个概念。并行的同时是同一时刻可以多个进程在运行(处于running)并发的同时是经过上下文快速切换使得看上去多个进程同时都在运行的现象是一种OS欺骗用户的现象。】 存储器管理子系统在所有并发任务中共享动态随机存取存储器DRAM其中为每个任务分配对物理存储器透明的虚拟存储器区域。每个任务都能够使用其整个虚拟地址空间而不会干扰其他任务的内存访问。内存分配是在页面中执行的每个虚拟内存页面都可以存储在具有虚拟到物理页面映射的DRAM页面中。逻辑处理器也在这些任务之间共享并且每个任务逻辑处理器一次执行来自一个任务的指令并切换到另一个任务。存储器写入和读取指令使用虚拟地址并且虚拟地址被转换为相应的物理地址以执行存储器操作。操作系统负责页面目录管理和虚拟页面分配。OS通过执行昂贵的页面遍历来帮助处理器执行虚拟到物理地址的转换。处理器将地址转换结果保存在称为转换后备缓冲区TLB的存储器中以避免操作系统引入的软件开销。英特尔微体系结构遵循多级流水线并采用不同的优化技术以最大限度地提高流水线阶段的并行性和多任务性[45]。在这些技术中超线程允许每个核心运行多个并发线程并且每个线程共享所有核心专用资源。因此如果一个资源被一个线程占用其他线程可能会占用剩余的可用资源。超线程被抽象为软件堆栈操作系统和应用程序与逻辑处理器交互。 缓存 【计算机将数据从主存读入Cache时是把要读取数据附近的一部分数据都读取进来 这样一次读取的一组数据就叫做CacheLine每一级缓存中都能放很多的CacheLine。cache分成多个组每个组分成多个行linesize是cache的基本单位从主存向cache迁移数据都是按照linesize为单位替换的。】 与内部CPU组件相比DRAM存储器速度较慢。现代微体系结构利用高速缓冲存储器的层次结构来填补速度差距。英特尔处理器有两级核心专用缓存L1、L2以及在所有核心之间共享的末级缓存LLC。与下一级缓存相比缓存离处理器越近速度就越快但也越小。缓存被组织成不同的集合每个集合可以存储一定数量的缓存行。高速缓存行大小为64字节是CPU之外所有内存操作的块大小。每个高速缓存行的物理地址的高位用于确定哪个集合存储/加载高速缓存行。当处理器尝试访问缓存行时无论其在相关缓存集中是否存在都会发生缓存命中或未命中。如果发生缓存未命中则CacheLine将存储到所有3级缓存和已确定的集合中。当缓存中存在CacheLine时从同一地址重新加载会快得多。在多核系统中处理器必须在所有级别之间保持缓存的一致性。在英特尔体系结构中CacheLine遵循写回策略即如果一级缓存中的数据被覆盖则所有其他级别都将更新。LLC包括L2和L1高速缓存这意味着如果LLC中的高速缓存线被逐出相应的L1和L2高速缓存线也将被逐出[45]。这些策略有助于避免一个处理器读取由另一个处理器变异的无效数据时出现过时的缓存数据。 一级缓存瓶颈 一级缓存端口的带宽有限同时进行的访问将相互阻塞。这个瓶颈在超标量多处理器系统中是至关重要的。旧一代处理器采用了多个存储体作为解决该问题的方法[46]其中每个存储体可以独立操作一次处理一个请求。虽然这部分解决了带宽限制它造成了缓存组冲突现象同时访问同一个缓存组将被阻止。Intel解决了Haswell一代的缓存组冲突问题[45]。各种资源中提到的另一个瓶颈是由于具有相同缓存集和偏移量的存储器地址的错误依赖性[4546]。地址是4kB的倍数的同时读写是不可能的而且它们会相互停止。处理器无法根据虚拟地址确定依赖关系并且具有相同最后12位的地址有机会映射到相同的物理地址。这种同时访问可以发生在两个逻辑处理器之间和/或无序执行期间其中存储器写入/读取可能依赖于具有相同最后12位地址的存储器读取/写入。这样的依赖关系无法即时确定因此会导致延迟。 缓存攻击 缓存攻击可能被对手利用因为他们与善意的用户共享系统缓存。在对手可以与同一核心上的受害者共存的场景中她可以攻击核心私有资源如L1缓存例如OS对手[2036]。在云环境中虚拟化平台允许将逻辑处理器共享到不同的虚拟机然而对共享LLC的攻击具有更高的影响因为LLC是在所有核心中共享的。在缓存定时攻击中攻击者要么测量受害者操作的定时例如EvictTime[2]要么测量他自己的内存访问的定时如PrimeProbe[8]。攻击者需要能够访问精确的时间资源如RDTSC指令。在基本形式中每个操作通过一次观察来执行攻击。在某些情况下可以通过中断受害者并收集有关中间内存状态的信息来改进这些攻击。利用缓存组冲突的侧信道攻击依赖于同步资源争用。CacheBleed方法与PrimeProbe有点相似攻击者在PrimePprobe中执行重复操作并测量自己的访问时间[26]。在缓存组冲突攻击中对手重复对同一个缓存组执行同时读取并测量其完成时间。位于同一位置的逻辑处理器上的受害者访问同一个缓存组会导致攻击者的内存读取延迟。 MemJam 读后写攻击 MemJam利用了错误的依赖关系。当一条指令引用前一条指令的数据时就会发生数据依赖性。在流水线设计中如果前一条指令没有完成依赖关系可能会导致危险和流水线停滞。在某些情况下会出现错误的依赖关系即即使没有真正的依赖关系管道也会暂停。错误依赖性的原因是寄存器重用和算术逻辑单元ALU的地址空间有限。错误的依赖关系会降低指令级并行性并导致开销。处理器通过寄存器重命名方法消除了由于寄存器重用而产生的错误依赖关系。然而在软件优化过程中还存在其他需要解决的错误依赖性[4547]。 在这项工作中我们重点关注一个被称为4K混叠的关键错误依赖其中地址空间中相距4K的倍数的数据被视为依赖。4k混叠是由于一级缓存的虚拟寻址而发生的在一级缓存中数据使用虚拟地址进行访问但使用物理地址进行标记和存储。多个虚拟地址可以引用具有相同物理地址的相同数据并且确定并发存储器访问的依赖性需要虚拟地址转换。物理地址和虚拟地址共享最后12位任何地址在最后12位不同即距离不是4k的数据访问都不能具有相关性。对于剩下的极少数情况在解决依赖关系之前需要进行地址转换这会导致延迟。请注意潜在依赖关系的粒度即两个地址是否被视为“相同”也取决于微体系结构因为依赖关系可能发生在字或缓存线粒度即分别忽略地址的最后2位或最后6位。由于攻击者可以通过将自己地址的最后12位与受害者进程中的安全关键数据相匹配故意处理依赖错误的数据因此可以利用4K混叠导致的这些罕见的错误依赖性来攻击内存。 4K混叠在许多地方都被提到是所有主要英特尔处理器上存在的优化问题[4546]。我们验证了Yarom等人的结果。[26]这是唯一一项关于伪依赖性的安全相关工作它利用了读后写依赖性。读取后写入暂停导致的定时泄漏不足以用于任何加密攻击。由于读-写的错误依赖性MemJam利用了不同的通道这会导致更高的延迟因此很容易观察到。《英特尔优化手册》在各个章节[45]中重点介绍了读写性能开销。 当存储器write后面紧跟着一个read它会导致重新发出read并可能导致5个周期的惩罚【LD_BLOCKS_PPARTIAL.ADDRESS_ALIAS性能监视单元PMU事件统计阻止读取的次数】。写入操作在存储绑定类别下处理。与负载界限相反自上而下的微体系结构分析方法TMAM【自上而下的特征化是基于事件的度量的分层组织用于确定应用程序中的主要性能瓶颈。】将存储界限报告为周期的一部分执行端口利用率低性能影响小。各节中的这些描述强调了写后读取暂停被认为比读后写入暂停更重要。 内存依赖性模糊测试 我们进行了一组实验来评估两个逻辑处理器之间的内存依赖行为。在这些实验中我们让线程A和B在相同的物理内核上运行但在不同的逻辑处理器上运行如图1所示。两个线程都执行内存操作只有线程B测量其定时从而测量引入的错误依赖性的定时影响。 读取后读取RaR在第一个实验中两个逻辑线程A和B从同一共享缓存中读取可能会相互阻塞。这个实验可以揭示缓存组冲突正如CacheBleed[26]所使用的那样。B使用清单1执行读取测量而A不断地从不同的内存偏移中读取并试图引入冲突。A从三种不同类型的偏移中读取1与B不同的缓存线2相同的缓存线但与B不同偏移以及3与B相同的缓存行和相同偏移。如图所示图2a中验证第7代CPU上没有缓存组冲突的三种情况的直方图之间没有明显差异。 读取后写入WaR关于读取后写入的错误依赖性的第二个实验的直方图结果为如图2b所示其中缓存行粒度很明显。线程A不断地从不同类型的内存偏移中读取而线程B使用清单2来执行写测量。线程A和B之间的冲突缓存线蓝色和冲突偏移量红色的标准偏差与没有缓存线冲突的绿色条不同。这显示了高容量缓存的细粒度行为但冲突行和偏移之间的细微差异验证了先前的结果即偏移依赖性较弱[26]。 写后读RaW图2c显示了一个测量写后读的错误依赖性的实验其中线程A不断地向不同的内存偏移写入。线程B使用清单1来执行读取测量。访问三种不同类型的偏移是可以清楚区分的。冲突的缓存线访问蓝色与非冲突的访问绿色是可区分的。更重要的是对相同偏移量红色的冲突访问也与冲突缓存线访问不同从而产生具有缓存线内粒度的侧通道。如果访问了相同的缓存线则平均会有2个周期的惩罚如果访问了同一偏移量则会有10个周期的处罚。请注意我们平台中的单词偏移量具有4字节粒度。从对抗性的角度来看这意味着对手了解受害者存储器访问的第2-11位其中4位第2-5位与缓存线内分辨率有关因此超出了已知存在于第6代和第7代Intel处理器上的任何其他微体系结构侧通道图5。 弱写后读RawW在这个关于写后读冲突的实验中我们对冲突线程采用了一种不那么贪婪的策略。A不是不断地向相同的偏移量写入而是执行向相同偏移量的写入指令其中一些间隙由其他存储器访问和指令填充。如图3所示该通道的效率显著降低。这告诉我们在没有额外指令的情况下对同一偏移量进行恒定写入会更有效地造成读取访问惩罚。在这方面我们将在攻击中使用清单3来实现最大的冲突。 写后读取延迟在上一个实验中我们测试了不同数量的冲突读取的执行延迟。我们创建了一个代码存根其中包括64条内存读取指令和内存读取之间的随机指令组合以创建更真实的计算。选择组合的方式是为了避免意外的暂停并保持所有读取操作的并行性。我们测量当A写入冲突的偏移量时此计算在B上的执行时间。首先我们测量了对地址进行64次内存读取而没有冲突的计算。我们随机生成的代码存根平均需要210个周期才能执行。如图4所示在实验的每一步中我们都会更改一些内存偏移量使其具有与A的冲突写入偏移量相同的最后12位地址。我们观察到通过增加冲突读取的数量读取访问的延迟会增加。图4显示了一些实验的结果。在所有这些方法中B的总体执行时间在很大程度上取决于冲突读取的数量。因此我们可以使用RaW依赖性来使用所选目标存储器地址的位2-11引入强时序行为。 待更新
http://www.sadfv.cn/news/113918/

相关文章:

  • 刷单类网站开发珠海seo海网站建设
  • 如何申请网站空间和注册域名网页设计图片如何居中
  • 博望网站建设做传销网站后果严重吗
  • 腾讯云点播做视频网站在百度上做网站怎么做
  • 沈阳世纪兴网站制作三 网站开发使用软件环境
  • 网站开发H5海外广告投放渠道
  • 西安建设网站制作搭建WordPress教程
  • 网站都要交域名费么学做网站论坛vip码
  • 做网站的软件多少钱长沙微信网站公司
  • 东莞网站建设市场分析品牌网站建设的作用
  • 现在网站建设尺寸一般多少30天网站建设实录
  • 如何做网站首页收录建设银行手机银行官方网站下载安装
  • 网站开发进度设计北京网站制作业务如何开展
  • html5营销网站建设上榜网络
  • 网站开发如何无感更新白城网站建设哪家好
  • 有服务器自己怎么做网站前台模板之家免费
  • 素材网站整站下载全国推广优化网站
  • 青岛网站建设推进福建龙岩有哪些网络平台
  • 重庆品牌服装网站建设手机软件编程
  • 徐州云龙区建设局网站专业做网站+上海
  • 英文网站怎么设计中铁十六局门户网
  • 内部网站建设公司张店制作网站
  • 上海正规网站定制萤栈WordPress
  • 网站分享到微信缩略图网站建设业务怎么开展
  • 网站模板侵权如何处理网站模块是什么
  • 视频网站砸钱做生态php做网站的支付功能
  • 网站建设前端后端触动网站建设
  • 音响厂家东莞网站建设网站再就业培训班
  • 时尚女装网站模版专业网站制作服务
  • 五百亿建站模板装修网站排名前十名