一种基于模分量同态的多用户隐私保护方法与流程

未命名 10-26 阅读:104 评论:0


1.本发明涉及信息安全技术领域,更具体的说是涉及一种基于模分量同态的多用户隐私保护方法。


背景技术:

2.随着信息技术的快速发展,网络空间逐渐成为人类生活中不可或缺的新场域,并且深入到了社会生活的方方面面。人们一方面更加依赖于网络空间另一方面对网络空间中的隐私安全要求也在逐日提高。
3.目前,针对数据隐私保护比较常用的技术是同态加密技术,目前仍在不断地发展中,新的成果、新的应用也在不断的涌现。同态加密相比于传统的加密方法,其特点是可以让人们在加密的数据中进行诸如检索、比较等操作,得出正确的结果,而在整个处理过程中,无需对数据进行解密,即对明文加密后的密文做任意有效的操作等效于在明文下做相同的操作后加密,有性质,其中表示加密。在执行操作的过程中,全部是在密文下运算的,不会产生任何的信息泄露,只有当持有正确密钥的用户才能解密密文,获得计算结果。因此,同态加密技术可以很容易依托拥有大量计算能力的云服务器做外包计算,不仅不会泄露信息还加快了运算速度。
4.现有技术中,已公开中国专利(公开号cn115801224a),公开了一种云计算环境中支持浮点数运算的全同态加密方法,该方法支持浮点数的同态操作,且同态方法中的相关同态操作以单独的模分量操作实现,比基于理想格、环等问题的方法简单明了,效率优于常见的同态加密技术。然而在这种方案下做同态运算,需要保证密文矩阵的每一个元素必须在相同的模基下做运算(加法或者乘法),当每一个用户的私钥不同,插入的真实模分量的位置也必然不同,那么两个密文矩阵中的真实模分量就无法在相同的模基下做同态运算,因此该方案仅支持一对一的加密解密操作,并不适用于多用户的加密保护,从一定程度上限制了全同态加密方法的应用范围。
5.因此如何提供一种适用于多用户的模分量同态加密方法,是本领域技术人员亟需解决的问题。


技术实现要素:

6.有鉴于此,本发明提供了一种基于模分量同态的多用户隐私保护方法,用于实现多用户的模分量同态加密。
7.为了实现上述目的,本发明采用如下技术方案:
8.一种基于模分量同态的多用户隐私保护方法,包括以下步骤:
9.s1、根据多个用户输入的各自用户密钥,生成每个用户对应的秘密密钥、公共密钥和评估密钥;
10.s2、每个用户对明文浮点数进行精度转化,获得每个用户对应的原始信息;
11.s3、根据每个用户对应的秘密密钥将该用户对应的原始信息分裂成真实模分量
集;
12.s4、根据每个用户得到的真实模分量集生成对应的冗余集;
13.s5、将每个用户对应的真实模分量集分别插入生成的对应所述冗余集中,生成对应的密文主体;
14.s6、所有用户基于多方dh密钥交换协议协商一组共同值,并根据所述共同值将每个用户密文主体中的真实模分量旋转到相同的位置,完成密文主体的密文重排;
15.s7、对密文重排后的密文主体进行对齐操作;
16.s8、对对齐操作后密文主体中所有的模分量进行相同的加法和乘法运算,得到每个用户对应的新密文;
17.s9、每个用户根据自己对应的秘密密钥,对对应的新密文进行解密。
18.进一步地,步骤s1包括:
19.根据每个用户输入的对应用户密钥userkeyi随机生成一个位置基wi={w
i1
,w
i2
,
…wij
…win
} ,0≤w
ij
<t;
20.其中,userkeyi表示第i个用户ui的用户秘钥;位置基wi用来插入第i个用户ui的真实模分量;w
ij
为真实模分量所在位置,用于表示第i个用户ui的位置基中第j个分量;t表示一个冗余向量中冗余项的个数;
21.所有用户共同协商获取一个公共的投影基b={b1,b2,

,bn}并公开;其中所述投影基b用于将原始信息分裂,b1,b2,

,bn为b中的元素,且b1,b2,

,bn两两互素,n的大小表示投影基的数量;
22.每个用户生成对应的秘密密钥ski中包含用于做模投影的投影基b和该用户对应的位置基wi;
23.每个用户对应的公共密钥pki为使用对应秘密密钥ski对浮点数1.0进行加密后的密文且包含投影基b;
24.每个用户对应的评估密钥eki包含公共的投影基b。
25.进一步地,步骤s2包括:
26.每个用户将明文浮点数作为输入,四舍五入保留p位小数,然后乘以10
p
转为对应的整数i;
27.整数i乘以一个放大倍数amp再加上一个随机正整数噪声e得到每个用户对应的原始信息pi;其中放大倍数amp≥106;记当前密文的放大倍数的扩张倍数为order,有效精度位数p的扩张倍数为level,密文的order和level初始值均为1;pi表示第i个用户ui对应的原始信息。
28.进一步地,步骤s3包括:
29.每个用户根据对应秘密密钥ski包含的模投影基b将原始信息pi进行分裂,原始信息pi对投影基b中的元素分别进行取模操作,得到真实模分量集合mi={m
i,1
,m
i,2
,m
i,3
,
…mi,n
},其中mi表示第i个用户ui对应的真实模分量集合,mi=i mod bi,i=1,2,

