区块链应用

Trias创造支持通用应用程序的新一代公链体系

Trias 来源:区块网 2018-08-01 09:04

TRIAS旨在创造支持通用应用程序的新一代公链体系,构建可信赖的智能自主运算设备(Trustworthy and Reliable Intelligent Autonomous Systems),构筑普世可信赖计算生态,让人相信机器。
TRIAS:可信赖的智能机器
1.相信机器,人类新的基础需求
自图灵测试被提出,我们对机器模仿自己、进而帮助自己的期待从未停止。上世纪50年代诞生第一台IAS机(Institute of Advanced Study Machine)代表了人类智慧的新高峰。其所实现的冯诺伊曼架构也成为了当代信息社会的奠基石。随着过去60年信息技术的突飞猛进,尤其是近10年云计算、大数据、物联网与人工智能技术领域的突破性进展,IAS将被重新定义:智能自主计算设备(Intelligent Autonomous Systems),或被称为智能机器。
随着人工智能技术的发展,新型的IAS将很有可能成为人类生活不可或缺的基础设施。我们能够依赖各种“拟人”的智能机器,生活更加便捷,劳动力得以解放。然而,与此同时,智能机器也在监控我们的一言一行、承载我们的一举一动。当我们的生活无法离开这样的机器,当我们的决策都依赖这样的机器,对其的信任危机,均将严重影响人类社会基础设施的稳定运转。当我们被智能机器围绕,在享受便捷的同时,却又被不安感笼罩。
·我们使用计算机和互联网来处理各项工作,但不可信的应用程序可能导致重要数据外泄或被篡改, 损害国家及个人利益;
·我们使用手机和移动互联网来满足“衣食住行游购娱”等基本需求,但不可信的APP正在非法采集我们的个人数据,侵犯我们的个人隐私;
·我们使用自动驾驶汽车出行,但不可信的控制程序将威胁我们的生命安全;
·我们使用智能医疗机器来识别病理、诊断重疾,用机械手臂实施手术,但不可信的分析、控制程序将导致隐私信息外泄,还可能威胁病人的生命安全;
·我们依赖智能家居带来的一切便利,智能家居扮演着人类的管家、清洁工、厨师、宠物等角色,但不可信的智能家居系统将为入侵者窥视、控制我们的生活打开窗口;
可穿戴设备、工业智造、交通基建,以及未来的我们所处的各个智慧城市基础设施都将由机器操控,不可信的信息系统将会使我们社会陷入一片混乱。
有缺陷或被滥用的技术、不规范的管理等,都可能造成机器被非法控制;人工智能技术的不断演进,更加剧了我们对机器可信性的疑虑。机器已渐渐成为人类身体机能的扩展,机器的可信问题关乎人类的安全,对我们的这些新的“四肢”、新的“五官”、新的“大脑”建立有效信任将成为未来人类新的基础需求。
构建可信与可靠的IAS(Trustworthy and Reliable Intelligent Autonomous Systems),正是TRIAS团队的奋斗目标。
2.区块链,用共识构筑的机器信任
机器=硬件+软件,因此对机器的信任通常从这两方面考虑。硬件通常是固定不变的,在报废之前很多年都可能不会有变化。对硬件进行全面的检查也相对容易的,即使硬件上面出现某个漏洞,想要进一步破坏,也必须由攻击者通过漏洞绕过所有的软件防御措施才能进行实现。
软件是硬件的灵魂。它本质上是存储于硬件上的一段数据,因此易变且不易被感知。软件的变化将极大程度地影响机器的行为,这使得黑客恶意操纵机器成为可能。因此,在绝大多数应用场景中,软件远远比硬件易受攻击。2017年“WannaCrypt”勒索病毒爆发,即使我们拥有防火墙、杀毒软件、大数据、人工智能分析等防御方式,依旧未能阻止史上最大的软件攻击事件发生。
通常而言,软件被分为系统软件与应用软件。应用软件执行最终的业务逻辑,系统软件为应用软件的正确执行提供正确的支持。在传统运算模式中,系统软件与应用软件往往不被明确的区分,因为二者通常都归同一用户拥有。但在云计算、容器技术、大数据等新型运算模式下,系统软件常属于服务提供方,而应用软件属于用户。这时双方的信任关系便尤为重要:1)系统可信性:对于用户而言,系统软件是否正确地提供了应有的支持,以保障应用的正确执行;2)应用可信性:对于服务提供方而言,应用软件是否仅执行了正确的操作,以防止系统或其它应用被恶意破坏;同时用户也常需确认其应用自身正确执行了预定的业务逻辑。
区块链与智能合约技术的兴起,为构建可信赖的软件体系带来了新的曙光。区块链技术为解决系统可信性,提出了去中心化的解决方案。它本质上可以理解是一种网络通讯语言,是一种互联网协议。区块链可以生成一套记录时间先后的、不可篡改的、可信任的数据库,这套数据库是去中心化存储且数据安全能够得到有效保证的。区块链技术的核心是一套共识算法,它的作用是在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识。通过共识,来减少任何一个系统实施非预期行为的可能性。但目前区块链的主流共识算法都存在高冗余高复杂度问题,即为了争夺记账权或验证区块正确性进行冗余的存储与计算,这浪费了大量算力和存储空间,并且时间成本也高的离谱。
智能合约是Nick Szabo于20年前提出的安全方法,是基于触发条件自动执行的电子合约,可用于解决应用可信性的问题。智能合约可以由区块链计算网络执行,所有合约是由网络中所有节点遵循协议自动执行。可以说,智能合约就是赋予区块链灵魂的APP,能让用户在死板的、无法篡改、可追溯、去中性化的区块链基础上,基于图灵完备的描述,为相关的应用赋予活力,以满足更高更广的应用场景。
以以太坊为代表的区块链2.0系列技术实现了图灵完备的智能合约,它在一定程度上实现了可信赖的软件系统。通过大量的运算冗余,以及以算法复杂度为基础的共识协议,区块链在一定程度上保障了一段程序能被正确的软件系统环境执行:因为攻击者难以破坏足够多的冗余运算环境,并挑战共识算法复杂度。另一方面,通过简单化以及开源,智能合约的语义得意容易地被验证,因此在一定程度上保障了程序的正确性。
3.智能合约,离普世机器信任尚有距离
智能合约的逻辑通常简单清晰,编写出的智能合约也能做到语法语义简单,且区块链框架常要求智能合约开源,并限制了其开发语言。这使得合约执行者掌握合约语法后就可以验证合约逻辑,包括检测BUG。更进一步,类似以太坊框架定义了ERC20、ERC721这种协议来限制合约编写方式。这当然能在一定程度上避免合约安全问题,但对于代码量大且由不同语法构成的应用来说就不太适用。这使得现有的智能合约很难直接用于实现全平台通用应用程序的业务逻辑。主要缺陷体现在以下几点:
低效共识 低效缓慢的共识和算力浪费在公链里屡见不鲜,尤以POW为甚。区块链技术的明星级应用比特币就是很好的例子,它以hash运算限制了10分钟的出块频率,导致TPS只有7。这不仅是缓慢低效、浪费算力,而且限制了很多需要高TPS的应用;
算力中心化 去中心化是区块链最主要特性之一,而大量集中矿池的诞生使得去中心化不再可信。据统计,比特币的大部分算力集中于中国的几大矿池内,这使得控制或攻破区块链成为可能;
过度冗余 区块链的BFT或其他共识算法主流的实现都是基于分布式存储,这个分布式存储不是一般意义的分片,而是全量数据存储(考虑全量节点),这造成了数据的冗余。而智能合约的执行需要落在这些节点上,这造成了操作的冗余。高冗余将带来严重的算力浪费,并且增加区块链网络的拥堵,严重影响可并行运行的程序数量;
限定性接口 区块链的共识涉及到节点上的数字资产,而各区块链框架对数字资产有不同形式的存储方式,想要应用区块链上的智能合约,首先要熟悉各平台上数据存取方式以及限制,体现在接口层面上,对传入的参数类型和大小就有了一定约束。比如一个存储数据的应用要使用智能合约实现,与主流的数据库应用相比,在存取能力和性能设计方面有较大差距,并不能取代后者的功能。即使采用区块链在前、数据库在后的设计,也有存取等限制,这是由区块链特性及TPS要求决定的。从更广泛的范围而言,任何区块链平台上的智能合约并不能完全替代经过长时间积累的专业应用能完成的工作。
移植重构 对于一个已经运行的应用或流程来说,引入区块链技术以整合现有业务逻辑,不仅需要将数据重新整理上链,还可能涉及整个业务流的重构。比如房屋买卖,上链之前买卖双方通过中介来处理交易流程,中介收取佣金来帮助双方完成类似合理匹配、价值计算、贷款条件、契税缴纳、合同签订等一系列流程,而上链后不止需要数字化所有凭证,还需要对凭证产生的每一步重新评估,对一些复杂要求及变化的凭证也要有特定的预案,如信用体系、交易中止等。
链外运算不可信 虽然区块链通过技术手段保证了数据和操作的可信,但链外的数据脱离了区块链的管控范畴,任何流程只要涉及到信任链外数据,就很可能失去了利用区块链保证安全的基础。比如一个股票交易的合约,定义了开盘日的特定时间点只要某只股票跌停超过5%,那么就将该支股票抛售,而判断股票是否跌停的逻辑是首先需要从一个第三方接口获取数据,而这个第三方可能被攻击导致判断失准,整个合约也就没有安全可言了。
4.TRIAS体系结构,可信算力、可信软件与超级合约
TRIAS是兼容原生应用程序的新一代智能合约运行平台、开发框架、与协作生态。TRIAS包括三套子系统:Leviatom可信算力网络,结合异构TEE技术与图计算,旨在构造高效、高稳定、高可扩展的共识算法,并实现对原生应用程序的支持;Prometh可溯源软件开发框架,结合通用软件DevSecOps框架,实现应用程序的可追溯、可验证和零移植,赋予原生应用程序以智能合约级的安全可信强度;MagCarta合约体系,实现全平台原生应用程序的统一编程与调度,并用经济模型协调各方利益。
5.TRIAS三权分立模型,去中心化信息世界的新秩序
三权分立,是西方一种关于权力架构和权力资源配置的政治学说,主张行政、立法和司法三种权力分别由不同机关掌握,各自独立行使、相互制约制衡。TRIAS首次提出网络空间基于三权分立(Trias Politica)的去中心化模型。在完全去中心化与完全中心化的治理结构之间,利用三权的相互协作与制约,TRIAS实现了权力的动态平衡,从而最终实现信息世界的公平与公正。本节将简要介绍信息世界三权分立模型的基本理念,其理论基础来自于TRIAS团队在建立云平台可信安全治理的三权分立模型的科研积累(附录文献[7,8,9])。TRIAS三权分立模型的设计与分析将在TRIAS技术白皮书做详尽的阐释。
在TRIAS体系中,Leviatom负责行政权,即执行一组程序序列;Prometh负责立法权,即定义每一个程序的属性;MagCarta负责司法权,即说明哪些程序被执行了,从而裁定服务的质量,并分配各方利益。TRIAS在实现权力分配的同时,进一步实现了三权的相互约束(Check and Balance),使得任意两权的结合可限制第三权的过度扩张,从而很大程度上解决区块链和智能合约现有的权利监管不足的问题。如,实现Leviatom协议的软件栈本身的属性也有Prometh定义,由MagCarta裁定Leviatom算力节点各自的贡献值;Prometh自身的软件栈也在Leviatom网络上执行,由MagCarta裁定Prometh属性定义方各自的贡献值;MagCarta合约的属性也有Prometh定义,并且MagCarta虚拟机也由Leviatom可信算力网络执行。三权既相互独立,又相互制衡,一起向用户证明其所使用的服务是由服务提供商用正确的程序序列,依照正确的执行方式实现。TRIAS打破了传统信息技术服务供应商提供服务、运行服务和裁定服务执行的统治地位,实现信息世界的公平与公正。
Leviatom是行政机构,只负责提供程序执行环境,不能变更运行于其上的程序的属性记录,也不能裁定程序的执行结果。它将接受立法机构Prometh和司法机构Magcarta的共同监督。如果Leviatom恶意篡改了运行其上的程序,那么MagCarta可通过在Prometh中记录的不可被篡改的程序相关属性,裁定Leviatom执行程序序列存在问题。相对应的,因为TRIAS中同一权力机构是由内部多个实体共同组建,那么Leviatom就可以对照不同的Prometh中的实体记录的程序属性,或者不同的MagCarta中的实体裁定结果,判断自己是否受到不公平的裁定,以及是否存在Prometh中的实体和MagCarta中的实体共谋的问题。 所以,行政机构Leviatom同时接受立法机构Prometh和司法机构MagCarta的对程序属性和执行的监督,同时也反向监督Prometh和MagCarta的公平和公正性。
新的程序运行之前,需要Prometh对其属性形成共识,否则该程序无法运行。Prometh除了维护运行与Leviatom上的程序的属性,还负责维护MagCarta程序属性。因此,Prometh能制衡MagCarta的权力。Prometh同样由多个实体构成 ,实体与实体之间相互记录彼此程序属性,在内部构成了相互制衡,保证Prometh提供的证据链的公平和公正性。MagCarta除了监督Leviatom上运行的程序,还监督Prometh的运行。因此,MagCarta能够制衡Prometh的权力。MagCarta同样由多个实体构成,实体与实体之间相互监督彼此程序的执行,在内部相互制衡,保证MagCarta的监督和裁定结果的公平和公正性。
6. TRIAS技术特性,支持更广更通用的应用场景
高效共识(10万级TPS):TRIAS能够快速定位全网中“最难撒谎的点”,并为少数这些点分发智能合约程序。因此TRIAS区块链通过利用可信计算的异构共识算法,从根本上减少和优化了共识过程与节点成本,提升共识速度。在同等节点规模和计算能力的情况下,TRIAS的共识速度将达到以太坊当前共识速度的5000-10000倍,能满足目前大部分的企业信息传递和交流的应用场景,具备企业级商用的高并发能力;
高度稳定(对抗接近90%的算力攻击):当前区块链抵御攻击的手段,采用的是以量取胜提高攻击者成本的策略,这种方式的效果已经证明比传统的数据安全要强。但就算区块链做到51%的抗攻击能力,仍然能有很大的机会被攻击成功。比如勒索病毒式自动化蠕虫类的攻击可以高速自我复制、扩散和连续性潜伏APT(Advanced Persistent Threat)攻击。如果区块链的节点数不够,要在互联网环境共识速度跑过自动攻击传播速度,被破坏的成本还是可接受的。TRIAS在共识节点间用小世界网络算法构建基于TEE可信验证关系的信任网络,该网络上任一个节点的“撒谎”代价,近乎是需要全网90%以上的节点同时配合撒谎。因此与传统区块链网络无法对抗51%攻击相比,TRIAS能够对抗接近90%的恶意算力攻击;
无限扩张(低于1%的跨碎片通信开销):TRIAS中的每一个节点均可以参与多个分片,每个节点均可参与交易的各个环节,并获得对应的收益。TRIAS中每个节点的可信值将作为其能够参与的分片依据之一,而不是简单的依靠状态碎片划分。在最大化保证安全的情况下,可以精确地进行跨碎片通讯,进行高效可信的无限公链扩容;
原生应用(支持对全平台原生应用的可信调用):通过TEE环境的支持,全网互联的机器能够通过TRIAS专有的可信算力网络选举出高可信的执行环境,并监管原生应用的信用调用,在此框架下,全平台的应用都能在链上实现从源码到应用全生命周期的可信调用;
高阶范式(支持复杂的智能合约协作模式):目前区块链大部分的技术主要是针对金融类型的交易,这样的底层数据结构很难适合当前主流的人工智能、大数据场景的流式高性能数据应用,无法直接进行描述。TRIAS区块链采用解耦性的区块链智能合约范式描述结构,可以直接把主流的高阶范式直接进行统一的规约化转换到区块链的范式中,方便用户可以把各种主流应用进行范式描述。
零移植(支持全平台原生应用的零重构移植):当前的智能合约采用的方式是一般要规约一种新的语言或者利用的C++等高级语言进行封装,提供API让用户自己重新再进行编写不可篡改的程序执行流程。这样的做法让目前用户的已有应用程序要上链变的非常的困难。TRIAS通过可信计算与DevSecOps的结合,从软件源码阶段开始,每一次的变更行为进行共识可追溯的上链分析和存证。在TRIAS的智能合约框架下,已存在的程序可以直接跟链交互,智能合约运行的环境就像容器与程序之间的关系一样,使得全平台的原生应用可以与TRIAS系统无缝连接。
可信数据源(链外数据的可信采集可信上链):基于可信计算的技术,对外链设备的接入和数据接入在传统的挖矿软件或者钱包接入的方式基础上,对用户的整个运行环境进行可信计算的度量与证实,保证7X24小时的情况下对用户运行环境的状态进行求证验证,就算有1个字节的非白名单变化,都能发现其非可信外链的行为和节点,解决了现有区块链技术的接入破坏成本低的问题。TRIAS通过限制可信设备产生链数据源,保证数据产生的可信状态和后续处理增加的标准TAG属性,限定产出源头的可信度。在TRIAS整个生态中,收集数据形式会有多种,通过TRIAS的接口或者CLIENT 的不可篡改标准流程来保证传输上链的过程数据合法和格式的准确,同时数据隐私的严格保护,保证传输过程的安全可靠。数据经过核准,会分别转储到对应的多副本节点,并记录TXID及当前的数据状态,以便回溯和调用审计的形成,从而使数据既便捷使用,又不会被轻易泄露和非法使用传播;
零数据交换(无数据共享的隐私数据协同处理):现有数据协同运算的痛点在于参与各方数据的安全性与隐私性难以保障。当前基于密码学的方法,如零知识证明、安全多方计算、同态加密等均有很大的应用局限。TRIAS利用逆向思路解决安全问题:交换程序而非交换数据。多方实施协同运算时,协作双方首先连通Leviatom,构建统一的可信算力平台,再分发基于Prometh开发的数据处理程序到数据拥有方的可信算力平台上。MagCarta实现更高阶的编程方式,基于各方贡献的利益计算,以及对冲风险的保险模型。TRIAS从而实现了数据永不离开用户机房的多方协同运算。
绿色挖矿(用安全验证实现挖矿):基于HCGraph技术,TRIAS实时计算全网所有节点的可信值,并冷却、移除不可信节点,构建一种安全即算力的体系,用安全验证替代挖矿。不同的智能合约可根据自身的经济能力和安全需求,选择不同可信值的节点运行,节点获得收益,避免无意义的资源和算力浪费;

