一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链的可信SOA架构

2022-06-02 14:19:51 来源:中国专利 TAG:

一种基于区块链的可信soa架构
技术领域
1.本发明涉及web服务技术领域,特别是一种基于区块链的可信soa架构。


背景技术:

2.随着互联网技术的日益发达,多种多样的web服务涌现出来,从而方便了互联网it人员和非相关从业人员的使用。目前,主流的web service有邮箱验证、天气、邮政编码、航班查询等类型。但是,越来越多的web service导致互联网上的信息量愈发地庞大和多元化,这不仅会对用户搜索所需服务造成巨大的负担,而且降低服务提供者的负担。为了使得web service和服务消费者间能保持着松散耦合的关系,soa应运而生。soa被认为是一种用于开发、设计、部署和管理服务的面向服务体系架构。传统soa主要包含注册中心、服务提供者和服务消费者这3个核心角色以及服务注册、服务发现和服务调用这3个基本操作。服务消费者进行一次服务调用的过程为:服务提供者首先将服务描述发布到注册中心中;接着服务消费者向注册中心发送服务请求,注册中心根据服务请求进行服务发现,并将目标服务描述反馈给服务消费者;最后服务消费者根据目标服务确定服务提供者,直接向服务提供者发起服务调用。注册中心不仅降低了服务提供者的负担,而且便于目标服务的查找,从而使得服务消费者与服务之间保持动态调用的关系。
3.然而在不可信的分布式场景中,这样的服务提供方案正面临新的信任挑战。不可信的服务提供者可能提供不合格甚至恶意的服务,而不诚实的客户可能出于自身利益恶意拒绝接受正确的服务,甚至诬陷服务提供者。缺乏有效的不可否认争议解决机制意味着这些相互不信任的双方的服务可信得不到保证。到目前为止,已被提出的争议解决机制主要分为两类:基于可信第三方以及非基于可信第三方。由于分布式场景中不一定存在可信第三方,因此基于可信第三方的解决方案并不适用于分布式场景中。而且基于可信第三方的解决方案容易面临单点故障和性能瓶颈问题,这将使得第三方的维护成本较高。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种基于区块链的可信soa架构,可以保证在规定可信调用时间内,不管是独立恶意行为还是复合恶意行为,均能够有效处理服务提供者和请求者之间的服务纠纷。
5.为实现上述目的,本发明采用如下技术方案:一种基于区块链的可信soa架构,在构架中,区块链被引入作为服务注册代理以及证据记录器,提供了服务提供者代理和服务消费者代理使得服务注册、发现、调用和执行的流程自动化和可信;对于给定的web service,服务提供者代理将其转化为支持可信soa的可信服务描述模型trusted service;服务消费者代理屏蔽了不同服务描述模型之间的差异性,使得服务消费者能够通过原有方式使用可信服务描述模型trusted service;基于所述构架,服务调用流程为:首先,服务消费者对调用过程、服务输入参数等调用参数进行加密,然后在此基础上构造服务调用请求并发送给服务提供者;其次,服务提供者接收到调用请求后,对其中的调用参数进行解密,
并根据调用参数中的服务名称和输入参数执行对应的服务;最后,当服务执行完毕后,服务提供者对服务的输出结果加密后发送给服务消费者,并将服务调用过程由服务消费者和服务提供者双方签名后作为可信凭证上链;服务消费者通过对加密后的输出结果进行解密,就能得到目标值;当发生服务纠纷时,将触发争议解决智能合约,合约通过重新获取链上的可信凭证进行验证,从而正确处理服务纠纷。
6.在一较佳的实施例中,以下使用定义3-1对可信服务描述模型进行描述:
7.定义3-1:一个基于区块链的可信服务描述模型trusted service可表示为trustedservice=《basicinfromation,traceinformation》的二元组,其中,basicinfromation表示服务的基本描述信息,其具体含义见定义3-2,traceinformation表示可追溯信息,其具体含义见定义3-4;
8.定义3-2:trusted service的基本描述信息表示为basicinfromation=《bfunction,btextdescription,burl,bprovider》的四元组,其中,bfunction表示该服务的方法声明,btextdescription表示该服务的服务文本描述,burl表示该服务的方法地址,本文使用统一资源定位符(uniform resource locator,url)进行唯一性标识,bprovider表示该服务的服务提供者,使用fabric网络中服务提供者节点的身份证书fabric-ca进行标识;
9.定义3-3:trusted service的方法声明表示为bfunction=《bservicename,binput,boutput》的三元组,该方法声明包括服务名称bservicename、服务输入参数binput以及服务输出结果boutput;其中,本文将binput表示为集合binput={bi1,bi2,...,bin},任意一个bi包含了输入参数名biname、输入参数类型bitype以及输入参数值bivalue,形式化为bi=《biname,bitype,bivalue》的三元组;同时,本文将boutput表示为集合boutput={bo1,bo2,...,bon},任意一个bo包含了输出结果名称boname、输出结果类型botype以及输出结果值bovalue,形式化为bo=《boname,botype,bovalue》的三元组;此外,为了保证数据的隐私性,上述服务输入参数和服务输出结果在调用过程中将进行加密操作;
10.定义3-4:trusted service的可追溯信息表示为traceinfromation=《brequest_process,pra(brequest_info)》的二元组,其中,brequest_process表示调用过程证明,通过组合服务消费者以及服务提供者的fabric-ca得到,本文将其表示为brequest_process=《bconsumer,bprovider》的二元组;pra(brequest_info)表示一种使用服务消费者私钥pra加密的调用信息,对于任意调用信息brequest_info,本文将其表示为brequest_info=《brequest_process,bservicename,brequesttime》的三元组,brequest_process、bservicename即上文的调用过程、服务名称,brequesttime表示服务调用发起时间。
11.在一较佳的实施例中,包括服务提供者代理机制,服务提供者代理机制主要包括服务注册模块和服务执行模块;服务注册模块主要完成区块链上的服务描述信息的自动化注册;web service的执行被抽象为方法的调用;不考虑服务可信时,传统web service通常仅包含自身的描述信息,服务注册注册模块将传统的服务描述模型webservice转化成基于区块链的可信服务描述模型trustedservice;
12.服务执行模块主要负责转发服务消费者的请求给真正的web服务进行执行;服务执行模块在进行服务执行前需要完成前期工作:将服务消费者发送的服务输入参数binput解密,得到winput;当服务输入参数获取完成之后,服务执行模块将对真正的web服务进行
转发调用,使用该数据作为输入让真正的服务执行并返回结果;在服务执行后需要完成后继工作:构造可信凭证proof_call,并注册到区块链的历史数据库中,进行持久化。
13.在一较佳的实施例中,包括服务消费者代理机制,服务消费者代理机制主要包括服务发现模块和服务调用模块;服务发现模块主要负责根据服务消费者的功能性服务需求完成对目标服务的查找;该模块的实现基于区块链的查询功能;服务调用模块主要完成两种过程:一是构造服务调用参数模型并完成可信服务调用;二是接收并解析服务可信执行的输出结果。
14.在一较佳的实施例中,服务可信流程使用pu表示公钥public_key,pua表示服务提供者的公钥,pub表示服务消费者的公钥;pr表示私钥private_key,pra表示服务提供者的私钥,prb表示服务消费者的私钥:
15.步骤1[encrypt(pub,input_info)]:服务消费者a提供输入参数input_info后,服务消费者代理首先通过服务匹配到的目标可信服务描述trustedservice的服务提供者b的身份证书bprovider,获得服务提供者b的公钥pub,接着使用pub对input_info进行加密,得到加密值pub(input_info);
[0016]
步骤2[encrypt(pra,request_info)并构造request]:对input_info加密后,服务消费者代理以此为基础,进一步构造服务调用请求request;request包括三个部分,第一部分是服务的调用过程request_process,第二部分是服务消费者a使用pra加密调用信息request_info得到加密值pra(request_info),最后一个部分就是通过步骤1中得到的加密值pub(input_info);
[0017]
步骤3[发送request]:服务消费者代理根据服务发现时匹配到的服务,得到服务提供者代理中负责接收服务调用请求的方法地址burl,接着通过rpc发送request;
[0018]
步骤4[decrypt(pua,pra(request_info))并定位服务]:服务提供者代理首先通过调用过程中服务消费者a的身份证书coummer,得到服务消费者公钥pua,接着通过pua解密request中的pra(request_info)部分,得到request_info,最后通过request_info中的服务servicename定位请求的真正服务;
[0019]
步骤5[decrypt(prb,pub(input_info))]:服务提供者代理通过自身的私钥prb解密pub(input_info),得到输入参数input_info;
[0020]
步骤6[执行服务并encrypt(pua,result)]:服务提供者b将步骤4得到的input_info传入步骤4中定位的真正服务中,服务执行完成后得到对应的结果result,接着服务提供者代理通过pua加密result,得到加密值pua(result);
[0021]
步骤7[encrypt(prb,pua(result))并返回prb(pua(result))]:服务提供者b使用prb对步骤6中得到的加密值pua(result)进一步加密,得到加密值prb(pua(result)),并将其通过rpc返回给服务消费者a;
[0022]
步骤8[构造proof_call]:为了保证服务的可追溯性,服务提供者b在将result返回给服务消费者a的同时,需要构造服务可信凭证proof_call;proof_call由两个部分组成,一部分是服务消费者发送的request,另一部分是通过步骤6得到的结果加密值pua(result);
[0023]
步骤9[发布proof_call]:服务提供者b以proof_call作为合约的参数,触发可信凭证注册合约,使得proof_call以交易的格式发布到链上;
[0024]
步骤10[争议解决机制]:当服务提供者和服务消费者对调用过程或者输出结果产生争议纠纷时(比如服务消费者不信任服务提供者返回的输出结果),纠纷提出者将触发裁决合约,合约将对该纠纷进行裁决;其中合约会验证验证决策发起者的身份fabric-ca,保证服务提供者和服务消费者仅仅可通过与双方相关的可信凭证对其相关调用过程进行裁决,无权干涉其他节点的调用过程和可信凭证。
[0025]
在一较佳的实施例中,当服务消费者a和服务提供者b产生服务纠纷时,纠纷提出者在最后一步即步骤10申请仲裁,部署在该纠纷提出者上的裁决智能合约将被触发执行,对涉及到的调用过程进行裁决。
[0026]
与现有技术相比,本发明具有以下有益效果:
[0027]
本发明将服务调用过程由服务消费者和服务提供者双方签名后构造为可信凭证,并将可信凭证以交易的格式记录在区块链的历史数据库中,从而保证了服务的可追溯性;当服务双方发生纠纷时,将重新获取链上的可信凭证进行验证,从而保证了服务的可信。同时,为了保证服务数据的隐私性,在构造可信凭证的过程中,方法对服务的输入参数和结果进行了加密处理。
[0028]
本发明通过重新定义服务描述模型,使得服务的调用过程能够被记录和持久化,保证服务的可信和可追溯。同时,服务提供者代理和服务消费者代理,将可信服务透明化,使得服务提供者和消费者能够以原有方式进行服务注册、服务发现、服务调用和服务执行。整个框架以区块链作为底层支持,利用其去中心化、不可篡改、可追溯的特点,实现了一个可信凭证记录器,将服务双方在框架中进行服务调用的过程进行持久化。
[0029]
与传统调用方法相比,本发明方法能够在大部分恶意行为情况下正确处理服务提供者和请求者之间的服务纠纷。
附图说明
[0030]
图1为本发明优选实施例的服务可信调用流程概览图;
[0031]
图2为本发明优选实施例的面向可信soa的支撑框架方法概览;
[0032]
图3为本发明优选实施例的服务提供者代理机制示意图;
[0033]
图4为本发明优选实施例的服务可信执行流程图;
[0034]
图5为本发明优选实施例的服务消费者代理机制示意图;
[0035]
图6为本发明优选实施例的服务可信调用流程图;
[0036]
图7为本发明优选实施例的情况1-恶意服务提供者结果展示;
[0037]
图8为本发明优选实施例的情况2-恶意服务提供者结果展示;
[0038]
图9为本发明优选实施例的情况1-恶意服务消费者结果展示;
[0039]
图10为本发明优选实施例的情况1-恶意服务消费者结果展示。
具体实施方式
[0040]
下面结合附图及实施例对本发明做进一步说明。
[0041]
应该指出,以下详细说明都是例示性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
[0042]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式;如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0043]
一种基于区块链的可信soa架构,通过将服务调用过程由服务消费者和服务执行者双方签名后构造为可信凭证,并将可信凭证以交易的格式存储在区块链上的历史数据库中,从而保证了服务的可追溯性,并能够通过重新获取链上可信凭证来解决服务纠纷。同时,在构造可信凭证的过程中,对服务的输入参数和结果进行了加密处理,从而保证了服务数据的隐私性。包括一种基于区块链的可信soa支撑框架以保证服务的可信调用。该架构以区块链为底层存储,主要包含两个部分:服务消费者代理和服务提供者代理。其中,服务提供者代理为服务提供者完成服务注册和服务执行功能提供支持,服务消费者代理为服务消费者完成服务发现和服务调用功能提供支持。依托于该支撑框架,服务消费者和服务提供者能以原有的方式进行服务的注册、发现、调用和执行,代理将自动完成支持服务可信的其他相关工作。
[0044]
图1展示了基于可信soa的服务调用流程。首先,服务消费者对调用过程、服务输入参数等调用参数进行加密,然后在此基础上构造服务调用请求并发送给服务提供者;其次,服务提供者接收到调用请求后,对其中的调用参数进行解密,并根据调用参数中的服务名称和输入参数执行对应的服务;最后,当服务执行完毕后,服务提供者对服务的输出结果加密后发送给服务消费者,并将服务调用过程由服务消费者和服务提供者双方签名后作为可信凭证上链;服务消费者通过对加密后的输出结果进行解密,就能得到目标值。当发生服务纠纷时,将触发争议解决智能合约,合约通过重新获取链上的可信凭证进行验证,从而正确处理服务纠纷。
[0045]
图2展示了该框架的整体结构,在该支撑框架中,区块链被引入作为服务注册代理以及证据记录器,进一步地,提供了服务提供者代理和服务消费者代理使得服务注册、发现、调用和执行的流程自动化和可信。对于给定的web service,服务提供者代理能够将其转化为支持可信soa的可信服务trusted service;服务消费者代理屏蔽了不同服务描述模型之间的差异性,使得服务消费者能够通过原有方式使用trusted service。
[0046]
为了使服务支持可信调用,保证服务的可追溯性,本发明还包括可信服务描述模型trusted service,使用定义3-1对其进行描述。
[0047]
定义3-1:一个基于区块链的可信服务描述模型trusted service可表示为trustedservice=《basicinfromation,traceinformation》的二元组,其中,basicinfromation表示服务的基本描述信息,其具体含义见定义3-2,traceinformation表示可追溯信息,其具体含义见定义3-4。
[0048]
定义3-2:trusted service的基本描述信息表示为basicinfromation=《bfunction,btextdescription,burl,bprovider》的四元组,其中,bfunction表示该服务的方法声明,btextdescription表示该服务的服务文本描述,burl表示该服务的方法地址,本文使用统一资源定位符(uniform resource locator,url)进行唯一性标识,bprovider表示该服务的服务提供者,使用fabric网络中服务提供者节点的身份证书fabric-ca进行标识。
[0049]
定义3-3:trusted service的方法声明表示为bfunction=《bservicename,binput,boutput》的三元组,该方法声明包括服务名称bservicename、服务输入参数binput以及服务输出结果boutput。其中,本文将binput表示为集合binput={bi1,bi2,...,bin},任意一个bi包含了输入参数名biname、输入参数类型bitype以及输入参数值bivalue,形式化为bi=《biname,bitype,bivalue》的三元组;同时,本文将boutput表示为集合boutput={bo1,bo2,...,bon},任意一个bo包含了输出结果名称boname、输出结果类型botype以及输出结果值bovalue,形式化为bo=《boname,botype,bovalue》的三元组。此外,为了保证数据的隐私性,上述服务输入参数和服务输出结果在调用过程中将进行加密操作。
[0050]
定义3-4:trusted service的可追溯信息表示为traceinfromation=《brequest_process,pra(brequest_info)》的二元组,其中,brequest_process表示调用过程证明,通过组合服务消费者以及服务提供者的fabric-ca得到,本文将其表示为brequest_process=《bconsumer,bprovider》的二元组;pra(brequest_info)表示一种使用服务消费者私钥pra加密的调用信息(加密规则见公式(3-2)),对于任意调用信息brequest_info,本文将其表示为brequest_info=《brequest_process,bservicename,brequesttime》的三元组,brequest_process、bservicename即上文的调用过程、服务名称,brequesttime表示服务调用发起时间。
[0051]
在soa中,服务提供者对服务进行注册,当服务消费者对服务提供者注册的服务进行调用时,该服务提供者需要对目标服务进行执行和返回结果。因此,本发明还包括服务提供者代理机制,以帮助服务提供者进行服务的自动化注册和执行转发。如图3所示,服务提供者代理机制主要包括服务注册模块和服务执行模块。
[0052]
服务注册模块主要完成区块链上的服务描述信息的自动化注册。web service的执行可以被抽象为方法的调用。不考虑服务可信时,传统web service通常仅包含自身的描述信息,其定义如定义3-5所示:
[0053]
定义3-5:一个传统的web service服务描述模型可表示为webservice=《wfunction,wtextdescription,wurl》的三元组。其中,wfunction表示服务的方法声明,wtextdescription表示服务的服务文本描述,wurl表示服务的方法地址,一般使用url表示。
[0054]
定义3-6:web service的方法声明可表示为wfunction=《wservicename,winput,woutput》的三元组。其中,wservicename表示该服务的服务名称;winput表示该服务的输入参数,表示为集合winput={wi1,wi2,...,win},任意一个wi由输入参数名称winame、输入参数类型witype以及输入参数值wivalue构成,表示为wi=《winame,witype,wivalue》的三元组;woutput表示输出结果,表示为集合woutput={wo1,wo2,...,won},任意一个wo由输出结果名称woname、输出结果类型wotype和输出结果值wovalue构成,表示为wo=《woname,wotype,wovalue》的三元组。
[0055]
根据传统的服务描述模型与基于区块链的可信服务描述模型的定义,可以发现两者的服务基本描述信息存在映射关系。为了支持区块链上的可信服务调用,服务注册注册模块将传统的服务描述模型webservice转化成基于区块链的可信服务描述模型trustedservice。
[0056]
规则1:建立wservicename与bservicename的映射关系:wservicename的值对应于
bservicename的值,见图3-4规则1部分。
[0057]
规则2:建立winput与binput的映射关系:binput对应于winput;binput.biname对应于winput.winame;binput.bitype对应于winput.witype;binput.bivalue对应于pub(winput.wivalue),其通过encrypt(pub,winput.wivalue)进行计算,见图3-4规则2部分。
[0058]
规则3:建立woutput与boutput的映射关系:boutput对应于woutput;boutput.boname对应于woutput.woname;boutput.botype对应于woutput.wotype,boutput.bovalue对应于prb(pua(woutput.wovalue)),其通过encrypt(pra,encrypt(pua,woutput.wovalue))进行计算,见图3-4规则3部分。
[0059]
规则4:建立wtextdescription与btextdescription的映射关系:btextdescription对应于其中,text(x)表示对x的文本补充说明,见图3-4规则4部分。
[0060]
规则5:新增burl和bprovider:burl的值对应于服务提供者代理的服务执行模块中负责接收服务消费者消息的方法地址;bprovider的值对应于服务提供者的身份证书fabric-ca,见图3-4规则5部分。
[0061]
规则6:新增traceinfromation:traceinformation中各个组成部分置为空值,各部分的值在服务调用过程中进行补充。见图3-4规则6部分。
[0062]
在上述规则中,规则4通过符号引入了一种新的运算。它表示字符串拼接操作,运算规则如公式(2-1)所示:
[0063][0064]
其中,a和b表示任意字符串,当b是a的子串,则当a是b的子串,则否则
[0065]
服务执行模块主要负责转发服务消费者的请求给真正的web服务进行执行。如图4所示,本文的服务执行模块在进行服务执行前需要完成前期工作(图4(a)):将服务消费者发送的服务输入参数binput解密,得到winput;当服务输入参数获取完成之后,服务执行模块将对真正的web服务进行转发调用,使用该数据作为输入让真正的服务执行并返回结果(图4(b));在服务执行后需要完成后继工作:构造可信凭证proof_call,并注册到区块链的历史数据库中,进行持久化(图4(c))。
[0066]
因此引入定义3-7表示可信凭证:
[0067]
定义3-7:一个可信调用过程的可信凭证proof_call表示为proof_call=《request,pua(result)》,其描述了从服务消费者开始调用服务,到服务提供者接收并完成服务的一整个过程,其中,request表示服务消费者调用参数模型,具体模型见定义3-9;pua(result)表示经服务消费者的公钥pua加密的服务输出结果,具体定义见定义3-8。
[0068]
定义3-8:服务执行输出结果result可表示为result={r1,r2,....,rn},其中,任意一个输出结果r由三元组r=《rname,rtype,rdata》表示,rname表示结果名称,rtype表示结果类型,rdata表示结果数据。
[0069]
从图4可以看出,本文的服务执行模块在进行服务执行前需要完成前期工作:将服
务消费者发送的服务调用参数模型request(具体见定义3-9)中的pub(input_info)(即,pub(binput))解密得到input_info(即,winput);在服务执行完成后需要完成后继工作:将可信凭证proof_call注册到区块链的历史数据库中。本发明使用算法3-1对此进行描述。
[0070]
encrypt(pum,x)=pum(x)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(3-1)
[0071]
encrypt(prm,x)=prm(x)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(3-2)
[0072][0073][0074]
公式(3-1)表示使用用户m的公钥pum对信息x进行加密,得到加密信息pum(x)。公式(3-2)表示使用用户m的私钥prm对信息x进行加密,得到加密信息prm(x)。公式(3-3)表示被加密信息prm(x)仅能被其对应公钥pum进行解密,非对应公钥pu
n≠m
无法解密被公钥加密的数据。公式(3-4)表示被加密值pum(x)仅能被其对应私钥prm进行解密,非对应私钥pr
n≠m
无法解密。假设存在映射关系b=map(a),若b=map(a)且a=map(b),则该映射关系存在对称性。因此,易证:pu-ca与public_key存在映射关系。即:
[0075]
public_key=map(pu-ca)∧pu-ca=map(public_key)
ꢀꢀꢀꢀꢀꢀꢀ
公式(3-5)
[0076]
算法3-1的输入是服务消费者发送的服务调用参数模型request,输出是可信凭证proof_call。在该算法中,方法issuccess(pu
a'
,pra(request_info))判断通过调用过程得到的公钥pu
a'
能否成功解密pra(request_info),excute(servicename,input_info)将input_info转发给真正的服务servicename进行执行,remote(consumer,prb_pua_result)将加密结果prb_pua_result返回给服务消费者consumer。具体算法流程如下:
[0077]
步骤1(line 1-4):首先获取调用过程中服务消费者身份证书,进而根据公式(3-5)获取服务消费者公钥pua';接着判断pua'能够成功完成request.pra(request_info)的解密,如果不行,认为服务消费者使用了错误的request,算法结束,否则执行步骤2。
[0078]
步骤2(line5-7):首先根据公式(3-3)使用pua'解密request.pra(request_info);接着根据公式(3-4)使用服务提供者私钥prb解密request.pub(input_info);最后通过request_info.servicename定位服务并传入input_info进行执行,获得结果result。
[0079]
步骤3(line 8-15):首先遍历结果result,先根据公式(3-1)使用pua'加密结果ri并将其添加到pua_result,接着遍历加密结果pua_result,根据公式(3-2)使用服务提供者的私钥prb加密pua_ri并将其添加到prb_pua_result;最后通过远程过程调用将prb_pua_result发送给服务消费者的同时完成可信凭证proof_call的构造。
[0080]
可以注意到,该算法对result进行了两次加密,原因在于只有一次加密的pua(result)在传输给服务消费者后,不诚实的服务消费者可能会对此进行篡改,生成pua(result)',此时服务消费者可以诬陷服务提供者提供了错的服务执行结果,而明明提供了正确结果的服务提供者确无法自证,导致争端解决时无法正确裁决;而当使用prb(pua(result))进行传输后,由于服务消费者没有服务提供者的私钥prb,因此当结果不一致时,可以完全认为是服务提供者的过错。
[0081]
在soa中,服务消费者可以发现服务并对选定的服务发起调用。本发明还包括服务
消费者代理机制,以帮助服务消费者进行服务的查找和调用。如图5所示,服务请求者代理机制主要包括服务发现模块和服务调用模块。
[0082]
服务发现模块主要负责根据服务消费者的功能性服务需求完成对目标服务的查找。该模块的实现基于区块链的查询功能。
[0083]
服务调用模块主要完成两种过程:一是构造服务调用参数模型并完成可信服务调用;二是接收并解析服务可信执行的输出结果。
[0084]
本文使用定义3-9对调用参数模型进行描述:
[0085]
定义3-9:一个服务调用参数包含一个调用过程说明、使用服务消费者的私钥加密的调用信息和一至多个的服务输入参数,表示为request=《request_process,pra(request_info),pub(input_info)》的三元组,其中request_process表示调用过程说明,其具体含义见定义3-10;request_info表示调用信息,它是调用过程的补充说明,pra(request_info)表示一种使用服务消费者私钥pra加密request_info后的调用信息,request_info具体含义见定义3-11;input_info表示服务执行输入参数,pub(input_info)表示一种使用服务提供者公钥pub加密input_info后的服务执行输入参数,input_info具体含义见定义3-12。
[0086]
定义3-10:request_process=《consumer,provider》表示一次可信服务调用的调用过程,其中,consumer表示服务消费者身份信息,provider表示服务提供者身份信息,两者均使用身份证书fabric-ca表示。
[0087]
定义3-11:request_info=《request_process,servicename,requesttime》表示一次可信服务调用的调用信息,其中,request_process表示该次服务调用的调用过程说明,servicename表示服务名称,requesttime表示服务消费者发起服务调用的开始时间。
[0088]
定义3-12:input_info={i1,i2,...,in}表示一次可信服务调用的服务输入参数集合,其中,任意一个i表示为i=《iname,itype,ivalue》,iname表示输入参数名称,itype表示输入参数类型,ivalue表示输入参数值。
[0089]
基于定义3-9~定义3-12,服务调用的过程描述如下:
[0090]
(1)服务消费者构造出服务调用的调用参数模型;
[0091]
(2)根据服务发现获取的服务描述模型trustedservice,发送本次服务调用。本文使用表达式remote(burl,request)表示使用rpc完成将调用参数发送到服务提供者负责接收请求的方法地址burl。
[0092]
(3)等待接收服务执行完成后被加密的服务输出结果集,解密并获取输出结果。
[0093]
基于所构造的调用参数模型,服务调用模块算法如算法3-2所示。其输入包含四项:目标可信服务描述模型trustedservice(从服务发现模块处得到)、服务消费者的私钥pra、服务消费者身份证书consumer以及服务消费者的输入参数winput。在该算法中,方法getcurrenttime()获取调用发起时间,match(binput,request)判断请求参数request与可信服务要求的输入binput是否匹配。具体流程如下:
[0094]
步骤1(line 1-4):首先基于公式(3-5)从服务提供者身份证书处获取服务提供者公钥pub;接着遍历winput,使用pub基于公式(3-1)加密wii,并将加密值添加到input_info。
[0095]
步骤2(line 5-11):按照定义3-9进行request的构造,包括构造服务调用过程
request_process和调用信息request_info。首先完成request.request_process的构造,接着获取服务名称、服务发起时间,完成request_info的构造,使用服务消费者私钥pra基于公式(3-1)加密,加密值赋值给request.pra(request_info),最后将input_info赋值给request.pub(input_info)。
[0096]
步骤3(line 12-15):判断request和binput是否匹配。不匹配则流程结束;匹配则将调用参数通过rpc发送到服务执行模块地址burl,进行服务调用。
[0097]
本发明的服务可信流程使用pu表示公钥public_key,pua表示服务提供者的公钥,pub表示服务消费者的公钥;pr表示私钥private_key,pra表示服务提供者的私钥,prb表示服务消费者的私钥。该过程的详细工作流程如图6所示:
[0098]
步骤1[encrypt(pub,input_info)]:服务消费者a提供输入参数input_info后,服务消费者代理首先通过服务匹配到的目标可信服务描述trustedservice的服务提供者b的身份证书bprovider,基于公式(3-5)获得服务提供者b的公钥pub,接着使用pub对input_info进行加密,得到加密值pub(input_info)。
[0099]
步骤2[encrypt(pra,request_info)并构造request]:对input_info加密后,服务消费者代理以此为基础,进一步构造服务调用请求request。request包括三个部分,第一部分是服务的调用过程request_process,第二部分是服务消费者a使用pra基于公式(3-2)加密调用信息request_info得到加密值pra(request_info),最后一个部分就是通过步骤1中得到的加密值pub(input_info)。
[0100]
步骤3[发送request]:服务消费者代理根据服务发现时匹配到的服务,得到服务提供者代理中负责接收服务调用请求的方法地址burl,接着通过rpc发送request。
[0101]
步骤4[decrypt(pua,pra(request_info))并定位服务]:服务提供者代理首先通过调用过程中服务消费者a的身份证书coummer,基于公式(3-5)得到服务消费者公钥pua,接着通过pua解密request中的pra(request_info)部分,得到request_info,最后通过request_info中的服务servicename定位请求的真正服务。
[0102]
步骤5[decrypt(prb,pub(input_info))]:服务提供者代理通过自身的私钥prb基于公式(3-4)解密pub(input_info),得到输入参数input_info。
[0103]
步骤6[执行服务并encrypt(pua,result)]:服务提供者b将步骤4得到的input_info传入步骤4中定位的真正服务中,服务执行完成后得到对应的结果result,接着服务提供者代理通过pua基于公式(3-1)加密result,得到加密值pua(result)。
[0104]
步骤7[encrypt(prb,pua(result))并返回prb(pua(result))]:服务提供者b使用prb对步骤6中得到的加密值pua(result)基于公式(3-2)进一步加密,得到加密值prb(pua(result)),并将其通过rpc返回给服务消费者a。
[0105]
步骤8[构造proof_call]:为了保证服务的可追溯性,服务提供者b在将result返回给服务消费者a的同时,需要构造服务可信凭证proof_call。proof_call由两个部分组成,一部分是服务消费者发送的request,另一部分是通过步骤6得到的结果加密值pua(result)。
[0106]
步骤9[发布proof_call]:服务提供者b以proof_call作为合约的参数,触发可信凭证注册合约,使得proof_call以交易的格式发布到链上。
[0107]
步骤10[争议解决机制]:当服务提供者和服务消费者对调用过程或者输出结果产
生争议纠纷时(比如服务消费者不信任服务提供者返回的输出结果),纠纷提出者将触发裁决合约,合约将对该纠纷进行裁决。其中合约会验证验证决策发起者的身份fabric-ca,保证服务提供者和服务消费者仅仅可通过与双方相关的可信凭证对其相关调用过程进行裁决,无权干涉其他节点的调用过程和可信凭证。
[0108]
本发明中,假设服务提供者或服务消费者由于自身利益,在服务提供过程中试图通过执行恶意活动来欺骗对方,即服务提供者可能提供虚假服务,而服务消费者则试图拒绝获得正确的服务。然而,他们中的任何一个人都不会以牺牲自己的利益为代价来执行不合理的异常行为,例如在服务消费者方面接受不正确的服务等行为。
[0109]
因此当服务消费者a和服务提供者b产生服务纠纷时,纠纷提出者可在最后一步即步骤10申请仲裁,部署在该纠纷提出者上的裁决智能合约将被触发执行,对涉及到的调用过程进行裁决。上述过程中,裁决智能合约上的争端解决机制算法实现如算法3-3所示。其输入包括服务消费者a发送的待验证的调用参数request,服务消费者a获取到的加密结果prb(pua(result)),以及服务提供者b存储到链上的该调用过程相关的可信凭证proof_call;其输出为争端裁决结果,即服务消费者和服务提供者是否是恶意的决策结果。具体算法流程如下。
[0110]
步骤1(line 1-3):验证prb(pua(result))是否被篡改。首先通过待验证调用参数上的提供者身份证书request.request_process.bprovider,基于公式(3-5)得到服务提供者公钥pub',接着验证prb(pua(result))是否被伪造,通过判断pub'是否能够基于公式(3-3)成功解密prb(pua(result)),失败则认为该结果被服务消费者恶意篡改。
[0111]
步骤2(line 5-9):验证proof_call真伪。首先通过待验证可信凭证上的消费者身份证书proof_call.request.request_process.consumer,基于公式(3-5)得到服务提供者公钥pua',接着验证proof_call.request.pra(request_info)是否被伪造,通过判断pua'是否能够基于公式(3-3)成功解密proof_call.request.pra(request_info),失败则认为该可信凭证已被更改,算法结束。能成功解密则执行步骤3。
[0112]
步骤3(line 9-12):验证待验证调用参数request和可信凭证上调用参数proof_call.request是否一致。从request中获取request_process、pra(request_info)和pub(input_info),接着从链上可信凭证proof_call中获取request_process'、pra(request_info)'和pub(input_info)',最后比较request_process与request_process'是否相等,pra(request_info)与pra(request_info)'是否相等以及pub(input_info)与pub(input_info)'是否相等,一旦存在一个不相等,则认为是服务消费者a用错误的请求参数,即恶意的服务消费者试图诬陷服务提供者,因此过错方是服务消费者a。
[0113]
步骤4(line 13-20):验证待验证结果prb(pua(result))和可信凭证上结果是否是否一致。在验证之前需要确保结果未被更改,如果更改则流程结束。没有则首先通过request_process获取服务提供者b的公钥pub,接着解密加密结果集prb(pua(result))获取pua(result),从链上获取可信凭证proof_call的pua(result)',最后比较pua(result)与pua(result)'是否相等,如果不相等,可以认为服务提供者提供了恶意的服务,因此过错方是服务提供者b。算法结束。
[0114]
当服务提供者触发合约时,其中来自于服务消费者的request和prb(pua(result))的值是空值,此时只通过链上可信凭证的真假来验证服务提供者是否恶意。
[0115]
方法评估
[0116]
有效性
[0117]
本发明从公共开放web服务平台上的商业与贸易、通讯和通信、旅游出行、公用事务等6种不同类别的web service中分别选择各类别排名前15的服务(共90个)作为服务集合,针对服务集合中的每个服务,将其转换为支持可信soa的可信服务,并测试可信调用的时间开销是否满足用户使用的需求。
[0118]
表3-1本发明方法的适用范围
[0119][0120]
上述web service直接调用的时间开销在0.5s-1s之间,若可信调用的时间开销大于2.5s,则认为本发明方法不适用于该服务。实验结果如表3-1所示,本发明方法能够适用其中的79个服务,占所有服务的87.78%。本发明方法适用于大部分服务,但对于少部分输入参数或结果特别大的服务,由于在可信执行时对其进行加解密的时间开销过大,因此并不适用。
[0121]
根据本发明所有的服务模式,存在以下恶意行为,这些行为将导致服务提供者和服务消费者之间的争端冲突。其中独立恶意行为如下:e1:恶意的服务提供者在步骤9中发布错误的request';e2:恶意的服务提供者在步骤8中可信凭证中构造错误的pua(result)';e3:一个不诚实的服务消费者否认从步骤7收到了正确的prb(pua(result))';e4:一个不诚实的服务消费者试图通过错误的request'来诬陷服务提供者;e5:一个不诚实的服务消费者在步骤3发送了错误的request';存在复合恶意行为如下:e6:恶意的服务提供者提供错误的request'和错误的pua(result)';e7:恶意的消费者试图验证错误的request'和错误的pra(pua(result))'。
[0122]
本发明在服务可信调用的基础上,通过模拟17种类型(16种恶意行为和1种正确行为)的20个行为,来验证争议解决机制的有效性。当争议解决机制触发后,验证结果一方面将发送给对应的发起者,另一方面将以交易的形式记录在区块链上。验证结果如表3-2所示,可以看到,本发明方法对于其中的16个调用过程中争议的裁决符合预期目标。
[0123]
表3-2验证结果
[0124][0125][0126]
接着本发明从存储的争议结果中获取结果进行展示,并从恶意的服务提供者和恶意的服务消费者的角度讨论了以上16种典型恶意行为,从而验证了可信soa架构中争议解决机制的有效性。
[0127]
a)恶意服务提供者:恶意服务提供者发起的恶意行为共有3起,分别是e1、e2和e6。对于恶意行为e1中,在触发争议解决机制后会由于导致无法解密pra(request_info)而终止流程,并认为过错方是服务提供者,如图7所示;对于恶意行为e2中,会由于服务消费者收到的结果和服务提供者上链的结果不一致而终止流程,并认为过错方是服务提供者,如图8所示;对于恶意行为e6中,错误的request'将提前终止争议解决流程,并认为过错方是服务
提供者,从而避免了不必要的资源消耗,如图7所示。
[0128]
b)恶意的服务消费者:恶意的服务消费者发起的恶意行为共有4种,分别是e3、e4、e5和e7。在确保链上的可信凭证真实可靠的情况下,对于恶意行为e3,由于服务消费者无法伪造服务提供者的私钥prb,因此使用服务提供者的公钥pub基于公式(3-4)无法解密prb'(pua(result)),结果如图9所示;对于恶意行为e4,将伪造的request'和链上可信凭证中的request做对比,并认为服务消费者是过错方,如图10所示。对于恶意行为e5,在解析错误的request'过程中,就能够发现这是恶意的服务消费者的恶意行为,提前终止后续争议解决流程,避免不必要的资源消耗;对于恶意行为e7,由于验证请求参数request无法通过,因此将判定服务消费者是过错方,结果如图10所示。
[0129]
c)恶意的服务提供/消费者:该情形下恶意行为共有9种。其中,对于大多数的复合恶意行为,都能够通过上述方法进行正确的判断。只有当行为e6和行为e4或者e7同时发生的时候,以及e3和e2同时发生的时候,本发明方法无法进行正确决策。这是由于链上的可信凭证为假,无法提供有力证据支撑合约来获得正确决策。
[0130]
综上所述,在17种行为中,本发明的争议解决机制能够完成正确的判断其中的12种恶意行为的过错方和1种正确行为,从而验证了本发明方法的有效性。
[0131]
本发明将服务调用过程由服务消费者和服务提供者双方签名后构造为可信凭证,并将可信凭证以交易的格式记录在区块链的历史数据库中,从而保证了服务的可追溯性;当服务双方发生纠纷时,将重新获取链上的可信凭证进行验证,从而保证了服务的可信。同时,为了保证服务数据的隐私性,在构造可信凭证的过程中,方法对服务的输入参数和结果进行了加密处理。
[0132]
本发明通过重新定义服务描述模型,使得服务的调用过程能够被记录和持久化,保证服务的可信和可追溯。同时,服务提供者代理和服务消费者代理,将可信服务透明化,使得服务提供者和消费者能够以原有方式进行服务注册、服务发现、服务调用和服务执行。整个框架以区块链作为底层支持,利用其去中心化、不可篡改、可追溯的特点,实现了一个可信凭证记录器,将服务双方在框架中进行服务调用的过程进行持久化。
[0133]
与传统调用方法相比,本发明方法能够在大部分恶意行为情况下正确处理服务提供者和请求者之间的服务纠纷。
[0134]
产品的使用过程或方式。
[0135]
在soa中,服务提供者对服务进行注册,本发明主要完成的是区块链上的服务描述信息的自动化注册。
[0136]
服务发现模块主要负责根据服务消费者的功能性服务需求完成对目标服务的查找,该模块的实现基于区块链的查询功能。
[0137]
服务调用构造服务调用参数模型并完成可信服务调用;接收并解析服务可信执行的输出结果。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献