论文标题
缓存狙击手:缓存驱逐的准确计时控制
CACHE SNIPER : Accurate timing control of cache evictions
论文作者
论文摘要
在过去的几年中,微体系侧频道攻击在安全研究中非常突出。缓存是一个出色的秘密频道,因为它们即使使用简单的用户模式执行特权也提供了高分辨率和通用的跨核泄漏。为了防止这些通用的跨核攻击,所有主要的加密库现在都提供了对策,以通过跨核心高速缓存攻击来阻止钥匙提取,例如避免秘密依赖访问模式和预取数据。在本文中,我们表明,旨在防止简单的高速缓存攻击的“良好成式”对策保护的实施仍然易受伤害。我们提出了一种新颖的攻击,该攻击使用一种特殊的计时技术来确定何时开始加密,然后在所需的瞬间准确驱逐数据。这种新攻击不需要特殊特权,也不需要攻击者与受害者之间的明确同步。攻击的一个关键改进是一种通过单个内存访问来驱逐缓存数据的方法,并且在没有共享内存的情况下,通过利用TSX的瞬态功能并依靠最近逆向工程的L3替换策略。我们通过执行异步的最后级高速缓存攻击来证明效率,从最新的WolfSSL库中提取RSA键,该库特别适应避免泄漏的访问模式,并从OpenSSL中包含的S-box实现中提取AES密钥,以防止每回合预先取得预先取得预先取得预先取得预先取得预先挑选的防御攻击,以防止Cache Attacks进行保护。
Microarchitectural side channel attacks have been very prominent in security research over the last few years. Caches have been an outstanding covert channel, as they provide high resolution and generic cross-core leakage even with simple user-mode code execution privileges. To prevent these generic cross-core attacks, all major cryptographic libraries now provide countermeasures to hinder key extraction via cross-core cache attacks, for instance avoiding secret dependent access patterns and prefetching data. In this paper, we show that implementations protected by 'good-enough' countermeasures aimed at preventing simple cache attacks are still vulnerable. We present a novel attack that uses a special timing technique to determine when an encryption has started and then evict the data precisely at the desired instant. This new attack does not require special privileges nor explicit synchronization between the attacker and the victim. One key improvement of our attack is a method to evict data from the cache with a single memory access and in absence of shared memory by leveraging the transient capabilities of TSX and relying on the recently reverse-engineered L3 replacement policy. We demonstrate the efficiency by performing an asynchronous last level cache attack to extract an RSA key from the latest wolfSSL library, which has been especially adapted to avoid leaky access patterns, and by extracting an AES key from the S-Box implementation included in OpenSSL bypassing the per round prefetch intended as a protection against cache attacks.