李海宁 吕少杰
(陕西理工大学数学与计算机科学学院,陕西汉中 723000)
在电子商务中经常通过第三方进行支付。第三方支付在买卖双方中起着中间人仲裁者的角色。图1 以支付宝为例来描述第三方交易流程图。
1.1 买家在网上商城选购商品并加入购入车。
1.2 买家利用个人事先和银行卡关联的支付宝进行购物车结算。
1.3 买家的支付宝账号向关联的银行卡发起扣款请求。
1.4 银联卡通知银行给卖家进行转账。
1.5 银行向第三方支付宝进行转账。
1.6 支付宝(第三方)通知卖家已经代收货款,可以发货。
1.7 卖家收到到款通知后给买家发货
1.8 买家收到货后如果对商品不满意,或认为与商家承诺有出入,可申请退货退款(是否能退货需要第三方进行裁定)。
1.9 买家确认收货后,支付宝(第三方)支付给卖家,完成交易。
依靠第三方支付可能会暴露用户的姓名、身份证号、银行卡号等个人信息,用户通过第三方泄露隐私的事件时有发生,另一方面依靠第三方进行裁决往往带有一定的主观性,交易的公平性得不到充分保障。
随着互联网技术的快速发展,越来越多的用户把自己的数据放到云服务器上,为了保护用户和数据的隐私安全,用户通常在云服务器上存放的数据的密文,可搜索加密技术也应运而生了。
依靠第三方的密文搜索系统通常包括数据拥有者、用户和云服务器三个主体,如图2 所示。基于云服务器(第三方)的密文搜索方案中,数据拥有者使用可搜索加密算法对文件进行加密,同时提取文件中的关键词加密并建立安全索引表,将文件密文和索引一起发送给云服务器。当用户需要访问包含有某个关键词的文件时,将获得的关键词的搜索凭证发送给云服务器,云服务器将搜索凭证与每个文件进行匹配,最后将匹配成功的文件返回给用户。用户解密密文即可获得所需文件。
图2 基于云服务器的的密文搜索方案
服务器在整个过程是诚实且好奇的,用户在检索前需要先向服务器支付服务费,服务器诚实地执行搜索任务并返回给用户检索结果。但是服务器返回的搜索结果有可能不正确,或者未能按照要求返回搜索结果,这时候就需要权威机构进行判定和仲裁,就算给用户退回已经支付的费用,但是整个过程也是复杂和漫长的,这对用户是不公平的,这也是传统基于第三方云服务器进行密文的缺陷,研究带有验证功能且保证各方利益的公平的的密文搜索方案显得非常必要。
智能合约可以自动执行检索、验证和支付功能[1-3],本文利用智能合约解决传统密文搜索中的验证和公平支付问题基于智能合约的密文搜索和公平支付方案包含五个角色:数据拥有者,服务器,用户和智能合约。如图3 所示,为了解决一对多搜索场景采用密钥策略的属性加密,数据拥有者可以在密文中预先设定访问策略,只有当用户的属性集满足访问策略才能得到解密密钥,从而获得通过智能合约搜索验证后的密文的原始密文。智能合约可以读写存储文件、给用户或服务器发送消息、可以在合约账户中暂存押金、在合约账户暂存服务费、在合约账户中暂存查询费,智能合约可以对搜索结果进行验证。
图3 基于智能合约的密文搜索和公平支付方案框架图
本文主要利用以太坊的去中心化、安全可靠和支持智能合约的特点,保证用户和服务器之间交易的公平性:第一,云服务器通过以太坊区块链发布一笔交易来创建智能合约,利用智能合约暂存价值,搜索用户需要提交搜索押金和进一步的搜索服务费,服务器需要提交搜索查询费,基于智能合约完成云服务器和用户之间的搜索交易,若用户在执行搜索协议支取服务费前有放弃行为智能合约将返还服务器的查询费,同时将用户的搜索押金一起发给服务器作为补偿;第二,通过智能合约自动验证服务器返回的搜索结果是否正确;第三,若服务器返回的搜索结果不正确,用户可以从智能合约取回已支付的服务费和搜索押金连同服务器的查询费一起作为补偿,维护自己的权益,从而保证检索的公平性[4-5]。
数据拥有者通过加密密钥加密数据明文,得到密文C,同时提取明文关键词集并生成索引I。然后把加密后的文件集合C连同索引I 存储在云服务器上。只有属性集和满足数据拥有者事先设定好的访问策略的用户才能从可信权威获取密钥K。
用户对包含关键词的文件进行检索,为关键词生成陷门信息,把陷门信息发送给智能合约,同时,为防止用户中途率先终止检索协议,用户向智能合约支付押金。
服务器执行检索任务,向智能合约请求陷门信息。为了防止服务器有任何欺骗检索行为。服务器需要给智能合约支付查询费,暂存于智能合约。智能合约收到查询费后返陷门给服务器,服务器根据陷门检索,将检索结果返回给智能合约。
用户、服务器与智能合约交互请求检索结果,用户将服务费暂存于智能合约。智能合约验证服务器返回的搜索结果是否正确,若正确,智能合约将查询费+服务费转移至服务器,将押金返回给用户,并将检索结果发给用户;若不正确,智能合约将查询费+服务费+押金转移给用户;若用户中途放弃检索任务,智能合约将查询费+押金转移给服务器。方案的流程图如图4 所示。
图4 基于智能合约的密文搜索和公平支付流程图
数据拥有者给云上放的是通过密文策略属性加密的密文形式。数据拥有者可以在密文中预先设定访问策略,只有当用户的属性集满足访问策略才能得到解密密钥,因此,文件的隐私性得到了保证。
方案中索引和关键词陷门也都是经过加密过的,云服务器不能从索引和陷门得到任何有用的信息。
本方案中,用户把服务费先暂存在智能合约上,服务器在执行检索任务前为了取得搜索陷门需要向智能合约支付查询费,执行检索任务后,向智能合约返回检索结果,智能合约自动验证检索结果是否正确,若正确,智能合约会把服务费和查询费一起转移到服务器的账户;若不正确,服务器得不到服务费,查询费将由智能支付给用户。同时,为了防止用户中途放弃检索任务,单方面终止检索协议,用户请求检索任务前需要给智能合约支付检索押金,如果用户诚信的完成检索流程,智能合约原额退回用户检索押金,否则,这笔检索押金将由智能合约连同查询费一起支付给云服务器。这样对服务器和用户都有一定的约束作用,从而保证了检索服务的公平性。