保险体系(保险即安全服务):TRIAS引入保险体系,用于对冲智能合约在执行过程中可能出现的风险,如基础软件0Day漏洞。智能合约可依据自身承受风险能力用Token购买保险,并在安全风险发生时,通过获取理赔。

Leviatom(利维坦):去中心化的可信算力网络

本章介绍Leviatom可信算力网络的基本原理。Leviatom的核心算法HCGraph源自TRIAS团队在云平台建立动态可信关系网络的研究。

1.用TEE与图计算实现高效健壮的共识网络

1.1 TEE技术与基于节点信任的共识

现有区块链项目,对于智能合约、挖矿、钱包等程序的运行环境并不进行安全检查,主要依靠传统的加密手段。简单而言,即使一个系统环境可能已经感染了病毒或并产生了恶意行为,只要最后共识时被感染的机器没有超过共识机制的抗攻击数就不影响正确的共识结果。但是这样的做法实际上是一种“Du博”,永远都在侥幸攻击的速度无法超过共识节点的极限。同时,这种方式对于共识算力没有“质量”判断的能力,就如大家一起参加拔河比赛,为了好的成绩,大家都会选择身高、体重合适的运动员,这样效果很好。而不是盲人摸象,只要有人能参加出力就可以。因此如果由身体有恙的选手组成的拔河队伍,就算所有人都齐心协力,实际结果也很难理想。

