【TEE】片外内存保护:AES分组算法+MAC完整性验证

这篇具有很好参考价值的文章主要介绍了【TEE】片外内存保护:AES分组算法+MAC完整性验证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

片外内存攻击面

  • 攻击者通过操纵片外的未保护的内存
    • 直接观察
    • 解决方案:内存加密
  • 篡改数据
    • 任意修改(spoofing),拼接(splicing),重放(replay)
    • 解决方案:完整性保护和防重放
  • 观察地址总线的访问模式
    • 侧信道
    • 解决方案:ORAM

AES分组算法保护机密性

  • 内存加密模式
    • AES+ECB/CBC/CTR/XTS/GCM
    • 可调分组密码:QARMA

1.ECB模式(电子密码本模式)

用相同的密钥分别对明文组加密;各个分组独立加密和解密。

优点:
算法简单,加解密速度快。
易于并行计算,因此在硬件中实现时非常高效。

缺点:
不支持并行加解密,因此安全性较差。
明文块内部存在重复,容易受到攻击。
【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

2.CBC模式(密码分组链接模式)

当前明文分组先和前一个密文异或,再加密;初始向量IV,不必保密,但需要保存并占据空间

优点:
相邻的明文块加密后的密文块是不同的,增加了加密的安全性。
可以处理变长的明文,适用性更广。

缺点:
加密过程是串行的,无法并行,不适合硬件加速。
初始向量IV必须是随机的,否则容易受到攻击。
【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

3.CTR模式(计数器模式)

CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。最终的密文分组是通过将计数器加密的到的比特序列,与明文分组进行XOR而得到的。

优点:不泄露明文;仅需实现加密函数;无需填充;可并行计算。

缺点:需要瞬时值IV,难以保证IV的唯一性。
【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

4.CFB模式(密码反馈模式)

在CFB模式中,前一个密文分组会被送回到密码算法的输入端。所谓反馈,这里指的就是返回输入端的意思。类似于CBC,可以将块密码变为自同步的流密码;工作过程亦非常相似,CFB的解密过程几乎就是颠倒的CBC的加密过程:

优点:
支持加密和解密的输出反馈模式,因此可以进行流加密。
可以处理变长的明文,适用性更广。

缺点:
加密过程是串行的,不适合硬件加速。
密钥流的产生需要时间,因此加解密的时延较大。

【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

5.OFB模式(输出反馈模式)

可以将块密码变成同步的流密码。它产生密钥流的块,然后将其与明文块进行异或,得到密文。与其它流密码一样,密文中一个位的翻转会使明文中同样位置的位也产生翻转。这种特性使得许多错误校正码,例如奇偶校验位,即使在加密前计算,而在加密后进行校验也可以得出正确结果。
密码反馈模式也需要一个初始量,无须保密,但对每条消息必须有一个不同的初始量。

优点:
支持加密和解密的输出反馈模式,因此可以进行流加密。
可以处理变长的明文,适用性更广。

缺点:
加密过程是串行的,不适合硬件加速。
密钥流的产生需要时间,因此加解密的时延较大。
需要注意的是,以上模式中,ECB模式安全性最差,CBC、CFB和OFB模式相对安全性更高,因此在选择加密模式时需要根据实际情况和安全需求进行选择。

【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

6.XTS

  • 明文和密钥之外,算法包括一个tweak作为输入
  • 相比CBC、CTR等模式,不需要额外的存储IV和counter
  • 整体与ECB类似,例如可以并行
    • 但规避了ECB的缺点:频率分析攻击,密文替换攻击
      【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

保护完整性

  • MAC
    • SHA1/SHA3……
  • 认证加密模式
    • CTR+GMAC
    • Counter需要保存、不能重复

【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

Xom

Architectural Support for Copy and Tamper Resistant Software ASPLOS 2000

  • 机密性
  • CTR模式
    • cipher = plain ⊕ encryptedkey(address || seq)
    • plain = cipher ⊕ encryptedkey(address || seq)
      • key = XOM ID
      • address = virtual address of data/instruction
      • seq = mutating sequence number
  • encryptedkey(address + seq)的计算可以与内存访问并行,最终的计算只需要1个cycle进行异或

为什么需要address作为counter的一部分?
防止从一个内存地址复制合法的密文,替换到另外一个内存地址
- cipher = plain ⊕ encryptedkey(address || seq)
- plain = cipher ⊕ encryptedkey(address || seq)
【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
Xom的问题:无法提供新鲜性保证
使用同一地址的旧的数据替换该地址的新的数据–>需要防重放攻击

新鲜性,Merkel Tree 防重放

Caches and Merkle Trees for Efficient Memory Integrity Verification. HPCA 2003
【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全优化

  • 若每次都计算到根节点
    • 4GB内存,128-bit hash,性能损失可以达到10倍
  • 专门的cache结构,缓存了最近使用的内部hash块
    • 不需要计算到根节点,只需要计算到查找到的中间节点
    • 若中间节点被换出,则将其父节点放入cache,并更新父节点
    • 平均22%,最坏52%

优化:Counter的压缩模式

