科普|什么是SubstraTee?有什么作用呢?

大家好!我们是Supercomputing Systems AG的SubstraTEE团队。在本文中,我们将向大家介绍什么是可信链下计算,并说明SubstraTEE工具的用途,以及我们对未来应用程序的愿景。
头等仓APP下载

科普|什么是SubstraTee?有什么作用呢?

大家好!我们是Supercomputing Systems AG的SubstraTEE团队。在本文中,我们将向大家介绍什么是可信链下计算,并说明SubstraTEE工具的用途,以及我们对未来应用程序的愿景。

SubstraTEE是一个框架,它将可信执行环境(TEE)与Substrate构建的区块链(也就是使用Polkadot本地构建工具构建的链以及易于与Polkadot网络连接的链)集成在一起。 SubstraTEE旨在将状态更新转移到TEE中来改善区块链的隐私性、可扩展性和互操作性。

什么是TEE?

我们已习惯于必须信任IT管理员。虽然这些管理员曾经是公司里的内部员工,但如今我们常常在租用的云平台上工作。

这些管理员可以读取和修改在他们管理的任何计算机上的所有处理数据。但不幸的是,不仅我们信任的已知管理员有此权限,黑客也可以设法获得此管理员权限。无论资历多深的公司都无法规避此类攻击。

现在进入正题,来说说TEE。

你可以将TEE想象成是一个联合处理器,它管理自己的加密密钥,并且仅执行与原代码相对应的哈希或指纹程序。处理器制造商保证,他们的硬件设计完美,没有人能够访问TEE的内部密钥或读取其内存。而且,制造商可以对每个TEE进行身份验证,并向用户提供远程认证,以确认其未被篡改的程序是否在真正的TEE上运行,即便计算机位于异地数据中心也无妨。

简单来说,TEE保证了(远程)计算的完整性和保密性,但我们也应提防可能存在的安全威胁。

假设我们信任TEE制造商的完整性和设计能力,那么TEE可以使我们在无需与区块链验证者或其他用户共享数据的情况下执行任何状态更新。因此私人代币转移、私人智能合约和私人状态通道都可实现,且成本相对低廉。

在区块链上实现隐私

区块链本质上是透明的,必须确保去中心化性质。在区块链实现假名很简单,但许多用例都需要保密性。企业不想泄露商业机密,他们必须遵守欧洲数据隐私法(GDPR)。这就意味着任何个人数据都不应接触去许可的区块链。在不读取已处理数据的同时还要验证计算的完整性是另一大挑战。于是TEE提供了一个完美的解决方案:计算的完整性和保密性。

TEE与零知识证明

零知识证明(ZKP)使ZCash能够实现私人代币转移。尽管ZKP在无需信任硬件制造商的情况下确保了隐私,但它们也带来了计算量及交易规模巨大等问题。此外,ZKP是个前沿的研究领域,要了解它们需要专业知识。

另一方面,TEE已进入主流,并提供合理的易用性。可能会有人抱怨道,如今制造商不与公众分享他们的设计,规避了科学的同行评审。Keystone已经启动了一个开源的TEE项目,也许有一天能够完成TEE的良好审计。然而我们仍需要信任Keystone ASIC的制造商,他们必须提供远程认证。

使用SubstraTEE执行私人交易

Supercomputing Systems一直在努力完成SubstraTEE的有效PoC。私人代币交易就是首批用例中的典型。

再来举个例子说明下私人代币交易的工作原理。假设Alice想转100个代币给Bob,但除了Bob,没人知道交易的具体细节。她创建了一个SubstraTEE隐蔽交易:

let call = TrustedCall::balance_transfer(alice_incognito.public(), bob_incognito.public(), 100);

Alice使用SubstraTEE工作机的隐蔽密钥对该调用进行加密,并将其作为常规的Substrate外部对象发送到SubstraTeeRegistry运行时模块。因为有效负载是加密的,所以除了SubstraTEE的工作机TEE之外,没有人能解密此调用并查看其详细信息。SubstraTeeRegistry充当代理并分派包含不透明有效负载的事件。

科普|什么是SubstraTee?有什么作用呢? 

SubstraTEE工作机侦听此类调用事件,并将有效负载转发到其TEE中。然后TEE解密有效负载并检索原始调用,该调用由状态转换功能(STF)处理。在上图中,STF与Substrate的余额运行时模块完全相同。

STF在加密的链下状态上运行,并执行状态更新。在上述例子下,它将100个代币从Alice的账户alice_incognito转移到Bob的账户bob_incognito中。结果状态被加密并存储在IPFS中。然后工作机会向链发送一个外部确认,包括调用的哈希和更新状态的哈希。

Alice现在可以通过任意私下通信渠道向Bob发送原始调用,从而使Bob确信代币已转移。Bob现在可以扫描包含调用哈希的链上确认。Bob还可以直接通过websocket界面来查询工作机,以查看其更新后的账户余额。

此SubstraTEE演示视频可前往YouTube查看。

远程认证

那么Alice和Bob要如何才能确保SubstraTEE工作机确实在真正的TEE上运行预期的代码?

远程认证要求TEE制造商对TEE进行身份验证,并对报告进行签名,该报告确认TEE的真实性以及TEE正在执行的二进制哈希。此报告还包括TEE的公共签名密钥,因此不必担心,我们可以通过验证该签名来确认工作机是否在真正的TEE上运行。

SubstraTEE通过将链上的远程认证存储在SubstraTeeRegistry中,为用户简化了此过程。这样就可以避免用户还要向制造商注册认证服务。

冗余

如果SubstraTEE工作机离线了怎么办?如果工作机只有一个,那么整个状态可能会永远消失。为了实现冗余,同一状态下必须得有多个工作机同时运行。它们都需要知道状态加密密钥。

SubstraTEE是去许可的,任何人都可以通过定期向SubstraTeeRegistry提供远程认证加入到工作组中。新加入的工作机可向老工作机索要密钥。两个工作机将相互进行远程认证,从而提供密钥。新工作机将从IPFS处获取最新状态,并立即开始与其他所有工作机并行处理请求。因此假设其他所有工作机都离线,只剩下一个工作机,网络也可保持活跃和反应性。

前景

本文已展示了SubstraTEE如何增强隐私。接下来我们要实现去信任访问链状态。我们正在努力通过ink!合约提供私人计算,并构建链桥。

未来我们可能会实现直接调用,从而提高可扩展性。虽然我们当前的解决方案使得每个请求都需要1 + N笔链上交易(N是工作机数量),但是直接调用就意味着可将请求直接发送给工作机,并在链上进行分批确认,每秒可通过1000个请求。直接调用还带来了与GDPR相关的另一大优势:擦除权。由于没有个人数据能够接触到区块链,因此擦除权可以作为STF的一项功能。

来源|https://medium.com/polkadot-network

翻译|头等仓Saline

编译|头等仓Mark

译文版权属头等仓所有,任何转载请保留文末信息。

本文由 区块链资讯平台头等仓 作者:Mark 发表,其版权均为 区块链资讯平台头等仓 所有,文章内容系作者个人观点,不代表 区块链资讯平台头等仓 对观点赞同或支持。如需转载,请注明文章来源。
头等仓APP下载

发表评论