12 个稳定版本

1.1.1 2020年4月2日
1.1.0 2019年12月19日
1.0.9 2019年9月16日
1.0.8 2019年6月11日
0.9.8 2018年3月27日

#1338硬件支持

33 每月下载量

自定义许可证

175KB
2.5K SLoC

注意

请访问我们的 主页 了解使用方法。谢谢!


lib.rs:

Intel(R) 软件保护扩展 封印和解封函数

该库提供了以下功能

  • 公开API以创建既保密又完整的数据。
  • 公开API以在enclave内部解封封印数据。
  • 提供API使用AES-GMAC对输入数据进行验证和验证。

该库还提供API以帮助计算封印数据大小、加密文本长度和消息认证码(MAC)文本长度。

描述

当enclave实例化时,它通过将数据保持在其边界内,为数据提供保护(保密性和完整性)。Enclave开发者应识别被认为是机密的enclave数据和/或状态,并且可能在以下enclave销毁事件中需要保留

  • 应用完成enclave并关闭它。
  • 应用本身关闭。
  • 平台休眠或关闭。

通常,当enclave关闭时,enclave内的机密信息会丢失。但是,如果需要在这些事件中保存机密数据以供enclave未来使用,则必须在关闭enclave之前将其存储在enclave边界之外。为了保护和保留数据,有一个机制允许enclave软件检索一个唯一属于该enclave的密钥。这个密钥只能在该特定平台上由该enclave生成。Enclave软件使用该密钥对数据进行加密以发送到平台或解密平台上的数据。将这些加密和解密操作分别称为封印和解封,因为数据被加密封印在enclave和平台上。

为了提供针对潜在密钥磨损攻击的强大保护,为使用 seal_data API 调加密的每个数据块生成一个唯一的封印密钥。每个加密数据块的密钥ID明文存储在与加密数据块一起。密钥ID用于重新生成封印密钥以解密数据块。

高级加密标准(AES)的GCM(Galois/Counter Mode)用于加密和MAC保护有效载荷。为了防止基于软件的侧信道攻击,AES-GCM的加密实现使用了AES-NI,它可以抵御基于软件的侧信道攻击。Galois/Counter Mode(GCM)是AES算法的一种操作模式。GCM通过使用通用哈希函数确保机密数据的真实性(每次调用最多可达约64 GB)。GCM还可以为附加数据(每次调用实际上没有长度限制)提供认证保证,这些数据未加密。如果GCM的输入只包含不加密的数据,则GCM的结果专门化称为GMAC(Galois消息认证码),它只是输入数据的认证模式。mac_aadata API调用将输入限制为非机密数据,仅提供数据来源认证。此函数的单个输出是认证标签。

依赖关系