TEE防侧信道攻击:Compaction,Shuffling,Sorting 策略 - 完全不经意性 算法学习笔记(一)

写在前面

最近在学习防侧信道攻击的策略,主要看的是这两篇论文,先贴官方链接(论文和代码):

先主要看看论文(初涉该领域,翻译不准确的地方望见谅)

一、前瞻知识

1.1 Trusted Execution Environment

可信执行环境(TEE),始于十多年前的英特尔TXT [25],经历了几次改进。

近年来,硬件辅助的TEEs(例如:英特尔SGX、AMD SEV,以及它们的开源衍生版本Keystone )已经能够在硬件保护的容器中(称为:Enclaves)中安全地执行程序,提供强大的机密性和完整性保证,即使其主机是恶意的。它们有效地在否则是恶意服务器上提供了一个小的可信计算基础(TCB - Trusted Computing Base)。

由于技术原理类似,这里仅 选用最成熟的 Intel SGX 为例。

在Intel SGX中,enclaves 通过在制造时融合到处理器中的加密密钥来启动安全性,从而提供了可信执行环境。在引导时,这样的处理器将其可用DRAM的一部分设置为处理器保留内存(PRM)。对PRM中内存页面的所有访问都通过Intel的内存加密引擎(MEE)进行,该引擎使用处理器融合密钥每次它们离开系统缓存并返回PRM时对这些页面进行加密。类似地,MEE在将从PRM加载的所有页面移动到缓存供SGX支持的处理器使用之前解密和完整性检查这些页面;因此,这些页面的内容始终受到保护。

贴个SGX的官网:
https://www.intel.com/content/www/us/en/developer/tools/software-guard-extensions/overview.htmlicon-default.png?t=N7T8https://www.intel.com/content/www/us/en/developer/tools/software-guard-extensions/overview.html

1.2 SGX 威胁模型

SGX的威胁模型允许对手控制支持SGX的服务器的软件堆栈,包括特别是操作系统

对手可能可以物理访问服务器,但被假定为无法对处理器芯片进行物理篡改、提取处理器融合密钥,或窥探处理器寄存器的状态,这将使所谓的安全保证无效。

尽管如此,对手仍然是强大的,即可以观察所有共享资源和外围设备。

研究人员已经发现了对SGX的多种攻击:

  1. 侧信道攻击(Side-Channel Attacks):利用了系统中的物理实现细节,例如电磁辐射、功耗分析、甚至是时间延迟,来推断处理器执行的操作或访问的数据。
  2. 元数据攻击(Metadata Attacks):关注的是数据处理过程中产生的元数据信息,例如访问模式、数据大小、数据处理时间等。攻击者可以通过分析这些元数据信息来推断敏感数据的特征或行为。
  3. 控制流攻击(Control-Flow Attacks):利用程序控制流程的异常或漏洞来获取未授权访问权限的攻击方式。

这些攻击促使设计可信代码为“不经意的数据”以作为一种防御手段。

 1.3 不经意性的程度

论文中定义了三种独立性的方式(可信环境内程序相对于秘密数据的不经意性):

  1. 外部内存的不经意性:对PRM之外的数据的内存访问与任何秘密数据无关。
  2. 受保护内存的不经意性:对PRM内部数据的内存访问与任何秘密数据无关。
          更细颗粒度的访问模式:
    1. 页面不经意性:SGX掩盖了页错误地址的最后12位给未受信任的操作系统,从而将对恶意操作系统的内存访问模式泄露限制到页面级别(4 KiB)
      (几种提出的攻击利用了未受信任的操作系统仍然负责enclave程序的页表管理的事实,通过在 Enclave 程序上引起页错误来提取程序访问的内存位置。)
    2. 缓存行不经意性:高级攻击可以在页错误时提取加载的(64 B)缓存行的精确地址。
    3. 子缓存行不经意行:在缓存级别之上没有侧信道攻击。但是未来的研究可能会,可以提取从缓存行加载到寄存器的内存获取操作中加载的(8 B)字的确切地址。
  3. 控制流不经意性:程序的执行不依赖于秘密数据。(攻击可以提取在依赖于秘密的控制流程分支中选择的确切分支,从而泄露有关秘密的信息。)

 如果程序满足上述所有不经意性的定义,论文中称为“完全不经意性”;(不防范硬件侧信道攻击)

即使代码是控制流不经意的,但是编译后可能并不会保留该不经意性。编译器在进行代码优化时可能会改变编程逻辑中的安全策略,比如:

  • 常数时间代码(Constant-Time Code):常数时间代码保证不同输入的执行时间是恒定的,不会因为某些输入数据的特性而导致执行时间的泄漏。
  • 抵御侧信道攻击的内存访问模式(Side-Channel Resilient Memory Access Patterns):涉及对内存访问的排序、对内存地址的随机化等技术,以使得攻击者无法从内存访问模式中获取有用的信息。

论文中针对这种“优化”,设计了FOAV(帮助验证程序二进制文件的控制流不经意性的工具)。

一些物理的侧信道攻击(比如微体系结构侧信道)会侵犯SGX和处理器的安全模型,英特尔会预防。但是内存访问的侧信道类型,不被认为是违反了SGX安全模型的(并没有声称保护访问的内存地址),所以这些侧信道必须在软件中解决

1.4 Waksman 网络

Waksman网络是一种特殊的排列网络,用于执行任意排列操作。它由一系列二进制开关组成,每个开关有两个输入和两个输出,其行为由一个控制位控制。当控制位为1时,开关交换其两个输入;当控制位为0时,开关按原始顺序输出其两个输入。通过适当设置Waksman网络中的这些控制位,可以实现对输入数据的任意排列,即对数据项的重新排序操作。

Waksman网络的构建以递归方式进行:

对于偶数和奇数n,构建稍有不同。在这两种情况下,首先应用一个输入开关层,然后将结果用作顶部和底部的Waksman子网络的输入,然后在这些子网络的输出上应用一个输出开关层。(这个图严格来讲不完整,中间的虚线部分应该是递归下去的多个)

给定层中的开关接受不相交的输入,因此它们可以并行应用。当n = 2时,网络是一个单一开关,当n = 1时则没有开关。Waksman网络旨在最小化开关数量,同时仍能应用任何排列。

如果你保存了每个开关的状态(控制位的值),就相当于保存了一种打乱顺序的策略。当需要恢复原始顺序时,只需按照相反的顺序设置这些开关的状态即可。这样,Waksman网络就可以用来实现数据项的打乱和恢复操作,同时保证了这一过程是可逆的

请注意,Waksman网络的拓扑结构是固定的;也就是说,哪些开关以何种顺序应用于哪些值仅取决于n。这种特性使得Waksman网络在不经意性计算中非常有用。

在这停顿

全写在一篇感觉篇幅太长了,也不方便大家看。

这篇就先介绍下背景,下篇具体展开看算法。

  • 42
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Ants

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值