,n。
30.进一步地,每个用户依据真实模分量集合mi={m
i,1
,m
i,2
,m
i,3
,
…mi,n
}元素的值,生成n个分别包含t个冗余项的冗余向量,得到对应的冗余集si={s
i1
,s
i2
,

,s
in
}
t
,si表示第i个用户ui对应的冗余集;
31.其中s
ij
={s
i,1j
,s
i,2j
,

,s
i,tj
},i∈[m],j∈[n],t表示矩阵转置符号。
[0032]
进一步地,步骤s5包括:
[0033]
每个用户将自己对应的真实模分量集mi分别插入对应冗余集si中,根据每个用户的秘密密钥ski中包含的位置基wi,将原始真实模分量集mi中的元素按照位置基wi中元素代表的插入位置,依次代替冗余集si原位置对应的元素,得到该用户对应的密文主体ci,其中,ci表示第i个用户ui得到的密文主体,ci={c
i1
,c
i2
,

,c
in
}
t
,c
ij
={c
i,1j ,c
i,2j ,
…ci,tj
}={s
i,1j
,s
i,2j
,

,s
i,tj
},i=1,2,

n;即用户ui的密文矩阵ci的某一行为真实模分量mi替换掉了冗余向量s
ij
中的位置在第w
ij
的冗余项后的模分量向量。
[0034]
进一步地,步骤s6包括:
[0035]
所有用户通过执行dh密钥交换协议,协商一组共同的值v={v1,v2,

,vn};
[0036]
根据每个用户对应秘密密钥ski中包含的位置基wi和共同值v向云服务器发送旋转命令ratate
i = {w
i1-v1,w
i2-v2,

,w
in-vn},ratatei表示第i个用户ui发送的旋转命令,使得该用户ui密文主体所对应的密文矩阵中的每一行ci均循环左移w
ii-vi位。
[0037]
进一步地,步骤s6中,所有用户通过执行dh密钥交换协议,协商一组共同的值,通过以下步骤获取:
[0038]
将所有用户按照顺序依次排列形成用户序列,在所述用户序列中选择任一用户作为起始用户u1,起始用户u1选取一个素数p以及该素数p的本原根g并分别发送给用户序列中的其他用户;
[0039]
第一轮计算:
[0040]
s611、起始用户u1选取一个秘密随机数a1,a1∈[1,p-1],计算g
a1
发送给用户序列中所述起始用户u1的下一用户u2;
[0041]
s612、用户序列中下一用户u2选取另一个对应的秘密随机数a2,a2∈[1,p-1],计算g
a2
发送给下一用户u2的下一用户u3;
[0042]
s613、重复步骤s612直到用户序列中最后一个用户um选取对应的秘密随机数am,am∈[1,p-1],计算g
am
并发送给起始用户u1;
[0043]
第二轮计算:
[0044]
s621、起始用户u1根据上一轮得到的g
am
和上一轮选取的秘密随机数a1,计算g
am*a1
发送给起始用户u1的下一用户u2;
[0045]
s622、下一用户u2根据上一轮得到的g
a1
和上一轮选取的秘密随机数a2,计算g
a1*a2
发送给下一用户u2的下一用户u3;
[0046]
s623:重复步骤s622直到用户序列中最后一个用户um选取上一轮得到的g
a(m-1)
和上一轮选取的秘密随机数am,计算g
a(m-1)*am
并发送给起始用户u1;
[0047]
m个用户执行m-1轮计算,使得用户序列中每一个用户ui均有m个参数参与计算,令vi′
= g
a1*a2*

*am mod p,v
i = vi′ꢀ
mod t,完成一次dh协商;
[0048]
重复执行n次dh协商,获取m个用户共同的重排向量v={v1,v2,

,vn},重排向量v即为所有用户通过执行dh密钥交换协议,协商得到的一组共同的值。
[0049]
进一步地,步骤s7具体包括:
[0050]
根据重排操作后每个用户密文矩阵的order值和level值进行加法运算对齐;
[0051]
根据重排操作后每个用户密文矩阵的order值和level值进行乘法运算对齐。
[0052]
进一步地,步骤s8具体包括:
[0053]
根据模运算的同态性和评估密匙,将所有用户密文重排和对齐操作后的密文中所有相同空间位置的模分量进行相同的加法和乘法运算,得到新的密文矩阵,所述新的密文矩阵中的每一个元素都是每一个密文重排和对齐操作后的密文通过模运算的同态性产生的,将所述新的密文矩阵做密文重排操作的逆运算,以恢复到投影基b下对应的真实模分量,得到最终密文运算后每个用户对应的新的密文。
[0054]
进一步地,步骤s9具体包括:
[0055]
每个用户ui根据自己对应的秘密密钥ski中包含的真实模分量位置集wi,得到计算后的真实模分量ri={r
a1
,r
a2
,

,r
an
}={z
a,w11
,z
a,w22
,

,z
a,wnn
};
[0056]
根据真模分量ri和对应的模基b利用中国剩余定理解出中间结果t,再对t除以amp
orderz
消除噪声得到t