Improving Cost, Performance, and Security of Memory Encryption and Authentication. ISCA 2006

  • CTR的问题

    • 每次cache write back需要增加一次counte
      • 每个chuck一个counter+addr
    • 当counter溢出时,需要换一个AES key
      • 但整个内存加密只有一个key,因此需要重新加密整个物理内存 – freeze the system
        【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • Counter = Major Counter || Minor Counter

    • Major Counter
      • 每个加密的页面内所有的数据块共享一个major counter
      • 在系统的生命周期内都不会溢出(64 bit)
    • Minor Counter
      • 页面内每个数据块具有的独立的counter
      • 长度较短,容易溢出,但溢出时只需要更换一个major counter,并重新加密该页面,而不是全部的物理内存
  • Stored together in a counter cache line

    • 存储开销为1/64=1.6%
      【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • 使用GMAC优化完整性保护
    【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

优化:AISE

Using address Independent Seed Encryption and Bonsai Merkle Trees to Make Secure Processors OS- and Performance-Friendly. MICRO 2007

motivation

  • 内存加密
    • CTR模式可以隐藏内存访问关键路径的延迟,但是该模式下要求counter是唯一的
      • 之前的工作,采用了地址(spatial uniqueness,va或pa)作为counter的一部分
      • 每次write操作,counter+1,用于保证temporal uniqueness
  • 问题
    • 使用物理地址,则每次page swapping都需要重新加密和解密
      • 且需要增加额外的完整性保护机制
    • 使用虚拟地址,但不同的进程可以使用同样的虚拟地址
      • 若把每个进程的ID也作为counter的一部分
        • 无法支持shared memory based IPC和shared library – process fork的copy on write的优化不可用,原因是parent/child的counter是不一样的
        • 进程ID是由不信任的OS指定的

主要优化

  • Address Independent Seed Encryption (AISE)
    • 为每个页分配一个逻辑识别码(logical identifiers);与虚拟地址或物理地址无关,在整个系 统的生命周期确保对所有的内存页都是不同的
      • 可以避免page swapping等的性能问题
      • 可以支持shared memory/shared library等机制
        【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • LPID
    • 在页分配时分配的唯一值(unique value)
    • 在生命周期(系统启动到关闭)内与页绑定,包括物理页和交换空间页
    • Global Page Counter:64比特
      • 无法篡改,几乎不会溢出
  • LPID的存储:与压缩counter结合
    【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • 以1个4KB的页为例,每个block为64字节,每个block的LPID长度为64比特,每个 block分配一个7比特的counter
    • 若block counter溢出,则为该页分配一个新的LPID,并重新加密该页
    • 存储开销为1/64=1.6%

其他优化方向

  • 1.Merkle Tree的目的是防止replay attack,而CTR模式为每个block提供了一个 counter

    • 如果我们能够保证counter的新鲜性(freshness),则可以保证数据的新鲜性
    • 因此,只需要使用Merkle Tree保护counter的新鲜性
      【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • 2.counter要比data小的多(64B v.s. 4KB),因此一个Tree node可以容纳更多的 counter

    • cache压力更小,查询更快
      【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • 3.VAULT. ASPLOS 2018:增加可以支持的受保护内存大小

    • EPC hit: 200 cycles;EPC miss 40K cycles
    • SGX中树的每一层8个节点,VAULT使用了16到64个可变节点
    • 压缩MAC的存储
    • 16 GB受保护内存
      【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • 4.Morphable Counters. MICRO 2018

    • 根据应用程序的特点,每个cache line中的counter数量是动态可变的(counter的大小可变,之 前的方案都是固定的64个)
    • 通过对counter做压缩,降低Merkle tree的大小以及占用的cache大小,减少counter溢出后的 重加密代价
    • 16GB受保护内存
      【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全
  • 5.Synergy. HPCA 2018

    • 将MAC放在ECC区域,对MAC的存取不需要额外的一次memory transaction
  • 6.Compact Leakage-Free Support for Integrity and Reliability. ISCA 2020

    • 对integrity tree中的metadata布局的优化,降低metadata miss的概率

现有TEE完整性保护

Intel SGX

A Memory Encryption Engine Suitable for General Purpose Processors

  • 只对counter进行完整性保护
  • counter:包括时间和空间counter,没有做压缩
    【TEE】片外内存保护:AES分组算法+MAC完整性验证,可信执行环境TEE,可信计算技术,安全架构,安全

SGX V2/Scalable SGX

  • 移除了基于Merkle Tree的完整性检查
  • 利用ECC比特表明每个cache line是否属于某个enclave
  • 降低了对片外存储的完整性保护
    • 无法防御memory bus replay attacks

