«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (6): 123-131  DOI: 10.19678/j.issn.1000-3428.0059256
0

引用本文  

王元庆, 刘百祥. 一种去中心化的隐私保护匿名问卷方案[J]. 计算机工程, 2021, 47(6), 123-131. DOI: 10.19678/j.issn.1000-3428.0059256.
WANG Yuanqing, LIU Baixiang. A Decentralized Scheme for Privacy-Preserving Anonymous Surveying[J]. Computer Engineering, 2021, 47(6), 123-131. DOI: 10.19678/j.issn.1000-3428.0059256.

基金项目

国家自然科学基金(61672166,U19A2066);国家重点研发计划(2019YFB2101703)

作者简介

王元庆(1995-), 男, 硕士研究生, 主研方向为零知识证明、密码学;
刘百祥, 博士

文章历史

收稿日期:2020-08-13
修回日期:2020-10-14
一种去中心化的隐私保护匿名问卷方案
王元庆1,2 , 刘百祥1,2     
1. 复旦大学 计算机科学技术学院上海市智能信息处理重点实验室, 上海 200433;
2. 上海市区块链工程技术研究中心 复旦-众安区块链与信息安全联合实验室, 上海 200433
摘要:针对传统匿名问卷系统不能抵抗合谋攻击及公布数据时无法保护用户隐私的问题,提出一种新的隐私保护匿名问卷方案。引入少数合谋的问卷工作节点集群,利用门限签名技术为用户进行注册,并以门限签名为问卷生成用户列表,从而抵抗合谋攻击,同时将用户回应进行同态加密上传至公开防篡改平台抵抗数据抵赖,采用差分隐私技术并借助安全多方计算技术输出隐私保护的问卷归总结果。在此基础上,将问卷过程融入零知识证明技术,保证密文的健壮性及方案的正确性。性能分析结果表明,该方案的安全模型满足匿名性、验证性、机密性及隐私保护性,与ANONIZE、Prio等方案相比,在合谋攻击抵抗、隐私保护方面更有优势,且在时间和存储开销上符合实际应用需求。
关键词匿名问卷系统    差分隐私    门限签名    零知识证明    安全多方计算    同态加密    
A Decentralized Scheme for Privacy-Preserving Anonymous Surveying
WANG Yuanqing1,2 , LIU Baixiang1,2     
1. Shanghai Key Laboratory of Intelligent Information Processing, School of Computer Science, Fudan University, Shanghai 200433, China;
2. Fudan-Zhongan Joint Laboratory of Blockchain and Information Security, Shanghai Engineering Research Center of Blockchain, Shanghai 200433, China
Abstract: The existing anonymous survey systems usually fail to resist collusion attacks or protect user privacy when publishing data.To address the problem, this paper proposes a new privacy-preserving anonymous survey scheme.The scheme introduces a work node cluster based on minority collusion for surveying, and employs the threshold signature technology to register users.The threshold signatures are also used to generate a user list for surveying to resist collusion attacks.At the same time, the user response is homomorphically encrypted and uploaded to the public tamper-proof platform to resist data denial.By using the differential privacy technology and the secure multi-party computing technology, the privacy-preserving summarized results of the survey are obtained.On this basis, the zero-knowledge proof technology is used for surveying to ensure the robustness of the ciphertext and the correctness of the scheme.Performance analysis results show that the security model of this scheme satisfies anonymity, verification, confidentiality and privacy protection.Compared with ANONIZE, Prio and other schemes, it has more advantages in collusion attack resistance and privacy protection, meeting the actual application requirements in time and storage overhead.
Key words: anonymous surveying system    differential privacy    threshold signature    zero-knowledge proof    secure multiparty computation    homomorphic encryption    

开放科学(资源服务)标志码(OSID):

0 概述

电子问卷允许研究机构、政府部门及商业公司等问卷发起方以低成本向大量用户收集问卷回应,以了解用户偏好、习惯或行为模式。近年来,用户隐私备受重视,用户期望数据隐私能被妥善保护,即问卷发起方需要取得用户对其隐私保护能力的信任,这导致不知名机构难以收集数据[1]。另外,问卷过程的非公开且不受监管特性方便了一些恶意问卷发起方伪造或跨大问卷结果[2-3],以取得较好的问卷统计数据,影响参考这些数据所得出的结论的有效性。而即使问卷发起方诚实可信,若恶意用户可以伪造身份并多次回应问卷,也无法保证问卷结果的真确性[4-5]

ANONIZE[5]为目前最具代表性的安全匿名问卷系统,该系统基于零知识证明技术保证用户匿名性及问卷验证性,限制了只有问卷发起方选择的用户才可提交一次匿名回应,但系统未关注各方合谋攻击。系统委托问卷发起方生成用户列表,即给予它选择用户的手段,它可与恶意用户合谋,选择某一诚实用户与恶意用户来发起问卷。诚实用户若回应问卷,合谋双方即可对该回应进行反匿名攻击,也可以与注册机构合谋实行女巫攻击,只选择由注册机构虚构并控制的用户来发起问卷,以生成虚假的问卷过程与结果。

另外,问卷系统未关注对匿名回应的公布,若回应被公布,则会增加用户隐私风险。文献[6]提出的统计手段可对网飞公司的匿名影评数据进行反匿名攻击。然而若不要求问卷发起方公布回应,则变相给予它数据造假的机会,可抵赖部分用户回应,以取得较好的问卷统计结果。对于公布数据时隐私保护的问题,文献[7]提出一种隐私保护计算方案,引入多个计算服务器为数据密文进行归总,但该方案未对数据的健壮性进行检查,也未融合差分隐私技术,隐私保护程度较低。文献[8]提出Prio框架,以秘密共享非交互证明技术(SNIP)来保证用户输入的健壮性,但同样未令归总满足差分隐私。文献[9]提出PrivaDA方案,以适用于定点与浮点数运算的安全多方计算,构建了分布式差分隐私模型,但方案未对用户输入的健壮性进行检查,存在输入污染问题。文献[10-11]方案兼顾了输入健壮性及差分隐私保护,但它们的模型只有单个计算服务器,适用于智能电表等实时数据流的场景。

针对合谋攻击的难题,本文提出一种去中心化的隐私保护匿名问卷方案。该方案引入多个问卷工作节点,组成一组少数合谋的计算服务器集群,利用门限签名技术为用户进行注册,抵抗女巫攻击,且以门限签名为问卷生成用户列表,抵抗反匿名攻击。针对数据公布,将用户回应进行同态加密,把密文上传至公开防篡改平台抵抗数据抵赖,将所有同态密文归总,委托问卷工作节点采用差分隐私技术与安全多方计算技术,输出隐私保护的问卷归总结果。

1 预备知识 1.1 双线性映射

G1G2GT为3个阶为素数p的乘法循环群。双线性映射eG1×G2GT具有以下3个性质:

1) 双线性:对于任意u$ \in $G1v$ \in $G2和任意ab$ \in {\mathbb{Z}}_{p} $,有e(uavb)=e(uv)ab

2) 非退化性:对于g1$ \in $G1g2$ \in $G2,使e(g1g2)≠1。

3) 可计算性:对于任意u$ \in $G1v$ \in $G2e(uv)可被某有效算法计算。

1.2 ElGamal加密系统

ElGamal加密系统[12]基于DDH假设。设g为群G0的生成元,选择abc$ {\in }_{R}{\mathbb{Z}}_{p} $。DDH假设代表(gagbgab)的分布与(gagbgc)的分布计算不可区分。ElGamal加密系统算法如下:

1) Keygen():取私钥x$ {\in }_{R}{\mathbb{Z}}_{p} $,对应公钥为h=gx

2) Enc(m):生成(E1E2)=(m$ \cdot $hrgr),其中r$ {\in }_{R}{\mathbb{Z}}_{p} $

3) Decx(E1E2):计算并得出mE1/(E2)x

1.3 加法同态加密和EC-based ElGamal加密系统