针对现有问题,TRIAS提出利用可信执行环境TEE (Trusted Execution Environment)等可信计算技术,将智能合约和区块链自身代码,移入特性硬件的可信执行环境中执行。由可信计算技术确保执行的代码是满足预期要求的,不会受异常进程/线程/恶意文件等其它系统因素的影响。可信执行环境内的程序若出现任何与预期白名单不一致的情况时,即立刻会在可信硬件上反应。这种低“质量”的算力节点就能立刻被辨识和并排除。同时也可以通过可信计算方法来量化每个共识节点“质量”好坏的程度。在实现共识时,可以直接通过对“质量”好坏程度的判断,仅选取少数优质节点作为代表以达成共识。此类方法应用可信硬件的特性,提高了节点的安全可信性,并进而减少了参与共识的节点数,从而最终实现了效率与安全性的同时提升。

1.2 TEE技术应用瓶颈

然而,TEE技术的应用也存在一定问题。首先,缺乏通用的TEE构建方法和接口。TEE的标准制定者GP(GlobalPlatform)虽然制定了大量标准和规范,但是从接口层方面,各大厂商实现接口方式尽不相同,碎片化非常的严重。而且出于安全考虑,代码基本闭源,所以无法形成统一的接口进行推广,需要进行定制。其次,目前市场上缺乏基于TEE的安全应用。如前所说只有部分大厂为了实现最高安全的采用了TEE,但是对应的扩展应用大家都很离散。而具体使用的时候,TrustZone与SGX代码都需要重构,需要开发人员对已有程序代码重构,将程序分成可信部分和非可信部分,目前有Intel发布的SDK来协助做这方面工作,但仍然是很大量的工程修改工作。

