浙江大学学报(工学版), 2025, 59(11): 2409-2417 doi: 10.3785/j.issn.1008-973X.2025.11.020

计算机技术

基于紧凑零知识证明的海上位置共享方案

王沁雪,, 张文芳,

1. 西南交通大学 信息科学与技术学院,四川 成都 610031

2. 西南交通大学 信息安全与国家计算网格实验室,四川 成都 610031

Maritime positioning sharing scheme based on compressing zero-knowledge proof

WANG Qinxue,, ZHANG Wenfang,

1. School of Information Science and Technology, Southwest Jiaotong University, Chengdu 610031, China

2. Information Security andNational Computing Grid Laboratory, Southwest Jiaotong University, Chengdu 610031, China

通讯作者: 张文芳,女,教授. orcid.org/0000-0003-4211-0438. E-mail: wfzhang@swjtu.edu.cn

收稿日期: 2024-11-1  

基金资助: 国家自然科学基金资助项目(U2468201);四川省科技计划资助项目(2024ZHCG0001);四川省国际科技创新合作项目(2025YFHZ0161).

Received: 2024-11-1  

Fund supported: 国家自然科学基金资助项目(U2468201);四川省科技计划资助项目(2024ZHCG0001);四川省国际科技创新合作项目(2025YFHZ0161).

作者简介 About authors

王沁雪(2000—),女,硕士生,从事区块链隐私保护的研究.orcid.org/0009-0001-9197-3865.E-mail:yukikiwa@163.com , E-mail:yukikiwa@163.com

摘要

为了解决传统全球导航卫星系统在应对大气变化和故意信号干扰时定位可靠性不足的问题,构造紧凑的轻量级零知识证明算法CZKP-1t,结合区块链技术,提出海上位置数据共享方案CZKP-1t-MPS. 该方案实现了传统定位船舶与配置高精度传感器的动态定位船舶之间的位置数据共享,有效提高了海运船舶网络的整体定位精度. 利用构造的位置共享方法,可以断开位置共享双方,并断开位置数据与其请求者的链接关系,保证了位置共享过程中的强隐私保护. 与现有的海上位置共享方法相比,CZKP-1t-MPS降低了数据共享过程中约78%的计算开销,保证了船舶配备异质环境下海上位置共享的实时性.

关键词: 零知识证明 ; 区块链 ; 隐私保护 ; 位置共享 ; 海上交通系统

Abstract

A compact and lightweight zero-knowledge proof algorithm named CZKP-1t was constructed in order to address the issue of insufficient positioning reliability in traditional global navigation satellite systems (GNSS) under atmospheric variation and intentional signal interference. A maritime position data-sharing scheme called CZKP-1t-MPS was proposed by integrating with blockchain technology. This scheme enables position data sharing between conventionally positioned vessels and dynamically positioned vessels equipped with high-precision sensors, effectively enhancing the overall positioning accuracy of the maritime vessel network. The designed position-sharing method severs the connection between the two sharing parties and disassociates the position data from its requester, thereby ensuring strong privacy protection during the sharing process. CZKP-1t-MPS reduces the computational overhead by approximately 78% in the data-sharing process compared with existing maritime position-sharing methods, which guarantees real-time performance in heterogeneous maritime environment.

Keywords: zero-knowledge proof ; blockchain ; privacy-preserving ; positioning sharing ; maritime transportation system

PDF (1056KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

王沁雪, 张文芳. 基于紧凑零知识证明的海上位置共享方案. 浙江大学学报(工学版)[J], 2025, 59(11): 2409-2417 doi:10.3785/j.issn.1008-973X.2025.11.020

WANG Qinxue, ZHANG Wenfang. Maritime positioning sharing scheme based on compressing zero-knowledge proof. Journal of Zhejiang University(Engineering Science)[J], 2025, 59(11): 2409-2417 doi:10.3785/j.issn.1008-973X.2025.11.020

随着贸易全球化推进,数十亿吨货物通过海路运输,精准可靠的定位变得愈加重要. 与陆运可以依托地面基站和道路网络协同定位不同,海上导航系统的高度依赖全球导航卫星系统(global navigation satellite system, GNSS),但易受大气条件变化和人为信号干扰的影响[1-2],导致定位可靠性下降.

传感技术和物联网的发展使得动态定位船舶(dynamic-positioning vessel, DP-vessel)能够通过先进传感器和计算机控制系统[3]实现高精度定位. 在当前的海运系统中,大多数普通船舶(common vessel, C-vessel) 配备基础设备. 如何在保持DP-vessel高精度定位的同时,提升装备简陋的C-vessel的定位性能,成为亟待解决的问题.

区块链技术和物联网应用的结合为这一问题提供了思路. 物联网设备收集精确的定位和环境数据,借由区块链实现安全透明的位置数据共享和导航优化[4-5]. Song等[6]提出通过车辆区块链协同定位校正,提高定位精度. Li等[7]提出安全高效的全球定位系统定位误差演进共享框架. Song等[8]通过深度神经网络算法校正车辆的GPS位置,通过区块链的数据共享降低了同一路段上普通车辆的GPS定位误差.

在追求定位精度的同时,位置数据作为高度敏感的特殊数据,其隐私保护至关重要. Luo等[9-10]采用K匿名算法创建匿名区域,防止第三方定位特定车辆,利用区块链技术构建信任模型,以增强位置隐私保护. 申自浩等[11]实现了用户自定义的位置共享,以保护隐私. 现有针对陆上交通位置共享的研究往往忽略了数据请求的不可链接性问题,即未能实现数据与其请求者链接关系的隐匿. 目前,Gai等[12]提出基于zk-SNARKs的海运安全位置共享方案,确保数据隐私和不可链接性. zk-SNARKs在提供高级别隐私保护的同时,带来了更大的计算和通信开销,难以满足资源受限船只对实时操作的需求. 如何在保障安全性的前提下,实现配置异质的DP-vessel和C-vessel之间的公平数据共享,并最小化通信和计算成本,成为海运位置数据共享领域亟须解决的关键问题.

不同于现有方案使用zk-SNARKs实现不可链接性,本文提出新的方法,利用one-out-of-many proofs[13]断开数据与请求者的链接. one-out-of-many proofs是部分知识证明[14]的一种特殊实现,允许证明者以零知识的方式证明N个承诺中的某个打开为0. Benjamin[15]将one-out-of-many推广到了many-out-of-many. Bootle等[16-19]注重效率的提升. Aram等[19]提出分层方法,大大降低了计算开销,但通信开销增加至$O\left( {n{{\log }_2}n+M{{\log }_2}m+m} \right)$.

针对上述问题,本文给出结构紧致的轻量级零知识证明协议(compressing zero-knowledge proofs of 1-out-of-t,CZKP-1t). 提出基于该零知识证明协议的海上位置数据共享方案(maritime positioning sharing based on CZKP-1t,CZKP-1t-MPS).

1. 系统模型

基于紧凑零知识证明的海上位置数据共享系统模型如图1所示,系统实体包括边缘计算节点(edge computing nodes,ECNs)、动态定位船舶(DP-vessel)、普通船舶(C-vessel)和区块链.

图 1

图 1   CZKP-1t-MPS系统的架构

Fig.1   Architecture of CZKP-1t-MPS


1) ECNs:拥有足够的存储空间和计算能力,在其上维护区块链账本. 在ECNs上部署了智能合约,作为透明的第三方仲裁方,确保数据交易过程的正确进行.

