对于区块链,相信大家都已经非常熟悉,比如它有去中心化、防篡改、匿名性等等特性。但是,对于区块链相关的隐私计算,可能很多人了解得并不多,作为基于密码学的隐私保护技术的一种替代方案,可信执行环境(Trusted execution environment,TEE)可在保证计算效率的前提下完成隐私保护的计算。
区块链社群此次邀请了毕业于清华大学,现在国内某研究所担任研究员的师兄,为大家做一个关于TEE的分享,本文主要想回答的问题是:
1.使用 TEE 的原因?
2.TEE 应用和混合TEE-区块链系统的范式是什么?
3.TEE 研究未来可能的方向?
师兄是偏学术的角度为大家进行分享,也希望这篇文章能够给区块链隐私计算相关的科研人员与高校学生有一些启发,话不多说,我们开始来解开这一个个问题吧。
1.使用 TEE 的原因?
在社群中,有一位师姐提问到:我之前没有接触过隐私计算,我比较好奇:隐私计算在什么情况下需要用?在隐私计算中又为什么使用TEE,想麻烦师兄提供比较直观的解释。
借着这个问题,师兄回答到:这个问题从以下两个方面进行思考。
第一:为什么要隐私计算?因为数据分享的业务需求一直都存在的,而近年来,包括《数据安全法》、《个人数据保护法》在内的二十多个法规相继出台,原本的业务需求实现方式现在是违法的。因此就不得不重新找到一个权衡,既要分享数据,又要满足用户隐私、数据安全方面的法规要求。举个例子,以前公司之间只要达成协议,A 就可以把数据发给 B,B 又可以把数据发给 C,典型的就是在 APP 里面的注册信息,公司背后把你的数据卖给其他人,这个灰色产业一直是存在的,法规出台后,现在这种行为就违法了,所以公司需要寻求一种合法的方式去分享各自的业务数据。
第二:为什么要使用TEE?
一方面是它的效率优势;TEE在性能方面是有无可置疑的优势,它是传统的一些硬性技术沿用过来,是基于硬件实现的,有机密性的保证。相对于现在密码学还未成熟的状态,它的效率会特别高,这种效率的优势对于大数据场景是必不可少的。
另一方面如果从广义来看 TEE,是因为它在构造全信任链方面的优势。如果更广泛地去看 TEE 概念,它有很多变种,小到 LT 设备上小型 IP,在数据收集层面上就做认证、做签名,告诉用户这个数据确实是从我这传出去的。到计算层面上,我们现在经常提到的 SGX、加密机等等,如果把它看作整体来讲,它对于构造一个完整的信任链以及与真实世界交互存在优势,这些优势都决定当前为什么要重视 TEE 这个路线。
2.TEE 应用和混合 TEE-区块链系统的范式是什么?
提到范式,不知道读者会不会跟作者一样疑惑,我以前没有留意到范式是什么?这次借助师兄的分享,我开始了解到这个相关概念,也给不知道的读者做一个小补充:
范式的特点:
1.范式在一定程度内具有公认性;2.范式是一个由基本定律、理论、应用以及相关的仪器设备等构成的一个整体,它的存在给科学家提供了一个研究纲领;3.范式还为科学研究提供了可模仿的成功先例。
看到这里可能有点抽象,作者我理解的范式有点像主流研究,就是大部分科研人员都会在这个方向上去做出创新,所以了解一个领域的范式,有利于我们抓住这个领域的核心。回到师兄的分享。
师兄借助这张图为我们做出了解释(OS:图片画得很好看)
首先从最简单的方面来讲,如果从研究的角度看 TEE 的应用方面,通过各种各样 paper 观察到 TEE 和传统的信息安全、密码学的范式是差不多的,都是三个部分组成。
假设,构造,证明
根据论文的水平、需求、场景来讲,一般 proof 部分不一定需要,需要看情况而定,但前两个部分肯定是要清晰、有利。
【假设】
在假设部分,经典会讲到诚实的,半诚实的和恶意的。在 TEE 场景里,如果去假设是诚实的或者半诚实的,几乎没有什么可说的,典型的论文大家都是要考虑一些恶意的场景。通过上图我们可以看到,传统的恶意行为会涉及到:作为服务的提供方,可能会抵赖,会篡改消息的输入或者输出,进行一些日蚀攻击,衍生的类似于回滚、repudiation 抵赖,也有包括丢掉消息,delay 消息,这些都是比较传统恶意攻击者模型。
TEE 场景里面比较特殊的假设,比如是否假设恶意的攻击者能够破坏 TEE 的完整性和机密性,延伸出的效果是他是不是可以从机器设备里面提取出关键的密钥信息或者其他的一些控制流等等的敏感信息。这些假设是后续构造【证明】部分的精髓,关键区别点就在:第一个假设是【是不是要假设别人能够攻破 TEE 设备本身】,第二个是如果不能攻破 TEE,【那么传统的安全风险,你要在协议里面考虑多少种,是不是足够完备,以及在抵御的攻击类型和类型带来的协议复杂度之间做一个平衡】,这是假设部分。
【构造】
先从一个最简单模型出发:
现在用 service provider 的 SGX 服务,典型的交互模式就是说用户要先认证设备的真实性,如果是真的,那认证过程中我会确保有一个密钥对,这个密钥对就是在 SGX 里面,通过它随机的熵去生成,同时不会出狱。随后如果知道它的公钥是什么,我就把这几笔数据用公钥加密,再发给 SGX。运算完之后再把这个结果给用户。
一般会从这个模型出发,去看看它可能面临的风险,然后去修改、改进它,让它能够抵御更多的攻击类型。
这里把 SGX 看成一个整体,但在工程实践里面,可能会考虑把不同的业务模块,比如密钥管理模块,计算模块、policy 模块,enforce 模块做一个解耦,但这些都是工程上,这里主要考虑单体的模型。
(这里师兄做了进一步扩展,内容将在别的文章中整理)
3.TEE 研究未来可能的方向?
以下是师兄的个人观点,仅供大家参观。师兄通过很多论文,解答了这个问题。
当前最主要、最核心的问题是这几个方面。
一个是 TEE 自身可靠性的问题。Attack 和 Countermeasures,这个可能会贯穿很长的生命周期,作为主要问题存在。因为当前 TEE 自身的安全风险、安全攻击,还没有完全成熟跟清晰,所以还是处在传统的信息安全,即出了一个新攻击,防一个新攻击,这样让它逐步往前走,变得更安全的阶段。这是第一位最重要的问题。
第二是全链路可信的问题。所谓全链路,当前虽然有 TEE,甚至有很多的密码学方案、零知识证明;但是如果要让区块链生态覆盖更多的场景,为更多的传统业务逻辑带来可信的提升,全周期的可信还是没有解决,只能在数据原生的空间里面去做一些工作。为什么加密货币能活?为什么 defi 能火?因为它所有需要的数据,基本上都是来自于就是链原生的。如果考虑到链下,哪怕是隐私计算场景,虽然能保证计算过程的交易合规,但数据收集部分源头的可信,暂时是没办法保证的,当前只能靠一些生态运营的机制来实现。
因此,全链路是一个非常重要的问题,如果它能够实现,那未来隐私计算能够服务场景,能支撑的实体经济业务就会更丰富了。
其中全链路中的去中心化的问题。现在基本上非专业的人士普遍的一个想法是要依赖英特尔,哪怕解释再多,但这种看法是很难去改变的,需要很长的过程。从技术上来讲,从图中我们可以看到,当前确实没有做到完全的去中心化,近两年在这方面有很多努力的。比如说尝试推进 TEE 中分布式制造或者分布式认证的问题,再有就是在已有的框架下,尝试通过异构的 TEE,即融合多个不同厂家的 TEE 组成一个共同的系统,去消解信任危机,这些是正在进行的,让它更能够符合全链路信任需求的努力。
第三是扩展性的问题。扩展性一方面体现是支持更多的灵活的厂家 TEE 产品选择;另外是关于 TEE 配置的问题,比如这里可能会涉及到我们的认证不是静态,不是一次性认证之后就结束了,而是认证之后 TEE 的设计,我可能要加载新的代码,然后核心的人可以去配合更新我的认证等等。还有包括 TEE 自身高可用的问题,因为它被 server 控制了,怎么样保证说它能够更好地摆脱 server,它的 network io,同类相互抢占资源等等一系列问题,怎么去解决这些问题达到高可用,这也是在扩展性中很典型的问题。
总的来说,未来 TEE 的一个首要职责就是先从传统的云计算领域汲取很多的思想,去实现分布式的 TEE 的集群网络,也就是在各个网络里面能够支持 TEE 多个节点的部署,乃至 TEE 来自不同产品之间的相互认证、相互协作和分布式计算。各个集群之间又能够通过区块链进行一个很好的合作。然后往下因为全生命周期可信的需求,能承接到比如安全 IP 的关键的 LT 设备。
这应该是从技术角度来讲,一个理想的提议。倒推回来,就是刚才三个关键的问题需要解决。
以上就是师兄的分享,感谢师兄带来如此精彩的分享,也希望这篇文章能够给相关领域的学者一些启发。