在性能方面,TEE的enclave进出是瓶颈,这是由于TLB中缓存enclave中的内存访问缘故,因而进出enclave需要进行TLB flush。另外执行enclave代码时,非TLB的内存访问也会造成额外的一些检查,导致更大的额外开销。同时也存在TEE代码编写漏洞风险 ,如果enclave编写代码本身有漏洞的话,enclave是无法保护程序的安全,目前就有针对缓冲区溢出的ROP攻击能够控制enclave。另外也有些边信道攻击,能够导致秘密泄漏。因此,用单一的中心化的enclave去保护程序安全是无法完全满足用户安全需求的。

另一方面,对TEE环境正确性的验证,通常都需要一套中心化验证服务器的存在。即由一组服务来周期性的为TEE环境中的程序是否正确的执行,提供验证服务。此时,在网络中,该验证服务将成为超级权力拥有者,并也成为了单点失效的中心。另一种验证方式是实现TEE环境的两两验证,在此种模式下,任何一个具备TEE能力的节点,同时也具备验证其它TEE环境正确性的能力。因此任意两个TEE节点相交互时,都先实现对彼此的验证。此种架构虽然实现了对验证节点的去中心化,但在一个复杂的共识网络中,两两验证将引入O(n2)的运算复杂度(验证协议的执行)以及O(n2)存储及网络复杂度(证书的传输与存储)。

1.3 用图算法传递基于TEE信任关系

为了减少区块链中使用TEE的难度,Leviatom提出了异构共识图协议(HCGraph),引入了信任传递关系网。HCGraph让临近的具备TEE运行环境的节点互相验证对方的可信度,并将所收集到的可信节点信息在已获得其信任的其它节点见传播。这样每个TEE共识节点的状态信息就能形成一个信誉关系网,互相背书互相证明,一旦有一个节点要“撒谎”,周围的节点都会立刻就能指正它。而周围的恶意节点若想要配合“撒谎”节点,则需要让其周围的所有其他节点也同时配合。由此反复迭代,HCGraph可迅速定位全网中“最难撒谎的点”,并为少数这些点分发智能合约程序,从而实现高效、健壮、高并发、且支持原生应用程序的智能合约运行环境。

通过结合TEE与Gossip协议并构建“同谋违约”代价模型,HCGraph协议体现出特有的优势:

