在客户端 - 服务器体系结构中使用英特尔SGX远程证明

问题描述 投票:2回答:1

假设以下情形:我们希望实现一个开源密码管理器,该管理器使用中央服务,使不同的客户端(在不同的设备上)能够同步其本地数据库。此服务是由公司还是在用户的服务器上运行并不重要(与owncloud使用方案相比)。为了使我们的应用程序更加“安全”,我们希望将英特尔SGX飞地用于中央服务(请忽略当前对SGX飞地的攻击研究)。

然后,典型的工作流程将是:

  1. 当地客户证明了中央飞地
  2. 用户注册/登录
  3. (本地和远程数据库同步)
  4. 用户存储/检索密码

现在我的问题是:我们的密码管理器的每个用户都需要注册英特尔证明服务(IAS)吗?如果是的话,这是否意味着,由于私钥共享非常糟糕,每个设备都需要注册?

根据我的调查,答案是,至少在开发和测试阶段,是的。我找不到生产方案的任何公开信息。我所知道的是,商业登记改变了飞地的行为(它可以在生产模式下运行),这在这里无关紧要。我对此有两点想法:

  1. 如果我是对的,这不是SGX的另一个显示器吗?使用没有证明功能的SGX似乎没用。
  2. https://www.fortanix.com/等服务如何规避或解决问题?他们的文档没有暗示需要与英特尔进行交互。

上述场景仅是一个例子;它可以改进,我们不打算实施它。但是描述一个场景要容易得多,这可以很容易想象,并且似乎是SGX的一个现实用例,而不是描述我们当前的项目计划。

P.S。:这个问题有点像Intel SGX developer licensing and open-source software

security open-source sgx trusted-computing
1个回答
0
投票

一个人不需要英特尔注册的证书来创建报价,但是需要与IAS(英特尔证明服务)进行通信以验证报价,这需要英特尔注册的证书。因此,检查远程证明是否有效的每个节点都需要以天真的方式获得这样的证书。

当然,人们可以利用SGX来提供一个代理,其结构有点像:

  1. 生成两个证书及其对应的私钥,我将其中一个命名为IAS-conn-cert,另一个命名为Proxy-cert。
  2. 将IAS-conn-cert注册到IAS。

当然,您需要相信这些证书确实是在飞地中生成的。为此,您可以远程证明您信任的其他服务提供商。现在在客户端应用程序中固定(通过硬编码)Proxy-cert。当需要验证报价时,它使用该固定代理证书连接到安全区,从而知道它连接到飞地。然后,飞地将连接到IAS,并将从客户端接收的所有内容转发给IAS,反之亦然。客户端现在可以与IAS进行通信,而无需拥有IAS注册的证书,但仍然可以确保代理中没有篡改,因为它信任代理证书确实是在非恶意的飞地中生成的。

© www.soinside.com 2019 - 2024. All rights reserved.