Могу ли я использовать 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