,t

根据浮点精度level
×
p确定浮点数小数点的位置得到最终结果output=t
′×ꢀ
10
-(level
×
p) 。
[0057]
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于模分量同态的多用户隐私保护方法,具有以下有益效果:
[0058]
(1)本发明能够实现多个用户在云计算环境下实现密文运算,每一个用户都需要根据自身的用户密钥userkeyi生成自己独立与其他人的私密密钥ski,用私钥将自己的真实模分量隐藏在冗余集中产生密文矩阵而不被云服务器窃取信息。
[0059]
(2)为了在不同用户之间实现密文运算,本发明通过用户之间密钥协商获取一个相同的值,进而将不同用户在密文下的真实模分量置换到相同的位置,从而实现多用户密文下的计算,相比于1方加密1方解密的单方密文运算,适用范围更加广泛。
附图说明
[0060]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0061]
图1为本发明实施例提供的方法整体流程示意图。
[0062]
图2为本发明实施例提供的密文重排流程示意图。
具体实施方式
[0063]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064]
本发明实施例公开了一种基于模分量同态的多用户隐私保护方法,如图1所示,整体包含了密钥初始化、明文加密、密文重排、密文计算和密文解密六个部分,具体通过以下步骤实现:
[0065]
s1、根据多个用户输入的各自用户密钥,生成每个用户对应的秘密密钥、公共密钥和评估密钥;
[0066]
s2、每个用户对明文浮点数进行精度转化,获得每个用户对应的原始信息;
[0067]
s3、根据每个用户对应的秘密密钥将该用户对应的原始信息分裂成真实模分量集;
[0068]
s4、根据每个用户得到的真实模分量集生成对应的冗余集;
[0069]
s5、将每个用户对应的真实模分量集分别插入生成的对应所述冗余集中,生成对应的密文主体;
[0070]
s6、所有用户基于多方dh密钥交换协议协商一组共同值,并根据所述共同值将每个用户密文主体中的真实模分量旋转到相同的位置,完成密文主体的密文重排;
[0071]
s7、对密文重排后的密文主体进行对齐操作;
[0072]
s8、对对齐操作后密文主体中所有的模分量进行相同的加法和乘法运算,得到每个用户对应的新密文;
[0073]
s9、每个用户根据自己对应的秘密密钥,对对应的新密文进行解密。
[0074]
下面结合具体实例对上述步骤进行详细说明和解释:
[0075]
(1)根据m个用户中任意用户ui(i∈[m],m表示共m个用户)输入的用户密钥userkeyi随机生成一个位置基wi={w
i1
,w
i2
,
…win
},则m个用户共生成m个完全独立的位置基,每个用户生成的位置基wi用来插入该用户ui的真实模分量,位置基中任意元素w
ij
为真实模分量所在位置,用于表示第i个用户的位置基的第j个分量,且0≤w
ij
<t,t代表一个冗余向量中冗余项的个数,冗余矩阵在步骤(3)中被创建出来;所有用户共同协商获取一个公共的投影基b={b1,b2,

,bn}并公开,具体操作中投影基b可由任意用户随机产生并其他用户知晓并同意,投影基b用于将原始信息分裂,其中bj,j∈[n]为b中的元素且两两互素,n的大小表示投影基的数量;任意用户ui生成的秘密密钥ski包含用于做模投影的投影基b和对应的位置基wi,公共密钥pki为使用秘密密钥ski对浮点数1.0进行加密后的密文且包含投影基b,评估密钥eki包含投影基b。
[0076]
(2)用户ui对浮点数m进行精度转化:浮点数m作为输入,四舍五入保留p位小数,然后乘以10
p
转为整数i,即i=round(m
×
10
p
),其中round(
·
)为四舍五入操作;整数i乘以一个放大倍数amp再加上一个随机正整数噪声e得到用户ui对应的原始信息pi,即pi=i
×
amp+e,其中放大倍数amp≥106;记当前密文的放大倍数的扩张倍数为order,有效精度位数p的扩张倍数为level,密文的order和level初始值均为1。
[0077]
(3)用户ui将对应的原始信息pi分裂成真实模分量集mi:根据秘密密钥ski包含的模投影基集合b将原始信息pi分裂,如(1)所示b={b1,b2,

,bn},其中b1,b2,

,bn为投影基中的元素,原始信息pi对投影基b中的元素分别进行取模操作,得到真实模分量集合mi={m
i,1
,m
i,2
,m
i,3
,
…mi,n
},mi=i mod bi,i=1,2,