2) DP-vessel:能够利用其丰富的船载传感器来纠正位置,生成GNSS定位误差数据.

3) C-vessel:只能通过GNSS获得位置信息,因此需要请求来自DP-Vessel的GNSS定位误差数据来更新其位置.

4)区块链:由所有ECNs共同维护,记录共享数据的相关信息.

ECNs被部署在海上的地标上,存储该地标的确切位置. 当绕过一个地标时,DP-vessel利用复杂的传感器,通过该地标的准确位置来纠正位置,生成当前的GNSS定位误差数据. DP-vessel将定位误差数据提交给部署在该地标上的ECN,该数据随后存储在该ECN上. 当C-vessel到达同一位置时,首先支付酬金,生成相应的支付承诺. 然后请求GNSS定位误差数据. 最后,DP-vessel获取对应的数据酬金.

本文研究的关键难点在于如何断开位置数据共享双方的、位置数据与其持有者之间的链接关系. 受到UTXO模型区块链中混币思想和Bao等[20]提出的支票池构造的启发,建立数据承诺集和支付承诺池集,结合提出的特殊零知识证明协议CZKP-1t来解决上述问题. 其中,数据承诺集包括交易过程中DP-vessel上传数据产生的所有数据承诺,支付承诺集包括由C-vessel购买数据产生的所有支付承诺.

2. 紧致的零知识证明协议

构造用于海上位置数据共享方案中的高效零知识证明协议.

在one-out-of-many proofs中,证明者和验证者持有承诺密钥$g、h \in {G}$N个承诺${c_0},\cdots ,{c_{N - 1}}$,其中${c_i} = {\text{Co}}{{\text{m}}_{{\text{ck}}}}({v_i},{r_i}) = {g^{{r_i}}}{h^{{v_i}}}$. 证明者需要证明其中一个承诺打开为0,即有${c_l} = {\text{Co}}{{\text{m}}_{{\text{ck}}}}(0,r) = {g^r}{h^0}$,但不暴露是哪个承诺.

当构造证明时,需要隐藏的关键信息(承诺序号l)被编码为n位二进制数,即$l = {l_1}{l_2}\cdots {l_n}$. Groth等[13]构造n个承诺来证明每一位${l_i} \in \{ 0,1\} $,以确保${c_l}$N个承诺中的一个. 本文基于聚合承诺对证明过程进行压缩,重构证明和验证过程,提出紧凑的零知识证明协议CZKP-1t. 协议定义为$ {L_{{\text{CZKP - 1t}}}} = \{ (l,r)|{c_0},\cdots ,{c_{N - 1}} \in C \wedge l \in [0,N - 1] \wedge {c_l} = $$ {g^r}{h^0}\} $.

聚合承诺描述为$ C: = {\text{Co}}{{\text{m}}_{{\text{ck}}}}({x_1},\cdots ,{x_n};r) = {g^r}{h^{ \sum\nolimits_{i = 1}^n {{x_i}} }} $,其中ck表示承诺密钥 $g、h$.

接下来对协议进行具体描述.

1)承诺. 证明者选取随机数${r_{\text{A}}},{r_{\text{B}}}{\text{,}}{r_{\text{C}}},{a_1},\cdots ,{a_n},$${\rho _1},\cdots , {\rho _n} \in {{Z}_q}$(其中Zq为整数模q的环). 计算承诺

证明者将承诺$\{ {{{C}}_{{{\mathrm{L}}}}},{{{C}}_{{{\mathrm{A}}}}},{{{C}}_{{{\mathrm{B}}}}},{{{C}}_{{{\mathrm{C}}}}},{{{C}}_{{k}}}\} $发送给验证者.

2)挑战. 验证者返回挑战$x \leftarrow {\{ 0,1\} ^\lambda }$.

3)响应. 证明者根据挑战生成响应:

其中,$j = 0,\cdots ,n - 1$. 证明者将响应$\{ \{ {f_j}\} _{j = 0}^{j = n - 1}, {z_{\text{A}}},{z_{\text{B}}},z\} $发送给验证者.

4)验证. 验证者验证以下3个等式是否成立.

$ C_{\text{L}}^x{C_{\text{A}}} = {\text{Co}}{{\text{m}}_{{\text{ck}}}}({f_1},\cdots {f_n};{z_{\text{A}}}). $

$ C_{\text{B}}^x{C_{\text{C}}} = {\text{Co}}{{\text{m}}_{{\text{ck}}}}({f_1}(x - {f_1}),\cdots, {f_n}(x - {f_n});{z_{\text{B}}}). $

$ \prod\nolimits_{i = 0}^{N - 1} {{{{c}}_i}^{\prod\nolimits_{j = 1}^n {{f_{j,{i_j}}}} } \cdot \prod\nolimits_{k = 0}^{n - 1} {{\text{C}}_k^{ - {x^k}}} } = {\text{Co}}{{\text{m}}_{{\text{ck}}}}(0;z). $

若成立,则接受,即零知识证明通过;反之不通过. 式中:$ {f_{j,0}} = x - {f_j} = (1 - {l_j})x - {a_j} = {\delta _{0{l_j}}}x - {a_j} $$ {f_{j,1}} = $$ {f_j} = {l_j}x+{a_j} = {\delta _{1{l_j}}}x+{a_j} $,其中${\delta _{il}}$为克罗内克函数,当$i = l$${\delta _{il}} = 1$, 当$i \ne l$${\delta _{il}} = 0$.

3. 安全的高效海上位置共享方案

3.1. 相关数据集

定义6种类型的数据集. 所有的数据集都可以从当前的区块链账本中获得.

${\text{SNSet}}({\mathrm{pk}})$ :包含用户pk的所有交易的序列号,序列号只能使用一次,唯一标识一笔交易.

TAGSet:包含所有的支付承诺TAG,支付承诺和TAG唯一绑定,用于限制每个支付承诺只能使用一次. 其中,$\text { TAG }:=k^{-r},\; k \in G,\; r \in {Z}_q^*$ .

${\text{EDSET}}$:包含所有位置数据的序列号${\mathrm{ED}}_j$.

数据承诺集:包含所有的数据承诺$\delta _i^{{\mathrm{ED}}_j}$.

数据承诺池:包含来自数据承诺集的t−1个承诺和用户构建的1个承诺,表示为$\{ {\delta ^{{\mathrm{ED}}_0}},\cdots , {\delta ^{{\mathrm{ED}}_l}},\cdots ,{\delta ^{{\mathrm{ED}}_{t - 1}}}\} $.

支付承诺集:包含所有的支付承诺${C_R}$.

支付承诺池:包含来自支付承诺集的t个承诺,其中1个为用户持有,t−1个从支付承诺集中随机选择.

3.2. 方案构造

CZKP-1t-MPS由初始化、位置数据上传、位置数据购买、位置数据获取、支付承诺混淆和取款6个算法组成.

3.2.1. 初始化