Intel TDX/MLTME/AMD SEV

  • 使用XTS加密模式
    • 使用物理地址作为tweak
    • 同样的明文,在不同的物理地址,其密文是 不同的
  • SEV
    • 除加密外,不包含任何可以保护完整性的metadata
    • 不知道密钥的情况下的任何修改,会使得其变为随机值
      • 仍然可以被利用(*)
      • 仅适用于AMD SEV-SNP之前的版本
    • 逆向tweak后,可以使用已知的明文覆盖目标的物理地址
      • 仅适用于AMD SEV-SNP之前的版本
    • SEV-SNP防止了基于软件的完整性破坏
      • 但是无法防御基于物理的内存完整性攻击(包括bus replay attack)
    • 允许对加密数据进行读取,通过观察数据是否改变同样泄露信息
  • TDX
    • 为每个64B自动生成28-bit的截断的sha-3输出作为MAC
    • MAC存储在DRAM ECC-bit之内,提供完整性保护
    • 1个额外比特用于表明cache line是否属于某个TD

参考文献:
[1] https://zh.wikipedia.org/wiki/分组密码工作模式#
[2] https://heartever.github.io/files/understanding_tee_design.pdf文章来源地址https://www.toymoban.com/news/detail-817435.html

到了这里,关于【TEE】片外内存保护:AES分组算法+MAC完整性验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何关闭苹果系统完整性保护SIP(System Integrity Protection)

    您需要进入 Mac 的恢复模式(Recovery Mode)。请按照以下步骤操作: 关闭您的 Mac。 按下电源按钮,然后立即按住 Command 和 R 键。持续按住这两个键,直到您看到 Apple 徽标或地球图标出现在屏幕上。 当您进入恢复模式后,会看到 macOS 实用工具窗口。从菜单栏中选择“实用工具

    2024年02月15日
    浏览(33)
  • CISSP 第1章:实现安全治理的原则和策略_过渡的保护可用性为什么完整性受限

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月25日
    浏览(34)
  • 可鉴别加密工作模式-同时保护数据机密性和完整性(OCB、CCM、KeyWrap、EAX和GCM)第二部分

            当算法用于同时保护数据的机密性和完整性时,应选取合适的可鉴别加密工作模式,例如OCB、CCM、KeyWrap、EAX和GCM等工作模式。以下总结来自GBT36624-2018国标文本(修改采用ISO/IEC 19772-2009)。         对于加密工作模式上篇(可鉴别加密工作模式-同时保护数据机密

    2024年02月13日
    浏览(30)
  • Windows安全中心内存完整性无法打开问题的处理方法

    Windows11安全中心内存完整性无法打开 今天电脑使用过程中突然看到系统桌面右下角任务栏中 windows安全中心图标出现了警告信息,如下图红框所示: 点击该图标进入windows安全中心的 安全性概览 界面,如下图: 在该界面可以看到出现安全警告的原因是“内存完整性已经关闭

    2024年02月02日
    浏览(29)
  • 《现代密码学》学习笔记——第三章 分组密码 [二] AES

    版本 密钥长度 分组长度 迭代轮数 AES-128 4 4 10 AES-192 6 4 12 AES-256 8 4 14 (1)字节代换(SubByte) (2)行移位(ShiftRow) (3)列混合(MixColumn) (4)密钥加(AddRoundKey) 1.字节代换   字节代换是非线性变换,独立地对状态的每个字节进行。代换表(S-Box)是可逆的。   将

    2024年02月05日
    浏览(82)
  • PHP AES加密:保护数据安全的高级加密技术

    ASE(Advanced Encryption Standard)是一种对称加密算法,也被称为Rijndael加密算法。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计的,于2001年被美国国家标准与技术研究院(NIST)选定为高级加密标准。 ASE算法使用相同的密钥进行加密和解密操作,因此被归类为对称加密算法。它

    2024年01月17日
    浏览(42)
  • SHA算法:数据完整性的守护者

    一、SHA算法的起源与演进 SHA(Secure Hash Algorithm)算法是一种哈希算法,最初由美国国家安全局(NSA)设计并由国家标准技术研究所(NIST)发布。SHA算法的目的是生成数据的哈希值,用于验证数据的完整性和真实性。最早的SHA-0版本于1993年发布,之后陆续发布了SHA-1、SHA-2和

    2024年03月09日
    浏览(49)
  • AES算法基于FPGA的硬件实现(3)AES算法的Verilog实现(完结)

    本设计实现AES加密算法为ecb模式,填充模式未设置,同时支持AES-128/192/256三种密钥长度。 代码完全开源,开源链接在文章末尾。 下图为GitHub仓库中上传的文件第一级结构,第一级为matlab和user,matlab中存储的是在进行列混淆运算时查表所用的coe文件,这些文件用来初始化viv

    2024年01月18日
    浏览(43)
  • openssl3.2 - 官方demo学习 - mac - cmac-aes256.c

    指定加密算法(e.g. AES-256-CBC), 对明文生成MAC数据

    2024年01月19日
    浏览(50)
  • AES算法基于FPGA的硬件实现(2)AES算法的c++实现(ecb/cbc)

    对于cpp来说内部有一些加密函数库来简单实现一些加密算法可以,但是为了更好理解内部实现流程,实现过程不调用cpp的库。 工程中出现的byte_t为bitset8类型,word为bitset32类型。base64转换文件为在网上找到的开源代码,在GitHub链接中有。 整体工程代码在末尾GitHub链接。 实现了

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包