,n。
[0078]
(4)用户ui依据对应的真实模分量集mi生成一个冗余集si:依据真实模分量集mi={m
i,1
,m
i,2
,m
i,3
,
…mi,n
}中元素的值,生成n个分别包含t个冗余项的冗余向量,得到冗余集 si={s
i1
,s
i2
,

,s
in
}
t
,其中s
ij
={s
i,1j
,s
i,2j
,

,s
i,tj
},i∈[m],j∈[n],t是矩阵的转置,m表示用户的总量,n表示冗余向量的总数,其数量与投影基的数量相同;冗余向量的每一个分量均为随机生成的,以掩盖真实模分量。
[0079]
(5)生成每个用户的密文主体ci:多个用户中第i个用户ui将自己对应的真实模分量mi分别插入自身对应的冗余集si中,根据秘密密钥中ski包含的位置基wi={w
i1
,w
i2
,
…win
},将原始模分量集mi中的元素按照位置基wi中元素代表的插入位置,依次代替冗余集原
位置对应的元素,得到密文主体ci,ci={c
i1
,c
i2
,

,c
in
}
t
,其中c
ij
={c
i,1j ,c
i,2j ,
…ci,tj
}={s
i,1j
,s
i,2j
,

,s
i,tj
},i=1,2,

n;即用户ui的密文矩阵ci的某一行c
ij
为用户ui的真实模分量mi替换掉了冗余向量s
ij
中的位置在第w
ij
的冗余项后的模分量向量。
[0080]
(6)密文重排:
[0081]
所有用户基于多方dh密钥交换协议协商一组共同值,并根据得到的共同值将每一个用户的密文主体中的真实模分量旋转到相同的位置,完成密文主体的密文重排。
[0082]
下面分别以两个用户和三个用户为例,对密文重排过程进行说明。
[0083]
a.当有两个用户时,如图2所示,密文重排过程如下:
[0084]
首先执行两个用户的dh密钥交换协议如下:alice(用户u1)选取一个素数p以及该素数p的本原根g并发送给bob(用户u2),接下来alice(用户u1)选取一个秘密的随机数a∈[1,p-1],计算ga发送给bob(用户u2),同时bob(用户u2)选取一个秘密的随机数b∈[1,p-1],计算gb发送给alice(用户u1)。bob(用户u2)使用ga计算(ga)b,alice(用户u1)使用gb计算(gb)a,显然(ga)b=(gb)a=g
ab
;令v

= g
ab
,v = v

mod t;如果alice(用户u1)和bob(用户u2)按照上述dh密钥交换步骤协商n个值,并模t,得到的就是共同值v
ab
={v1,v2,

vn}。
[0085]
然后,根据得到的共同值将每一个用户的密文主体中的真实模分量旋转到相同的位置,具体的,alice(用户u1)根据其私钥中的位置基w1={w
11
,w
12
,
…w1n
}和共同值v
ab
向云服务器发送旋转命令rotate1={w
11-v1,w
12-v2,
…w1n-vn}使得其密文矩阵的每一行c
1i
,i∈[n]均循环左移w
1i-vi位。
[0086]
类似地,bob(用户u2)根据其私钥中的位置基w2={w
21
,w
22
,
…w2n
}和共同值v
ab
,向云服务器发送旋转命令rotate2={w
21-v1,w
22-v2,
…w2n-vn}使得其密文矩阵的c
2i
,i∈[n]均循环左移w
2i-vi位。
[0087]
此时双方的密文矩阵中的真实模分量控制在相同的位置,可以执行后续的密文运算;注意,每次密文重排的操作云服务都需要保留,方便再次密文运算时在此基础上进行的旋转操作。
[0088]
b.当有三个用户时,密文重排过程如下:
[0089]
假设用户u1为alice,用户u2是bob,用户u3是eve,他们通过前面步骤分别产生的密文进行密文运算前,完成密文重排步骤:
[0090]
首先三个用户通过执行dh密钥交换协议,协商一组共同的值,共同值用v表示,有v={v1,v2,

vn},共同值v中每个元素为vi用于将其各自拥有的密文c1、c2和c3中的真实模分量置换到相同的位置;这里共同值v是通过dh密钥交换协议得到的,共同值中每个元素用vi表示,i∈[n],n表示密文矩阵的行数,不妨设alice拥有的密文矩阵是c1,bob拥有的密文矩阵是c2,eve拥有的密文矩阵是c3。
[0091]
三个用户执行三方dh密钥交换协议需要执行两轮计算,其过程描述如下:
[0092]
alice(用户u1)选取一个素数p以及该素数p的本原根g并发送给其他两个用户bob(用户u2)和eve(用户u3)。
[0093]
第一轮计算中alice(用户u1)选取一个秘密的随机数a,其中a∈[1,p-1],计算ga发送给bob(用户u2),bob(用户u2)选取一个秘密的随机数b,其中b∈[1,p-1],计算gb发送给eve(用户u3),eve(用户u3)选取一个秘密的随机数c,其中c∈[1,p-1],计算gc发送给alice(用户u1)。
[0094]
第二轮计算中,alice(用户u1)使用gc计算(gc)a发送给bob(用户u2),bob(用户u2)使用ga计算(ga)b发送给eve(用户u3),eve(用户u3)使用gb计算(gb)c发送给alice(用户u1),显然alice(用户u1)通过(gb)c可以计算出g
bca mod p,bob(用户u2)通过(gc)a可以计算出g
cab mod p,eve(用户u3)通过(ga)b可以计算出g
abc mod p,显然g
cba mod p= g
acb mod p= g
bac mod p=g
abc mod p;令v= g
abc
mod p, v