ECNs和用户运行${\text{CPK}}{\text{.Setup}}({1^\lambda })$${\text{HE}}{\text{.Setup}}({1^\lambda })$${\text{NIZK}}{\text{.Setup}}({1^\lambda })$,得到公共参数列表${\text{pp}}: = ({\text{p}}{{\text{p}}_{{\text{cpk}}}},{\text{p}}{{\text{p}}_{{\text{he}}}},{\text{p}}{{\text{p}}_{{\text{nizk}}}})$. 其中,CPK算法为联合公钥系统[21],本文使用Twisted ElGamal加密和Schnorr 2种公钥体制组成的联合公钥系统,该系统的安全性在文献[22]中已证明. HE算法为Hash ElGamal[23],能够实现快速且有效的解密,用于加密不需要支持同态的共享内容. 用户运行${\text{CPK}}{\text{.KeyGen}} ({\text{p}}{{\text{p}}_{{\text{ise}}}})$,生成用于签名交易和加密关键信息的密钥对$({\mathrm{pk}},{\mathrm{sk}})$,并生成余额承诺${C_{{v_{{U}}}}} \leftarrow {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}{\text{,}}{v_{{\text{init}}}};r)$,其中$r \in {Z}_q$. 选择初始序列号${\mathrm{sn}} \in {\{ 0,1\} ^n}$,则用户的初始化账户余额为$ {\text{zk\_balance}}: = ({C_{{v_{{U}}}}},{\mathrm{pk}},{v_{{\text{init}}}},{\mathrm{sn}},r) $. 用户生成零知识证明${\pi _{{\text{create}}}}$,保证余额承诺的正确性. 用户生成签名$\sigma \leftarrow {\text{CPK}}{\text{.Sign}}({\mathrm{sk}},({\mathrm{pk}},{\mathrm{sn}},{C_{{v_{{U}}}}}, {\pi _{{\text{create}}}}))$和交易${\text{Tran}}{{\text{s}}_{{\text{Create}}}}: = \{ {\mathrm{pk}},{\mathrm{sn}},{C_{{v_{{U}}}}},{\pi _{{\text{create}}}},\sigma \} $.

如下所示的智能合约被部署到ECNs上. ECNs 验证${\pi _{{\text{create}}}}$$\sigma $有效后,该用户可以参与后续位置的共享过程.

PublishData
1)将${\text{Tran}}{{\text{s}}_{{\text{PubData}}}}$解析为
$({\mathrm{pk}}_R,{\mathrm{ED}}_j,\;\delta _i^{{\mathrm{ED}}_j},\;{v_j},\;{\pi _{{\text{pubdata}}}},\;{\sigma _{{R}}})$.
2)若${\mathrm{ED}}_j$${\text{EDSET}}$中, 则返回0.
3)验证${\pi _{{\text{pubdata}}}}$${\sigma _R}$是否有效. 若有效, 将${\mathrm{ED}}_j$存入EDSET, 将$\delta _i^{{\mathrm{ED}}_j}$存入, 否则返回0.
PurchaseData
1)将$ {\text{Tran}}{{\text{s}}_{{\text{PurData}}}} $解析为
$ {\mathrm{pk}}_{{U}},{\mathrm{sn}},{C_v},C_{{v_{{U}}}}^*,{\mathrm{au}}{{\mathrm{x}}_R},{\pi _{{\text{purdata}}}},{\sigma _{{U}}}) $
2)若${\mathrm{sn}} \in {\text{SNSet}}({\mathrm{pk}}_{{U}})$, 则返回0.
3)验证$ {\pi _{{\text{purdata}}}} $$ {\sigma _{{U}}} $是否有效. 若有效, 则将sn存入${\text{SNSet}}({\mathrm{pk}}_{{U}})$, ${C_v}$存入${\text{PaymentSet}}$, 否则返回0.
FetchData
1)将${\text{Tran}}{{\text{s}}_{{\text{FetData}}}}$解析为$({\mathrm{pk}}_{{U}},{\pi _{{\text{fetdata}}}},{\sigma _{{U}}})$.
2)验证${\pi _{{\text{fetdata}}}}$${\sigma _{{U}}}$是否有效.若有效, 则将位置数据${D_j}$返回给${\mathrm{pk}}_{{U}}$, 否则返回0.
RefreshPayment
1)将${\text{Tran}}{{\text{s}}_{{\text{Refresh}}}}$解析为$ ({\mathrm{pk}}_{{R}},{\mathrm{tag}},C_{{R}}^{\text{*}},{\pi _{{\text{refresh}}}},{\sigma _{{R}}}) $.
2)若${\mathrm{tag}} \in {\text{TAGSet}}$, 则返回0.
3)验证${\pi _{{\text{refresh}}}}$$ {\sigma _{{R}}} $是否有效. 若有效, 则返回1, 否则返回0.
DepositPayment
1)解析$ {\text{Tran}}{{\text{s}}_{{\text{Deposit}}}} $$ ({\mathrm{pk}}_{{R}},{\mathrm{sn}},C_{{v_{{R}}}}^*,{\pi _{{\text{deposit}}}},{\sigma _{{R}}}) $.
2)若${\mathrm{sn}} \in {\text{SNSet}}({\mathrm{pk}}_{{R}})$, 则返回0.
3)验证$ {\pi _{{\text{deposit}}}} $$ {\sigma _{{R}}} $是否有效. 若有效, 则返回1, 并将sn存入${\text{SNSet}}({\mathrm{pk}}_{{R}})$, 否则返回0.

3.2.2. 位置数据上传

动态定位船舶${{V}}_{{R}}^{{{{\mathrm{DP}}}}}$将GNSS错误数据${D_j}$发布到网络上,并生成该数据的唯一序列号${\mathrm{ED}}_j$. ${{V}}_{{R}}^{{\text{DP}}}$为该数据生成数据承诺$\delta _i^{{\mathrm{ED}}_j}$,指明数据所有者${\mathrm{pk}}_{{R}}$和数据价格${v_j}$. 具体如算法1所示.

算法1 PublishData  ●输入:  - 公共参数pp  - 数据持有者的公钥${\mathrm{pk}}_{{R}}$  ●输出:  - 数据承诺$\delta _i^{{\mathrm{ED}}_{{j}}}$  - 交易$ {\text{Tran}}{{\text{s}}_{{\text{Publish}}}} $  1) 计算 $\delta _i^{{\mathrm{ED}}_j} \leftarrow {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_{{R}},{v_j};{r_1})$.  2) 生成零知识证明 ${\pi _{{\text{pubdate}}}} \leftarrow {\text{NIZK}}\{ ({r_1},{v_j})|\delta _i^{{\mathrm{E}}{{\mathrm{D}}_j}} = {\text{CPK}}{\text{.Enc}}({\mathrm{p}}{{\mathrm{k}}_{{R}}},{v_j};{r_1})\} $  3) 计算签名${\sigma _{\text{R}}} \leftarrow {\text{CPK}}{\text{.Sign}}({\mathrm{sk}}_{{R}},({\mathrm{pk}}_{{R}},{\pi _{{\text{pubdata}}}}))$.  4) 生成交易$ {\text{Tran}}{{\text{s}}_{{\text{PubData}}}}: = \{ {\mathrm{ED}}_j,\delta _i^{{\mathrm{ED}}_j},{v_j},{\mathrm{pk}}_{{R}},{\pi _{{\text{publish}}}},{\sigma _{{R}}}\} $.  5) 输出$(\delta _i^{{\mathrm{ED}}_j},{\text{Tran}}{{\text{s}}_{{\text{PubData}}}})$.

3.2.3. 位置数据购买