·规避了对特定TEE技术的依赖,因为被验证的节点可以是任意一种TEE技术,而完全依赖一种TEE技术(如Intel SGX)的共识协议,将无法摆脱技术提供方(如Intel)的中心化的控制;
·通过Gossip协议建立了可传递的信任关系,极大程度地减少了TEE之间高频昂贵的相互调用,显著提升了共识协议的效率;
·基于Gossip协议所建立“同谋违约”模型事实上实现了节点之间的低间隔的自动选举,这一方面极大程度地减少了参与共识的节点数,实现了类似于DPOS的高效共识效率,同时又避免了DPOS超级节点的人为的因素,增加了系统的透明与公平性;
·基于TEE验证关系的Gossip协议以及Gossip on Gossip协议,事实上在节点之间构建了小世界网络,该网络的一个重要特性是当90%节点从网络上移除时,网络依然联通。这意味着改网络将能够抵挡接近90%的恶意算力攻击;
·由于Leviatom每次选举出的节点具备已被验证的TEE环境,因此每个节点均支持对该平台原生应用程序的可信执行。

2. HCGraph算法概述

2.1 用TEE构建本地信任模型

在基于TEE的环境下,我们提出了在共识节点上构建Leviatom的架构层,这是介于操作系统底层内核与上层共识应用之间的中间层,它用于保证:1)其与上层应用程序之间能够相互证实,2)保证在节点之间有互相证实的基础。这样基于Leviatom之间的互信关系便能够推导整个网络之间的互信关系。而Leviatom网络的全网互信执行环境的理论基础便是建立在Leviatom的第二个特性之上的。

假设Leviatom之间存在着互联的关系以这两个Leviatom之间的证实作为开始,那么他们之间便有了信任或者不信任这两种关系。而随着时间的推移,这种信任或者不信任的关系会逐渐变淡。我们使用一个位向量(Bitarray)来表示两个Leviatom之间的互信关系,假设两者之间开始建立关系的时间为t_0,那么,两者之间的互信向量可以在t_i时间上表现为 (i%32<<32)位上的值为1如果在两者之间是互信的,或者是0如果两者之间是不互信的,这样来看一个互信向量的值越大,则两者之间互信程度越高,越小则互信程度越小。

在时间t_i两者为信任,则更新信任向量到t_i+1的形式,而在t_i+1为不信任事则更新到t_i+2时间的样子。

2.2 用Gossip协议族构建全网信任图模型

我们在本节介绍HCGraph。在图计算中,假设我们使用一个点来表示一个共识节点(Leviatom),用一条有向边表示一个Leviatom向另一个Leviatom发生了证实的关系,那么所有Leviatom的证实关系的组合便形成成了一个Leviatom网络,一个网络节点在某个时间会向其周边的领接节点发起证实的操作,这样它就能够获得一个本地的信任向量,在图2中N_a0便向周边标注为蓝色的3个节点均发起了直接证实的操作,并且保存了一个本地的证实向量。

对于全局的网络来说,因为每个Leviatom都会存储与其发生交互的所有邻接节点的信任向量,通过归并这些本地向量便可以获得整个网络的信任关系。比如说在图2中,标注为蓝色的节点是N_a0的一阶领接节点,通过收集这些节点的本地信任向量,并和自身拥有的本地信任向量进行合并,这样就能够获得一个粗略的网络信任矩阵,这一步我们称之为Gossip协议。标注为绿色的节点是N_a0的二阶邻接节点,N_a0会收集这些节点的本地信任向量,并和自身拥有的通过gossip协议创建的信任矩阵进行合并,能够获得一个更加完整的网络信任矩阵,这一步我们称之为Gossip about Gossip协议。考虑到真实网络中小世界网络的特性,通过这种方法往往可以获取到一个比较完整的全局网络互信关系。

HCGraph利用类似于HashGraph的Gossip以及Gossip about Gossip协议(HCGraph的相关Gossip协议发表于2011年),实现高效的信任关系传递。基于此HCGraph进一步实现了Gossip about Reduced Gossip(即减少二阶领结节点传递的信息量),Targeted Gossip(仅部分二阶领接节点传递信息),以优化信任关系传递协议。

2.3 基于机器学习的可扩展HCGraph算法

HCGraph的gossip算法中存在着网络热点负载过重(在社交网络中被称为Lady Gaga问题)的问题,在未来真实系统里百万节点级别的分布式环境中会成为横向扩展(scale out)的瓶颈。在此设计一个基于机器学习的网络链接预测的算法,来保证Leviatom之间只计算一阶邻接节点的信息便可以推导全网的互信信息。并设计基于分布式的系统架构来实现此算法。假设我们需要预测Neuron u到Neuron v之间的证实关系,而u到v并没有直接发起过证实。我们可以收集两个类型的图计算信息。

第一个类型仅仅取决于Leviatom u 和 v自身与整个网络世界之间的关系,在这里我们仅考虑 u证实了多少Leviatom可信标记为D^+out(u),证实了多少Leviatom不可信标记为D^-out(u),v被多少领接Leviatom证实为可信标记为D^+in(v),和证实为不可信标记为D^-in(v),使用C(u,v)表示u和v的共同领接节点的数量,还有D^+out(u)+D^-out(u)和D^+in(v)+ D^-in(v)一共有7个维度的信息被收集。

第二个类型的信息取决于Leviatom u和v之间的交互,在网络科学中这个性质被称作Blance and Status,其中心思想就是敌人的敌人是我的朋友而敌人的朋友是我的敌人。假设有个Leviatom w它跟v和v之间有证实关系,那么考虑到证实关系的方向和信任关系,一共有(2 * 2)*(2 * 2)= 16种关系。我们使用一个16维数组来表示在u和v之间每种关系的数量。

这样看来,第一个类型的信息包含7个维度的计数,而第二个类型的信息则包含了16个维度的计数。结合两个类型的信息,或者仅使用其中一个类型的信息(取决于需要的精确度和付出的计算力)采用机器学习的算法(如Logistic regression, CRF, HMM或者神经网络)对部分数据进行训练,而对另一部分数据进行交互测试。这样便可以达到1)不进行全网互证,2)不收集二阶证实信息,避免网络热点的可横向扩展的互信网络。

因为之前提到的算法是一个在分布式的环境中执行的,那么Leviatom之间的证实关系是实时的存储在Leviatom本地的数据结构中的。实现此算法则涉及到两个问题:1)获取到所有Leviatom周期性的证实信息来训练机器学习模型;2)当需要预测u和v之间的信任关系时,如何抓取到u和v的实时证实信息来进行预测。第一个问题是一个批处理的计算问题,而第二个问题则是在分布式系统中的实时计算问题。针对这两个需求,和Leviatom本地化存储,证实的需求,我们能够抽象出三个模块:

第一个模块(实时异构共识图)是由Leviatom本身和 Leviatom之间的通信所组成,主要的功能便是建立起Leviatom之间的证实关系,并将这些关系存储在本地的可持久化的数据结构中。

第二个模块(批处理机器学习)是由一个Hadoop生态搭建起来的ETL系统加上构建在其上的机器学习组件组成,其采用pull(拉)模型来从各个组件中周期性的同步出Leviatom的证实信息,并且以分片的方式来训练出机器学习的模型,来供后续预测的需要。

第三个模块(弹性拉伸),是一个基于Paxos的状态注册模块,当新的Leviatom加入或者旧的 Leviatom退出的时候,会在Paxos机上注册自己的服务,这样当客户端需要进行服务的时候便能够从Paxos机中寻找到正确的路由信息来进行实时的信息获取和预测。Paxos机是整个Leviatom生态的核心基础,其需要保证高可用,高性能和高一致性。

3.Leviatom多层异构算力体系

Leviatom算力网络中的共识节点担负着三类职责,形成逻辑上的三层算力体系:

第一层算力节点利用TEE技术定期检查其周围节点的正确性。并记录其对齐检查的历史信息。TEE目前包括Intel SGX、Intel TXT、TPM、ARM Trustzone。第二层算力节点利用Gossip协议(以及Gossip about Gossip)收集并传播周围第一层算力节点所收集到的其它节点的正确性信息。基于Gossip所汇总的信息,Leviatom网络将最终归纳出全网络任一节点的“同谋违约”代价模型。即任何一个节点,想要执行非可信代码而不被发现,它需要让多大规模的其它节点与它共通执行非可信代码,或提供错误的信任背书(即同谋)。第二层算力节点所确定的“同谋违约”代价很大的少数几个节点将成为第三层节点,并获得执行任意程序的权力。该层算力节点将最终对执行程序的结果产生共识,并争夺最终的记账权。为适应不同平台的算力特性,Leviatom允许任一节点支持实现三类职责的任意组合。这既增加了共识网络结构的灵活性,又依照算力能力有效分配了共识运算量,实现了高效节能。

Prometh(普罗米修斯):去中心化的可溯源软件生态

Prometh 可溯源软件开发框架的基本原理。Prometh 的核心模型源自 TRIAS 团队在可信软件构建与运维方法的研究。

1.软件全生命周期的安全风险

以软件开发的瀑布模型为例,软件生命周期大致分为以下几个阶段:

设计 该阶段包括需求分析、功能定义、可行性分析以及软件层面设计等,软件层面设计又可细分为技术选型、框架设计、功能模块界定、数据库结构设计、服务可用性设计等等。设计阶段是项目基础,需要多方配合,尤其对于大型软件项目,需要产品、架构师、开发及运维协同合作,一起设计编写项目文档。随着需求变更或规模增长,需要随时调整软件的设计。因此该阶段可能出现的问题是各角色协同配合以及迭代更新,哪怕是一个很小的细节调整都会影响到生命周期之后的流程,需要很强的可追溯能力。另外,复杂软件会涉及到多个模块,每个模块应有不同的团队负责设计,这就需要明确的权限。

开发 该阶段用来编码实现之前的软件设计,无论是 GIT 还是 SVN 解决了版本管理和协同开发的大部分问题,但针对一些更加具体和严格的条件限制,比如代码质量、编写规范、开发环境等,有的需要引入第三方工具,有的则没有很好的解决方案。比如代码中有一个内存泄漏的BUG,若在该阶段没有被发现,应用上线后轻则拖慢运行速度导致无法提供服务,重则被恶意用户利用来发动攻击。

编译 对于 C++ 、Golang 这种静态语言需要进行编译,动态语言出于安全性也可以编译为二进制或字节码格式。该阶段需要保证编译环境及源代码的安全可控,前者涉及到编译工具、依赖的库、编译选项等,后者涉及代码检测。而编译环境往往容易被忽视,比如依赖的库版本太低有漏洞就会导致最终的程序埋下隐患。另外,代码传输到编译环境若涉及到外网,还要考虑是否泄露或被篡改,因此安全传输及完整性校验也是需要关注的点。

分发/部署 该阶段将可运行的程序下发到部署前的中心节点或待部署节点,部署后便可启动运行程序。需要验证的条件:部署节点地址及环境可控、可执行程序安全可靠、运行的配置和参数符合预期。此步骤是程序转换为进程运行的最后一步,涉及到分发程序的传输安全性及可靠性验证,当然,如何保证程序在一个完全可信的环境下启动也是重点。还需考虑的就是部署到测试环境进行测试,如何保障测试环境、测试程序及测试结果这条链的可靠、可控,还有就是测试的全面性和准确性如何控制。

监控 程序运行后变为进程,进入维护阶段,需要采集和监控程序的运行环境及程序数据,需要保证基础运维数据(包括但不限于 cpu、mem 、io 等)、业务监控数据、运行环境数据等准确高效的采集,当然若需要采集程序也要保证其可靠运行。监控是程序的“听诊器”,维护阶段的重点是持续稳定的产出程序和程序运行环境的监控指标。此外,实时性和防泄露也是要保证的,涉及到故障的及时发现处理和业务数据安全。

分析 该阶段对采集到的数据进行高效分析处理,需要保证进行分析功能的程序稳定可靠、分析的数据安全可信、异常处理规则合规,可以第一时间发现程序或程序环境问题并做出保障服务稳定性与合规运行的进一步操作。监控的特点是具有海量数据,保证数据可信及高效处理是分析阶段的关键。

响应 响应可以理解为属于测试和服务范畴,测试阶段需要根据设计阶段的目标,对程序进行功能和压力测试,而到了服务阶段则需要结合监控和分析阶段进行判断。我们可以定义预期的响应时间以及数据格式,不同阶段都可以依据返回状态进行判断是否符合预期。还有一点是防范恶意攻击,比如SQL注入,程序如何响应这种请求是需要计划和考虑的。

2. 用可信溯源建立对软件的安全感