= v mod t,v模t就是把v限制到[0,t-1]里面。
[0095]
然后,根据得到的共同值将每一个用户的密文主体中的真实模分量旋转到相同的位置,对于三个用户来说,如果alice、bob和eve按照上述的三方dh密钥交换步骤协商n个值,并模t,得到的就是三个用户协商获取的共同值v
abc
={v1,v2,

vn}。
[0096]
alice(用户u1)根据其私钥中的位置基w1={w
11
,w
12
,
…w1n
}和共同值v
abc
,向云服务器发送旋转命令rotate1={w
11-v1,w
12-v2,
…w1n-vn}使得其密文矩阵的每一行c
1i
,i∈[n]均循环左移w
1i-vi位。
[0097]
类似地,bob(用户u2)根据其私钥中的位置基w2={w
21
,w
22
,
…w2n
}和共同值v
abc
,向云服务器发送旋转命令rotate2={w
21-v1,w
22-v2,
…w2n-vn}使得其密文矩阵的每一行c
2i
,i∈[n]均循环左移w
2i-vi位。
[0098]
同样的,eve(用户u3)根据其私钥中的位置基w3={w
31
,w
32
,
…w3n
}和共同值v
abc
,向云服务器发送旋转命令rotate3={w
31-v1,w
32-v2,
…w3n-vn}使得其密文矩阵的每一行c
3i
,i∈[n]均循环左移w
3i-vi位。
[0099]
此时以上三方的密文矩阵中的真实模分量被控制在相同的位置,可以执行后续的密文运算;注意,每次密文重排的操作云服务都需要保留,方便再次密文运算时在此基础上进行的旋转操作。
[0100]
(7)加法和乘法运算对齐操作:在进行同态的加法和乘法前对完成重排操作后的运算密文进行对齐,包括放大倍数的对齐和精度的对齐:
[0101]
根据重排操作后运算密文的order值和level值进行加法运算对齐,对于两个用户来讲,不妨设x={x1, x2,

,xn}表示alice(用户u1)重排操作后的密文,y={y1,y2,

,yn}表示bob(用户u2)重排操作后的密文, 评估密钥eki中的投影基b={b1,b2,

,bn},alice(用户u1)消息的有效精度设置为level
x
,密文放大倍数为order
x
,bob(用户u2)消息的有效精度设置为levely,密文放大倍数为ordery;则zi=xi+yi= (xi×
(amp)
|orderx-ordery|
×
(10
p
)
|orderx-ordery|
)+(yi×
(amp)
|orderx-ordery|
×
(10
p
)
|orderx-ordery|
)modbi;i=1,2,

n;计算结果密文z={z1,z2,

,zn}的order值等于alice(用户u1)和bob(用户u2)的order值较大值,结果密文z的level值等于alice(用户u1)和bob(用户u2)的level值的较大值。
[0102]
根据密文x和密文y的order值和level值进行乘法运算对齐,计算结果密文z的order值等于x和y的order值之和,新的密文level值等于x和y的level值之和。
[0103]
对齐操作中加法运算对齐和乘法运算对齐是并列关系,他们之间没有前后的影响,但运算时要满足四则运算和对齐规则。只要对齐后,就可以做任何的运算了,对于三个用户,要执行xa*xb+xc,消息保留了小数点后一位,那么放大倍数就为10,密文重排后,xa的密文和xb的密文乘法运算,然后xc需要放大100倍才可以继续进行计算。最后解密要在计算的结果后除以100。
[0104]
(8)密文同态运算:根据模运算的同态性,即
[0105]

[0106]
和评估密钥ek;云服务器将多个用户密文重排及对齐操作后的密文中所有相同空间位置的模分量进行相同的加法和乘法运算,得到同态运算后新的密文矩阵,新的密文矩阵中的每一个原始都是单独用户密文通过模运算的同态性产生的。
[0107]
对于多个用户,模运算的同态性也同样适用。可以理解为之前一个用户有多个密文矩阵,只不过这些密文的私钥是一个(因为是一个人加密),现在把多个矩阵给每一个用户一个了,显然每一用户私钥不同,密文矩阵里的真实模分量的位置也不一样,因此需要密文重排后才能完成后面的同态运算。
[0108]
以三个用户为例:用户alice(用户u1)、bob(用户u2)和eve(用户u3)的密文重排和对齐操作后的密文x

、y

和z

中所有相同空间位置的模分量进行相同的加法和乘法运算,得到新的密文矩阵z
123
,这里矩阵z
123
中的每一个元素都是三个密文x

、y

和z