在获取位置数据之前,普通船舶$V_U^C$需要支付相应的酬金. 为了断开数据收发双方的链接关系,$V_U^C$将购买数据所需的酬金${v_j}$从自己的账户余额${\text{zk\_balanc}}{{\text{e}}_U}$转到支付承诺${C_v}$中,后续数据持有者对其进行混淆后再转入自己账户. 同时,$V_U^C$用数据持有者的公钥加密共享参数$({r_3},{v_j},{\mathrm{ED}}_j)$. 具体如算法2所示.

算法2 PurchaseData  称数据请求者为U, 称数据持有者为R.  ●输入:  - 公共参数${\text{pp}}$  - 发送者的余额zk_balance  - 发送方的私钥sk  - 金额为$V_{{U}}^C$的承诺  - 接收方的公钥${\mathrm{pk}}_{{R}}$  ●输出:  - 收款人的支付承诺${C_{{v}}}$  - 发送者的新余额 $ V_{{U}}^C $  - 交易${\text{Tran}}{{\text{s}}_{{\text{Purdata}}}}$  1) 解析${\mathrm{zk}}\_{\mathrm{balanc}}{{\mathrm{e}}_{{U}}}$$({C_{{v_{{U}}}}},{\mathrm{pk}}_{{U}},{v_{{U}}},{\mathrm{sn}}_{{U}},r)$.  2) 检查是否$V_U^C$. 如果失败, 则返回⊥.  3) 生成2个随机数$V_U^C$, 计算$ C_{{v_{{U}}}}^* \leftarrow {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_{{U}}, $$v_{{U}}^*;{r_2}) $, $ {C_{{v}}} \leftarrow {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_{{R}},{v_j};{r_3}) $, 其中$V_{{U}}^* = {v_U} - {v_j}$.  4) 选择序列号$V_U^C$, 其中${\mathrm{sn}} \notin {\text{SNSet}}({\mathrm{pk}} _{{U}})$.  5) 令$ {\mathrm{zk}}\_{\mathrm{balance}}^* = (C_{{v_{{U}}}}^*,{\mathrm{pk}}_{{U}},v_{{U}}^*,{\mathrm{sn}},{r_2}) $.  6) 计算$ {\mathrm{aux}}_{{R}} \leftarrow {\text{HE}}.{\text{Enc}}({\mathrm{pk}}_{{R}},({r_3},{v_j},{\mathrm{ED}}_j)) $.  7) 生成零知识证明>$ {\pi _{{\text{purdata}}}} \leftarrow {\text{NIZK}}\{ (r,{r_2},{r_3},{v_{{U}}},v_{{U}}^*,{v_j})|{C_{{v_{{U}}}}}{\text{ = CPK}}{\text{.Enc}}({\mathrm{pk}}_{{U}},{v_{{U}}};r) \wedge $$ C_{{v_{{U}}}}^*{\text{ = CPK}}{\text{.Enc}}({\mathrm{p}}{{\mathrm{k}}_{{U}}},v_{{U}}^*;{r_2}) \wedge {C_v}{\text{ = CPK}}{\text{.Enc}}({\mathrm{p}}{{\mathrm{k}}_R},{v_j};{r_3}) \wedge v_{{U}}^* =$$ {v_{{U}}} - {v_j} \wedge v_{{U}}^*,{v_j} \in V\} . $  8) 计算签名$ {\sigma _U} \leftarrow {\text{CPK}}{\text{.Sign}}({\mathrm{sk}}_U,({\mathrm{pk}}_{{U}},{\mathrm{sn}},{C_{{v_{{R}}}}},C_{{v_{{U}}}}^*,{\mathrm{aux}}_{{R}},{\pi _{{\text{purdata}}}})). $  9) 令$ {\text{Tran}}{{\text{s}}_{{\text{PurData}}}}: = \{ {\mathrm{pk}}_{{U}},{\mathrm{sn}},{C_v},C_{{v_{{U}}}}^*,{\mathrm{aux}}_{{R}}, {\pi _{{\text{purdata}}}}, {\sigma _{{U}}}\} $.  10) 输出$({C_v},{\mathrm{zk}}\_{\mathrm{balance}}^*,{\text{Tran}}{{\text{s}}_{{\text{PurData}}}})$.

3.2.4. 位置数据获取

在付款完成后,普通船舶$V_U^C$可以请求获得相应的位置数据. 通过CZKP-1t协议构造零知识证明${\pi _{{\text{fetchdata}}}}$,证明自己拥有${\text{DateCommitPool}}$中的某个承诺. 证明随后在智能合约中进行验证,若验证通过,则ECN将对应的${\mathrm{ED}}_j$返回给$V_U^C$. 具体如算法3所示.

算法3 FetchData  ●输入:  - 公共参数${\text{pp}}$  - 用户R私钥${\mathrm{sk}}_{{U}}$  ●输出:  - 交易${\text{Tran}}{{\text{s}}_{{\text{FetchData}}}}$  1) 从数据承诺集中取t−1个承诺, 数据承诺池表示为$ \{ \delta _0^{{\mathrm{ED}}_0},\cdots ,\delta _l^{{\mathrm{ED}}_l},\cdots ,\delta _{t - 1}^{{\mathrm{ED}}_{t - 1}}\} $, 其中$ \delta _l^{{\mathrm{ED}}_l} $$V_{{U}}^C$支付过的承诺.  2) 生成零知识证明$ \begin{gathered} {\pi _{{\text{fetdata}}}} \leftarrow {\text{NIZK}}\{ ({r_3},{v_j})|{\text{CPK}}{\text{.Dec}}(\delta _0^{{\mathrm{ED}}_0} - {C_v}) = 0 \vee \cdots \vee \\ {\text{CPK}}{\text{.Dec}}(\delta _{t - 1}^{{\mathrm{ED}}_{t - 1}} - {C_v}) = 0 \wedge \delta _i^{{\mathrm{ED}}_j} \leftarrow {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_{{R}},{v_j};{r_3}) \\ \wedge {\mathrm{tag}} = {k^{ - r}} \wedge {v_j} \in V\} . \\ \end{gathered} $  3) 计算签名$ {\sigma _{\text{U}}} \leftarrow {\text{CPK}}{\text{.Sign}}({\mathrm{sk}}_{{U}},({\mathrm{pk}}_{{R}},{\pi _{{\text{fetdata}}}})) $.  4) 令$ {\text{Tran}}{{\text{s}}_{{\text{FetData}}}}: = \{ {\mathrm{pk}}_{{U}},{\pi _{{\text{fetdata}}}},{\sigma _{{R}}}\} $.  5) 输出${\text{Tran}}{{\text{s}}_{{\text{FetData}}}}$.

3.2.5. 支付承诺混淆

为了实现数据收发双方的不可链接性,该算法获取属于动态定位船舶$V_{{R}}^{{\text{DP}}}$的支付承诺${C_v}$,生成支付承诺池$ {\text{PaymentPool}(t)}: = \{ {C_{({R_0},0)}},\cdots , {C_{({R_l},l)}},{C_{({R_{t - 1,t-1}})}}\} $,其中${C_{({R_l},l)}} = {C_v}$. 输出新的支付承诺$C_v^*$${\pi _{{\text{refresh}}}}$确保同时满足以下3个条件. 1)$V_{{R}}^{{\text{DP}}}$拥有$ {\text{PaymentPool}(t)} $中的某个承诺. 2)该承诺与原承诺${C_v}$金额一致. 3)原承诺${C_v}$未被使用过. 具体如算法4所示.