我们这里以有机食品为例,来阐释如何用可信溯源构建消费者对产品的信任感。例如开办餐厅,餐厅管理者并不能直接简单快捷的确定采购食品的有机性、保鲜情况。客户一般的确定方式主要是靠品牌,但是问题来了,现实中就算是茅台酒的总代,它出货的时候都是正品,但是在运输的途中还是可能被掉包换掉。所以客户在买到任何有机食品的时候,实际上没有办法通过客观公正的技术手段确认这个产品是否满足要求。

但是如果通过技术达到无法篡改的属性,将整个有机蔬菜的生产到运输缴费的环节信息都放在这个无法篡改的技术上面,那么任何一个客户都会对整个食品的全生命周期有了透明的判断,客户就能对购买食品的品质有提前的预估。同时,对于整个生产环节的参与方都提供了不可抵赖的追责依据,让每个生产环节想要犯错或者作假的成本都很高。这样客户在购买的时候就会非常有安全感,消费的效率和生产的成本流程控制都会提高很多。

Prometh 框架即是利用溯源的方式来构建用户对软件的信任感。让每个用户在使用软件前就能提前进行预估,对软件的所有生命周期,包括产生、开发、测试都非常的了解,就能实现对软件执行过程中犯错或加入后门等恶意行为进行高强度的追责和防御。具体技术路径基于当前业界已经成熟的开发 (Dev)运维(Ops)自动化上链,配合安全(Sec)与 AI 来实现软件完整构建、分发、运行流程在区块链上的可信溯源,与自动化安全验证。

3.Prometh可溯源软件开发框架

Prometh 是一个去中心化的可信软件溯源网络框架。其中,去中心化和可信性是基于 Leviatom 网络来实现的。区别于其它任何软件框架或开源平台,Prometh 致力建设一个全功能、高可信度、易接入的软件全生命周期生态系统。Prometh 特性如下:

覆盖全生命周期。Prometh 结合 Leviatom 覆盖软件全生命周期建设,从设计、开发、测试,直到运行、监控、销毁。 Leviatom 负责程序的可信执行,Prometh负责程序的可信状态管理,二者结合做到了对软件的无死角管理。

通用软件的可信溯源。Prometh 实现了软件全生命周期的不可篡改的完整记录,以及循环迭代实施的安全分析,构建了用户对软件安全性的信心。同时,TRIAS 通过整合具备软件安全性分析激励机制的经济模型,构建通用软件的安全可信的软件供应链体系,实现了软件可溯源、漏洞的高效发现与修复的良性生态系统。

对于复杂的智能合约代码,用形式化方法验证其安全性将变得极为复杂。用形式化验证分析所有原生应用程序源代码的安全性,更是不切实际。Prometh 提出基于软件生命周期可信溯源的验证框架,在安全性和复杂度之间寻找平衡点。在未来的版本中,Prometh 将用形式化验证方法来验证一套用以构建软件的最小软件工具集,再用该工具集构造更大的工具集,依次迭代,为可溯源软件工具链构建由形式化验证的软件可信根。

生态体系建设。Prometh 的使用者可以是个人开发者、测试人员、用户、商业公司甚至是黑客。任何开发者可以发布自己的应用到 Prometh 上,这个过程中系统会自动分析应用的安全性并给出初期评分,这是基于最小的形式化验证和溯源模型实现。而后,人工校验阶段即测试或者黑客可以基于自己的专业发现应用问题并提交,这些问题经过验证会附在应用的标签上,开发者可以去修复这些问题。这期间评分是动态变更的,用户可以基于评分和描述去评估应用是否可用。这其中还引入了激励机制,这在后面的章节会提到。

框架接入简单。应用的开发者只需提供一些基础信息就可以很容易的将应用发布到Prometh上,基于高阶范式接口,不会限制应用的语言和框架。基于形式化验证+软件溯源+生态人工校验机制,实现几万行源码的大应用接入也十分安全、高效。

开发应用简单且可订阅的安全性。Prometh 不仅支持任何语言开发的应用,而且还支持开发者引用已经在 Prometh 上部署的应用,这样可以大大提高开发效率和安全性。因为不止代码和功能可以复用,即使被发现安全问题,任何使用基础应用的上层应用都会被描述为有同样的问题,并且支持开发者订阅从而得到通知,实现版本的更新或问题的修复。

可以看到可溯源软件架构在运行模式上分为四层模型,从下往上依次是:

DevSecOps 可信区块链层。软件生命周期内产生的数据信息和依赖的工具都存储在该链上,用分布式存储和高效共识为软件溯源提供底层支撑。软件生命周期内产生的数据信息包括用户信息、分析工具产生的数据信息、产生的结果数据等,依赖的工具主要是两类,一类是功能性工具,比如编译工具,另一类是安全分析工具,比如静态分析工具。这两类工具都将经过形式化验证,保证工具集的安全性。

功能和安全分析层。指在DevSecOps可信区块链层存储的,通过了形式化验证的最小软件工具集。这些工具集的功能就是执行软件流程层的行为以及验证分析软件生命周期内各阶段的安全性。对于应用开发者来说,这些工具集是透明的,当检测到安全风险时,将中止软件生命周期并通知应用开发者原因。这些工具集内的工具分别独立运行且经过形式化验证,而后通过链上的流控形成一个整体,产生的数据会存储到区块链层,用来防止篡改保证可信度。

软件状态层。主要对软件生命周期内各状态追踪、记录及管理,这些软件状态是独立的、静态的,其中每个状态产生的信息数据都会记录到 DevSecOps 可信区块链层。因此任何一个软件状态都可以被溯源。

软件流程层。该层管理软件生命周期行为,相对于软件状态层的静态,流程层是动态的,只有触发流程行为才能改变软件静态状态。可以理解为行为接受一个输入即软件的上一个状态,产生一个输出即软件的下一个状态,当产生错误时,下一个状态是中止。另外,行为和流程是可以被配置定义的链上数据。可以看到,只有提交代码在非可信环境下执行,其它流程都在链上的可信环境内执行,确保执行流程的环境可信。