同态加密技术使运算方可以在密文上进行运算,并保证将运算结果解密后的明文与直接在明文上进行运算的结果一致。加法同态加密提供加法运算符$ \oplus $,使得E(u)$ \oplus $E(v)=E(u+v)。本文方案使用基于椭圆曲线(EC-based)的ElGamal加密系统[13]。设E为一$ {\mathbb{Z}}_{p} $上的椭圆曲线,选择E上一点P,选择一个可逆线性函数fm$ \mapsto $Pm。具体算法如下:

1) Keygen():取私钥xR$ {\mathbb{Z}}_{p} $,对应公钥为Y=xP

2) Enc(m):生成(E1E2)=(f(m)+rYrP),r$ {\in }_{R}{\mathbb{Z}}_{p} $

3) Decx(E1E2):计算PmE1xE2,得mf-1(Pm)。

EC-based ElGamal加密系统的同态性质为Enc(m1)+Enc(m2)=(f(m1)+r1Y+f(m2)+r2Yr1P+r2P)=(f(m1+m2)+(r1+r2)Y,(r1+r2)P)=Enc(m1+m2),其中,r1r2$ {\in }_{R}{\mathbb{Z}}_{p} $

1.4 门限秘密共享方案与门限签名方案

tn为2个正整数,其中tn。(tn)门限秘密共享方案[14]n名参与者共享秘密,使得由任意k名参与者组成的子集能够计算出该秘密当且仅当tk。本文使用一种简单的(nn)门限方案,以及使用Pedersen的(tn)门限方案[15]。设$ {\mathbb{Z}}_{p} $为有限域,其中p为素数,且np。2种方案的具体算法如下:

1)(nn)门限方案:设x$ \in {\mathbb{Z}}_{p} $为需要共享的秘密。任意选择x1x2,…,xn$ {\in }_{R}{\mathbb{Z}}_{p} $,但需满足x1+x2+…+xn=x,然后将xi与第i名参与者分享。

2) Pedersen门限方案:第i位参与者生成(t-1)阶的多项式函数pi(x)=a0,i+a1,ix+a2,ix2+…+at-1,ixt-1,其中ak,i$ {\in }_{R}{\mathbb{Z}}_{p} $,然后向其他n-1名参与者的第j名参与者分享pi(j)。第i位参与者收到来自其他参与者的分享后计算$ {y}_{i}=\sum\limits_{j=1}^{n}{p}_{j}\left(i\right) $。此时视$ s=\sum\limits_{i=1}^{n}{p}_{i}\left(0\right) $为共享秘密,且每位参与者i拥有碎片$ {y}_{i} $。拉格朗日插值法保证可从任意t个碎片中得到$ s=\sum\limits_{\begin{array}{l}i\in I\\ \left|I\right|=t\end{array}}{y}_{i}{\varPsi }_{i} $,其中$ {\varPsi }_{i}=\prod\limits _{\begin{array}{c}j\in I\\ j\ne i\end{array}}j/(j-i) $。Pedersen门限方案可与ElGamal加密系统相结合,扩展基于ElGamal加密系统的签名方案至对应的门限签名方案[16]。本文使用基于PS数字签名方案[17]的门限签名方案。

1.5 差分隐私与Laplace机制

差分隐私[18]通过向数据加入噪音,使得每项数据的存在与否都不会对任意随机查询函数的输出的概率分布产生有效影响。该技术可以抵御对数据集的背景知识攻击,且可按需求调整抵御强度,以提高噪音为代价带来高度的隐私保护。

定义1($ \varepsilon $-差分隐私)  设D1D2为2个相邻数据集,即它们只相异于1项数据。随机函数f满足$ \varepsilon $-差分隐私:

$ P\left[f\right({D}_{1})\in {R}_{f}]\le {e}^{\mathrm{\varepsilon }}P\left[f\right({D}_{2})\in {R}_{f}] $

其中,Rff的所有可能输出的集合。

定义2(敏感度)  设d为一正整数,fD$ {\mathbb{R}}^{d} $为一函数。f的敏感度S(f)定义为:

$ S\left(f\right)\mathrm{ }=\mathrm{m}\mathrm{a}\mathrm{x}\left|\right|f\left({D}_{1}\right)-f\left({D}_{2}\right)\left|\right| $

其中,max的范围是D上所有相邻数据集D1D2。由此S(f)衡量任意一项数据的存在与否对f的输出的最大改变。Laplace机制[18]是一种可以令函数满足$ \varepsilon $-差分隐私的方法。它为函数的输出加入来自分布函数形式为$ P\left(x\right)=1/2\mathrm{\lambda }{\mathrm{e}}^{-\mathrm{\lambda }\left|x\right|} $的Laplace分布Lap($ \mathrm{\lambda } $)的噪音,其中$ \mathrm{\lambda }\ge S\left(f\right)/\varepsilon $

1.6 安全多方计算

安全多方计算技术使分别持有秘密s1s2,…,snn名参与者p1p2,…,pn进行交互,共同计算出函数f(s1s2,…,sn)的结果。其中SPDZ协议[19]保证了多数恶意模型下的安全性,即攻击者即使在控制了n-1个参与者的情况下,也不能通过协议获取诚实参与者的秘密。协议同时保证了计算的正确性,即若参与者遵循协议,则能够计算出正确结果,否则协议终止。

1.7 零知识证明

零知识证明技术[20]的应用场景涉及一个证明方和一个验证方,其中证明方可以在不泄漏知识本身的情况下声明他拥有某样知识,并把该声明的证明交予验证方验证。该技术保证验证方从证明中只能学习到声明的真确性。非交互零知识证明(NIZK)技术可使证明方在不与验证方通信的情况下证明知识。对于关系R及语言$L=\{x: \exists w, (x, w) \in R\} $的知识证明,其中,秘密w为知识,x为声明。一般采用ZK{wx$ \in $L}的形式描述零知识证明。在实际应用中,一般使用Fiat-Shamir启发式与Σ协议[20]来实例化一个NIZK。

2 去中心化隐私保护匿名问卷方案

图 1所示,本文方案共有3组参与方,包括问卷工作节点(SWN)、问卷发起方(SA)和用户(U)。

Download:
图 1 去中心化隐私保护匿名问卷方案模型 Fig. 1 Scheme model of decentralized privacy preserving anonymous surveying

本文方案主要有以下3个部分组成:

1) 问卷工作节点(SWN)负责维护性别、年龄、职业等用户属性,生成用户令牌碎片,主要包含回应令牌碎片的用户列表分表、负责验证回应中的证明和公布隐私保护的结果。

2) 问卷发起方(SA)是收集问卷的一方,负责发布问卷面向的用户属性、问卷题目及对应的选项。

3) 用户(U)是问卷的回应方,回应包含问卷选择密文、密文健壮性的证明以及拥有用户令牌、回应令牌的证明。

本文方案假设问卷工作节点间存在安全通信通道,且基于某公开防篡改的平台,如以太坊区块链[21],并在平台上发布问卷、提交回应及公布问卷结果。图 1中的步骤概括了方案的流程,对应的描述如下:

1*) 问卷工作节点根据Pedersen门限方案,生成各自的(tn)门限签名的公私钥对,根据(nn)门限秘密共享方案,生成同态加密公钥。

2) 用户向各问卷工作节点注册,节点收集用户属性,验证用户身份,决定用户令牌碎片的发放。

3) 用户收集任意t个碎片,组合成用户令牌。

4) 问卷发起方在平台上发起问卷题目与选项,并确定问卷面向用户的属性。

5) 各问卷工作节点根据问卷所列用户属性,为问卷生成包含回应令牌碎片的用户列表分表。

6) 用户收集任意t个碎片,组合成回应令牌。

7) 用户回应问卷,回应包括选择密文、密文健壮性的证明以及拥有用户令牌、回应令牌的证明。

8*) 问卷工作节点验证用户回应中各证明的正确性,通过验证的回应被视为有效。