算法4 RefreshPayment  ●输入:  - 公共参数${\text{pp}}$  - 用户R私钥${\mathrm{sk}}_{{R}}$  - 支付承诺$\{ {C_{{v_i}}}\} _0^{t - 1}$  ●输出:  - 用户的新支票$C_v^*$  - 交易${\text{Tran}}{{\text{s}}_{{\text{Refresh}}}}$  1) 从当前账本中获取$ {\text{Tran}}{{\text{s}}_{{\text{PurData}}}} $, 解析为$ ({\mathrm{pk}}_{{U}},{\mathrm{sn}}, {C_v},C_{{v_{{U}}}}^*,{\mathrm{aux}}_{{R}},{\pi _{{\text{purchase}}}},{\sigma _{{U}}}) $.  2) 计算$({r_3},{v_j},{\mathrm{ED}}_j) \leftarrow {\text{HE}}{\text{.Dec}}({\mathrm{sk}}_{{R}},{\mathrm{aux}}_{{R}})$.  3) 生成随机数 $r^* \in {Z}_q$, 计算$C_v^* \leftarrow {\text{CPK}}{\text{.Enc}} $ $ ({\mathrm{pk}}_{{R}},{v_j};{r_4}).$   4) 从支付承诺集中取t−1个支付承诺, 数据承诺池表示为$ \{ {C_{({R_0},0)}},\cdots ,{C_{({R_l},l)}},\cdots ,{C_{({R_{t - 1,t-1}})}}\} $, 其中属于用户的支票密文表示为${C_{({R_l},l)}}$.${C_{({R_l},l)}} = {C_v}$.  5) 计算${\mathrm{tag}}: = {k^{ - {r_3}}}$.  6) 生成零知识证明$ \begin{gathered} {\pi _{{\text{refresh}}}} \leftarrow {\text{NIZK}}\{ ({r_3},{r_4},{v_j})|{\text{CPK}}{\text{.Dec}}({C_{({R_0},0)}} - C_v^*)= \\ 0 \vee \cdots \vee {\text{CPK}}{\text{.Dec}}({C_{({R_{t - 1}},t - 1)}} - C_v^*) = 0 \wedge {C_v}^*= \\ {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_R,{v_j};{r_4}) \wedge {\mathrm{tag}} = {k^{ - {r_3}}} \wedge {v_j} \in V\}. \\ \end{gathered} $  7) 计算签名$ {\sigma _{\text{R}}} \leftarrow {\text{CPK}}{\text{.Sign}}({\mathrm{sk}}_{{R}},({\mathrm{pk}}_{{R}},{\mathrm{tag}},C_v^*,{\pi _{{\text{refresh}}}})) $.  8) 令$ {\text{Tran}}{{\text{s}}_{{\text{Refresh}}}}: = \{ {\mathrm{pk}}_{{R}},{\mathrm{tag}},C_v^*,{\pi _{{\text{refresh}}}},{\sigma _{{R}}}\} $.  9) 输出$(C_v^*,{\text{Tran}}{{\text{s}}_{{\text{RefreData}}}})$.

3.2.6. 取款

该算法将$C_v^*$中的金额存进动态定位船舶${{V}}_{{R}}^{{\text{DP}}}$的账户余额$ {\mathrm{zk}}\_{\mathrm{balance}}_{{R}}$. 具体如算法5所示.

算法5 DepositPayment  ●输入:  - 公共参数${\text{pp}}$  - 用户余额${\mathrm{zk}}\_{\mathrm{balance}}_{{R}}$  - 用户私钥sk  - 用户更新后的支付承诺$C_{{v_R}}^*$  ●输出:  - 支票持有人的新余额${\mathrm{zk}}\_{\mathrm{balance}}_{{R}}^*$  - 转账交易$ {\text{Tran}}{{\text{s}}_{{\text{Deposit}}}} $  1) 从当前账本中获取$ {\text{Tran}}{{\text{s}}_{{\text{Refresh}}}} $, 解析为 $ \{ {\mathrm{pk}}_{{R}}, {\mathrm{tag}},C_v^*,{\pi _{{\text{refresh}}}},{\sigma _{{R}}}\} $.  2) 解析${\text{zk\_balanc}}{{\text{e}}_R}$$({C_{{v_{{R}}}}},{\mathrm{pk}}_{{R}},{v_{{R}}},{\mathrm{sn}}_{{R}},r)$.  3) 生成随机数${r_5} \in {Z}_q$, 计算$C_{{v_{{R}}}}^* \leftarrow {\text{CPK}}{\text{.Enc}} $ $({\mathrm{pk}}_{{R}},v_{{R}}^*; {r_5})$,其中$v_R^* = {v_R}+{v_j}$.  4) 生成零知识证明$ \begin{gathered} {\pi _{{\text{deposit}}}} \leftarrow {\text{NIZK}}\{ (r,{r_4},{r_5},{v_{{R}}},v_{{R}}^*,{v_j})|{C_{{v_{{R}}}}} = {\text{CPK}}{\text{.Enc}} \\ ({\mathrm{pk}}_{{R}},{v_{{R}}};r) \wedge {C_{{v_{{R}}}}}^* = {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_{{R}},{v_{{R}}}^*;{r_5}) \wedge C_v^* = \\ {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}_{{R}},{v_j};{r_4}) \wedge v_{{R}}^* = {v_{{R}}}+{v_j} \wedge v_{{R}}^* \in V\} . \\ \end{gathered} $  5) 选择序列号${\mathrm{sn}}^* \in {\{ 0,1\} ^n}$, 满足${\mathrm{sn}}^* \notin {\text{SNSet}}({\mathrm{pk}}_{{R}})$.  6) 计算签名$ {\sigma _{{R}}} \leftarrow {\text{CPK}}{\text{.Sign}}({\mathrm{sk}}_{{R}},({\mathrm{pk}}_{{R}},{\mathrm{sn}}^*,C_v^*,C_{{v_{{R}}}}^*,{\pi _{{\text{deposit}}}})) $.  7) 令${\text{zk\_balance}}_{{R}}^*: = ({C_{{v_{{R}}}}}^*,{\mathrm{pk}}_{{R}},{v_{{R}}}^*,{\mathrm{sn}},{r^*})$.  8) 令$ {\text{Tran}}{{\text{s}}_{{\text{Deposit}}}}: = \{ {\mathrm{pk}}_{{R}},{\mathrm{sn}},C_{{v_{{R}}}}^*,{\pi _{{\text{deposit}}}},{\sigma _{{R}}}\} $.  9) 输出${\text{(Tran}}{{\text{s}}_{{\text{Deposit}}}},{\mathrm{zk}}\_{\mathrm{balance}}_{{R}}^{\text{*}})$.

4. 安全分析

4.1. CZKP-1t安全性的分析

4.1.1. 完备性

定理1:若陈述为真,且证明者遵循协议进行证明,验证者将总是能够成功验证该证明,则零知识证明协议满足完备性.

证明:对于式(1),有

对于式(2),等号左边为

等号右边为

当且仅当$ {l_i} \in \{ 0,1\} $,即${x^2}{l_i}(1 - {l_i}) = 0$时,有$ C_{\text{B}}^x{C_{\text{C}}} = {\text{Co}}{{\text{m}}_{{\text{ck}}}}({f_1}(x - {f_1}),\cdots ,{f_n}(x - {f_n});{z_{\text{B}}}) $恒成立.

对于式(3),有

可知,若陈述为真且证明过程无误,则以上3个验证等式总是成立,完备性得证.

