论文阅读:Town Crier:An Authenticated Data Feed for Smart Contracts
初学者的一些粗略理解,如果有错,欢迎指正。
论文地址
TC官方网站(里面有作者提供的案例)
本文参考了这篇解读,尤其是前半部分,删改不多,感谢作者
1. INTRODUCTION
这篇论文主要针对的是智能合约,为智能合约提供一个经过身份验证的数据馈送(data feeds)。
(个人理解有点像快递员,把经过验证打包的数据递送给智能合约,它提供验证和传递,但是不会改变数据的内容。)
首先我们了解一下背景信息,智能合约是自动执行合同条款的计算机程序,比如日常的汽车贷款付款、保险等都可以通过智能合约自动完成。
但这意味着,智能合约的执行离不开真实生活中的数据。比如执行汽车贷款支付的智能合约需要知道车主是否及时付款,以确定车主取消是否依旧享有实际访问权限等等。
另一个问题则是数据的隐私性。区块链的分布式的特点能够让每个人都去记账,从而达到防抵赖、防篡改的目的,但从另一个角度来看也是区块链的缺点,所有区块状态都是公开可见的,data feeds可能会暴露出用户的请求,隐私性被破坏。
针对以上两个问题,作者提出了Town Crier——为智能合约提供一个经过身份验证的data feed,在智能合约和外部网络(论文假设外部的数据是可信的、真实的)中构建一座数据流通的桥梁。
Town Crier
- Town Crier检索网站数据,然后将其作为依赖于区块链上的合同的数据,称之为数据报(datagrams)。
- 小贩利用Intel可信组件SGX( Software Guard Extensions)作为后端,智能合约作为前端。以SGX安全区中受信任的代码段的形式执行其核心功能,从而保护其免受恶意进程和OS的侵扰,并可以向远程客户端证明该客户端正在与SGX支持的合法TC实例进行交互。(这个Software Guard Extensions是一项针对应用程序开发人员的英特尔技术,旨在保护选择的代码和数据不被泄露或修改。SGX通过使用围圈,或者称之为飞地(enclave),即内存中受保护的执行区域,使这种保护成为可能。)
- 小贩也支持私密数据报请求(private datagram requests)和自定义数据报请求( custom datagram requests)。用户请求private datagram requests时,参数被小贩的公钥加密,加密过程在SGX中完成,因此数据报和数据的请求在区块链上是被隐藏起来的。用户请求custom datagram requests时,TC通过接收加密的用户凭据,安全地访问请求者的在线资源(如在线帐户),从而允许TC安全地检索访问控制数据。
Contributions
论文的主要奉献有以下4点:
- 论文介绍并报告了Town Crier的端到端实施,这是一种经过身份验证的数据馈送系统,可解决采用分散式智能合约的关键障碍。TC将以太坊中的智能合约前端和基于SGX的可信硬件后端结合在一起,以在没有可信服务运营商的情况下将经过身份验证的数据提供给智能合约,以及支持私有和自定义数据请求,支持加密请求和安全使用访问控制的链下数据源。
- 论文在通用组合(UC)框架内正式分析TC的安全性,定义了代表链上和链外组件的功能。 正式定义并证明数据报真实性和公平支出以及gas可持续性的基本属性,这是任何以太坊服务的基本可用性属性。
- 论文引入了跨区块链和SGX enclave的混合可信计算基(TCB),这是可信赖系统组成的强大新范例。 我们提供了有助于在此模型中缩小TCB代码大小的通用技术,以及弥补各个SGX平台漏洞的技术。(可信计算基(英语:Trusted computing base, TCB)是指为实现计算机系统安全保护的所有安全保护机制的集合,机制可以硬件、固件和软件的形式出现。一旦可信计算机基的某个构件出现程序错误或者安全隐患,就对整个系统的安全造成危害。 与之相反,如果除可信计算基之外的系统的其他部分出现问题,也只是泄漏了系统安全策略赋予它们的相关权限而已,这些权限一般都是比较低的。)
- 论文探索了三种TC应用程序,这些应用程序显示了TC能够支持远远超出当今以太坊的服务范围的能力。 这些应用程序的实验还表明,TC可以轻松满足现代分散式区块链的延迟和吞吐量要求。
论文实现的三种智能合约实例为:
- 使用股票报价器数据的金融衍生产品;
- 依赖于有关航班取消的私人数据请求的飞行保险合同;
- 使用自定义数据请求访问用户帐户的以太坊货币以太币(通过Steam Marketplace)销售虚拟商品和在线游戏的合同。
2. BACKGROUND
TC主要引入的技术包括可信执行环境(论文使用的是Intel的SGX,我的老师建议也了解一下TEE)、TLS/HTTPS以及智能合约。
- 可信执行环境SGX是通过硬件实现或者软件技术实现的一个安全的代码运行环境,可以理解为一个黑盒子,将执行的代码放在黑盒子里,提供输入最后获取输出,整个执行的过程不能被外界更改,也不能被观察到,可以认为是安全的模型。
- HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。TLS,安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。TC利用了HTTPS的重要功能,即可以将其划分为可互操作的层:与Web服务器交互的HTTP层,处理握手和安全通信的TLS层以及提供可靠数据流的TCP层。
- 智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
3. ARCHITECTURE AND SECURITY MODEL
Architecture
TC包含三个主要组件:The TC Contract (CTC), the Enclave (代码标记为progencl), and the Relay (R).
这个图给出了TC的架构示意图,显示了它与外部实体的交互,绿色的部分是被信任的组件。
我们看看它的三个主要组件:
- Tc contract:TC智能合约。CTC是一种智能合约,充当TC的区块链前端。 它旨在为依赖合同CU提供一个简单的API,以向TC提出请求。 其接受来自CU的数据报请求,并从TC返回相应的数据报。
- Enclave:飞地。在SGX enclave中运行的TC智能代码实例简称为Enclave,并用progencl表示代码本身。Enclave提取并完成来自区块链的数据报请求。 为了获取要包含在数据报中的数据,它查询外部数据源,特别是启用HTTPS的Internet服务。 它将数据报作为数字签名的区块链消息返回到请求合同CU。
- Relay:中继器。由于在SGX中缺少直接的网络访问,因此将R布置在enclave中代替其处理双向的数据流量处理,提供了从飞地到三个不同实