通过模运算的同态性产生的;将z
abc
分别做密文重排操作的逆运算,以恢复到投影基b下对应的真实模分量,得到三个用户最终密文运算后的矩阵z1、z2和z3,其中z1={z
11
, z
12
,

,z
1n
}
t
,z
1i
={z
1,1i
, z
1,2i
,

,z
1,tn
};z2={z
21
, z
22
,

,z
2n
}
t
,z
2i
={z
2,1i
, z
2,2i
,

,z
2,tn
};z3={z
31
, z
32
,

,z
3n
}
t
,z
3i
={z
3,1i
, z
3,2i
,

,z
3,tn
}。
[0109]
(9)根据私钥解密:如果alice(用户u1)欲对新的密文z1解密,根据密文z1对应的私钥sk1中包含的真实模分量位置集合w1={w
11
,w
12
,
…w1n
},得到计算后的真实模分量r1={r
11
,r
12
,

,r
1n
}={z
1,w11
,z
1,w22
,

,z
1,wnn
},(这里的计算实质是角标的代入,或者说使用私钥中的n个值把密文z矩阵中n行的第w_1i位置的值取出来,私钥中的每一个数取密文z矩阵对应行向量中的一个数。这样z阵的每一行都取一个数,这个数就是密文计算后的n个真实模分量,其他的值都是冗余值)根据真实模分量r1和对应的模基b并利用中国剩余定理解出中间结果τ,再对τ除以amp
orderz
消除噪声得到τ

,τ

根据浮点精level
×
p确定浮点数小数点的位置得到最终结果output =τ
′×
10-(level
×
p)
;以上就完成了多方加密后的同态运算后任意一方解密的过程。
[0110]
本发明进行密文加密解密的原理是:每一个数据的所有者都可以通过自己的用户密钥产生自己的私有密钥用于保护自己的秘密信息,然后该用户将自己的消息数据进行保留固定精度转换成整数后对一组模基进行模操作,将得到的模分量信息混合到冗余信息中去构成密文并上传至云上;当不同用户之间进行密文下的运算时,首先通过密钥交换协议对密文进行重排使得真实模分量在唯一的公钥下做相同的模运算;由于模运算(加、乘)有同态性,对模分量的操作相当于对原始信息进行操作;根据中国剩余定理实现解密。下面对本发明的发明原理进行进一步说明:
[0111]
一、密钥的生成方式为:
[0112]
1.定义投影基b
[0113]
多个用户定义共同的投影基b,其元素b1,b2,

,bn为投影基b中元素且两两互素,具体公式如下:b={b1,b2,

,bn}。
[0114]
2.定义每个用户冗余向量长度t和模分量位置基wi,具体公式如下:
[0115]
wi={w
i1
,w
i2
,
…win
} ,0≤w
ij
<t 。
[0116]
3.私钥ski包含投影基b,模分量位置基wi;评估密钥eki包含投影基b,根据私钥ski对浮点数1.0加密生成公钥pki,且pki包含b。
[0117]
二、明文浮点数加密:
[0118]
1.每一个用户ui对浮点数m预处理获取对应的原始信息pi,具体可用如下公式表达:
[0119]
pi=i
×
amp+e,记当前密文的放大倍数的扩张倍数为order,有效精度位数p的扩张倍数为level,密文的order和level初始值均为1。
[0120]
2.计算每个用户的真实模分量集mi,具体可用如下公式表达:
[0121]
mi={m
i,1
,m
i,2
,m
i,3
,
…mi,n
},mi=i mod bi,i=1,2,

,n。
[0122]
3.利用每个用户的真实模分量集mi生成对应的冗余集si[0123]
si={s
i1
,s
i2
,

,s
in
}
t
,冗余集中每个元素s
ij
={s
i,1j
,s
i,2j
,

,s
i,tj
},i∈[m],j∈[n]。
[0124]
4.每一个依据自身的位置基将真实模分量集插入冗余集中去得到密文主体:ci={c
i1
,c
i2
,

,c
in
}
t
其中c
ij
={c
i,1j ,c
i,2j ,
…ci,tj
}={s
i,1j
,s
i,2j
,

,s
i,tj
}。
[0125]
三、密文运算,以两个用户alice和bob之间的计算为例
[0126]
1.密文重排
[0127]
(1)alice和bob执行密钥交换协议
[0128]
alice选取一个素数p以及该素数的本原根g并发送给bob,分别取一个秘密的随机数a和b,其中b∈[1,p-1],alice计算ga发送给bob,bob计算gb发送给alice,双方共同计算(ga)b=(gb)a=g
ab

[0129]
计算v
ab
用于密文旋转v
ab
={v1,v2,

vn},其中每个元素vi用以下公式表示:
[0130]
vi=g
aibi mod t。
[0131]
(2)密文旋转
[0132]
以两个用户为例,alice根据其私钥中的位置基和共同值,向云服务器发送旋转命令,alice私钥中的位置基表示为,共同值为v
abc
={v1,v2,

vn},旋转命令。
[0133]
bob也做类似操作完成密文重排。
[0134]
2.密文对齐
[0135]
以两个用户为例,密文对齐操作如下:
[0136][0137]
根据模运算的性质,两个用户alice和bob的密文经过重排和对齐后得到待计算的密文矩阵x和y,x和y的所有模分量进行相同的加法和乘法运算得到密文矩阵z
ab
;将z
ab
分别做密文重排操作的逆运算,以恢复到投影基b下对应的真实模分量,得到最终的密文运算后的矩阵za和zb,具体表达式如下:
[0138]

