Могу ли я использовать Amazon AWS Lambda в качестве защищенного анклава для надежных вычислений?

Я хотел бы использовать AWS Lambda для выполнения вычислений от имени третьей стороны, а затем доказать им, что я сделал это так, как предполагалось. Доказательством будет криптографически подписанный дайджест тела функции, запроса и ответа. В идеале Amazon подпишет дайджест со своим личным ключом и опубликует свой открытый ключ, чтобы можно было проверить подпись. Идея похожа на "защищенный анклав", который новые чипы Intel предоставляют через SGX (Software Guard Extensions).

В существующем сервисе Lambda есть некоторые необходимые ингредиенты. Например, ответ GetFunction включает в себя поле CodeSha256, которое однозначно идентифицирует реализацию функции. И API-интерфейс Amazon API позволяет вам отправлять HTTPS-запросы в службу Lambda, что может позволить доказательство содержимого запроса-ответа TLSNotary. Но чтобы сделать это правильно, я думаю, что AWS Lambda должен предоставить подпись напрямую.

Microsoft Azure работает над доверенными программными анклавами ( "cryptlets" ) в своем проекте Bletchley: 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?

Ответы

Ответ 1

AWS имеет другой подход в соответствии с безопасностью. Вы можете установить, что может использовать определенный ресурс, и каким образом.

Конечно, вы можете делать то, что было описано. Вы можете определить запрос, ответ и точную версию кода, который был использован. Вопрос в том, хотите ли вы подписать код при обработке запроса. Проще всего это рассчитывать при развертывании.

Для первого случая - вам нужен язык с доступом к источнику. Как и с Python, вы можете получить его, подписать и вернуть, или сохранить где-нибудь.

Второй случай - я бы использовал tagging.

Ответ 2

Сначала сделайте несколько определений, Lambda - это не сервер, а служба, которая запускает ваш код. он не предоставляет никакой прямой подписи, а скорее то, что вы настраиваете для него на AWS.

Secure Enclave - это одна реализация или тип TPM (Trusted Platform Module), это можно сделать разными способами, и Secure Enclave является одним из лучших. Короткий ответ на ваш вопрос: да, это можно сделать, пока вы реализуете необходимый код и добавляете всю необходимую конфигурацию, SSL и т.д.

Я бы посоветовал вам прочитать следующее: http://ieeexplore.ieee.org/document/5703613/?reload=true

И если вы хотите иметь TPM из коробки, вы можете использовать проект microsoft: https://github.com/Microsoft/TSS.MSR