本发明涉及区块链与车联网领域,特别是一种车联网中基于智能合约的公平支付系统及其工作方法。
背景技术:
随着物联网的发展,越来越多的“设备”将连接到互联网,其中车辆将占很大部分,物联网的新时代正在推动传统车载自组网(vanet)向车联网(iov)发展。车载自组网是一种特殊类型的移动自组织网络,用于车辆与路侧单元(rsu)之间的通信。车辆信息广播网络作为车载自组网的重要组成部分,通过交换道路交通信息,可以提高交通的安全性和效率。
为了保证车辆信息广播网络中的安全通信,在建立信息广播系统前需要解决安全和隐私问题,同时需要调动用户回复广播的积极性,所以在建立车辆信息广播系统时存在两个需要解决的问题。首先,在理想的情况下,因为广播通常涉及用户的隐私信息,所以信息应在网络上匿名转发。然而,匿名信息不能保证信息的可靠性,从而降低了信息的可信度,所以需要解决匿名信息的可靠性问题。其次,参与用户缺乏回复广播信息的积极性。若用户不能从回复广播信息中获得收益,就会失去回复广播的动力,所以需要适当的报酬激励用户回复广播,需要解决公平支付问题。
现有的系统采用门限身份认证方案保证信息的匿名性与可靠性。在门限身份认证方案中,只有当信息被超过阈值数量的车辆确认后,接收者才接受该信息。现有方案中的阈值匿名广播,包括直接匿名认证和一次性匿名认证的方案。然而恶意用户的凭证无法被有效的撤销,导致频繁的恶意车辆攻击,降低方案的效率。现有方案中提出的一种基于分布式群模型的阈值匿名认证协议,通过增加分布式群的复杂性,实现了匿名性、可跟踪性,同时解决信息的可链接性问题。kounga等人提出一个安全架构来控制假名的产生,使用一种安全的硬件机制,并在不同的场景中改变阈值来防止女巫攻击。
同时现有的一些解决方案结合群签名保证信息的可靠性与可链接性。利用一次性身份验证和可链接群签名识别恶意用户,当发现背书信息为假时,提供了对信息生成者及其背书人进行后验跟踪的可能性。然而,跟踪阶段需要昂贵的配对操作,因此跟踪可疑信息的效率较低。采用安全的路侧单元管理来实现匿名控制,并基于属性加密的自适应多媒体数据转发协议。然而,设计采用安全的路侧单元管理来实现匿名控制,并基于属性加密的自适应多媒体数据转发协议的方案是困难的,路侧单元在传统的车载自组网中被认为是一种低安全级别的硬件,因此路侧单元要隐藏或加密数百条原始信息是不安全的。所以技术人员利用群签名来解决车载自组网中签名的可链接性,此方案中组用户间共享相同的私钥,这在隐私方案中被认为是不安全的。相关学者还提出了一种路侧单元辅助协议,使用群签名,减少恶意用户的影响,支持本地检测,对恶意节点具有高效的可跟踪性,用于抵御女巫攻击。然而,其无法在具有稀疏路侧单元的地区有效工作。然而,如果没有激励机制,其在转发消息时仍然会遇到用户激励问题。
区块链技术的出现引入了一种新的去中心化的支付模式来解决这些问题,它不受任何中央机构的控制。区块链中的智能合约是一种自动执行的合同,其条款(买卖双方之间的约定)被直接写入计算机的代码行。智能合约允许匿名方之间进行可信的交易和协议,而无需中央权威机构、法律体系的参与。因此,区块链和智能合约适合在车辆信息广播系统中执行验证操作,以实现请求者和目击者之间公平支付。
智能合约实际上是一种数字化的法律合同,该法律合同由计算机执行的程序表示。智能合约可以在不需要可信的第三方(ttp)的情况下,在参与者之间建立起信任关系。由于缺乏可编程的数字系统,直到比特币和以太坊平台的出现,智能合约才由概念第一次转为了现实。比特币的脚本语言是智能合约的第一个不完善的版本,它缺乏图灵完备性和高可伸缩性。与比特币相比,以太坊被称为可编程的区块链。以太坊不像比特币那样预先定义一组脚本内容,而是允许用户根据实际需要编写复杂的智能合约。以太坊平台允许外部用户调用合约账户的智能合约来实现特定的功能。外部账户和合约帐户都被一个20字节的十六进制字符串所标识,例如0xca35b7d915458ef540ade6068dfe2f44e8fa733c。以太坊智能合约以字节码的格式存储在以太坊区块链上,并在以太坊虚拟机(evm)中执行。一个智能合约可能包含多个函数。因此,智能合约调用者需要一个应用程序二进制接口(abi)来指定要调用合约中的哪个函数以及输出的格式。在以太坊中,用户可以利用私钥控制自己的外部账户,例如将以太币汇款到另一个地址。
目前基于区块链的车辆信息广播系统方案使用区块链构建信用网络,实现了公平支付,但是,这些方案依赖信任的第三方机构来识别和追踪恶意用户,需要增加公平支付激励用户。
技术实现要素:
有鉴于此,本发明的目的是提供一种车联网中基于智能合约的公平支付系统及其工作方法,使用智能合约作为公平的仲裁端,实现目击信息的承诺与验证,保证目击端、路侧单元和请求端之间的公平支付。
本发明采用以下方案实现:一种车联网中基于智能合约的公平支付系统,包括请求端、路测单元、多个目击端和区块链;所述区块链上搭载有智能合约;所述请求端与所述路侧单元通信相连,用以将目标区域道路信息请求发送给路侧单元,所述请求端还将需要支付的报酬存放在智能合约中;所述路侧单元根据所述请求端的请求进行广播并收集目击端;所述每个目击端为所述请求端提供目标区域的目击信息,并在智能合约中完成承诺并由智能合约验证目击信息的正确性和完整性;若该目击端的目击信息为多数信息,则目击端获得信息费;否则,恶意目击端将因提供虚假消息而被惩罚。
进一步地,本发明还提供一种基于权利要求1所述的一种车联网中基于智能合约的公平支付系统的工作方法,包括以下步骤:
步骤s1:系统初始化参数,请求端将道路信息请求发送给路侧单元,同时将需要支付的报酬存放在智能合约中;
步骤s2:所述路侧单元验证请求和报酬后,为请求端广播请求并收集目击端;
步骤s3:参与的每个目击端对目击信息进行签名,将其插入到区块链上的布隆过滤器中,作为一个承诺存放在智能合约中;同时目击端存放押金在智能合约中,当恶意目击端未揭露信息或其目击信息不为多数时,恶意目击端将失去押金;
步骤s4:当所有目击端完成承诺,目击端提供目击信息与该信息的签名到智能合约中,用以验证该信息的存在;
步骤s5:根据目击信息,智能合约计算出多数信息;若目击端的目击信息为多数信息,则目击端通过智能合约获得信息费;若存在恶意目击端没有揭露承诺的信息或该目击信息不为多数信息,执行索赔阶段,恶意目击端将失去存在智能合约中的押金。
进一步地,步骤s1中所述系统初始化的具体内容为:首先初始化参数,令h={h1,…,hk}为一组哈希函数,每个哈希函数将数据映射成对应的哈希值;请求端为r、路侧单元为rsus和目击端为w,各自选择在区块链上的ecdsa公私钥对,分别用(pkr,skr)、(pkrsus,skrsus)和
进一步地,所述步骤s1的具体内容为:请求端将本次请求的服务费与信息费存放到智能合约中,并将道路信息请求发送给所述路侧单元;在请求中,请求端设置所需目击端的数量n、多数信息的阈值θ、指定时间t、请求道路交通信息的区域即目标区域、支付给路侧单元以及目击端的报酬即服务费与信息费fee,其中阈值θ为一个正整数,满足
进一步地,步骤s2中所述收集目击端的具体内容为:路侧单元在目标区域为请求端广播请求,收集目击端加入该请求中;当目击端想要加入该请求时,路侧单元验证目击端的位置;若该位置在目标区域内,则加入请求,否则不加入;当路侧单元收集了n个目击端后,目击端wi将其目击信息msgi的签名插入到智能合约的布隆过滤器中。
进一步地,所述步骤s3的具体内容为:对于i∈[1,n],目击者wi先对目击信息msgi签名获得签名
进一步地,所述步骤s4的具体内容为:
当所有目击信息插入到区块链上的布隆过滤器后,每个目击端需在时间t前提供目击信息msgi和目击信息的签名
智能合约先对签名
若ecdsa签名验证
当目击信息msgi的签名
进一步地,所述步骤s5的具体内容为:当所有目击信息被揭露,即reveal(msg)=true时,智能合约上的计算模块computemsg()被请求端调用执行;若某个路况信息的目击信息数量大于给定阈值θ,则该目击信息为多数信息;当存在两种路况信息msga或msgb,若msga为多数信息,则表示为majority(msga,msg)=true与majority(msgb,msg)=false;当目击端wi的目击信息msgi为多数信息时,其结果为majority(msgi,msg)=true,则目击端wi在支付阶段获得信息费;若目击端wi的目击信息msgi不为多数时,其结果为majority(msgi,msg)=false,则请求端在索赔阶段获得目击端wi的押金。
进一步地,所述支付阶段的具体内容为:
在支付阶段,路侧单元能够获得服务费,同时若目击信息为多数信息,则目击端能够获得信息费;在智能合约的布隆过滤器bf中插入所有目击端的签名后,则表示路侧单元已经为请求端收集了符合要求的目击端,则路侧单元能够调用智能合约函数rsufee()获得服务费;
信息费支付:对于i∈[1,n],若所有目击端wi都在时间t前揭露其承诺的目击信息msgi,则reveal(msg)=true;若目击端wi的目击信息msgi为多数信息时,即majority(msgi,msg)=true,则调用智能合约上的msgfee()函数获得价值fee的信息费并取回价值deposit的押金。
进一步地,所述索赔阶段的具体内容为:
若存在目击端wi的目击信息msgi不为多数,或部分恶意目击端wi的目击信息未揭露的情况则进入索赔阶段;
所有信息公布:当所有目击端都揭露目击信息时,若目击端wi的目击信息msgi不为多数信息,即majority(msgi,msg)=false,则恶意目击端wi失去押金作为请求端的赔偿;其他诚实的目击端通过调用智能合约上的msgfee()模块获得信息费;而对于恶意目击端,请求端调用索赔模块compensation()取得恶意目击端wi的押金deposit;
部分信息未公布:当存在恶意目击端wi从区块链上发现其承诺的目击信息不为多数时,其可能拒绝揭露目击信息msgi,即恶意目击端wi不调用智能合约上的verifymsg(·)模块,此时该目击端对应的信息为空,则该信息被标记为reveal(msgi)=false,同时目击信息未成功全部揭露reveal(msg)=false;此时,请求端调用智能合约上的compensation()模块获得恶意目击者wi的押金作为赔偿,其他诚实目击者通过调用智能合约上的msgfee()模块获得参与费fee。
与现有技术相比,本发明具有以下有益效果:
(1)本发明的信息存放在以太坊区块链的智能合约中,参与者可从智能合约获得信息与报酬。目击端将目击信息与押金存放到区块链的智能合约中,并不需要可信第三方。
(2)在本发明中,所采用的哈希函数是抗碰撞的,且ecsdsa签名是不可伪造的,因此攻击者无法篡改和伪造请求者的请求,且无法伪造目击者的信息签名。同时根据区块链的特性,攻击者无法篡改区块链上的区块,保证了智能合约的可靠性。
(3)在本发明中,请求端和目击端可以使用区块链地址,即ecsdsa公钥的哈希值作为身份标识。交易在区块链上使用地址标识参与者的身份,而请求和目击信息等信息使用公钥进行签名,所以请求和智能合约的操作都不会泄露请求端和目击端的身份信息,保护了参与者的隐私。
(4)恶意攻击者可能在参与者间发动中间人攻击,截获请求端的请求,并修改请求的内容,如报酬与请求目的地。但在本发明中,请求被使用请求断的私钥签名,由于ecdsa的签名不可伪造,攻击者无法篡改请求断的信息,所以中间人攻击无法成功。
附图说明
图1为本发明实施例的系统框图。
图2为本发明实施例的工作方法流程图。
图3为本发明实施例的commitmsg(·)模块代码图。
图4为本发明实施例的verifymsg(·)模块代码图。
图5为本发明实施例的computemsg()模块代码图。
图6为本发明实施例的rsufee()模块代码图。
图7为本发明实施例的msgfee()模块代码图。
图8为本发明实施例的compensation()模块代码图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
如图1所示,本实施例提供一种车联网中基于智能合约的公平支付系统,包括请求端、路测单元、多个目击端和区块链;所述区块链上搭载有智能合约;所述请求端与所述路侧单元通信相连,用以将目标区域道路信息请求发送给路侧单元,所述请求端还将需要支付的报酬存放在智能合约中;所述路侧单元根据所述请求端的请求进行广播并收集目击端;所述每个目击端为所述请求端提供目标区域的目击信息,并在智能合约中完成承诺并由智能合约验证目击信息的正确性和完整性;若该目击端的目击信息为多数信息,则目击端获得信息费;否则,恶意目击端将因提供虚假消息而被惩罚。
较佳的,如图2所示,本实施例还提供一种基于车联网中基于智能合约的公平支付系统的工作方法,包括以下步骤:
步骤s1:系统初始化参数,请求端将道路信息请求发送给路侧单元,同时将需要支付的报酬存放在智能合约中;
步骤s2:所述路侧单元验证请求和报酬后,为请求端广播请求并收集目击端;
步骤s3:参与的每个目击端对目击信息进行签名,将其插入到区块链上的布隆过滤器中,作为一个承诺存放在智能合约中;同时目击端存放押金在智能合约中,当恶意目击端未揭露信息或其目击信息不为多数时,恶意目击端将失去押金;
步骤s4:当所有目击端完成承诺,目击端提供目击信息与该信息的签名到智能合约中,用以验证该信息的存在;
步骤s5:根据目击信息,智能合约计算出多数信息;若目击端的目击信息为多数信息,则目击端通过智能合约获得信息费;若存在恶意目击端没有揭露承诺的信息或该目击信息不为多数信息,执行索赔阶段,恶意目击端将失去存在智能合约中的押金。
在本实施例中,步骤s1中所述系统初始化的具体内容为:首先初始化参数,令h={h1,…,hk}为一组哈希函数,每个哈希函数将数据映射成对应的哈希值;请求端为r、路侧单元为rsus和目击端为w,各自选择在区块链上的ecdsa公私钥对,分别用(pkr,skr)、(pkrsus,skrsus)和
在本实施例中,所述步骤s1的具体内容为:请求端将本次请求的服务费与信息费存放到智能合约中,并将道路信息请求发送给所述路侧单元;在请求中,请求端设置所需目击端的数量n、多数信息的阈值θ、指定时间t、请求道路交通信息的区域即目标区域、支付给路侧单元以及目击端的报酬即服务费与信息费fee,其中阈值θ为一个正整数,满足
在本实施例中,步骤s2中所述收集目击端的具体内容为:路侧单元在目标区域为请求端广播请求,收集目击端加入该请求中;当目击端想要加入该请求时,路侧单元验证目击端的位置;当路侧单元收集了n个目击端后,目击端wi将其目击信息msgi(如目击信息msga)的签名插入到智能合约的布隆过滤器中。
在本实施例中,所述步骤s3的具体内容为:由于相同的信息具有相同的哈希值,若恶意目击者wi发现某个信息已被包含到布隆过滤器中,恶意目击者wi直接将该信息进行承诺,所以目击者需先对目击信息进行签名,再将其插入到智能合约的布隆过滤器中。对于i∈[1,n],目击者wi先对目击信息msgi签名获得签名sigwi([txfinei]);在获得签名后,目击端wi调用智能合约中的commitmsg(·)模块将签名插入到智能合约中的布隆过滤器bf中,保存签名的目击信息msgi,用以使得其他目击端无法获得msgi;在目击信息msgi存放在区块链上的时候,目击端wi需同时存放一笔押金deposit在智能合约中,若该目击端的目击信息不为多数信息将失去押金;令deposit≥n×fee,用以使得恶意目击端wj对请求者有足够的赔偿;当目击端将押金存放到智能合约中,则目击端才完成对其目击信息的承诺;若恶意目击端未揭露目击信息或目击信息不为多数信息时,则请求端能够在索赔阶段获得补偿。
在本实施例中,所述步骤s4的具体内容为:
当所有目击信息插入到区块链上的布隆过滤器后,每个目击端需在时间t前提供目击信息msgi和目击信息的签名
智能合约先对签名
若ecdsa签名验证
当目击信息msgi的签名
在本实施例中,所述步骤s5的具体内容为:当所有目击信息被揭露,即reveal(msg)=true时,智能合约上的计算模块computemsg()被请求端调用执行;若某个路况信息的目击信息数量大于给定阈值θ,则该目击信息为多数信息;当存在两种路况信息msga或msgb,若msga为多数信息,则表示为majority(msga,msg)=true与majority(msgb,msg)=false;当目击端wi的目击信息msgi为多数信息时,其结果为majority(msgi,msg)=true,则目击端wi在支付阶段获得信息费;若目击端wi的目击信息msgi不为多数时,其结果为majority(msgi,msg)=false,则请求端在索赔阶段获得目击端wi的押金。
在本实施例中,所述支付阶段的具体内容为:
在支付阶段,路侧单元能够获得服务费,同时若目击信息为多数信息,则目击端能够获得信息费;在智能合约的布隆过滤器bf中插入所有目击端的签名后,则表示路侧单元已经为请求端收集了符合要求的目击端,则路侧单元能够调用智能合约函数rsufee()获得服务费;
信息费支付:对于i∈[1,n],若所有目击端wi都在时间t前揭露其承诺的目击信息msgi,则reveal(msg)=true;若目击端wi的目击信息msgi为多数信息时,即majority(msgi,msg)=true,则调用智能合约上的msgfee()模块获得价值fee的信息费并取回价值deposit的押金。
在本实施例中,所述索赔阶段的具体内容为:
若存在目击端wi的目击信息msgi不为多数,或部分恶意目击端wi的目击信息未揭露的情况则进入索赔阶段;
所有信息公布:当所有目击端都揭露目击信息时,若目击端wi的目击信息msgi不为多数信息,即majority(msgi,msg)=false,则恶意目击端wi失去押金作为请求端的赔偿;其他诚实的目击端通过调用智能合约上的msgfee()模块获得信息费;而对于恶意目击端,请求端调用索赔模块compensation()取得恶意目击端wi的押金deposit;
部分信息未公布:当存在恶意目击端wi从区块链上发现其承诺的目击信息不为多数时,其可能拒绝揭露目击信息msgi,即恶意目击端wi不调用智能合约上的verifymsg(·)模块,此时该目击端对应的信息为空,则该信息被标记为reveal(msgi)=false,同时目击信息未成功全部揭露reveal(msg)=false;此时,请求端调用智能合约上的模块compensation()获得恶意目击者wi的押金作为赔偿,其他诚实目击者通过调用智能合约上的msgfee()模块获得参与费fee。
在本实施例中,表1为本实施例中变量释义。
在本实施例中,
(1)路侧单元(rsus)
路侧单元为道路上通信范围内的车辆提供相互通信的功能。路侧单元为请求端的目的地广播请求,并收集目击端,参与到智能合约中,通过为参与端提供通信功能赚取服务费用。
(2)请求端(r)
请求者是愿意支付报酬获取道路交通信息的车辆。请求者向路侧单元发送请求,当请求者收到目标区域的道路交通信息后,向路侧单元支付服务费,并向目击者支付信息费。
(3)目击端(w)
目击端是在请求目标区域内行驶的车辆。目击端向请求者提供目击信息,若该目击端的目击信息为多数信息,则目击端获得信息费。否则,恶意目击端将因提供虚假消息而被惩罚。为了验证目击者提供信息的真实性,本实施例需要一组目击者。
(4)区块链和智能合约(blockchainandsmartcontract)
区块链利用智能合约来参与端的目击信息,从而智能合约可以验证目击信息的正确性和完整性。请求端在区块链上部署了多种智能合约来执行目击信息承诺、多数信息的计算和公平支付相关功能。
较佳的,如图3至图8所示,本实施例应用的合约中commitmsg(·)模块是目击端wi调用,目击端将其目击信息进行签名,然后将其插入到智能合约的布隆过滤器中。verifymsg(·)模块先对签名
较佳的,本实施例解决了以下内容:
(1)本实施例解决了请求端与目击端、路侧单元之间的在线公平支付问题:如果请求端先支付信息费后获取服务,目击者可能根据其他目击者的信息而不返回正确的道路信息;如果请求者先获取服务后付费,则在请求者获取道路信息后,可能故意不支付信息费。本实施例提出一个基于区块链的车辆信息广播系统,该系统利用智能合约来保证请求者获得道路信息与目击端获得信息费。本实施例利用智能合约对目击信息的验证,实现了请求端与目击者之间的自动化公平支付。智能合约能诚实地执行预定义的验证机制。如果目击端的信息不为多数信息,计算合约将发现并检测到提供不为多数信息的目击端,并将信息费与目击端的研究发送给请求端。如果目击端的信息为多数信息,则请求端不能拒绝向目击端支付信息费,因为相关的费用已被公平支付合约锁定。因此,各个参与方的公平交易受到了智能合约的保障。
(2)本实施例解决的参与者的公平支付的问题:本实施例设计了一个信息承诺与验证信息的智能合约来实现用户的信息承诺,其中只有提供的信息为多数的用户才能获得信息费作为报酬,而提供的信息不会多数的目击者将失去押金作为赔偿。
(3)本实施例解决了高效的公开可验证的问题:智能合约储存目击端的目击信息,区块链执行用户的验证操作,并计算多数信息,从而实现公平支付。此过程中无需任何第三方的参与,用户只需签名验证算法与有限的哈希计算来完成目击信息验证。
(4)本实施例实现了去中心化的系统架构:为了消除中心化系统中可信第三方为了利益偏袒一方的作弊行为,本实施例设计了基于区块链技术的车辆信息广播系统来解决道路信息结果可验证问题。目击端通过将道路交通信息的签名添加到智能合约中的布隆过滤器进行承诺,使得任意一方都不能提前获得其他目击端的目击信息。并在指定时间提供承诺的信息与目击端的签名,验证该信息的签名是否已经保存在智能合约中,通过揭露的目击信息计算合约计算获得多数信息。支付合约与索赔合约对提供多数信息的目击端提供信息费,对提供少数信息的目击者进行惩罚。因此,该车辆信息广播系统的验证操作和公平支付协议不依赖任何可信第三方,从而实现了完全去中心化的车辆信息广播公平支付系统。
较佳的,本实施例有以下优点:
(1)去中心化:本实施例的信息存放在以太坊区块链的智能合约中,参与者可从智能合约获得信息与报酬。目击端将目击信息与押金存放到区块链的智能合约中,并不需要可信第三方。请求端通过区块链上目击端揭露的目击信息获得相应地区的交通信息,同时支付以太币作为报酬,而目击端通过提供相应的信息获得信息费作为报酬。路侧单元在本实施例中提供广播服务,通过广播请求赚取服务费。所以本发明中的参与各方运行在一个去中心化的环境中,且本实施例的支付使用以太坊区块链,不依赖第三方实现公平支付。
(2)有偿性:本实施例中路侧单元为请求者广播道路交通请求,并通过收集符合要求的目击者获得服务费。当目击端提供的目击信息为多数信息时,目击端获得信息费作为报酬。若存在恶意目击者未揭露目击信息,则请求端获得恶意目击者的押金作为赔偿,其他目击者获得参与费。
(3)可靠性:在本实施例中,所采用的哈希函数是抗碰撞的,且ecsdsa签名是不可伪造的,因此攻击者无法篡改和伪造请求端的请求,且无法伪造目击端的信息签名。同时根据区块链的特性,攻击者无法篡改区块链上的区块,保证了智能合约的可靠性。
(4)保护隐私:在本实施例中,请求端和目击端可以使用区块链地址,即ecsdsa公钥的哈希值作为身份标识。交易在区块链上使用地址标识参与者的身份,而请求和目击信息等信息使用公钥进行签名,所以请求和智能合约的操作都不会泄露请求者和目击者的身份信息,保护了参与者的隐私。
(5)防止女巫攻击:在本实施例中,请求端发送道路请求前,请求端需将报酬存放到智能合约中,路侧单元只有在智能合约得到确认后才为请求者广播该请求。若恶意请求者发动女巫攻击伪造许多请求,路侧单元将检测每个智能合约中是否有足够的服务费与信息费,则恶意请求者需要准备大量的以太币,这对恶意请求者是巨大的负担。同时路侧单元可以检测请求者是否在同一位置发送大量请求,从而检测是否有恶意用户发起女巫攻击。
(6)防止重放攻击:在本实施例中,恶意攻击端可能通过重放一个通过窃听获得的合法请求以发动重放攻击,然而路侧单元在接受一个请求时,将检测该请求的智能合约是否已存在,同时检测该请求是否正在处理。当路侧单元检测到该请求的报酬已被花费,或检测该请求正在处理,抛弃该请求,则重放攻击无效。
(7)防止伪造攻击:在本实施例中,使用以太坊地址作为参与者的身份,以太坊使用ecdsa公钥对,请求使用请求端的私钥进行签名,由于ecdsa的签名不可伪造,攻击者无法伪造一个请求者或目击端的信息签名。
(8)中间人攻击:恶意攻击端可能在参与者间发动中间人攻击,截获请求者的请求,并修改请求的内容,如报酬与请求目的地。但在本实施例中,请求被使用请求端的私钥签名,由于ecdsa的签名不可伪造,攻击端无法篡改请求者的信息,所以中间人攻击无法成功。
较佳的,现有的系统采用门限身份认证方案与群签名保证信息的匿名性与可靠性。在门限身份认证方案中,只有当信息被超过阈值数量的车辆确认后,接收者才接受该信息。这些方案需要繁重的工作量,同时需要将对用户的激励结合到系统中。本实施例的系统利用智能合约来实现对目击信息的承诺与验证。本实施例利用智能合约对验证后的信息进行计算,获得多数信息。当目击端的目击信息为多数时,目击端通过智能合约获得信息费作为报酬。当目击端的目击信息不为多数或目击信息未被揭露,则请求端通过智能合约获得恶意目击端的押金作为赔偿。对目击信息的获取与报酬的支付,实现了路侧单元、请求端和目击端之间的自动化公平支付。请求者根据揭露的目击信息获得目标区域的道路信息,目击端与路侧单元获得相应的报酬。本实施例可以防止任何目击端在本车辆信息广播系统中存在的作弊行为,确保使用本广播系统的所有参与者都不会产生经济损失。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
1.一种车联网中基于智能合约的公平支付系统,其特征在于:包括请求端、路测单元、多个目击端和区块链;所述区块链上搭载有智能合约;所述请求端与所述路侧单元通信相连,用以将目标区域道路信息请求发送给路侧单元,所述请求端还将需要支付的报酬存放在智能合约中;所述路侧单元根据所述请求端的请求进行广播并收集目击端;所述每个目击端为所述请求端提供目标区域的目击信息,并在智能合约中完成承诺并由智能合约验证目击信息的正确性和完整性;若该目击端的目击信息为多数信息,则目击端获得信息费;否则,恶意目击端将因提供虚假消息而被惩罚。
2.一种基于权利要求1所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:包括以下步骤:
步骤s1:系统初始化参数,请求端将道路信息请求发送给路侧单元,同时将需要支付的报酬存放在智能合约中;
步骤s2:所述路侧单元验证请求和报酬后,为请求端广播请求并收集目击端;
步骤s3:参与的每个目击端对目击信息进行签名,将其插入到区块链上的布隆过滤器中,作为一个承诺存放在智能合约中;同时目击端存放押金在智能合约中,当恶意目击端未揭露信息或其目击信息不为多数时,恶意目击端将失去押金;
步骤s4:当所有目击端完成承诺,目击端提供目击信息与该信息的签名到智能合约中,用以验证该信息的存在;
步骤s5:根据目击信息,智能合约计算出多数信息;若目击端的目击信息为多数信息,则目击端通过智能合约获得信息费;若存在恶意目击端没有揭露承诺的信息或该目击信息不为多数信息,执行索赔阶段,恶意目击端将失去存在智能合约中的押金。
3.根据权利要求2所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:步骤s1中所述系统初始化的具体内容为:首先初始化参数,令h={h1,…,hk}为一组哈希函数,每个哈希函数将数据映射成对应的哈希值;请求端为r、路侧单元为rsus和目击端为w,各自选择在区块链上的ecdsa公私钥对,分别用(pkr,skr)、(pkrsus,skrsus)和
4.根据权利要求2所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:所述步骤s1的具体内容为:请求端将本次请求的服务费与信息费存放到智能合约中,并将道路信息请求发送给所述路侧单元;在请求中,请求端设置所需目击端的数量n、多数信息的阈值θ、指定时间t、请求道路交通信息的区域即目标区域、支付给路侧单元以及目击端的报酬即服务费与信息费fee,其中阈值θ为一个正整数,满足
5.根据权利要求2所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:步骤s2中所述收集目击端的具体内容为:路侧单元在目标区域为请求端广播请求,收集目击端加入该请求中,当目击端想要加入该请求时,路侧单元验证目击端的位置;若该位置在目标区域内,则加入请求,否则不加入;当路侧单元收集了n个目击端后,目击端wi将其目击信息msgi的签名插入到智能合约的布隆过滤器中。
6.根据权利要求2所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:所述步骤s3的具体内容为:对于i∈[1,n],目击者wi先对目击信息msgi签名,获得签名
7.根据权利要求5所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:所述步骤s4的具体内容为:
当所有目击信息插入到区块链上的布隆过滤器后,每个目击端需在时间t前提供目击信息msgi和目击信息的签名
智能合约先对签名
若ecdsa签名验证
当目击信息msgi的签名
8.根据权利要求2所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:所述步骤s5的具体内容为:当所有目击信息被揭露,即reveal(msg)=true时,智能合约上的计算模块computemsg()被请求端调用执行;若某个路况信息的目击信息数量大于给定阈值θ,则该目击信息为多数信息;当存在两种路况信息msga或msgb,若msga为多数信息,则表示为majority(msga,msg)=true与majority(msgb,msg)=false;当目击端wi的目击信息msgi为多数信息时,其结果为majority(msgi,msg)=true,则目击端wi在支付阶段获得信息费;若目击端wi的目击信息msgi不为多数时,其结果为majority(msgi,msg)=false,则请求端在索赔阶段获得目击端wi的押金。
9.根据权利要求8所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:所述支付阶段的具体内容为:
在支付阶段,路侧单元能够获得服务费,同时若目击信息为多数信息,则目击端能够获得信息费;在智能合约的布隆过滤器bf中插入所有目击端的签名后,则表示路侧单元已经为请求端收集了符合要求的目击端,则路侧单元能够调用智能合约rsufee()模块获得服务费;
信息费支付:对于i∈[1,n],若所有目击端wi都在时间t前揭露其承诺的目击信息msgi,则reveal(msg)=true;若目击端wi的目击信息msgi为多数信息时,即majority(msgi,msg)=true,则调用智能合约上的msgfee()函数获得价值fee的信息费并取回价值deposit的押金。
10.根据权利要求8所述的一种车联网中基于智能合约的公平支付系统的工作方法,其特征在于:所述索赔阶段的具体内容为:
若存在目击端wi的目击信息msgi不为多数,或部分恶意目击端wi的目击信息未揭露的情况则进入索赔阶段;
所有信息公布:当所有目击端都揭露目击信息时,若目击端wi的目击信息msgi不为多数信息,即majority(msgi,msg)=false,则恶意目击端wi失去押金作为请求端的赔偿;其他诚实的目击端通过调用智能合约上的msgfee()模块获得信息费;而对于恶意目击端,请求端调用索赔compensation()模块取得恶意目击端wi的押金deposit;
部分信息未公布:当存在恶意目击端wi从区块链上发现其承诺的目击信息不为多数时,其可能拒绝揭露目击信息msgi,即恶意目击端wi不调用智能合约上的verifymsg(·)模块,此时该目击端对应的信息为空,则该信息被标记为reveal(msgi)=false,同时目击信息未成功全部揭露reveal(msg)=false;此时,请求端调用智能合约上的compensation()模块获得恶意目击者wi的押金作为赔偿,其他诚实目击者通过调用智能合约上的msgfee()模块获得参与费fee。
技术总结