[0139]

[0140]
四、私钥解密
[0141]
1.对于两个用户如果alice欲对密文za解密,根据私钥的wa得到真实的模分量ra,具体表达式如下:
[0142]

[0143]
2.根据中国剩余定理得到中间结果τ
[0144]
;。
[0145]
3.是bi在中的乘法逆元
[0146]

[0147]
4.计算中间结果τ,具体计算公式如下:
[0148]

[0149]
5.计算τ

具体计算公式如下:
[0150]

[0151]
6. 根据τ

计算最终结果output,具体计算公式如下:
[0152]
output =τ
′×
10-(level
×
p)

[0153]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0154]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种基于模分量同态的多用户隐私保护方法,其特征在于,包括以下步骤:s1、根据多个用户输入的各自用户密钥,生成每个用户对应的秘密密钥、公共密钥和评估密钥;s2、每个用户对明文浮点数进行精度转化,获得每个用户对应的原始信息;s3、根据每个用户对应的秘密密钥将该用户对应的原始信息分裂成真实模分量集;s4、根据每个用户得到的真实模分量集生成对应的冗余集;s5、将每个用户对应的真实模分量集分别插入生成的对应所述冗余集中,生成对应的密文主体;s6、所有用户基于多方dh密钥交换协议协商一组共同值,并根据所述共同值将每个用户密文主体中的真实模分量旋转到相同的位置,完成密文主体的密文重排;s7、对密文重排后的密文主体进行对齐操作;s8、对对齐操作后密文主体中所有的模分量进行相同的加法和乘法运算,得到每个用户对应的新密文;s9、每个用户根据自己对应的秘密密钥,对对应的新密文进行解密。2.根据权利要求1所述的基于模分量同态的多用户隐私保护方法,其特征在于,所述步骤s1包括:根据每个用户输入的对应用户密钥userkey
i
随机生成一个位置基w
i
={w
i1
,w
i2
,

w
ij

w
in
} ,0≤w
ij
<t;其中,userkey
i
表示第i个用户u
i
的用户秘钥;位置基w
i
用来插入第i个用户u
i
的真实模分量;w
ij
为真实模分量所在位置,用于表示第i个用户u
i
的位置基中第j个分量;t表示一个冗余向量中冗余项的个数;所有用户共同协商获取一个公共的投影基b={b1,b2,

,b
n
}并公开;其中所述投影基b用于将原始信息分裂,b1,b2,

,b
n
为b中的元素,且b1,b2,

,b
n
两两互素,n的大小表示投影基的数量;每个用户生成对应的秘密密钥sk
i
中包含用于做模投影的投影基b和该用户对应的位置基w
i
;每个用户对应的公共密钥pk
i
为使用对应秘密密钥sk
i
对浮点数1.0进行加密后的密文且包含投影基b;每个用户对应的评估密钥ek
i
包含公共的投影基b。3.根据权利要求2所述的基于模分量同态的多用户隐私保护方法,其特征在于,所述步骤s2包括:每个用户将明文浮点数作为输入,四舍五入保留p位小数,然后乘以10
p
转为对应的整数i;整数i乘以一个放大倍数amp再加上一个随机正整数噪声e得到每个用户对应的原始信息p
i
;其中放大倍数amp≥106;记当前密文的放大倍数的扩张倍数为order,有效精度位数p的扩张倍数为level,密文的order和level初始值均为1;p
i
表示第i个用户u
i
对应的原始信息。4.根据权利要求3所述的基于模分量同态的多用户隐私保护方法,其特征在于,所述步骤s3包括:
每个用户根据对应秘密密钥sk
i
包含的模投影基b将原始信息p
i
进行分裂,原始信息p
i
对投影基b中的元素分别进行取模操作,得到真实模分量集合m
i
={m
i,1
,m
i,2
,m
i,3
,

m
i,n
},其中m
i
表示第i个用户u
i
对应的真实模分量集合,m
i
=i mod b
i
,i=1,2,

,n。5.根据权利要求4所述的基于模分量同态的多用户隐私保护方法,其特征在于,所述步骤s4包括:每个用户依据真实模分量集合m
i
={m
i,1
,m
i,2
,m
i,3
,

m
i,n
}元素的值,生成n个分别包含t个冗余项的冗余向量,得到对应的冗余集s
i
={s
i1
,s
i2
,

,s
in
}
t
,s
i
表示第i个用户u
i
对应的冗余集;其中s
ij
={s
i,1j
,s
i,2j
,

,s
i,tj
},i∈[m],j∈[n],t表示矩阵转置符号。6.根据权利要求5所述的基于模分量同态的多用户隐私保护方法,其特征在于,所述步骤s5包括:每个用户将自己对应的真实模分量集m
i
分别插入对应冗余集s
i
中,根据每个用户的秘密密钥sk
i
中包含的位置基w
i
,将原始真实模分量集m
i
中的元素按照位置基w
i
中元素代表的插入位置,依次代替冗余集s
i
原位置对应的元素,得到该用户对应的密文主体c
i
,其中,c
i
表示第i个用户u
i
得到的密文主体,c
i
={c
i1
,c
i2
,

,c
in
}
t
,c
ij
={c
i,1j ,c
i,2j ,

c
i,tj
}={s
i,1j
,s
i,2j
,

,s
i,tj
},i=1,2,

