文 / 北京大学信息科学技术学院教授、区块链研究中心主任  陈钟

2020年2月5日,中国人民银行正式发布《金融分布式账本技术安全规范》(以下简称《规范》)金融行业标准。《规范》的发布,能有效引导金融科技领域的所有机构加强行业自律,落实安全责任,推动分布式账本科技的有序发展。本文重点对《规范》中的智能合约及基础软硬件安全进行解读。

智能合约

1.概述。智能合约是以信息化方式传播、验证或执行合同的计算机协议。其在分布式账本上体现为可自动执行的计算机程序。

智能合约概念最早在1994年由学者Nick Szabo提出,最初被定义为一套以数字形式定义的承诺。区块链技术的出现重新定义了智能合约。智能合约是区块链的核心构成要素(合约层),是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的计算机程序,能够主动或被动地实现数据处理、接受、储存和发送等价值,以及控制和管理各类链上智能资产等功能。可以说智能合约是分布式账本技术区别于传统信息化技术最重要的标志之一。

智能合约的运作机理如图1所示,智能合约经各方签署后,以程序代码的形式附着在区块链数据上,经P2P网络传播和节点验证后记入区块链的特定区块中。智能合约封装了预定义的若干状态及转换规则、触发合约执行的情景、特定情景下的应对行动等。区块链可实时监控智能合约的状态,并通过核查外部数据源、确认满足特定触发条件后激活并执行合约。

图1 智能合约运行原理

相信在未来的数字经济中,几乎所有的契约型的约定都可以利用智能合约,将业务逻辑以代码的形式实现、编译并部署,完成既定规则的条件触发和自动执行,可以保障所有约定的可靠执行,避免篡改、抵赖和违约。

从智能合约的概念提出,到现在开始进行规模化应用,我们可以看到智能合约的执行离不开以基础软件和基础硬件为核心构建的可信执行环境。考虑到金融场景的高可靠性要求,在《规范》中,明确要求了“智能合约宜在可信的软件/硬件支持的环境中执行”。

2.基于基础软硬件的可信执行环境。基础软硬件为上层提供物理资源和计算驱动,是分布式账本系统的基础支持。通过基础软硬件为智能合约提供可信执行环境(Trusted Execution Environment,简称TEE)是当前相对安全有效的智能合约运行安全的保护方式。

TEE通过处理器上的安全区域提供了与常规操作系统隔离的计算环境,保证TEE中的计算不受常规操作系统的影响,进而保证加载到TEE中的代码和数据的机密性和完整性。TEE还能够对运行的程序及结果出具远程证明,因此其他用户不需要重新运行程序,只需验证远程证明的真实性和有效性即可确认在TEE中运行的程序及其结果的正确性。由于智能合约的计算在可信执行环境中完成,因此运行时数据不会被泄露。对于需要保密的账本数据,明文仅在运行时可见,并且通过密钥管理组件存储密钥,因此数据不会被任何非授权用户获取。在充分保护数据隐私的基础上,数据所有者仍然可以通过“函数级”授权,允许其他用户通过调用指定的智能合约使用数据(仅获取计算结果,不获取数据明文)并保留使用记录。

《规范》也提到了“系统宜有针对不同操作系统的软件版本,宜支持三种及以上的操作系统或系统版本”,“应保证不同节点使用的硬件设备具备一定的异构性”,这些要求都对分布式账本的大规模应用提出了新的挑战。

产业界有各种不同的可信执行环境实现形态,有的是基于芯片的实现形态,有的是基于软件的实现形态,不管形式如何变化,我们看到:隔离机制、算力共享、业务开放都是其具备的共同特点。不同的TEE环境之间如何实现一致和协同,是后续要重点关注的问题。

3.智能合约安全。智能合约未来拥有极为广阔的应用场景,但它本质是一段程序,不可避免地存在漏洞,且其漏洞能够直接转化为经济利益。自2013年以太坊诞生以来,智能合约的安全问题日渐得到重视。从The DAO安全事件到BEC的BatchOverFlow,因智能合约漏洞直接或间接导致了上亿美元的经济财产损失(如图2所示)。