4.1.2. 可靠性

定理2:若验证者可以在获得来自证明者的多个模拟证明后,从证明者给定的证明中提取出陈述,则零知识证明协议满足可靠性.

证明:假设证明者对2个不同的挑战$x$$x'$进行响应,响应分别为$({f_0},\cdots ,{f_{n - 1}},{z_{\text{A}}},{z_{\text{C}}})$$(f_0',\cdots ,f_{n - 1}', z_{\text{A}}',z_{\text{C}}')$. 由于有

可得

${C_{\mathrm{L}}}$可以被打开,得到${l_i} = ({{{f_i} - f_i'}})/({{x - x'}})$$ r = (z_{\text{A}} - z_{\text{A}}')/ ( {{x - x'}}) $以及${a_j} = {f_j} - {l_j}x,{r_{\mathrm{A}}} = {z_{\mathrm{A}}} - rx$. 同理,${C_{\text{B}}}$也可以被打开,得到$ {b_j} = [{{{f_j}(x - {f_j}) - f_j'(x - f_j')}}]/ ({{x - x'}}) $$ {r_{\text{B}}} = ({{{z_{\text{B}}} - z_{\text{B}}'}})/({{x - x'}}) $$ {c_j} = - a_j^2 $$ {r_{\text{C}}} = {z_{\text{B}}} - {r_{\text{B}}}x $. 可靠性得证.

4.1.3. 零知识性

定理3:若存在一个模拟器能够生成一个交互记录,使得验证者无法区分它是来自真实的证明过程,还是由模拟器生成的,则零知识证明协议满足零知识性.

证明:根据挑战$x \leftarrow {\{ 0,1\} ^\lambda }$,模拟器随机选取${f_1},\cdots {f_n},{z_{\text{A}}},{z_{\text{B}}},z \leftarrow {{Z}_q}$$ {C_{\text{A}}},{C_{\text{C}}} \leftarrow {{G}} $,根据验证等式可以计算得到

返回的模拟器初始消息和响应为$({C_{\text{L}}},{C_{\text{A}}},{C_{\text{B}}}, {C_{\text{C}}},$$ {C_0},\cdots ,{C_{n - 1}},{f_1},\cdots, {f_n},{z_{\text{A}}},{z_{\text{B}}},z) $.

在真实证明和模拟器中,${f_1},\cdots ,{f_n},{z_{\mathrm{A}}},{z_{\mathrm{B}}},z \leftarrow {{Z}_q}$是不可区分的. 在这些值和给定x的条件下,验证等式在真实证明和模拟证明中唯一确定${C_{\text{L}}}$${C_{\text{B}}}$${C_0}$. 这表明真实证明和模拟证明具有相同的概率分布. 零知识性得证.

4.2. CZKP-1t-MPS安全性的分析
4.2.1. 公平性

从2个角度分析公平性. 恶意数据请求者可能试图不支付费用获取数据. 本文方案要求请求者生成正确零知识证明,并由部署在ECN上的智能合约验证. 零知识证明的可靠性确保未付费者无法生成有效的证明,智能合约的确定性和自动执行特性保证仅合法请求者可以获取相应的位置数据.

另一方面,恶意的位置数据提供者可能试图获取不当酬金. 本方案中,请求者使用提供者公钥加密共享参数${\text{au}}{{\text{x}}_{{R}}}$,仅对应私钥持有者可解密并构造零知识证明. HE加密算法的安全性[23]确保攻击者无法获取共享参数或私钥信息,零知识证明的可靠性保证只有持有正确私钥和共享参数的数据持有者才能获得费用,从而保证了交易公平性.

4.2.2. 机密性

定理4:若CPK加密算法满足IND-CPA安全性,$\Sigma $协议和CZKP-1t协议满足零知识性,则CZKP-1t-MPS满足机密性,即账户余额不会被账户所有者以外的人获得,且交易金额无法被第三方获得.

证明:账户余额始终以$ {C_{{v_{\text{U}}}}} \leftarrow {\text{CPK}}{\text{.Enc}}({\mathrm{pk}}{\text{,}}{v_{{U}}};r) $的形式存在,若敌手要获得账户余额的明文信息,则只能从${C_{{v_{{U}}}}}$中解密得到${v_{{U}}}$. CPK加密算法满足IND-CPA安全性,敌手无法从多项式时间内有效地区分不同的密文,因此敌手无法从${C_{{v_{{U}}}}}$中获得账户余额明文${v_{{U}}}$.

为了证明交易金额的机密性,以 PurchaseData算法为例进行分析. 敌手可以a)从${C_v}$中解密得到${v_j}$,b)从$ {\pi _{{\text{purchase}}}} $中提取出${v_j}$. 对于a)来说,由于CPK加密算法满足IND-CPA安全性,在多项式时间内,敌手无法解密得到交易金额. 对于b) 来说,由于$\Sigma $协议和CZKP-1t协议满足零知识性,即使敌手参与了零知识证明的交互过程,也无法通过此过程获得交易金额的明文. CZKP-1t-MPS满足机密性.

4.2.3. 不可链接性

不可链接性分为交易不可链接性和数据请求不可链接性. 其中交易不可链接性保证交易双方的身份隐私,即交易双方以外的任何人无法区分$ {\text{Tran}}{{\text{s}}_{{\text{Purdata}}}} $对应的$ {\text{Tran}}{{\text{s}}_{{\text{Deposit}}}} $. 数据请求不可链接性保证除数据请求者以外的任何人无法知道请求的是哪个数据. 所提的CZKP-1t-MPS满足不可链接性,证明如下.

1)交易不可链接性. 构造游戏${G^{{\mathrm{UL}}}}$:将区块链网络抽象为预言机$\varOmega $,它提供与CZKP-1t-MPS中定义的操作进行交互的接口. 区块链账本$L$包含了$\varOmega $中包含和管理的所有交易. 假设敌手A可以在游戏${G^{{\mathrm{UL}}}}$进行期间对$\varOmega $进行问询. $\varOmega $响应A的询问直到A返回一组交易$({\text{tx}},{\text{tx}}^*) \in L$,该组交易满足:①tx和tx*的交易类型相同,②$ {\text{tx}} \ne {\text{tx}}^* $,③敌手A没有参与到交易tx或tx*中. 若满足以下一种情况,则$\varOmega $输出1,即敌手赢得游戏.

情况1:若$ {\text{tx、t}}{{\text{x}}^*} \in {\text{Tran}}{{\text{s}}_{{\text{Purdata}}}} $,则交易中的接收者即DP-vessel相同.

情况2:若$ {\text{tx、t}}{{\text{x}}^*} \in {\text{Tran}}{{\text{s}}_{{\text{Deposit}}}} $,则交易中的发起者即C-vessel相同.

以PurchaseDate算法为例,若方案满足交易不可链接性,则对于多项式时间敌手A来说,概率$ {{P}} [{G^{{\mathrm{UL}}}}(\lambda ,A)] = 1 $可以忽略.

证明:假设A输出的交易组$({\mathrm{t}}{\mathrm{x}},{\mathrm{t}}{\mathrm{x}}^*) \in L$,其中tx表示为

Tx*表示为