9) 结束问卷,问卷发起方同态归总有效回应。

10) 问卷工作节点运行安全多方计算,解密回应归总,采用Laplace机制,公布隐私保护的问卷结果。

2.1 本文方案模型

本文方案模型包括5个阶段,分别为初期设置、用户注册、问卷发布、问卷收集及问卷结果公布。以下对各阶段的算法进行形式化定义:

1) Setup(1$ {}^{\lambda } $)→(PK,{Ai}IA)。由问卷工作节点{SWNi}i执行,生成同态加密公钥PK、{SWNi}i的门限签名公钥{Ai}i和对应的分布式公钥A

2) Reg(id,{attrk}ksid)→$ {\sigma }_{\mathrm{U}} $。由用户U与各SWNi交互执行。U以身份id、属性{attrk}k和秘密sid向所有SWNi注册,收集至少t个用户令牌碎片,最后组成用户令牌$ {\sigma }_{\mathrm{U}} $

3) Survey()→(Q,{Mj}j,{Li}i)。由问卷发起方SA和各SWNi执行,SA生成问卷Q和选择{Mj}j,各SWNi生成用户列表分表Li

4) Submit(id,sid,{mj}j$ {\sigma }_{\mathrm{U}} $,{Li}i)→RU。由U执行,算法中U以公钥PK同态加密问卷选择{mj}j,提供密文健壮性的证明。另从{Li}i收集t个回应令牌碎片,组成回应令牌$ {\sigma }_{\mathrm{i}\mathrm{d}} $。再以身份id、秘密sid提供持有用户令牌$ {\sigma }_{\mathrm{U}} $和回应令牌$ {\sigma }_{\mathrm{i}\mathrm{d}} $的证明。最后组合密文和各证明,形成回应RU

5) Announce({xi}I,{RU}U$ \varepsilon $)→{Ojd}jd。由{SWNi}i和SA执行。{SWNi}i确认所有用户回应RU的有效性,SA同态归总所有有效回应中的问卷选择密文。{SWNi}i运行多方安全计算,解密同态归总,为归总加入噪音,输出隐私保护的问卷结果{Ojd}jd

2.2 安全模型

本节构建方案的安全模型,描述在安全模型下本文方案的特性。

1) 问卷工作节点集群只有少数合谋的恶意单位,它们会在各阶段不遵循方案流程并采取各种攻击。虽可在现实中监管节点,但不排除少数节点受攻击者控制。其他多数节点为诚实但好奇的单位,它们遵循方案流程,但好奇流程中的数据密文。方案委托问卷工作节点验证用户回应的有效性,回应为公开可验证的,因此假设节点会正确地验证回应。

2) 问卷发起方是恶意的。为提高问卷参与率及提高问卷结果的显著性,会尝试复制、篡改、抵赖或伪造用户回应。

3) 用户是恶意的。在一些有回应奖励的问卷中,它们会尝试多次提交回应和提交无效回应。

2.2.1 匿名性

匿名性要求用户的回应过程及回应数据不包含用户身份的知识,在此特性下无法关联用户身份与回应。具体而言,若有2名用户分别提交了2个回应,任意拥有多项式时间算力(PPT)的敌手都不能构造出优于猜测的算法来关联身份与回应。参考ANONIZE的匿名性定义,以敌手A和挑战者C间的游戏描述匿名性的要求。游戏中敌手A控制SA和{SWNi}i中少数节点,且可随意虚构新用户提交回应,即A拥有预言机Submit的访问权。唯一限制是对于C所构造的用户id,A不能访问Submit(id,-)。

1) A与{SWNi}i中多数节点执行Setup(1$ {}^{\lambda } $)。C构造身份为id0和id1的用户U0和U1,使U0和U1与{SWNi}i交互执行Reg(idk,-,(sid)k)→($ {\sigma }_{U} $)k

2) A与{SWNi}i中多数节点执行Survey()→(Q,{Mj}j,{Li}i),使得{Li}i中有至少t个U0和U1回应令牌碎片。C生成m0m1,选择挑战b←{0,1},对于k=0和1,执行Submit(idk,(sid)kmkb,{Li}i)→(RU)kb。C未对mkb加密,在无机密性的情况下满足匿名性。

3) A可访问Submit(id,-),但id$ \notin ${id0,id1}。

4) A输出b’←{0,1}。若b’=b,则A胜出。

定义3(匿名性) 方案满足匿名性,当对于任意PPT的敌手A,有$ \left|\mathrm{P}\mathrm{r}\right[A\mathrm{w}\mathrm{i}\mathrm{n}\mathrm{s}]-1/2|\le \mathrm{n}\mathrm{e}\mathrm{g}\mathrm{l}\left(\lambda \right) $,其中,negl为可忽略函数,$ \lambda $为安全参数。

2.2.2 验证性

验证性要求只有在用户列表分表中有至少t个回应令牌碎片的用户才可能提交有效回应,也要求每个回应对用户的唯一性,即在匿名性的情况下仍可检测到用户提交多个回应。以下以游戏定义验证性,游戏中敌手A控制SA和{SWNi}i中少数节点。

1) A与{SWNi}i中多数节点执行Setup(1$ {}^{\lambda } $)。C选择用户属性attr。

2) A可以访问预言机Reg(id,attr,sid)→$ {\sigma }_{\mathrm{U}} $来注册拥有属性attr的用户不多于p($ \lambda $)次,其中p为多项式函数。A可以访问预言机Reg(id,{attrk}ksid) →$ {\sigma }_{\mathrm{U}} $不多于p($ \lambda $)次,其中attr$ \notin ${attrk}k

3) A与{SWNi}i中多数节点执行Survey()→(Q,{Mj}j,{Li}i),其中多数节点的Li包含U的回应令牌碎片当且仅当U拥有属性attr。

4) A可输出RU←Submit (id,sid,{mj}j$ {\sigma }_{\mathrm{U}} $,{Li}i) 不多于2p($ \lambda $)次。

5) C验证所有回应{RU}U。设R为所有有效回应,L为某多数节点的Li。若|R| > |L|,则A胜出。

定义4(验证性)  方案满足验证性,对于任意PPT的敌手A,有$ \mathrm{P}\mathrm{r}\left[\mathrm{A}\mathrm{ }\mathrm{w}\mathrm{i}\mathrm{n}\mathrm{s}\right]\le \mathrm{n}\mathrm{e}\mathrm{g}\mathrm{l}\left(\lambda \right) $

2.2.3 机密性

机密性要求用户的回应过程及回应数据不包含问卷选择明文的知识,在此特性下无法得知回应的问卷选择。回应发布在公开平台上,若不能保密回应的选择,即使满足匿名性,也难以抵抗统计手段的反匿名攻击,因此机密性在方案中尤其重要。

机密性的定义类似于匿名性,区别在于C只控制一个用户U0,只执行Submit(id0,(sid)0mb$ {\sigma }_{\mathrm{U}} $,{Li}i)→(RU)b一次,但对mb加密。设该游戏为Game’。

定义5(机密性) 方案满足机密性,任意PPT的敌手A在Game’中胜出的概率小于1/2 + negl($ \lambda $)。

2.2.4 隐私保护

隐私保护保证问卷回应的归总满足$ \varepsilon $-差分隐私。方案在安全多方计算协议中为归总加入噪音,为此给出符合场景的f-隐私[22]定义。

定义6(f-隐私) 给定任意一个计算函数f的安全多方计算协议Π,假设协议Π共有s个计算方,在其中有不多于s-1个恶意计算方时,函数f的计算满足f-隐私,当存在一个以协议的公共参数P、恶意方集合I、能查询恶意方的预言机O与函数输出y=f (s1s2,…,sn)作为输入的模拟器SI,且该模拟器可模拟协议中恶意方的计算的过程,使得模拟过程的分布与真正在协议中计算过程的分布不可区分,即{SI(PIOy)}≡{$ \mathrm{V}\mathrm{I}\mathrm{E}{\mathrm{W}}_{\mathrm{\Pi }} $(I)}。