图2 智能合约安全事件造成的经济损失(万美元)

《规范》中对智能合约自身的安全性提出了一系列的要求,比如:“智能合约的执行应有原子性,支持执行过程中发生错误时的回滚操作。一旦出现异常,所有的执行应被回撤,以避免中间态导致数据不一致”。通过TEE保护的数据在一个智能合约的计算过程中不应被泄露,用户仅能在一个智能合约完成运行后才能获得计算结果。

在金融场景中,存在着大量的既有信息系统和数据库,仅计算链上数据的智能合约不能完全满足需求,在许多业务场景下,智能合约不得不与链下数据或信息系统进行交互。但是智能合约与链下的数据交换会破坏智能合约计算的原子性,因此可能造成区块链上受保护数据的隐私泄露。在需要与链下交互的智能合约中,除不安全区间(即链下数据交互的部分)外,其他区间在各自区间内的计算都应保证其原子性。

《规范》中也规定了“智能合约应经过相关专业技术人员的审计,并保留审计记录”。一般情况下,区块链上的所有用户都可以看到基于区块链的智能合约,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。

所以,要在合约上线之前对安全性进行审计和分析,将函数之间的依赖关系、调用关系抽取出来,提取各个数据流的前后流向关系等关联信息。综合这些信息来探知函数内部是否存在异常行为、内存结构是否被破坏、控制流是否进入非法边界,从而审计合约是否存在安全威胁。

展望

在金融业务模式中,风险突出表现为三点:现有监管能力无法实时有效获取人员、交易、资金数据导致的数据不可控风险;交易自身真实性不明和是否有洗钱风险导致的场景不可知风险;不符合已有金融法规或处于模糊、灰色地带的规范不完备风险。

分布式账本技术与金融的融合发展当前仍处于相对初步的阶段,在技术成熟度、自主创新度、场景契合度以及制度规则完备程度等方面还面临一些实际挑战,本《规范》是为了落实《中国金融业信息技术“十三五”发展规划》(银发(2017)140号文印发)和《金融科技(FinTech发展规划(2019~2021年))》(银发(2019)209号文印发)的要求,规范分布式账本技术在金融领域的应用,提升分布式账本技术的信息安全保障能力而编制,可以说恰逢其时。

我们看到,金融科技的高速发展降低了企业从事金融业务的门槛,但金融科技企业普遍内控机制薄弱、消费者权益保护存在不足、信息不透明、监管难度大。同时,金融科技打破风险传导的时空限制,使得风险传播速度更快。金融产品交叉性和关联性不断增强,风险难以识别,风险隐蔽性更大,传统监管措施很难奏效。

为了防范金融创新引发的风险,监管部门坚持“凡是金融活动都应纳入监管”的原则,提出了更多合规要求,客观上也增加了金融机构合规成本。

随着《规范》的推出,在统一了安全要求的情况下,分布式账本技术必将在金融领域得到快速应用,基于分布式账本技术的监管科技也将会是金融科技发展的必然产物,通过分布式账本的使用将可以大幅降低监管与合规的成本,原因如下:一是分布式账本能够变成监管者与受监管对象之间的共享数据记录库,打破了组织间的壁垒;二是分布式账本能够轻松实现交易数据的子集以实时的方式与监管者分享;三是分布式账本可以实现“包含监管的”业务模式,在其中监管者利用智能合约实时验证交易,规则合约化。

随着分布式账本技术在金融机构的规模化应用,我们将会看到:金融监管部门可以基于分布式账本对金融机构进行主动监管,推动监管模式由事后监管向事中监管转变,提高监管效率。金融机构可以通过以智能合约为核心的自动化手段增强合规能力,减少合规工作的资源付出。可以说,分布式账本技术客观上改变了监管部门与受监管对象的关系,减少监管摩擦并增进合规效果,进而可以对金融产业的发展形成良性的促进作用。

声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。