n;即用户u
i
的密文矩阵c
i
的某一行为真实模分量m
i
替换掉了冗余向量s
ij
中的位置在第w
ij
的冗余项后的模分量向量。7.根据权利要求6所述的基于模分量同态的多用户隐私保护方法,其特征在于,所述步骤s6包括:所有用户通过执行dh密钥交换协议,协商一组共同的值v={v1,v2,

,v
n
};根据每个用户对应秘密密钥sk
i
中包含的位置基w
i
和共同值v向云服务器发送旋转命令ratate
i = {w
i1-v1,w
i2-v2,

,w
in-v
n
},ratate
i
表示第i个用户u
i
发送的旋转命令,使得该用户u
i
密文主体所对应的密文矩阵中的每一行c
i
均循环左移w
ii-v
i
位。8.根据权利要求7所述的基于模分量同态的多用户隐私保护方法,其特征在于,所有用户通过执行dh密钥交换协议,协商一组共同的值,通过以下步骤获取:将所有用户按照顺序依次排列形成用户序列,在所述用户序列中选择任一用户作为起始用户u1,起始用户u1选取一个素数p以及该素数p的本原根g并分别发送给用户序列中的其他用户;第一轮计算:s611、起始用户u1选取一个秘密随机数a1,a1∈[1,p-1],计算g
a1
发送给用户序列中所述起始用户u1的下一用户u2;s612、用户序列中下一用户u2选取另一个对应的秘密随机数a2,a2∈[1,p-1],计算g
a2
发送给下一用户u2的下一用户u3;s613、重复步骤s612直到用户序列中最后一个用户u
m
选取对应的秘密随机数am,am∈[1,p-1],计算g
am
并发送给起始用户u1;第二轮计算:s621、起始用户u1根据上一轮得到的g
am
和上一轮选取的秘密随机数a1,计算g
am*a1
发送给起始用户u1的下一用户u2;s622、下一用户u2根据上一轮得到的g
a1
和上一轮选取的秘密随机数a2,计算g
a1*a2
发送
给下一用户u2的下一用户u3;s623:重复步骤s622直到用户序列中最后一个用户u
m
选取上一轮得到的g
a(m-1)
和上一轮选取的秘密随机数am,计算g
a(m-1)*am
并发送给起始用户u1;m个用户执行m-1轮计算,使得用户序列中每一个用户u
i
均有m个参数参与计算,令v
i

= g
a1*a2*

*am mod p,v
i = v
i
′ꢀ
mod t,完成一次dh协商;重复执行n次dh协商,获取m个用户共同的重排向量v={v1,v2,

,v
n
},重排向量v即为所有用户通过执行dh密钥交换协议,协商得到的一组共同的值。9.根据权利要求8所述的基于模分量同态的多用户隐私保护方法,其特征在于,步骤s7具体包括:根据重排操作后每个用户密文矩阵的order值和level值进行加法运算对齐;根据重排操作后每个用户密文矩阵的order值和level值进行乘法运算对齐。10.根据权利要求9所述的基于模分量同态的多用户隐私保护方法,其特征在于,步骤s8具体包括:根据模运算的同态性和评估密匙,将所有用户密文重排和对齐操作后的密文中所有相同空间位置的模分量进行相同的加法和乘法运算,得到新的密文矩阵,所述新的密文矩阵中的每一个元素都是每一个密文重排和对齐操作后的密文通过模运算的同态性产生的,将所述新的密文矩阵做密文重排操作的逆运算,以恢复到投影基b下对应的真实模分量,得到最终密文运算后每个用户对应的新的密文。

技术总结
本发明公开了一种基于模分量同态的多用户隐私保护方法,属于信息安全技术领域。包括根据多个用户输入的各自用户密钥,生成各自对应的秘密密钥、公共密钥和评估密钥;根据明文浮点数精度转化得到原始信息;根据各自秘密密钥将原始信息分裂成真实模分量集;根据真实模分量集生成对应的冗余集;将真实模分量集分别插入冗余集中,生成密文主体;根据多方DH密钥交换协议协商得到的共同值进行密文重排;进行对齐操作;对密文重排和对齐操作后的密文中所有的模分量进行相同的加法和乘法运算,得到新的密文矩阵;并对新的密文矩阵进行解密。本发明能够用于多方模分量同态隐私加密,具有更广泛的适用性。泛的适用性。泛的适用性。


技术研发人员:岳浩 李晓东 刘义川 金鑫 赵熊
受保护的技术使用者:北京隐算科技有限公司
技术研发日:2023.09.14
技术公布日:2023/10/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