下文给出符合多工作节点场景下的不可区分性的$ \varepsilon $-分布式差分隐私($ \varepsilon $-IND-DDP)定义[9, 22]

定义7($ \varepsilon $-IND-DDP) 假设VΠ为协议Π所有可能的过程的集合。涉及多数恶意计算方I的模型下的协议Π所执行的函数f满足$ \varepsilon $-IND-DDP,对于任意相邻数据集D1D2,以及任意过程VVΠ,有$ \mathrm{P}\mathrm{r}[\mathrm{V}\mathrm{I}\mathrm{E}{\mathrm{W}}_{\mathrm{\Pi }\left({D}_{1}\right)} $ $ \left(I\right)\in V]\le {\mathrm{e}}^{\varepsilon }\mathrm{P}\mathrm{r}[\mathrm{V}\mathrm{I}\mathrm{E}{\mathrm{W}}_{\mathrm{\Pi }\left({D}_{2}\right)}\left(I\right)\in V]+\mathrm{n}\mathrm{e}\mathrm{g}\mathrm{l}(\lambda ) $

3 方案设计

设安全参数为$ \lambda $。假设共有n个问卷工作节点{SWNi}i。方案为少数合谋模型,设定门限为t=n/2+1,采用SPDZ安全多方计算协议。根据Elgamal同态加密方案,采用PS数字签名方案。PS数字签名方案包含以下3个算法:

1) Keygen():生成密钥sk=(xy)$ {\in }_{R}{\mathbb{Z}}_{p}^{2} $与公钥pk=(XY)=($ {g}_{2}^{x}, {g}_{2}^{y} $),其中g2$ \in $G2

2) Sign(sk,m):生成$ \sigma $←(hhx+ym),其中h$ {\in }_{R} $G1

3) Verfpk($ \sigma $m):检查$ e({\sigma }_{1}, X{Y}^{m})\stackrel{?}{=}e({\sigma }_{2}, {g}_{2}) $

3.1 初期设置阶段

Setup(1$ {}^{\lambda } $)→(PK,{Ai}IA):

1) 选择长度为$ \lambda $的素数p$ {\mathbb{Z}}_{p} $上的椭圆曲线EE上一点P。选择3个阶为素数p的乘法循环群G1G2GT,和1个双线性映射eG1×G2GT。设g1为群G1的生成元,g2G2的生成元。选择1个哈希函数H:{0,1}*→$ {\mathbb{Z}}_{p} $和1个Dodis-Yampolskiy伪随机函数PRF[23],该PRF的形式为Fs$ {\mathbb{Z}}_{p} $GTv$ \mapsto $e(g1g2)1/(v+s),所有选择皆被公开。

2) {SWNi}i共同选择一个非公开的哈希函数Hs:{0,1}*→$ {\mathbb{Z}}_{p} $。随机生成(t-1)阶的多项式函数pixpiypiz,向SWNj分享pix(H($ \mathrm{S}\mathrm{W}{\mathrm{N}}_{j} $))、piy(H($ \mathrm{S}\mathrm{W}{\mathrm{N}}_{j} $))和piz(H($ \mathrm{S}\mathrm{W}{\mathrm{N}}_{j} $))。SWNi收到分享后计算秘密$ {\alpha }_{i, x}=\sum\limits_{j=1}^{n}{p}_{j, x}\left(H\left(\mathrm{S}\mathrm{W}{\mathrm{N}}_{i}\right)\right) $$ {\alpha }_{i, y}=\sum\limits_{j=1}^{n}{p}_{j, y}\left(H\left(\mathrm{S}\mathrm{W}{\mathrm{N}}_{i}\right)\right) $$ {\alpha }_{i, z}=\sum\limits_{j=1}^{n}{p}_{j, z}\left(H\left(\mathrm{S}\mathrm{W}{\mathrm{N}}_{i}\right)\right) $,生成(tn)门限签名公钥Ai=(AiXAiYAi,Z)=($ {g}_{2}^{{\alpha }_{i, x}}, {g}_{2}^{{\alpha }_{i, y}}, {g}_{2}^{{\alpha }_{i, z}} $)。{Ai}i对应的分布式私钥为($ {\alpha }_{x} $$ {\alpha }_{y} $$ {\alpha }_{z} $)=$ \left(\sum\limits_{j=1}^{n}{p}_{j, x}\left(0\right)\right. $$ \sum\limits_{j=1}^{n}{p}_{j, y}\left(0\right) $$ \left.\sum\limits_{j=1}^{n}{p}_{j, z}\left(0\right)\right) $,分布式公钥为A=(AXAYAZ) =($ {g}_{2}^{{\alpha }_{x}} $$ {g}_{2}^{{\alpha }_{y}} $$ {g}_{2}^{{\alpha }_{z}} $)=$ \left({g}_{2}^{\sum\limits_{\begin{array}{l}i\in I\\ \left|I\right|=t\end{array}}{\alpha }_{i, x}{\varPsi }_{i}}, {g}_{2}^{\sum\limits_{\begin{array}{l}i\in I\\ \left|I\right|=t\end{array}}{\alpha }_{i, y}{\varPsi }_{i}}, {g}_{2}^{\sum\limits_{\begin{array}{l}i\in I\\ \left|I\right|=t\end{array}}{\alpha }_{i, z}{\varPsi }_{i}}\right) $=$ \left(\prod\limits _{i\in I, \left|I\right|=t}{A}_{i, X}^{{\varPsi }_{i}}\right. $$ \prod\limits _{i\in I, \left|I\right|=t}{A}_{i, Y}^{{\varPsi }_{i}} $$ \left.\prod\limits _{i\in I, \left|I\right|=t}{A}_{i, Z}^{{\varPsi }_{i}}\right) $,其中,$ {\varPsi }_{i}=\prod\limits _{j\in I, j\ne i}\frac{H\left(\mathrm{S}\mathrm{W}{\mathrm{N}}_{j}\right)}{H\left(\mathrm{S}\mathrm{W}{\mathrm{N}}_{j}\right)-H\left(\mathrm{S}\mathrm{W}{\mathrm{N}}_{i}\right)} $

3) {SWNi}i以SMPC运行算法1,生成并公布同态加密公钥PK,且秘密共享私钥SK。

算法1公私钥生成算法

输出 公钥PK

1.generate a secret x$ {\in }_{\mathrm{R}}{\mathbb{Z}}_{p} $

2.set (PK,SK)=(xP,x);

3.generate secrets x1,x2,…,xs$ {\in }_{\mathrm{R}}{\mathbb{Z}}_{p} $,that subject to x1+x2+…+xs=x;

4.distribute xi to server i;

3.2 用户注册阶段

Reg(id,{attrk}ksid)→$ {\sigma }_{\mathrm{U}} $

1) 身份为id的用户U向各SWNi分别进行注册。SWNi向U进行身份确认,录入用户身份与属性{id,{attrk}k}。同时,U生成秘密sid$ {\in }_{R}{\mathbb{Z}}_{p} $并计算T=$ {g}_{1}^{{s}_{\mathrm{i}\mathrm{d}}} $,然后生成零知识证明$ {\pi }_{\mathrm{s}\mathrm{i}\mathrm{d}} $来证明:

$ \mathrm{Z}\mathrm{K}\left\{\left({s}_{\mathrm{i}\mathrm{d}}\right):T={g}_{1}^{{s}_{\mathrm{i}\mathrm{d}}}\right\} $

U选择k$ {\in }_{R}{\mathbb{Z}}_{p} $,计算K=$ {g}_{1}^{k} $z=k+H(T||K)$ \cdot $sid,并使$ {\pi }_{\mathrm{s}\mathrm{i}\mathrm{d}} $=(Kz)。U向每个SWNi发送(id,T$ {\pi }_{\mathrm{s}\mathrm{i}\mathrm{d}} $)。