若要赢得游戏,则A必须找到${\mathrm{pk}}_{{R}} = {\mathrm{pk}}_{{R}}^*$. A可以a) 从${C_v}$$C_v^*$中解密获得${\mathrm{pk}}_{{R}}$${\mathrm{pk}}_{{R}}^*$,b) 从${\text{au}}{{\text{x}}_{{R}}}$${\text{aux}}_{{R}}^{\text{*}}$中解密获得${\mathrm{pk}}_R$${\mathrm{pk}}_R^*$,c) 从零知识证明${\pi _{{\text{purchase}}}}$$\pi _{{\text{purchase}}}^{\text{*}}$中提取出${\mathrm{pk}}_{{R}}$${\mathrm{pk}}_{{R}}^{\text{*}}$. 对于a) 和b) 来说,由于Twisted Elgamal算法满足IND-CPA安全性,多项式时间敌手A无法以不可忽略的概率赢得游戏. 对于c) 来说,由于构造的零知识算法满足零知识性,敌手无法赢得游戏,即$ {{P}} [{G^{{\mathrm{UL}}}}(\lambda ,A)] = 1 $的概率可以忽略,交易不可链接性得证.

2)数据请求的不可链接性. 在交易$ {\text{Tran}}{{\text{s}}_{{\text{fetchdata}}}}: = \{ {\mathrm{pk}}_{{U}},{\pi _{{\text{fetchdata}}}},{\sigma _{{R}}}\} $中,若敌手想要知道${\mathrm{pk}}_{{U}}$获取的是哪一条数据,则须从零知识证明$ {\pi _{{\text{fetchdata}}}} $中提取出$ \delta _l^{{\mathrm{E}}{{\mathrm{D}}_l}} $,由于构造的零知识算法满足零知识性,敌手无法赢得游戏. 数据请求的不可链接性得证.

5. 性能分析

5.1. CZKP-1t的性能分析

CZKP-1t算法支持对匿名集的规模进行动态调整. 参数t定义了匿名集的规模,它直接影响匿名性的程度. 为了在匿名性与计算效率之间取得平衡,对匿名集规模t与协议执行时间之间的关系进行测试. 测试结果如图2所示. 经过综合考量,选择t = 256作为匿名集的最优规模,这一选择在确保较低计算成本的同时,提供了较高的匿名性保障.

图 2

图 2   不同匿名集大小下CZKP-1t的性能表现

Fig.2   Performance of CZKP-1t with different anonymity set size


当选用t = 256时, 对文献[13]、[19]和本文方案CZKP-1t的计算开销进行仿真对比. 采用OpenSSL-1.0.1密码学库,在配置为AMD Ryzen 7 5825U with Radeon Graphics 2.00 GHz处理器和16 GB RAM的Windows 11操作系统上进行实验. 实验环境配置为Python 3.5,选用512位的椭圆曲线. 从表1可知,改进后算法的证明过程计算开销Tp较文献[13]降低了62.98%,验证过程计算开销Tv降低了8.21%.

表 1   零知识证明实测计算开销的对比(匿名集t = 256)

Tab.1  Measured computational cost comparison of zero-knowledge proofs (anonymity set t = 256)

方案Tp/msTv/ms
文献[13]方案2 096584
文献[16]方案384288
本文方案776536

新窗口打开| 下载CSV


5.2. CZKP-1t-MPS的性能分析

选择以太坊来构建CZKP-1t-MPS. 模拟实验采用Golang编写的以太坊客户端Go-Ethereum实现. 为了兼容所提的海上位置共享方案,在原始Go-Ethereum的基础上增加${\text{Tran}}{{\text{s}}_{{\text{PubData}}}}$${\text{Tran}}{{\text{s}}_{{\text{PurData}}}}$${\text{Tran}}{{\text{s}}_{{\text{FetData}}}}$${\text{Tran}}{{\text{s}}_{{\text{Refresh}}}}$${\text{Tran}}{{\text{s}}_{{\text{Deposit}}}}$ 5种交易类型. 在Go-Ethereum中部署相应的智能合约.

尽管陆上交通领域已有许多针对位置共享的方案提出,但海运领域相关文献极其有限. 其中,Gai等[12]构建了具有隐私保护的位置共享方案,与本文的研究方向一致,接下来主要与文献[12]进行对比.

表2所示为文献[12]与本文方案CZKP-1t-MPS在数据共享全过程各个阶段的计算开销T对比. 为了方便起见,将本文方案中的支付承诺混淆阶段并入取款阶段. 交易验证时间在表2中以Verify阶段进行表示. 与文献[12] 相比,CZKP-1t-MPS各阶段的总计算开销降低了78.5%. 此外,文献[12]的初始化算法需要124.13 s,而本文算法只需要20.31 s. 只有验证阶段的效率稍具劣势,但执行时间只有0.273 s. 总体而言,本文方案的计算效率较文献[12]优势明显.

表 2   与BP3-MTS的计算开销对比

Tab.2  Comparison of computational cost with BP3-MTS

数据交易阶段T/ms
文献[12]方案本文方案
数据上传5 450324
数据购买19 000437
数据获取6 5503 692
取款18 2505 863
验证6273

新窗口打开| 下载CSV


为了定义通信开销,使用$|{G}|$表示群${G}$元素的大小,$|{{Z}_q}|$表示${{Z}_q}$元素的大小,$|V|$表示交易金额的大小,$|{\mathrm{sn}}|$表示序列号大小. $|{{Z}_q}|$=32 B,$|V|$=4 B,$|{\mathrm{sn}}|$=32 B. 由于使用椭圆曲线点的压缩形式,$|{G}|$=33 B.

t = 256时,匿名性和计算性能可以得到较好的平衡. 表3给出t = 256时CZKP-1t-MPS中各种交易类型的大小.

表 3   CZKP-1t-MPS中交易的输出大小

Tab.3  Output size of transactions in CZKP-1t-MPS

交易类型交易输出输出大小/B
${\mathrm{Trans}} _{ {{\mathrm{create}} }}$$4|{G}|+3\left|{Z}_q\right|+|{\mathrm{s n}}|$260
${\mathrm{Trans}} _{ {{\mathrm{PubData}} }}$$4|{G}|+5\left|{Z}_q\right|+|V|$296
${\mathrm{Trans}} _{ {{\mathrm{PurData}} }}$$27|{G}|+22\left|{Z}_q\right|+|{\mathrm{s n}}|$1 600
${\mathrm{Trans}} _{ {{\mathrm{FetSata}} }}$$14|{G}|+34\left|{Z}_q\right|$1 550
${\mathrm{Trans}} _{ {{\mathrm{RefreData}} }}$$27|{G}|+38\left|{Z}_q\right|$2 107
${\mathrm{Trans}} _{ {{\mathrm{Deposit}} }}$$24|{G}|+21\left|{Z}_q\right|+|{\mathrm{s n}}|$1 496

新窗口打开| 下载CSV


对本文方案CZKP-1t-MPS与文献[12]的BP3-MPS方案的通信开销c进行对比.从表4可知,本文方案CZKP-1t-MPS在通信成本方面略高于BP3-MTS[12]. 这一差异归因于后者采用了zk-SNARKs,该零知识证明算法具有较小的证明大小. zk-SNARKs依赖于信任设置过程,一旦信任设置存在缺陷,则需要对系统进行更新或修改,这将带来额外的复杂性和潜在风险. 本文方案不存在上述风险,具有较高的鲁棒性. 另一方面,在海上环境中,由于船只的分布密度较陆地交通小,交易的发起频率更低,因此对通信带宽需求更低. 在船只配置异构的海上环境,即便配置较低的C-vessel的网络带宽仅为10 Mbit/s,本文方案CZKP-1t-MPS相较于BP3-MTS在数据传输时间上的差异仅为μs级别.