以图5为例的流程分析如下。开发者将软件源码通过接口上链从而启动整个DevSecOps流程(图上步骤1),开发者的提交环境是不可信的,这不会最终影响应用的可信度,因为在其它流程内保证环境、数据和工具可信。流程启动后会通过链上可信的静态分析工具对提交的代码进行分析(步骤2),而后存储代码、用户信息及分析数据到链上(步骤3),通过后根据定义的流程触发编译行为(步骤4),依据可信的编译工具和环境对上一步的源码编译(步骤5)并记录编译数据(步骤6),成功后生成二进制(步骤7),而后对二进制进行安全分析(步骤8)及记录结果(步骤9)。接下去触发打包行为(步骤10),基于可信打包工具和环境对编译结果打包(步骤11),记录打包数据到链上(步骤12),成功后生成软件包(步骤13),而后继续对软件包进行安全分析(步骤14)并记录结果(步骤15)。软件包安全分析通过后触发部署行为(步骤16),使用可信部署工具执行(步骤17)及记录部署数据(步骤18),成功后生成可执行文件(步骤19),然后对可执行文件进行安全分析(步骤20)及记录数据(步骤21),成功后,比如部署到了N台可信节点内运行,会触发监控行为(步骤22),监控会依据可信监控工具对进程监控(步骤24)并记录监控数据到链上(步骤25)。

MagCarta(大宪章):全平台编程的智能合约模型

本章将简要介绍 MagCarta 合约的核心设计理念。MagCarta 的完整语法设计、虚拟机实现、以及可编程共识的合约范例。

1. MagCarta数据结构

MagCarta 是 TRIAS 平台的智能合约,它实现了 Prometh 应用程序在 Leviatom 网络上的灵活调度,MagCarta 通过为 Leviatom 节点与 Prometh 程序开发者支付酬劳费用以及保险费用,实现对算力、程序、数据贡献者的激励与安全保障。MagCarta 采用类似 JSON 的语法描述数据结构:

{Key: Value}

2. MagCarta合约语法

MagCarta 将采用类似 EOS 的智能合约语法,以实现图灵完备,并最大程度兼容现有 dapp 合约。在此基础上,MagCarta 新增了 consensus语句,以实现对 Prometh应用程序在 Leviatom 算力网络上的调度:

consensus(COMPUTE_SET, PROGRAM_SET, DATA_SET, STRATEGY_SET)

该语句实现了指定 PRORAM_SET内的程序,在 COMPUTE_SET 内的算力节点上,以 DATA_SET 内的数据为输入的 MagCarta Consensus 。STRATEGY_SET里包括了用于指定付款策略的 PRICE_STRATEGY,以及制定了 COMPUTE,PROGRAME ,与 DATA 之间的映射关系的 SCHEDULE_STRATEGY。根据不同的策略组合,MagCarta可支持丰富高阶的编程范式。

在 STRATEGY_SET中,最重要的 STRATEGY 是 CONSENSUS_STRATEGY,它指定了不同 PROGRAM如何达成共识的。若共识成立,consensus返回 PROGRAM 程序所达成的共识的结果,通常是程序任意一份执行副本的正确返回值。若共识失败,consensus 返回错误指令。

Token经济体系
TRIAS用三方面的Token激励机制,实现了对Leviatom网络的可信算力节点、Prometh框架的安全验证节点、以及MagCarta合约的开发者的激励。
Leviatiom社区 在Leviatom网络中,第一层算力节点通过不断验证周围节点(一到三层)的TEE可信状态,挖掘出第三层算力节点,并用持续高频的重复验证,确保目标节点始终处于可信的状态。第一层算力节点是构成Leviatom网络的基础,尤其在网络初建期,第一层节点的规模与活跃度将决定网络的健壮性。因此,第一层节点将有可能通过此类“安全验证即挖矿”挖掘出新的Token。第二层算力节点实现了对全网算力可信性的汇总、传递、和路由。它们也将会因为此贡献获得Token奖励。第三层节点执行MagCarta分发的应用程序,若结果正确,将有机会获得MagCarta Consensus所定义的奖励Token。由于第三层节点的执行权是由第一、第二层节点通过贡献运算、存储、带宽获得,第三层节点将把所得的部分Token用于主动奖励参与挖矿或传播的部分节点。
Prometh社区 Prometh框架为了实现应用程序的可溯源构建与自动化安全分析,也需要号召社区的力量,通过贡献算力、安全验证程序等,为程序的安全性背书。因此在Prometh体系构建的初期,也需要利用挖矿机制,实现对志愿者的激励。具体而言,即允许开发者或安全分析人员在对软件源码(或中间态的二进制文件)实施安全验证的自动化分析、测试程序时,能有机会获得新生成的Token。同时,由于Prometh无法保障复杂的原生应用绝无漏洞,但其强审计及可信溯源体系可协助潜在漏洞可在有限时间内被发掘且实现追责。因此程序的执行者(即Leviatom第三层算力节点)可以将一部分收入化为保险,存入保险合约。保险合约可用来奖励在Prometh生态中发现某个程序漏洞的安全分析程序,并可用于赔偿因为运行了有潜在漏洞的Prometh程序而遭受损失的Leviatom节点。因此,保险模型主要面向数据与算力提供方,该方可在获得收益的同时,可选择将部分收益转为保险,以弥补未被及时发现的漏洞对本地数据或算力平台带来的安全风险。保险合约中的Token同时可以用于作为漏洞发现者的奖励,进而构造出一套良性循环的网络空间安全生态。
MagCarta社区 MagCarta合约在其Consensus调用中通过制定PRICE_STRATEGY实现了对Leviatom算力与Prometh程序的付费。此交易方式将成为挖矿结束后的主要Token流转驱动力。

关于更多Trias信息:http://trias.one/

文章来源:http://www.qukuaiwang.com.cn/news/11175.html
原文作者:Trias
特别申明:区块链行业ICO项目鱼龙混杂,投资风险极高;各种数字货币真假难辨,需用户谨慎投资。blockvalue.com只负责分享信息,不构成任何投资建议,用户一切投资行为与本站无关。

1.价值区块链(blockvalue.com)遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.价值区块链的原创文章,请转载时务必注明文章作者和"来源:价值区块链(blockvalue.com)",不尊重原创的行为本站或将追究责任;3.作者投稿可能会经价值区块链编辑修改或补充。