2) 各SWNi先检查$ K\stackrel{?}{=}{T}^{-H\left(T\left|\right|K\right)}{g}_{1}^{z} $以确定$ {\pi }_{\mathrm{s}\mathrm{i}\mathrm{d}} $的正确性,然后SWNi生成并向U发送用户令牌碎片$ {\sigma }_{i, \mathrm{U}}=({\sigma }_{i, \mathrm{U}, 1}, {\sigma }_{i, \mathrm{U}, 2})=({g}_{{}_{1}}^{r}, ({g}_{{}^{1}}^{{\alpha }_{i, x}+{\alpha }_{i, y}\cdot \mathrm{i}\mathrm{d}}{T}^{{\alpha }_{i, z}}{)}^{r}) $,其中r=Hs(id)。

3) U检查$ e({\sigma }_{i, U, 1}, {A}_{i, X}{A}_{i, Y}^{\mathrm{i}\mathrm{d}}{A}_{i, Z}^{{s}_{\mathrm{i}\mathrm{d}}})\stackrel{?}{=}e({\sigma }_{i, \mathrm{U}, 2}, {g}_{2}) $以确定用户令牌碎片$ {\sigma }_{i, \mathrm{U}} $的正确性。U注册成功当且仅当U收集到至少t个碎片$ {\sigma }_{i, \mathrm{U}} $,此时U可组合出用户令牌$ {\sigma }_{\mathrm{U}} $=$ ({\sigma }_{\mathrm{U}, 1}, {\sigma }_{\mathrm{U}, 2}) $=$ ({g}_{{}_{1}}^{r}, ({g}_{{}^{1}}^{{\alpha }_{x}+{\alpha }_{y}\cdot \mathrm{i}\mathrm{d}+{\alpha }_{z}\cdot {s}_{\mathrm{i}\mathrm{d}}}{)}^{r}) $=$ \left({\sigma }_{i\text{'}, \mathrm{U}, 1}, \prod\limits _{i\in I, \left|I\right|=t}{\sigma }_{i, \mathrm{U}, 2}^{{\varPsi }_{i}}\right) $,其中$ i\mathrm{\text{'}}{\in }_{R}I $

3.3 问卷发布阶段

Survey()→(Q,{Mj}j,{Li}i):

1) 问卷发起方SA确定问卷$ Q\in {\mathbb{Z}}_{p} $,题目{Qj}j和选项{Mj}j,其中Mj={0,1}$ {}^{{d}_{j}} $dj为题j的选项个数,一个有效的选择mj$ \in $Mj需满足||mj||1=1。然后SA确定问卷面向用户的属性Q.attr = {attrq}q

2) 各SWNi根据Q.attr和记录的{id,{attrk}k},生成包含回应令牌碎片的用户列表分表$ {L}_{i}={\left\{{\sigma }_{i, \mathrm{i}\mathrm{d}}=({\sigma }_{i, \mathrm{i}\mathrm{d}, 1}, {\sigma }_{i, \mathrm{i}\mathrm{d}, 2})=(h, {h}^{{\alpha }_{i, x}+{\alpha }_{i, y}\cdot Q+{\alpha }_{i, z}\cdot \mathrm{i}\mathrm{d})})\right\}}_{\mathrm{i}\mathrm{d}} $,其中h=$ {g}_{1}^{{H}_{s}\left(Q\left|\right|\mathrm{i}\mathrm{d}\right)} $

3.4 问卷收集阶段

Submit(id,sid,{mj}j$ {\sigma }_{\mathrm{U}} $,{Li}i)→RU

1) 用户U遍历各分表Li中每项回应令牌碎片$ {\sigma }_{i, \mathrm{i}\mathrm{d}\mathrm{‘}} $,检查$ e({\sigma }_{i, \mathrm{i}\mathrm{d}\mathrm{‘}, 1}, {A}_{i, X}{A}_{i, Y}^{Q}{A}_{i, Z}^{\mathrm{i}\mathrm{d}})\stackrel{?}{=}e({\sigma }_{i, \mathrm{i}\mathrm{d}\text{'}, 2}, {g}_{2}) $。若检查成功,则该碎片可被用户U收集,U能够回应问卷当且仅当U收集到至少t个碎片$ {\sigma }_{i, \mathrm{i}\mathrm{d}} $,U组合出回应令牌$ {\sigma }_{\mathrm{i}\mathrm{d}} $=($ {\sigma }_{\mathrm{i}\mathrm{d}, 1}, {\sigma }_{\mathrm{i}\mathrm{d}, 2} $)=(h$ {h}^{{\alpha }_{x}+{\alpha }_{y}\cdot Q+{\alpha }_{z}\cdot \mathrm{i}\mathrm{d}} $)=$ \left({\sigma }_{i\text{'}, \mathrm{i}\mathrm{d}, 1}, \prod\limits _{\begin{array}{l}i\in I\\ \left|I\right|=t\end{array}}{\sigma }_{i, \mathrm{i}\mathrm{d}, 2}^{{\varPsi }_{i}}\right) $,其中$ i\text{'}{\in }_{R}I $

2) 拥有回应令牌的用户U选择{mj}j,然后以PK进行加密后得到{EU,jd}jd,其中,mj$ \in $MjEU,jd=(Ejd,1Ejd,2)=(mjd+rjdPPKrjdP),且rjd$ {\in }_{R}{\mathbb{Z}}_{p} $。然后生成零知识证明$ {\pi }_{m} $来证明:

$ \mathrm{Z}\mathrm{K}\left\{\begin{array}{l}\left(\right\{{m}_{j, d}, {r}_{j, d}{\}}_{j, d}):{\wedge }_{j}\{{\wedge }_{d}[{E}_{j, d, 1}={m}_{j, d}P+\\ {r}_{j, d}\mathrm{P}\mathrm{K}\wedge {E}_{j, d, 2}={r}_{j, d}P]\wedge \sum\limits_{d}{m}_{j, d}=1\}\end{array}\right\} $

另外计算$ C={F}_{{s}_{\mathrm{i}\mathrm{d}}}\left(Q\right)=e({g}_{1}, {g}_{2}{)}^{1/(Q+{s}_{id})} $,生成零知识证明$ {\pi }_{\mathrm{i}\mathrm{d}} $来证明:

$ \mathrm{Z}\mathrm{K}\left\{\begin{array}{l}(\mathrm{i}\mathrm{d}, {s}_{\mathrm{i}\mathrm{d}}, {\sigma }_{\mathrm{U}}, {\sigma }_{\mathrm{i}\mathrm{d}})\mathrm{ }:C=e({g}_{1}, {g}_{2}{)}^{1/(Q+{s}_{\mathrm{i}\mathrm{d}})}\wedge \\ \mathrm{V}\mathrm{e}\mathrm{r}\mathrm{f}A({\sigma }_{\mathrm{i}\mathrm{d}}, Q, \mathrm{i}\mathrm{d})=1\wedge \mathrm{V}\mathrm{e}\mathrm{r}\mathrm{f}A({\sigma }_{\mathrm{U}}, \mathrm{i}\mathrm{d}, {s}_{\mathrm{i}\mathrm{d}})=1\end{array}\right\} $

U公布回应RU=({EU,jd}jd$ {\pi }_{m} $$ {\pi }_{\mathrm{i}\mathrm{d}} $,C)。

3.5 问卷结果公布阶段

Announce({xi}I,{RU}U$ \varepsilon $)→{Ojd}jd

1) 各SWNi确认所有回应RU= ({EU,jd}jd$ {\pi }_{m} $$ {\pi }_{\mathrm{i}\mathrm{d}} $,C)中的C都不相同,然后检查$ {\pi }_{m} $$ {\pi }_{\mathrm{i}\mathrm{d}} $的正确性以确定回应的有效性。具体而言,对于证明$ {\pi }_{m} $=({$ {\pi }_{m, j} $}j),$ {\pi }_{m, j} $=({Kjd,1}d,{Kjd,2}dKj,{zjd,1}d,{zjd,2}d),其中对于每个jd,有:

