我可以将Amazon AWS Lambda用作可信计算的安全区域吗?

时间:2017-02-01 11:03:07

标签: amazon-web-services aws-lambda trusted-computing

我想使用AWS Lambda代表第三方执行计算,然后向他们证明我是按预期执行的。证明将是函数体,请求和响应的加密签名摘要。理想情况下,亚马逊会使用自己的私钥对摘要进行签名,并发布其公钥以允许验证签名。这个想法类似于新的英特尔芯片通过SGX(软件保护扩展)提供的“安全区”。

现有的Lambda服务具有一些所需的成分。例如,GetFunction响应包括唯一标识函数实现的CodeSha256字段。 Amazon API Gateway允许您向Lambda服务发出HTTPS请求,这可能允许TLSNotary样式的请求 - 响应内容证明。但为了做到这一点,我认为AWS Lambda需要直接提供签名。

Microsoft Azure正在其项目Bletchley中处理受信任的软件包围区(“cryptlets”): https://github.com/Azure/azure-blockchain-projects/blob/master/bletchley/bletchley-whitepaper.md https://github.com/Azure/azure-blockchain-projects/blob/master/bletchley/CryptletsDeepDive.md

当前的AWS Lambda是否可以这样?

3 个答案:

答案 0 :(得分:3)

AWS根据安全性采用不同的方法。您可以设置可以使用特定资源的方式,以及使用哪种方式。

当然,你可以做所描述的事情。您可以识别所使用的代码的请求,响应和确切版本。问题是,如果要在处理请求时签署代码。更简单的方法是在部署时计算。

对于第一种情况 - 您需要具有访问源的语言。 Like with Python,您可以获取,签名并将其返回,或存储在某处。

第二种情况 - 我会使用tagging

答案 1 :(得分:3)

让我们先做一些定义,Lambda不是服务器,而是运行代码的服务。它不直接提供任何签名,而是在AWS上为其配置。

Secure Enclave是一种实现或一种TPM(可信平台模块),这可以通过多种方式完成,而Secure Enclave是最好的之一。 对您的问题的简短回答是肯定的,只要您实施所需的代码并添加所有必需的配置,SSL等就可以完成。

我建议您阅读以下内容:http://ieeexplore.ieee.org/document/5703613/?reload=true

如果您想要开箱即用TPM,可以使用微软项目:https://github.com/Microsoft/TSS.MSR

答案 2 :(得分:0)

通过使用 IAM,还有另一种解决方案。您可以为您的客户预置一个 IAM 角色,该角色具有对 Lambda 源代码的读取访问权限。通过使用公共 lambda 端点(看起来像 https://api-id.execute-api.region.amazonaws.com/STAGE 的端点) - 您可以向客户保证请求直接命中这个特定的 lambda 函数。

您的客户可用的 IAM 角色有权执行以下操作:

  • 查看所有修订版中的 lambda 代码和其他详细信息
  • 阅读 API 网关配置以验证请求是否直接命中 lambda,而不会转到其他地方。

然后,您的客户所需要做的就是使用给定的 IAM 角色在他们的末端设置针对 lambda 的审计。他们可以设置一个定期的 cron,在更新时下载 lambda 的所有版本。如果您有预审流程 - 可以轻松地针对他们的警报进行配置。

请注意,这依赖于善意运行的“AWS”以及以下基本假设:

  1. AWS Lambda 正在运行针对其配置的代码。
  2. AWS 管理 API 返回正确的响应。
  3. 警报时间是合理的。这更容易,因为您也可以下载以前的 lambda 代码版本。

所有这些都是合理的假设。