一种具有隐私保护的可验证多方k-means联邦学习方法与流程

    专利2022-07-08  130


    本发明属于数据挖掘技术领域,涉及一种具有隐私保护的可验证多方k-means联邦学习方法。



    背景技术:

    随着互联网技术快速发展,数据剧增,大数据分析和机器学习算法被广泛运用到各个领域。其中k-means聚类是数据挖掘中经常使用的方法,通过计算样本和聚类中心的距离,把每个对象分配给距离它最近的聚类中,使得一个聚类中的样本相似度很高。但是在现实的数据挖掘中,往往会涉及到多个领域的数据,数据源之间存在着难以打破的壁垒。在大多数行业中,数据以孤岛形式存在,因此如何在满足数据隐私、安全和监管要求的前提下进行数据分析,具有很大的发展前景,也就是联邦学习。

    当代行业中往往包括多个数据拥有者,例如:企业、银行、机构等,各个数据拥有者拥有一部分数据,并且数据拥有者数据集的用户特征重叠较多,而用户重叠较少,将数据集按照横向(也就是用户维度)划分,并取出用户特征相同而用户不完全相同的那部分数据进行训练(横向联邦学习),最终各个数据拥有者都得到k-means聚类结果。并且,在数据分析过程中,数据拥有者不希望泄露自己的原始数据。

    以往的k-means隐私保护方案,大多存在以下问题:

    ①大多数方案是两方的k-means聚类算法,没有考虑数据分布在多方的情况;

    ②在现有的多方k-means联邦学习中,部分数据拥有者不想再继续共享自己的数据,或者新的数据拥有者希望以共享自身数据为代价加入原有的联邦学习中;

    ③没有考虑数据拥有者增加或者减少自身数据;

    ④没有考虑数据拥有者不希望和自身敌对的数据拥有者共同得到数据分析结果,甚至共享错误信息。



    技术实现要素:

    有鉴于此,本发明的目的在于提供一种具有隐私保护的可验证多方k-means联邦学习方法,本发明利用同态加密和秘密共享保证各方隐私安全,并且支持联邦学习环境下的k-means聚类。除此之外,本发明对基础的秘密共享方案进行改进,改进后的方案支持数据拥有者的动态变化(增加或减少,但是都要保证大于两方),也支持数据拥有者本身的数据动态变化(增加或减少),并且添加验证机制,利用区块链的不可篡改机制,保证辅助验证信息的数据完整性(数据完整性名词是否需要修改),各个数据拥有者可对信息进行验证。

    为达到上述目的,本发明提供如下技术方案:

    一种具有隐私保护的可验证多方k-means联邦学习方法,包括以下步骤:

    s1:每个用户分别加密各自的样本数据,并上传至云服务器;

    s2:云服务器随机选取k个聚类中心;

    s3:云服务器利用安全乘法协议和安全距离计算协议计算用户各个样本与聚类中心的欧几里得距离的平方;

    s4:云服务器对距离密文进行安全位分解;

    s5:云服务器利用安全距离比较协议对每个用户的各个样本进行划分;

    s6:用户计算每个聚类中自己所拥有样本之和和样本数;

    s7:用户计算每个样本的秘密值和辅助验证值,并利用秘密共享协议计算出新的聚类中心,上传至云服务器;

    s8:云服务器计算新的聚类中心和原聚类中心的距离,如果小于阈值,则结束聚类操作,否则,更新聚类中心并进行下一轮迭代;

    s9:用户及用户样本动态变化。

    进一步,所述步骤s1中具体包括以下步骤:

    s11:每个用户生成公钥pkp,skp,其中1≤p≤part,part是用户的个数;

    s12:每个用户随机选取r,计算密文c=gxrnmodn2,其中x是样本明文。

    进一步,步骤s11具体包括:

    s111:每个用户选取两个大素数p,q,并保证gcd(pq,(p-q)(q-1))=1;

    s112:每个用户计算n=pq,λ=(p-1,q-1);

    s113:每个用户随机选取g,并且存在μ=(l(gxmodn2))-1modn,其中l(μ)=(μ-1)/n;

    s114:每个用户的公钥是pk=(n,g),公钥是sk=(λ,μ)。

    进一步,步骤s12具体包括:

    s121:每个用户计算其中其中p表示用户,dp表示第p个用户的样本个数,l表示每个样本的维度数,表示第p个用户的第i个样本的第j个分量;

    s122:每个用户将加密后的cp上传至云服务器。

    进一步,所述步骤s2具体包括以下步骤:

    s21:云服务器随机挑选出k个聚类中心φ={μc|1≤c≤k},其中μc={μc,j|1≤j≤l};

    s22:云服务器分别用各个用户的公钥对聚类中心进行加密,并分别保存为其中其中

    进一步,所述步骤s3包括以下步骤:

    s31:云服务器计算用户p的cp和聚类中心的欧几里得距离的平方,其中1≤p≤part;

    s32:云服务器计算其中1≤i≤dp,1≤c≤k,1≤j≤l;

    s33:云服务器利用计算

    s34:云服务器计算其中1≤i≤dp,1≤c≤k。

    进一步,步骤s33中sm(e(x),e(y))=e(xy)的计算包括:

    s331:云服务器挑选两个不一样的随机数rx,ry∈zn;

    s332:云服务器计算x′=e(x)e(y),y′=e(rx)e(ry);

    s333:云服务器将x′,y′发送给用户p;

    s334:用户p计算hx=d(x′),hy=d(y′),h=hxhymodn,h′=e(h);

    s335:用户p将h′发送给云服务器;

    s336:云服务器计算

    s337:云服务器计算e(xy)=s′e(rxrx)n-1

    进一步,所述步骤s4包括以下步骤:

    s41:云服务器将距离e(dis)分解成dis明文情况下按位加密的结果sbd(e(dis))=<e(dis0),…,e(disw-1)>,其中0≤dis≤2w-1;

    s42:云服务器计算γ=svr(e(dis),<e(dis0),…,e(disw-1)>);

    s43:云服务器收到用户发送的γ,如果γ=1,则返回<e(dis0),…,e(disw-1)>,否则回到s411。

    进一步,步骤s41具体包括:

    s411:云服务器计算l=2-1modn,t=e(dis);

    s412:云服务器计算e(disi)=encrypted_lsb(t,i),其中i=0,1,…,w-1;

    s413:云服务器计算z=t*e(disi)n-1modn2

    s414:云服务器计算t=zlmodn2

    进一步,步骤s412具体包括:

    s4121:云服务器计算y=t*e(r)modn2,其中r是随机数,且r∈zn;

    s4122:云服务将y发送给用户;

    s4123:用户计算y=d(y),如果y是偶数,则α=e(0),否则α=e(1);

    s4124:用户将α发送给云服务器;

    s4125:云服务器计算e(disi),其中如果r是偶数,则e(disi)=α,否则e(disi)=e(1)*αn-1modn2

    s4126:云服务器返回e(disi)。

    进一步,步骤s42具体包括:

    s421:云服务器计算

    s422:云服务器计算v=u*e(dis)n-1modn2

    s423:云服务器计算w=vr′modn2,其中r′随机数,且r′∈zn;

    s424:云服务器将w发送给用户;

    s425:用户计算d(w),如果d(w)=0,则γ=1,否则γ=0;

    s426:用户将γ发送给云服务器。

    进一步,所述步骤s5包括以下步骤:

    s51:云服务器分别计算出中的最小值,其中1≤p≤part,1≤i≤dp,0≤dis≤2w-1;

    s52:云服务器定义其中c=1,2,…,k;

    s53:云服务器定义num=k;

    s54:云服务器定义u=1;

    s55:云服务器定义v=1;

    s56:云服务器判断,如果u=1,则

    否则

    s57:云服务器计算j=j 1,如果则返回s56,否则跳转到s58;

    s58:云服务器计算i=i 1,如果则计算并返回s55,否则跳转到s59;

    s59:云服务器判断每个样本距离哪个聚类中心最近,并把该样本归到这个类中。

    进一步,步骤s56中smin(e(x),e(y))的计算包括:

    s561:云服务器随机选取一个函数f,其中函数f随机使得x>y或者x>y;

    s562:云服务器计算wi,γi,gi,hi,φi,其中1≤i≤w;

    s563:用户计算mj=d(l′j),并且,如果存在mj=1,则α=1,否则α=0,其中1≤j≤w;

    s564:用户计算m′j=γ′j,其中1≤j≤w;

    s565:用户将m′,e(α)发送给云服务器;

    s566:云服务器计算

    s567:云服务器计算如果f:x>y,则e(min(x,y)j)=e(xj)*λj,否则e(min(x,y)j)=e(yj)*λj,其中1≤j≤w。

    进一步,步骤s562具体包括:

    s5621:调用s33步骤计算e(xiyi)=sm(e(xi),e(yi))随机选取一个函数f,其中函数f随机使得x>y或者x>y;

    s5622:云服务器进行判断,如果f:x>y,则计算wi=e(xi)*e(xi*yi)n-1否则wi=e(yi)*e(xi*yi)n-1其中是随机数,且

    s5623:云服务器计算

    s5624:云服务器计算其中h0=e(0),ri是随机数,且ri∈zn;

    s5625:云服务器计算φi=e(-1)*hi;

    s5626:云服务器计算其中r′i是随机数,且r′i∈zn;

    s5627:云服务器计算γ′=π1(γ),l′=π2(l)其中π1,π2是一个置换函数;

    s5628:云服务器将γ′,l′发送给用户。

    进一步,所述步骤s6包括如下步骤:

    s61:云服务器把聚类结果发送给各个用户;

    s62:各个用户计算每个簇中自己所拥有的样本之和ai以及样本数bi,其中i=1,…,k;

    s63:各个用户计算其中cτ表示第τ个簇;

    s64:各个用户计算bτ=|cτ|,其中cτ表示第τ个簇;

    s65:各个用户定义vτs∈(aτ,bτ)。

    进一步,所述步骤s7包括以下步骤:

    s71:随机选取part个随机数{x1,…,xpart}公开;

    s72:每个用户计算每个样本的秘密值和辅助验证值;

    s73:用户利用秘密共享协议计算出新的聚类中心,并上传至云服务器。

    进一步,步骤s72具体包括:

    s721:用户p,随机选取dp个part-1阶多项式:

    其中p=1,2,…,part,j=1,2,…,dp,保存记录多项式的系数;

    s722:用户p计算每个样本对应其他用户的秘密值:

    其中p=1,2,…,part,i=1,2,…,part,且i≠p,j=1,2,…,dp,表示第p个用户的第j个样本;

    s723:用户p计算其中k=0,…,part-1,j=1,2,…,dp,并将上链。

    进一步,步骤s73具体包括:

    s731:用户p将位于cτ中的样本秘密值发送给用户i,其中p=1,2,…,part,τ=1,2,…,k,i=1,2,…,part,且i≠p,j=1,2,…,dp;

    s732:用户p接收其他用户发送的秘密值,并验证如果通过验证则计算并发送给云平台;

    s733:云平台利用拉格朗日插值法恢复出aτ,bτ,并计算新的聚类中心μ′τ,其中τ=1,2,…,k。

    进一步,所述步骤s8包括以下步骤:

    s81:云服务器计算新聚类中心和原聚类中心的差值ε=|μ′τ-μτ|,其中τ=1,2,…,k;

    s82:如果ε≤θ,则结束聚类操作,否则用μ′τ代替μτ,并返回s3,其中τ=1,2,…,k;

    进一步,所述步骤s9包括以下步骤:

    s91:用户动态增加;

    s92:用户动态减少;

    s93:用户样本动态增加;

    s94:用户p减少样本v。

    进一步,步骤s91具体包括:

    s911:增加用户生成一个随机数xpart 1并添加增加标识符广播给其他用户;

    s912:用户part 1随机选择dpart 1个多项式:

    其中j=1,2,…,dpart 1,并且保存多项式的系数;

    s913:用户part 1计算每个样本对应其他用户的秘密值:

    其中p=1,2,…,part 1,i=1,2,…,part,且i≠p,j=1,2,…,dp,表示第part 1个用户的第j个样本;

    s914:用户part 1计算其中k=0,…,part,j=1,2,…,dpart 1,并将上链;

    s915:添加用户与原始用户开始新的k-means聚类算法。

    进一步,步骤s92具体包括:

    s921:减少用户p广播之前生成的随机数xp并添加减少标识符广播给其他用户;

    s922:其他用户删除自身每个样本对应用户p的秘密值其中j=1,2,…,di,i=1,2,…,part,且i≠p;

    s923:剩下的用户开始新的k-means聚类算法。

    进一步,步骤s93具体包括:

    s931:用户p增加新样本

    s932:用户p生成一个新的随机part-1阶多项式:其中需要保存记录多项式的系数;

    s932:用户p计算新样本对应其他用户的秘密值其中i=1,2,…,part;

    s933:用户p计算新样本的辅助验证值其中k=0,…,part-1,j=1,2,…,dp,并将上链;

    s934:用户添加样本后与其他用户开始新的k-means聚类算法。

    进一步,步骤s94具体包括:

    s941:用户删除样本v对应的多项式及秘密值;

    s942:用户添加样本后与其他用户开始新的k-means聚类算法。

    本发明的有益效果在于:

    本发明提出了一种在无可信任第三方并且样本数据水平分布在多用户的环境下,用户在与其他用户完全无联系的情况下共享自身样本数据,保证自身数据隐私安全的情况下实现k-means聚类算法,得到自身数据的聚类划分结果,实现k-means的横向联邦学习。

    本发明中用户扩展为多方,也就是用户不少于三方的情况下进行k-means聚类算法;算法操作中的距离计算和比较不需要用户密钥直接解密出明文,而是在密文状态下进行操作,保证了用户自身的数据隐私安全;利用改进的秘密共享方案实现聚类中心的更新操作,并且增加了验证机制,保证了k-means聚类算法的结果是真实的;提供了用户动态增加减少和用户样本增加减少情况下继续进行k-means聚类算法的功能,使得方案更加具有普适性,能够得到更好的应用。

    本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。

    附图说明

    为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:

    图1为本发明系统模型图;

    图2为本发明方法流程图;

    图3为用户加密并上传数据流程图;

    图4为随机挑选初始聚类中心流程图;

    图5为安全乘法协议;

    图6为安全距离计算协议;

    图7为安全位分解协议;

    图8为安全距离比较协议;

    图9为判断新聚类中心和原聚类中心是否足够相近流程图;

    图10为用户动态变化流程图;

    图11为样本动态变化流程图;

    图12为本发明所述验证机制流程图。

    具体实施方式

    以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

    其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

    本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

    针对现有数据挖掘中存在的数据隐私安全问题,本发明对现有具有隐私保护的数据挖掘算法进行研究,最终提出一种样本数据水平划分情况下的具有隐私保护的多方动态可验证k-means聚类算法,本发明支持样本数据水平分布在不少于三方情况下的,基于云平台的区块链的存储计算外包和安全认证。用户将自身数据加密后上传至云平台,通过云平台、用户、区块链的相互协同,实现在多方联合数据集上的横向联邦学习。

    如图1所示,将多用户横向联邦学习系统用户划分为三个层次。其中层次1是云服务器,与传统使用的云服务器不同的是,该方案中的云服务器出了需要存储用户加密后的样本数据,还要在k-means聚类算法操作过程中与用户进行交互,实现距离计算和比较的功能,减轻用户的存储和计算压力;层次2是拥有样本数据的用户,其中样本数据以水平分布的形式存在于不少于三方的用户上,用户需要对自身样本数据进行加密并上传至云服务器,并在k-means聚类算法操作过程中与云服务器交互实现距离计算和比较的功能,除此之外,还要和除自身之外的其他所有用户交互,利用秘密共享协议进行聚类中心更新;层次3是区块链服务器,用户会生成辅助验证值并上链,利用区块链的不可篡改特性,用于其他用户对收到的信息进行验证。

    本方法中采用了paillier加密,其中paillier加密支持密文加法操作,即具有加同态,它是一个四元组的概率性加密,表示为encpa={kengen,encrypt,decrypt,evaluate}。其中paillier加密方法具有如下性质:

    e(x)e(y)=e(x y),e(x)y=e(xy)。

    本发明提出的具有隐私保护的可验证多方k-means联邦学习方法,如图2所示,包括以下步骤:

    s1:每个用户分别加密各自的样本数据,并上传至云服务器;

    可选地,参见图3,所述步骤s1包括如下步骤:

    s11:每个用户生成公钥pkp,skp,其中1≤p≤part,part是用户的个数,包括:

    s111:每个用户选取两个大素数p,q,并保证gcd(pq,(p-q)(q-1))=1;

    s112:每个用户计算n=pq,λ=(p-1,q-1);

    s113:每个用户随机选取g,并且存在μ=(l(gxmodn2))-1modn,其中l(μ)=(μ-1)/n;

    s114:每个用户的公钥是pk=(n,g),公钥是sk=(λ,μ);

    s12:每个用户随机选取r,计算密文c=gxrnmodn2,其中x是样本明文;

    s121:每个用户计算其中其中p表示用户,dp表示第p个用户的样本个数,l表示每个样本的维度数,表示第p个用户的第i个样本的第j个分量;

    s122:每个用户将加密后的cp上传至云服务器;

    s2:云服务器随机选取k个聚类中心;

    可选地,参见图4,所述步骤s2包括如下步骤:

    s21:云服务器随机挑选出k个聚类中心φ={μc|1≤c≤k},其中μc={μc,j|1≤j≤l};

    s22:云服务器分别用各个用户的公钥对聚类中心进行加密,并别保存为其中其中

    s3:云服务器利用安全乘法协议和安全距离计算协议计算用户各个样本与聚类中心的欧几里得距离的平方;

    可选地,参见图5、图6,所述步骤s3包括如下步骤:

    s31:云服务器计算用户p的cp和聚类中心的欧几里得距离的平方,其中1≤p≤part;

    s32:云服务器计算其中1≤i≤dp,1≤c≤k,1≤j≤l;

    s33:云服务器利用计算其中sm(e(x),e(y))=e(xy)的计算包括:

    s331:云服务器挑选两个不一样的随机数rx,ry∈zn;

    s332:云服务器计算x′=e(x)e(y),y′=e(rx)e(ry);

    s333:云服务器将x′,y′发送给用户p;

    s334:用户p计算hx=d(x′),hy=d(y′),h=hxhymodn,h′=e(h);

    s335:用户p将h′发送给云服务器;

    s336:云服务器计算

    s337:云服务器计算e(xy)=s′e(rxrx)n-1

    s34:云服务器计算其中1≤i≤dp,1≤c≤k;

    s4:云服务器对距离密文进行安全位分解;

    可选地,参见图7,所述步骤s4包括如下步骤:

    s41:云服务器将距离e(dis)分解成dis明文情况下按位加密的结果sbd(e(dis))=<e(dis0),…,e(disw-1)>,其中0≤dis≤2w-1,包括:

    s411:云服务器计算l=2-1modn,t=e(dis);

    s412:云服务器计算e(disi)=encrypted_lsb(t,i),其中i=0,1,…,w-1,包括:

    s4121:云服务器计算y=t*e(r)modn2,其中r是随机数,且r∈zn;

    s4122:云服务将y发送给用户;

    s4123:用户计算y=d(y),如果y是偶数,则α=e(0),否则α=e(1);

    s4124:用户将α发送给云服务器;

    s4125:云服务器计算e(disi),其中如果r是偶数,则e(disi)=α,否则e(disi)=e(1)*αn-1modn2

    s4126:云服务器返回e(disi);

    s413:云服务器计算z=t*e(disi)n-1modn2

    s414:云服务器计算t=zlmodn2

    s42:云服务器计算γ=svr(e(dis),<e(dis0),…,e(disw-1)>),包括:

    s421:云服务器计算

    s422:云服务器计算v=u*e(dis)n-1modn2

    s423:云服务器计算w=vr′modn2,其中r′随机数,且r′∈zn;

    s424:云服务器将w发送给用户;

    s425:用户计算d(w),如果d(w)=0,则γ=1,否则γ=0;

    s426:用户将γ发送给云服务器;

    s43:云服务器收到用户发送的γ,如果γ=1,则返回<e(dis0),…,e(disw-1)>,否则回到s411;

    s5:云服务器利用安全距离比较协议对每个用户的各个样本进行划分;

    可选地,参见图8,所述步骤s5包括如下步骤:

    s51:云服务器分别计算出中的最小值,其中1≤p≤part,1≤i≤dp,0≤dis≤2w-1;

    s52:云服务器定义其中c=1,2,…,k;

    s53:云服务器定义num=k;

    s54:云服务器定义u=1;

    s55:云服务器定义v=1;

    s56:云服务器判断,如果u=1,则否则其中smin(e(x),e(y))的计算包括:

    s561:云服务器随机选取一个函数f,其中函数f随机使得x>y或者x>y;

    s562:云服务器计算wi,γi,gi,hi,φi,其中1≤i≤w,包括:

    s5621:调用s33步骤计算e(xiyi)=sm(e(xi),e(yi))随机选取一个函数f,其中函数f随机使得x>y或者x>y;

    s5622:云服务器进行判断,如果f:x>y,则计算wi=e(xi)*e(xi*yi)n-1否则wi=e(yi)*e(xi*yi)n-1其中是随机数,且

    s5623:云服务器计算

    s5624:云服务器计算其中h0=e(0),ri是随机数,且ri∈zn;

    s5625:云服务器计算φi=e(-1)*hi;

    s5626:云服务器计算其中r′i是随机数,且r′i∈zn;

    s5627:云服务器计算γ′=π1(γ),l′=π2(l)其中π1,π2是一个置换函数;

    s5628:云服务器将γ′,l′发送给用户;

    s563:用户计算mj=d(l′j),并且,如果存在mj=1,则α=1,否则α=0,其中1≤j≤w;

    s564:用户计算m′j=γ′j,其中1≤j≤w;

    s565:用户将m′,e(α)发送给云服务器;

    s566:云服务器计算

    s567:云服务器计算如果f:x>y,则e(min(x,y)j)=e(xj)*λj,否则e(min(x,y)j)=e(yj)*λj,其中1≤j≤w;

    s57:云服务器计算j=j 1,如果则返回s56,否则跳转到s58;

    s58:云服务器计算i=i 1,如果则计算并返回s55,否则跳转到s59;

    s59:云服务器判断每个样本距离哪个聚类中心最近,并把该样本归到这个类中。

    s6:用户计算每个聚类中自己所拥有样本之和和样本数;

    可选地,所述步骤s6包括如下步骤:

    s61:云服务器把聚类结果发送给各个用户;

    s62:各个用户计算每个簇中自己所拥有的样本之和ai以及样本数bi,其中i=1,…,k;

    s63:各个用户计算其中cτ表示第τ个簇;

    s64:各个用户计算bτ=|cτ|,其中cτ表示第τ个簇;

    s65:各个用户定义vτs∈(aτ,bτ);

    s7:用户计算每个样本的秘密值和辅助验证值,并利用秘密共享协议计算出新的聚类中心,上传至云服务器;

    可选地,如图12所示,所述步骤s7包括如下步骤:

    s71:随机选取part个随机数{x1,…,xpart}公开;

    s72:每个用户计算每个样本的秘密值和辅助验证值,包括:

    s721:用户p,随机选取dp个part-1阶多项式:其中p=1,2,…,part,j=1,2,…,dp,需要保存记录多项式的系数;

    s722:用户p计算每个样本对应其他用户的秘密值:其中p=1,2,…,part,i=1,2,…,part,且i≠p,j=1,2,…,dp,表示第p个用户的第j个样本;

    s723:用户p计算其中k=0,…,part-1,j=1,2,…,dp,并将上链;

    s73:用户利用秘密共享协议计算出新的聚类中心,并上传至云服务器,包括:

    s731:用户p将位于cτ中的样本秘密值发送给用户i,其中p=1,2,…,part,τ=1,2,…,k,i=1,2,…,part,且i≠p,j=1,2,…,dp;

    s732:用户p接收其他用户发送的秘密值,并验证如果通过验证则计算并发送给云平台;

    s733:云平台利用拉格朗日插值法恢复出aτ,bτ,并计算新的聚类中心μ′τ,其中τ=1,2,…,k;

    s8:云服务器计算新的聚类中心和原聚类中心的距离,如果小于阈值,则结束聚类操作,否则,更新聚类中心并进行下一轮迭代;

    可选地,参见图9,所述步骤s8包括如下步骤:

    s81:云服务器计算新聚类中心和原聚类中心的差值ε=|μ′τ-μτ|,其中τ=1,2,…,k;

    s82:如果ε≤θ,则结束聚类操作,否则用μ′τ代替μτ,并返回s3,其中τ=1,2,…,k;

    s9:用户及用户样本动态变化;

    可选地,参见图10-11,所述步骤s9包括如下步骤:

    s91:用户动态增加,包括:

    s911:增加用户生成一个随机数xpart 1并添加增加标识符广播给其他用户;

    s912:用户part 1随机选择dpart 1个多项式:其中j=1,2,…,dpart 1,并且保存多项式的系数;

    s913:用户part 1计算每个样本对应其他用户的秘密值:其中p=1,2,…,part 1,i=1,2,…,part,且i≠p,j=1,2,…,dp,表示第part 1个用户的第j个样本;

    s914:用户part 1计算其中k=0,…,part,j=1,2,…,dpart 1,并将上链;

    s915:添加用户与原始用户开始新的k-means聚类算法;

    s92:用户动态减少,包括:

    s921:减少用户p广播之前生成的随机数xp并添加减少标识符广播给其他用户;

    s922:其他用户删除自身每个样本对应用户p的秘密值其中j=1,2,…,di,i=1,2,…,part,且i≠p;

    s923:剩下的用户开始新的k-means聚类算法;

    s93:用户样本动态增加,包括:

    s931:用户p增加新样本

    s932:用户p生成一个新的随机part-1阶多项式:其中需要保存记录多项式的系数;

    s932:用户p计算新样本对应其他用户的秘密值其中i=1,2,…,part;

    s933:用户p计算新样本的辅助验证值其中k=0,…,part-1,j=1,2,…,dp,并将上链;

    s934:用户添加样本后与其他用户开始新的k-means聚类算法;

    s94:用户p减少样本v,包括:

    s941:用户删除样本v对应的多项式及秘密值;

    s942:用户添加样本后与其他用户开始新的k-means聚类算法

    最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。


    技术特征:

    1.一种具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:包括以下步骤:

    s1:每个用户分别加密各自的样本数据,并上传至云服务器;

    s2:云服务器随机选取k个聚类中心;

    s3:云服务器利用安全乘法协议和安全距离计算协议计算用户各个样本与聚类中心的欧几里得距离的平方;

    s4:云服务器对距离密文进行安全位分解;

    s5:云服务器利用安全距离比较协议对每个用户的各个样本进行划分;

    s6:用户计算每个聚类中自己所拥有样本之和和样本数;

    s7:用户计算每个样本的秘密值和辅助验证值,并利用秘密共享协议计算出新的聚类中心,上传至云服务器;

    s8:云服务器计算新的聚类中心和原聚类中心的距离,如果小于阈值,则结束聚类操作,否则,更新聚类中心并进行下一轮迭代;

    s9:用户及用户样本动态变化。

    2.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s1中具体包括以下步骤:

    s11:每个用户生成公钥pkp,skp,其中1≤p≤part,part是用户的个数;具体包括:

    s111:每个用户选取两个大素数p,q,并保证gcd(pq,(p-q)(q-1))=1;

    s112:每个用户计算n=pq,λ=(p-1,q-1);

    s113:每个用户随机选取g,并且存在μ=(l(gxmodn2))-1modn,其中l(μ)=(μ-1)/n;

    s114:每个用户的公钥是pk=(n,g),公钥是sk=(λ,μ);

    s12:每个用户随机选取r,计算密文c=gxrnmodn2,其中x是样本明文;

    具体包括:

    s121:每个用户计算其中其中p表示用户,dp表示第p个用户的样本个数,l表示每个样本的维度数,表示第p个用户的第i个样本的第j个分量;

    s122:每个用户将加密后的cp上传至云服务器。

    3.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s2具体包括以下步骤:

    s21:云服务器随机挑选出k个聚类中心φ={μc|1≤c≤k},其中μc={μc,j|1≤j≤l};

    s22:云服务器分别用各个用户的公钥对聚类中心进行加密,并分别保存为其中其中

    4.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s3包括以下步骤:

    s31:云服务器计算用户p的cp和聚类中心的欧几里得距离的平方,其中1≤p≤part;

    s32:云服务器计算其中1≤i≤dp,1≤c≤k,1≤j≤l;

    s33:云服务器利用计算其中sm(e(x),e(y))=e(xy)的计算包括:

    s331:云服务器挑选两个不一样的随机数rx,ry∈zn;

    s332:云服务器计算x′=e(x)e(y),y′=e(rx)e(ry);

    s333:云服务器将x′,y′发送给用户p;

    s334:用户p计算hx=d(x′),hy=d(y′),h=hxhymodn,h′=e(h);

    s335:用户p将h′发送给云服务器;

    s336:云服务器计算

    s337:云服务器计算e(xy)=s′e(rxrx)n-1

    s34:云服务器计算其中1≤i≤dp,1≤c≤k。

    5.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s4包括以下步骤:

    s41:云服务器将距离e(dis)分解成dis明文情况下按位加密的结果sbd(e(dis))=<(e(dis0),…,e(disw-1)>,其中0≤dis≤2w-1,具体包括:

    s411:云服务器计算l=2-1modn,t=e(dis);

    s412:云服务器计算e(disi)=encrypted_lsb(t,i),其中i=0,1,…,w-1,具体包括:

    s4121:云服务器计算y=t*e(r)modn2,其中r是随机数,且r∈zn;

    s4122:云服务将y发送给用户;

    s4123:用户计算y=d(y),如果y是偶数,则α=e(0),否则α=e(1);

    s4124:用户将α发送给云服务器;

    s4125:云服务器计算e(disi),其中如果r是偶数,则e(disi)=α,否则e(disi)=e(1)*αn-1modn2

    s4126:云服务器返回e(disi);

    s413:云服务器计算z=t*e(disi)n-1modn2

    s414:云服务器计算t=zlmodn2

    s42:云服务器计算γ=svr(e(dis),<e(dis0),…,e(disw-1)>),具体包括:

    s421:云服务器计算

    s422:云服务器计算v=u*e(dis)n-1modn2

    s423:云服务器计算w=vr′modn2,其中r′随机数,且r′∈zn;

    s424:云服务器将w发送给用户;

    s425:用户计算d(w),如果d(w)=0,则γ=1,否则γ=0;

    s426:用户将γ发送给云服务器;

    s43:云服务器收到用户发送的γ,如果γ=1,则返回<e(dis0),…,e(disw-1)>,否则回到s411。

    6.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s5包括以下步骤:

    s51:云服务器分别计算出中的最小值,其中1≤p≤part,1≤i≤dp,0≤dis≤2w-1;

    s52:云服务器定义其中c=1,2,…,k;

    s53:云服务器定义num=k;

    s54:云服务器定义u=1;

    s55:云服务器定义v=1;

    s56:云服务器判断,如果u=1,则

    否则

    其中smin(e(x),e(y))的计算包括:

    s561:云服务器随机选取一个函数f,其中函数f随机使得x>y或者x>y;

    s562:云服务器计算wi,γi,gi,hi,φi,其中1≤i≤w,具体包括:

    s5621:调用s33步骤计算e(xiyi)=sm(e(xi),e(yi))随机选取一个函数f,其中函数f随机使得x>y或者x>y;

    s5622:云服务器进行判断,如果f:x>y,则计算wi=e(xi)*e(xi*yi)n-1否则wi=e(yi)*e(xi*yi)n-1其中是随机数,且

    s5623:云服务器计算

    s5624:云服务器计算其中h0=e(0),ri是随机数,且ri∈zn;

    s5625:云服务器计算φi=e(-1)*hi;

    s5626:云服务器计算其中r′i是随机数,且r′i∈zn;

    s5627:云服务器计算γ′=π1(γ),l′=π2(l)其中π1,π2是一个置换函数;

    s5628:云服务器将γ′,l′发送给用户;

    s563:用户计算mj=d(l′j),并且,如果存在mj=1,则α=1,否则α=0,其中1≤j≤w;

    s564:用户计算m′j=γ′j,其中1≤j≤w;

    s565:用户将m′,e(α)发送给云服务器;

    s566:云服务器计算

    s567:云服务器计算如果f:x>y,则e(min(x,y)j)=e(xj)*λj,否则e(min(x,y)j)=e(yj)*λj,其中1≤j≤w;

    s57:云服务器计算j=j 1,如果则返回s56,否则跳转到s58;

    s58:云服务器计算i=i 1,如果则计算并返回s55,否则跳转到s59;

    s59:云服务器判断每个样本距离哪个聚类中心最近,并把该样本归到这个类中。

    7.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s6包括如下步骤:

    s61:云服务器把聚类结果发送给各个用户;

    s62:各个用户计算每个簇中自己所拥有的样本之和ai以及样本数bi,其中i=1,…,k;

    s63:各个用户计算其中cτ表示第τ个簇;

    s64:各个用户计算bτ=|cτ|,其中cτ表示第τ个簇;

    s65:各个用户定义vτs∈(aτ,bτ)。

    8.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s7包括以下步骤:

    s71:随机选取part个随机数{x1,…,xpart}公开;

    s72:每个用户计算每个样本的秘密值和辅助验证值,具体包括:

    s721:用户p,随机选取dp个part-1阶多项式:

    其中p=1,2,…,part,j=1,2,…,dp,保存记录多项式的系数;

    s722:用户p计算每个样本对应其他用户的秘密值:

    其中p=1,2,…,part,i=1,2,…,part,且i≠p,j=1,2,…,dp,表示第p个用户的第j个样本;

    s723:用户p计算其中k=0,…,part-1,j=1,2,…,dp,并将上链;

    s73:用户利用秘密共享协议计算出新的聚类中心,并上传至云服务器,具体包括:

    s731:用户p将位于cτ中的样本秘密值发送给用户i,其中p=1,2,…,part,τ=1,2,…,k,i=1,2,…,part,且i≠p,j=1,2,…,dp;

    s732:用户p接收其他用户发送的秘密值,并验证如果通过验证则计算并发送给云平台;

    s733:云平台利用拉格朗日插值法恢复出aτ,bτ,并计算新的聚类中心μ′τ,其中τ=1,2,…,k。

    9.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s8包括以下步骤:

    s81:云服务器计算新聚类中心和原聚类中心的差值ε=|μ′τ-μτ|,其中τ=1,2,…,k;

    s82:如果ε≤θ,则结束聚类操作,否则用μ′τ代替μτ,并返回s3,其中τ=1,2,…,k。

    10.根据权利要求1所述的具有隐私保护的可验证多方k-means联邦学习方法,其特征在于:所述步骤s9包括以下步骤:

    s91:用户动态增加,具体包括:

    s911:增加用户生成一个随机数xpart 1并添加增加标识符广播给其他用户;

    s912:用户part 1随机选择dpart 1个多项式:

    其中j=1,2,…,dpart 1,并且保存多项式的系数;

    s913:用户part 1计算每个样本对应其他用户的秘密值:

    其中p=1,2,…,part 1,i=1,2,…,part,且i≠p,j=1,2,…,dp,表示第part 1个用户的第j个样本;

    s914:用户part 1计算其中k=0,…,part,j=1,2,…,dpart 1,并将上链;

    s915:添加用户与原始用户开始新的k-means聚类算法;

    s92:用户动态减少,具体包括:

    s921:减少用户p广播之前生成的随机数xp并添加减少标识符广播给其他用户;

    s922:其他用户删除自身每个样本对应用户p的秘密值fij(xp),其中j=1,2,…,di,i=1,2,…,part,且i≠p;

    s923:剩下的用户开始新的k-means聚类算法;

    s93:用户样本动态增加,具体包括:

    s931:用户p增加新样本

    s932:用户p生成一个新的随机part-1阶多项式:其中需要保存记录多项式的系数;

    s932:用户p计算新样本对应其他用户的秘密值其中i=1,2,…,part;

    s933:用户p计算新样本的辅助验证值其中k=0,…,part-1,j=1,2,…,dp,并将上链;

    s934:用户添加样本后与其他用户开始新的k-means聚类算法;

    s94:用户p减少样本v,具体包括:

    s941:用户删除样本v对应的多项式及秘密值;

    s942:用户添加样本后与其他用户开始新的k-means聚类算法。

    技术总结
    本发明涉及一种具有隐私保护的可验证多方k‑means联邦学习方法,属于数据挖掘技术领域。数据水平分布在多用户上,每个用户将各自的数据加密上传至云服务器;云服务器随机挑选初始聚心,利用安全乘法协议和安全距离计算协议计算数据和初始聚心的欧几里得距离的平方;云服务器利用安全位分解协议和安全比较协议进行距离比较,并对数据进行划分;各用户利用秘密共享协议更新聚类中心,加密后上传至云服务器;云服务器计算新聚类中心和原聚类中心的距离,如果小于阈值,则结束聚类操作,否则更新聚类中心进行下一次迭代。

    技术研发人员:唐飞;侯瑞琦;梁世凯
    受保护的技术使用者:重庆邮电大学
    技术研发日:2020.12.09
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-20872.html

    最新回复(0)