$ K_{j, d, 1}=k_{j, d, 2} P+k_{j, d, 1} \mathrm{PK}, K_{j, d, 2}=k_{j, d, 1} P \\ K_{j}=\left(\sum\limits_{d} k_{j, d, 2}\right) P \\ c_{j}=H\left(\left\{E_{j, d, 1}\right\}_{d}\left\|\left\{E_{j, d, 2}\right\}_{d}\right\|\left\{K_{j, d, 1}\right\}_{d}\left\|\left\{K_{j, d, 2}\right\}_{d}\right\| K_{j}\right) \\ z_{j, d, 1}=k_{j, d, 1}+c_{j} \cdot r_{j, d}, z_{j, d, 2}=k_{j, d, 2}+c_{j} \cdot m_{j, d} $

其中,kjd,1kjd,2$ {\in }_{R}{\mathbb{Z}}_{p} $。对于每个j,各SWNi首先以$ {\pi }_{m, j} $计算cj,然后检查Kj$ \stackrel{?}{=}\left(\sum\limits_{d}{z}_{j, d, 2}\right) $P-cjP;对于每个d,检查Kjd,1$ \stackrel{?}{=} $-cjEjd,1+zjd,2P+zjd,1PK和Kjd,2$ \stackrel{?}{=} $-cjEjd,2+zjd,1P,以确定$ {\pi }_{m} $的正确性。证明$ {\pi }_{\mathrm{i}\mathrm{d}} $

$ {\pi }_{\mathrm{i}\mathrm{d}} $=($ {\sigma }_{\mathrm{U}}^{\text{'}} $$ {\sigma }_{\mathrm{i}\mathrm{d}}^{\text{'}} $K1K2K3z1z2)

其中,$ {\sigma }_{\mathrm{U}}^{\text{'}} $=($ {\sigma }_{{}_{\mathrm{U}, 1}}^{{r}_{1}}, {\sigma }_{{}_{\mathrm{U}, 2}}^{{r}_{1}} $),$ {\sigma }_{\mathrm{i}\mathrm{d}}^{\text{'}} $=($ {\sigma }_{{}_{i\mathrm{d}, 1}}^{{r}_{2}}, {\sigma }_{{}_{\mathrm{i}\mathrm{d}, 2}}^{{r}_{2}} $),K1=e($ {\sigma }_{\mathrm{i}\mathrm{d}, 1}^{\text{'}} $$ {A}_{Z}^{{k}_{1}} $),K2= e($ {\sigma }_{\mathrm{U}, 1}^{\text{'}} $$ {A}_{Y}^{{k}_{1}}{A}_{Z}^{{k}_{2}} $),K3=$ {C}^{{k}_{2}} $c=H($ {\sigma }_{\mathrm{U}}^{\text{'}} $||$ {\sigma }_{\mathrm{i}\mathrm{d}}^{\text{'}} $||K1||K2||K3||C||Q),z1=k1+ c$ \cdot $id,z2=k2+c$ \cdot $sid,且r1r2k1k2$ {\in }_{\mathrm{R}}{\mathbb{Z}}_{p} $

SWNi计算c并检查:

K1$ \stackrel{?}{=} $e($ {\sigma }_{\mathrm{i}\mathrm{d}, 1}^{\text{'}} $$ {A}_{X}{A}_{Y}^{Q} $)c e($ {\sigma }_{\mathrm{i}\mathrm{d}, 2}^{\text{'}} $g2)-c e($ {\sigma }_{\mathrm{i}\mathrm{d}, 1}^{\text{'}} $$ {A}_{Z}^{{z}_{1}} $)

K2$ \stackrel{?}{=} $e($ {\sigma }_{\mathrm{U}, 1}^{\text{'}} $$ {A}_{X} $)c e($ {\sigma }_{\mathrm{U}, 2}^{\text{'}} $g2)-c e($ {\sigma }_{\mathrm{U}, 1}^{\text{'}} $$ {A}_{Y}^{{z}_{1}}{A}_{Z}^{{z}_{2}} $)

K3$ \stackrel{?}{=} $e(g1g2)-cC$ {}^{cQ+{z}_{2}} $

以确定$ {\pi }_{\mathrm{i}\mathrm{d}} $的正确性。

2) SA按用户把所有回应中的选择密文进行同态归总,计算并公布$ {\left\{{E}_{j, d}=\sum\limits_{\mathrm{U}}{E}_{\mathrm{U}, j, d}\right\}}_{j, d} $

3){SWNi}i以SMPC运行算法2,输出并公布隐私保护归总{Ojd}jd

算法2   隐私保护算法

输入  归总密文{Ejd}jd,共享秘密{xi}i

输出  隐私保护归总{Ojd}jd

1.compute x=x1+x2+…+xs

2.for each j:

3.for each d:

4.decrypt Ej,d to get aj,d ←Ei,d,1-x Ei,d,2

5.generate a noise e from Lap($ 1/\varepsilon $)

6.Oj,d ← aj,d + e

4 安全性分析

本节分析方案在匿名性、验证性、机密性及隐私保护方面的安全性,并讨论对合谋攻击的抵御。

4.1 匿名性

定理1   当ZK满足零知识特性,以及伪随机函数满足伪随机特性时,方案满足匿名性。

证明  游戏中对于k$ \in ${0,1},C给与A回应(RU)kb=(mkb,($ {\pi }_{m} $)kb,($ {\pi }_{\mathrm{i}\mathrm{d}} $)kbCkb),其中C未对mkb加密。而A可访问Submit,若A能输出b’使得b’=b,则A胜出。设该游戏为Game0,现考虑新游戏Game1。Game1与Game0的区别在于回应中的($ {\pi }_{m} $)kb,($ {\pi }_{\mathrm{i}\mathrm{d}} $)kb被一模拟器所模拟。ZK的零知识特性保证该模拟器可在无秘密的情况下模拟($ {\pi }_{m} $)kb和($ {\pi }_{\mathrm{i}\mathrm{d}} $)kb,使得模拟器的输出($ {\pi }_{m} $)*、($ {\pi }_{\mathrm{i}\mathrm{d}} $)*与($ {\pi }_{m} $)kb、($ {\pi }_{\mathrm{i}\mathrm{d}} $)kb不可区分。因此,Game1将证明换成($ {\pi }_{m} $)*、($ {\pi }_{\mathrm{i}\mathrm{d}} $)*后,A在游戏中的胜率不会发生不可忽略的变化。现考虑新游戏Game2,Game2与Game1的区别在于以随机函数替代伪随机函数来生成回应中的Ckb。根据伪随机函数的伪随机特性,生成的Ckb与相同长度的随机字符串str*不可区分。因此,Game2将Ckb换成str*后,与Game1相比A的胜率不会发生不可忽略的变化。在Game2中,C给A的回应(RU)kb=(mkb,($ {\pi }_{m} $)*,($ {\pi }_{\mathrm{i}\mathrm{d}} $)*,str*),除mkb外的所有信息都与b无关。因此,A在Game2中没有优于猜测的算法来选择b’使得b’=b。又因为Game2和Game0中A的胜率的差异可被忽略,所以A在Game0中的胜率为1/2+negl($ \lambda $),因此方案满足匿名性。

4.2 验证性

定理2   当ZK满足正确性和知识证明特性,以及门限签名方案满足不可伪造特性时,方案满足验证性。

证明  以$ \mathrm{U}\in L $表示用户U拥有身份id且满足$ \left|\right\{i:{\sigma }_{i, \mathrm{i}\mathrm{d}}\in {L}_{i}\left\}\right|\ge t $。假设存在敌手A*可以不可忽略的概率胜出游戏,代表A*可以不可忽略的概率达成以下至少一个条件,以使得|R| > |L|。

1) A*控制的某名用户U∈L提交了2个回应(RU)k=(({EU,jd}jd)k,($ {\pi }_{m} $)k,($ {\pi }_{\mathrm{i}\mathrm{d}} $)kCk),其中k={0,1},但C0$ \ne $C1。2个回应都通过了对C的验证。

2) A*控制的某名用户U$ \notin $L提交回应RU=({EU,jd}jd$ {\pi }_{m} $$ {\pi }_{\mathrm{i}\mathrm{d}} $C)并通过了对C的验证。

条件1中C0$ \ne $C1,即至少一个Cx是错误的且$ {C}_{x}\ne e({g}_{1}, {g}_{2}{)}^{1/(Q+{s}_{id})} $。但(RU)x通过了验证,即($ {\pi }_{\mathrm{i}\mathrm{d}} $)x被判断为正确。ZK的正确特性保证此情况出现的概率可忽略,所以A*达成条件1的概率可忽略。

条件2中U$ \notin $L但提交的回应RU通过了验证,即$ {\pi }_{\mathrm{i}\mathrm{d}} $被判断为正确。ZK的知识证明特性保证存在一个抽取器,抽取器可以压倒性的概率抽取出$ {\pi }_{\mathrm{i}\mathrm{d}} $的知识,包括身份id、秘密sid和签名$ {\sigma }_{\mathrm{U}}\mathrm{、}{\sigma }_{\mathrm{i}\mathrm{d}} $。但因为U$ \notin $L,即$ \left|\right\{i:{\sigma }_{i, \mathrm{i}\mathrm{d}}\in {L}_{i}\left\}\right|\mathrm{ } <t $,意味着U没有属性attr,且多数非恶意节点没有为U生成碎片,所以A*若要达成条件2,有压倒性的概率需要用户从少于t个碎片中伪造对(Q,id)的门限签名$ {\sigma }_{\mathrm{i}\mathrm{d}} $。根据门限签名方案的不可伪造特性,用户能伪造$ {\sigma }_{\mathrm{i}\mathrm{d}} $的概率可忽略,所以A*达成条件2的概率可忽略。

因为A*可达成条件1或条件2的概率皆可忽略,根据反证法,证明了A*不存在,因此方案满足验证性。

4.3 机密性

定理3   方案满足机密性,当ZK满足零知识特性和加密方案时满足CPA安全。

证明  游戏Game’中C给与A回应(RU0)b=(Eb,($ {\pi }_{m} $)b,($ {\pi }_{\mathrm{i}\mathrm{d}} $)0,(C)0),其中假设问卷问题数j=1且问题选择数d1=1,所以Eb的明文mb的值为0或1,但m0$ \ne $m1。而A可访问Submit,若A能输出b$ \mathrm{\text{'}} $使得b$ \mathrm{\text{'}} $=b,则A胜出。现考虑新游戏Game1’,Game1’与Game’的区别在于回应中($ {\pi }_{m} $)b被模拟器所模拟。ZK的零知识特性保证模拟器输出的($ {\pi }_{m} $)*与($ {\pi }_{m} $)b不可区分。因此,Game1’在将($ {\pi }_{m} $)b换成($ {\pi }_{m} $)*后,A在游戏中的胜率不会发生不可忽略的变化。在Game1’中,C给A的回应(RU0)b=(Eb,($ {\pi }_{m} $)*,($ {\pi }_{\mathrm{i}\mathrm{d}} $)0,(C)0),除Eb外的所有信息都与b无关,即A需要确定Eb的明文为m0还是m1。加密方案的CPA安全特性保证A的胜率不高于1/2+negl($ \lambda $)。又因为Game1’和Game’中A的胜率的差异可被忽略,所以A在Game’中的胜率不高于1/2+negl($ \lambda $),因此方案满足机密性。

4.4 隐私保护

定理4   方案满足$ \mathrm{\varepsilon } $-IND-DDP,安全多方计算协议保证计算的正确性且满足f-隐私。

证明  方案采用的SPDZ安全多方计算协议已被文献[19]证明满足f-隐私,即存在可模拟恶意方计算过程的模拟器,以此保证协议在多数恶意模型下恶意计算方无法获取诚实方的输入。同时,SPDZ协议满足正确性,即若协议正常结束,则协议只能以可忽略的概率输出错误计算结果。所以,正确性保证了协议的正常输出是由Laplace机制在归总上正确地执行后所生成,且f-隐私保证了恶意计算方无法获取有关归总及Laplace噪音的信息。因此,由采用Laplace机制所达成的$ \varepsilon $-差分隐私令协议所执行的函数满足$ \varepsilon $-IND-DDP。

4.5 合谋攻击抵御

合谋攻击抵御有以下2种方法:

1) 反匿名攻击。在ANONIZE中敌手有选择用户的手段,可以绕开匿名性保护,因为定义只要求敌手无法分辨来自2名诚实用户的2个回应。本文方案中敌手无法选择用户,只能表明问卷面向的用户属性,由多数问卷工作节点决策最终用户列表。而即使在极端情况下,问卷列表只包含某一诚实用户与恶意用户的回应令牌,本文方案的机密性保护诚实用户的问卷选择,隐私保护特性保护用户的选择无法从差分隐私归总中被推导出,所以本文方案能够抵御反匿名攻击。

2) 女巫攻击。本文方案中敌手只控制少数工作节点,敌手虚构的用户无法通过多数节点的身份验证,不能得到至少t个用户令牌碎片,因此无法以虚构的用户提交有效回应。

5 性能分析

本节对比分析本文方案与文献[5]、文献[8]及文献[9]方案的性能,然后对本文方案进行仿真实验,各方案的性能对比如表 1所示。

下载CSV 表 1 不同方案的性能对比 Table 1 Performance comparison of different schemes

表 1可以看出,ANONIZE方案的架构是中心化的,只有一个注册机构(RA),且安全模型中所有角色都为恶意单位,所以它无法抵御RA的女巫攻击及SA的反匿名攻击。而本文方案采用去中心化的架构,且问卷工作节点集群的安全模型为少数合谋,以门限签名抵御合谋攻击。ANONIZE方案构成了单点信任的需求。若要信任问卷结果,需假设问卷发起方没有抵赖数据,已过滤无效的数据,及归总数据时没有引入污染。本文方案不需单点信任,防篡改平台可抵抗数据抵赖,节点基于多方安全计算,在解密归总时加入适当的Laplace噪音,保证结果不被污染。PrivaDA和Prio是去中心化的,同样不需要单点信任。Prio在归总过程中未加入Laplace噪音,隐私保护程度低。PrivaDA未考虑数据健壮性的验证,无法抵抗数据污染。Prio的SNIP协议需要向每个工作节点发送秘密共享证明,证明总长度为O(nd),其中,n为节点数量,d为输入长度。本文方案只需上传长度为O(d)的NIZK至公开平台以供验证。PrivaDA和Prio中用户与节点秘密共享数据,需假设节点不会拒收碎片,本文方案中防篡改平台保证用户数据不被抵赖。

仿真实验使用了AWS上类型为t2-large的EC2机器,配置为3.0 GHz的Intel CPU处理器和8 GB的内存,环境为64位的Ubuntu 16.04。实验使用C语言v0.5.14版本的PBC库进行方案各阶段的双线性密码运算,同时使用支持SPDZ安全多方计算协议的SCALE-MAMBA库进行算法部分(算法1和算法2)的运算。

实验模拟方案有N=100个用户与n=3个问卷工作节点的场景,其中签名的门限为t=2,问卷的题目数为Q=10,题目的选择数为D=4,差分隐私参数$ \varepsilon $=1。表 2为对方案各阶段运算100次的平均计算时间开销和数据存储开销。可以看出,以SMPC运行的算法部分时间开销较其他阶段高,其中运行算法1前需进入SMPC时间开销最高的预处理阶段,生成随机参数,以供算法1和算法2的线上运行阶段使用。SMPC的运算不需用户参与,因此对实时性的要求不高,实验中算法部分的时间开销为秒至分钟级别,符合实际应用的需求。

下载CSV 表 2 方案各阶段的时间和存储开销 Table 2 Time and storage costs of each stage in the scheme