表 4   CZKP-1t-MPS与其他方案的通信开销对比

Tab.4  Comparison of communication cost of CZKP-1t-MPS with other schemes

数据共享阶段c/B
BP3-MP3[12]CZKP-1t-MPS
Setup481×106162
PublishData398468
PurchaseData3861927
FetchData1921648
RefreshPayment3202303
DepositPayment1691

新窗口打开| 下载CSV


综上所述,本文方案CZKP-1t-MPS的计算效率较仅有的海上位置共享方案BP3-MTS显著提升,处理时间从s级降至ms级,而通信效率下降带来的μs级传输时延是可以忽略的. 总体效率提升80%左右,更适合船只资源配置异质的海运场景.

6. 结 论

(1) 利用位置数据共享方法,实现了账户模型区块链下数据共享双方的身份不可链接性和数据与其持有者的不可链接性.

(2) 改进后的零知识证明协议计算复杂度从$O\;(t\log t)$降至$O\;(t)$.

(3) 位置数据共享方案处理时间从s级降至ms级,总体效率提高80%左右.

参考文献

ZIDAN J, ADEGOKE E I, KAMPERT E, et al

GNSS vulnerabilities and existing solutions: a review of the literature

[J]. IEEE Access, 2021, 9: 153960- 153976

DOI:10.1109/ACCESS.2020.2973759      [本文引用: 1]

MAAREF M, KASSAS Z

Measurement characterization and autonomous outlier detection and exclusion for ground vehicle navigation with cellular signals

[J]. IEEE Transactions on Intelligent Vehicles, 2020, 5 (4): 670- 683

DOI:10.1109/TIV.2020.2991947      [本文引用: 1]

MUNUSAMY A

Edge-centric secure service provisioning in IoT-enabled maritime transportation systems

[J]. IEEE Transactions on Intelligent Transportation Systems, 2023, 24 (2): 2568- 2577

[本文引用: 1]

WANG H H, WANG C P, ZHOU K, et al

TEBChain: a trusted and efficient blockchain-based data sharingscheme in UAV-assisted IoV for disaster rescue

[J]. IEEE Transactions on Network and Service Management, 2024, 21 (4): 4119- 4130

[本文引用: 1]

ZHANG Dajun, SHI Wei, ST-HILAIRE M, et al

Blockchain-based intelligence networking for cooperative positioning towards future internet of vehicles

[J]. IEEE Transactions on Vehicular Technology, 2024, 73 (3): 3262- 3276

DOI:10.1109/TVT.2023.3327926      [本文引用: 1]

SONG Y X, YU R, FU Y C, et al. Multi-Vehicle cooperative positioning correction framework based on vehicular blockchain [C] // Proceedings of the 9th ACM Symposium on Design and Analysis of Intelligent Vehicular Networks and Applications. New York: ACM, 2019: 23-29.

[本文引用: 1]

LI C L, FU Y C, YU F E, et al

Vehicle position correction: a vehicular blockchain networks-based GPS error sharing framework

[J]. IEEE Transactions on Intelligent Transportation Systems, 2021, 22 (2): 898- 912

DOI:10.1109/TITS.2019.2961400      [本文引用: 1]

SONG Y X, FU Y C, YU F R, et al

Blockchain-enabled internet of vehicles with cooperative positioning: a deep neural network approach

[J]. IEEE Internet of Things Journal, 2020, 7 (4): 3485- 3498

DOI:10.1109/JIOT.2020.2972337      [本文引用: 1]

LUO B, LI X H, WENG J, et al

Blockchain enabled trust-based location privacy protection scheme in VANET

[J]. IEEE Transactions on Vehicular Technology, 2020, 69 (2): 2034- 2048

DOI:10.1109/TVT.2019.2957744      [本文引用: 1]

LI B H, LIANG R C, CHEN W T, et al

Blockchain-based brust management model for location privacy preserving in VANET

[J]. IEEE Transactions on Intelligent Transportation Systems, 2021, 22 (6): 3765- 3775

DOI:10.1109/TITS.2020.3035869      [本文引用: 1]

申自浩, 刘梦珂, 王辉, 等

基于区块链的用户自定义位置共享方案

[J]. 浙江大学学报: 工学版, 2024, 58 (4): 655- 663

[本文引用: 1]

SHEN Zihao, LIU Mengke, WANG Hui, et al

User defined location sharing scheme based on blockchain

[J]. Journal of Zhejiang University: Engineering Science, 2024, 58 (4): 655- 663

[本文引用: 1]

GAI K K, TANG H K, LI G S, et al

Blockchain-based privacy-preserving positioning data sharing for IoT-enabled maritime transportation systems

[J]. IEEE Transactions on Intelligent Transportation Systems, 2023, 24 (2): 2344- 2358

[本文引用: 11]

GROTH J, KOHLWEISS M. One-out-of-many proofs: or how to leak a secret and spend a coin [C]// Advances in Cryptology – EUROCRYPT 2015. Berlin: Springer, 2015: 253-280.

[本文引用: 5]

RONALD C, IVAN D, BERRY S. Proofs of partial knowledge and simplified design of witness hiding protocols [C]//International Cryptology Conference. Santa Barbara: Springer, 1994: 174–187.

[本文引用: 1]

BENJAMIN E. Many-out-of-many proofs and applications to anonymous zether [C]//IEEE Symposium on Security and Privacy. San Francisco: IEEE, 2021: 1800-1817.

[本文引用: 1]

BOOTLE J, CERULLI A, CHAIDOS P, et al. Short accountable ring signatures based on DDH [C]//European Symposium on Research in Computer Security. Heidelberg: Springer, 2015: 243–265.

[本文引用: 2]

BÜNZ B, AGRAWAL S, ZAMANI M, et al. Zether: towards privacy in a smart contract world [C]// Financial Cryptography and Data Security. Cham: Springer, 2020: 423−443.

JIVANYAN A. Lelantus: towards confidentiality and anonymity of blockchain transactions from standard assumptions [J]. IACR Cryptology ePrint Archive, 2019: 373.

ARAM J, TIGRAN M. Hierarchical one-out-of-many proofs with applications to blockchain privacy and ring signatures [C]// Asia Joint Conference on Information Security. Shanghai: IEEE, 2020: 74–81.

[本文引用: 3]

BAO Z J, HE D B, WEI W, et al

LedgerMaze: an efficient privacy-preserving noninteractive zero-knowledge scheme over account-model blockchain

[J]. IEEE Transactions on Computers, 2023, 72 (12): 3489- 3502

DOI:10.1109/TC.2023.3305748      [本文引用: 1]

HABER S, PINKAS B. Securely combining public-key cryptosystems [C]// 8th ACM Conference on Computer and Communications Security. Philadelphia: ACM, 2001: 215–224.

[本文引用: 1]

CHEN Y, MA X, TANG C, et al. PGC: decentralized confidential payment system with auditability [C]// 25th European Symposium on Research in Computer Security. Guildford: Springer, 2020: 591–610.

[本文引用: 1]

ABDALLA M, BELLARE M, ROGAWAY P. The oracle Diffie-Hellman assumptions and an analysis of DHIES [C]// Topics in Cryptology. Berlin: Springer, 2001: 143–158.

[本文引用: 2]

/