表 2列出了算法各阶段理论上的计算开销,其中,E表示群上指数运算耗时,P表示双线性配对运算耗时,H表示哈希运算耗时。在问卷发布阶段,假设所有用户都能参与问卷,所以每个节点都生成N个回应令牌碎片。在问卷收集阶段,每个用户需在各个长度为N的令牌碎片列表中找出t个可用的碎片,因此平均需遍历并比对tN/2个碎片。而在问卷结果阶段,节点共同检查回应中的零知识证明,即平均每个节点需处理N/n个回应。实验需检查零知识证明的问卷结果公布阶段耗时较高,但此阶段由节点负责,不影响系统对用户的响应。对实时性要求较高的为用户注册及问卷收集阶段,其中用户注册阶段忽略网络的开销需0.041 7 s,问卷收集阶段主要耗时在找出可用碎片以组成回应令牌,此过程平均需1.575 s,加上构造零知识证明的耗时共需2.18 s,可满足用户使用需求。在存储开销方面,初期设置与问卷结果公布阶段只需少量存储,且与用户数N无关。问卷发布与问卷收集阶段平均对每个用户的存储开销为0.774 KB和27.452 KB,适合于区块链等公开平台上存储的量级。

图 2为问卷发布阶段及问卷收集阶段的时间开销随用户数变化的数据。从图 2可以看出,时间开销随用户数的线性增长较为缓慢,即使在用户数为5 000时的大型问卷中,问卷发布阶段中各节点需33 s完成回应令牌碎片的生成,而用户在问卷收集阶段中需79 s找出可用碎片以生成回应令牌,即用户从问卷发布至确认可以进行问卷回应前的延迟约为2 min,可见方案在大型问卷中具备较好的实用性。

Download:
图 2 多用户场景下主要阶段的时间开销 Fig. 2 Time cost of the main stages in multi-user scenario
6 结束语

本文基于门限签名方案和差分隐私技术,提出一种去中心化的隐私保护的匿名问卷方案。采用同态加密技术为回应加密,将密文上传至公开防篡改平台抵抗数据抵赖,借助安全多方计算技术使差分隐私归总过程安全,并融入零知识证明技术保证方案的正确性。实验结果表明,该方案的时间和存储开销符合实际应用需求,在大型问卷中具有较好的实用性。下一步将研究本文方案在以太坊等区块链平台上部署时需要面对的挑战,包括安全多方计算协议和智能合约的集成问题。

参考文献
[1]
LIU Xiangyu, WANG Bin, YANG Xiaochun. Survey on privacy preserving techniques for publishing social network data[J]. Journal of Software, 2014, 25(3): 576-590. (in Chinese)
刘向宇, 王斌, 杨晓春. 社会网络数据发布隐私保护技术综述[J]. 软件学报, 2014, 25(3): 576-590.
[2]
BLASIUS J, THIESSEN V. Should we trust survey data? Assessing response simplification and data fabrication[J]. Social Science Research, 2015, 52(7): 479-493.
[3]
FINN A, RANCHHOD V. Genuine fakes: the prevalence and implications of data fabrication in a large South African survey[J]. The World Bank Economic Review, 2017, 31(1): 129-157.
[4]
LIU Lu, LI Yuxi, ZHOU Fucai. Anonymous survey system based on NIZK[J]. Chinese Journal of Network and Information Security, 2016, 2(12): 39-46. (in Chinese)
柳璐, 李宇溪, 周福才. 基于非交互零知识证明的匿名电子调查系统[J]. 网络与信息安全学报, 2016, 2(12): 39-46.
[5]
HOHENBERGER S, MYERS S, PASS R. ANONIZE: a large-scale anonymous survey system[C]//Proceedings of IEEE Conference on Security and Privacy. San Jose, USA: IEEE Press, 2014: 375-389.
[6]
NARAYANAN A, SHMATIKOV V. Robust de-anonymiza-tion of large sparse datasets[C]//Proceedings of IEEE Conference on Security and Privacy. Washington D.C., USA: IEEE Press, 2008: 111-125.
[7]
DANEZIS G, FOURNET C, KOHLWEISS M, et al. Smart meter aggregation via secret-sharing[C]//Proceedings of the 1st ACM Workshop on Smart Energy Grid Security. New York, USA: ACM Press, 2013: 75-80.
[8]
CORRIGAN-GIBBS H, BONEH D. PRIO: private, robust, and scalable computation of aggregate statistics[C]//Proceedings of the 14th USENIX Conference on Networked Systems Design and Implementation. Boston, USA: USENIX, 2017: 259-282.
[9]
EIGNER F, KATE A, MAFFEI M, et al. Differentially private data aggregation with optimal utility[C]//Proceedings of the 30th Annual Computer Security Applications Conference. Washington D.C., USA: IEEE Press, 2014: 316-325.
[10]
CHAN T H, SHI E, SONG D. Privacy-preserving stream aggregation with fault tolerance[C]//Proceedings of the 16th International Conference on Financial Cryptography and Data Security. Berlin, Germany: Springer, 2012: 200-214.
[11]
JAWUREK M, KERSCHBAUM F. Fault-tolerant privacy-preserving statistics[C]//Proceedings of International Conference on Privacy Enhancing Technologies. Berlin, Germany: Springer, 2012: 221-238.
[12]
ELGAMAL T. A public key cryptosystem and a signature scheme based on discrete logarithms[J]. IEEE Transactions on Information Theory, 1985, 31(4): 469-472. DOI:10.1109/TIT.1985.1057074
[13]
KOBLITZ N. Elliptic curve cryptosystems[J]. Mathematics of Computation, 1987, 48(177): 203-209. DOI:10.1090/S0025-5718-1987-0866109-5
[14]
SHAMIR A. How to share a secret[J]. Communications of the ACM, 1979, 22(11): 612-613. DOI:10.1145/359168.359176
[15]
PEDERSEN T P. A threshold cryptosystem without a trusted party[C]//Proceedings of Workshop on the Theory and Application of Cryptographic Techniques. Berlin, Germany: Springer, 1991: 522-526.
[16]
ANDROULAKI E. Privacy-preserving auditable token payments in a permissioned blockchain system[EB/OL]. [2020-07-10]. https://eprint.iacr.org/2019/1058.pdf.
[17]
POINTCHEVAL D, SANDERS O. Reassessing security of randomizable signatures[C]//Proceedings of Cryptographers' Track at the RSA Conference. Berlin, Germany: Springer, 2018: 319-338.
[18]
XIONG Ping, ZHU Tianqing, WANG Xiaofeng. A survey on differential privacy and applications[J]. Chinese Journal of Computers, 2014, 37(1): 101-122. (in Chinese)
熊平, 朱天清, 王晓峰. 差分隐私保护及其应用[J]. 计算机学报, 2014, 37(1): 101-122.
[19]
DAMGÅRD I, PASTRO V, SMART N, et al. Multiparty computation from somewhat homomorphic encryption[C]//Proceedings of Advances in Cryptology-CRYPTOʼ12. Berlin, Germany: Springer, 2012: 643-662.
[20]
FIAT A, SHAMIR A. How to prove yourself: practical solutions to identification and signature problems[C]//Proceedings of Conference on the Theory and Application of Cryptographic Techniques. Berlin, Germany: Springer, 1986: 186-194.
[21]
BUTERIN V. A next-generation smart contract and decentralized application platform[EB/OL]. [2020-07-10]. http://coss.io/documents/white-papers/ethereum.pdf.
[22]
EIGNER F, MAFFEI M. Differential privacy by typing in security protocols[C]//Proceedings of the 26th Computer Security Foundations Conference. Washington D.C., USA: IEEE Press, 2013: 272-286.
[23]
DODIS Y, YAMPOLSKIY A. A verifiable random function with short proofs and keys[C]//Proceedings of International Workshop on Public Key Cryptography. Berlin, Germany: Springer, 2005: 416-431.