【技术实现步骤摘要】
通用密态数据安全计算方法
[0001]本专利技术属于网络安全
,具体涉及一种通用密态数据安全计算方法。
技术介绍
[0002]机器学习在各领域的应用取得巨大成功,例如深度神经网络被广泛应用于风险评估、语音识别、图像分类以及自动驾驶等领域。但是,机器学习需要消耗大量存储和计算资源,用户由于数据匮乏、计算资源受限等原因难以在本地完成机器学习相关的计算任务。因此,越来越多的用户将数据和机器学习任务外包至云服务器,由云服务器将机器学习算法作为一种外包服务提供给普通用户,给用户带来了极大便利。然而,用户数据可能包含医疗记录、地理信息、金融信息等敏感信息,而将数据外包给云服务器则剥夺了用户对数据的控制权。这种云外包提供服务的方式使得用户的隐私信息得不到有效的保护,严重阻碍了云计算技术的推广。
[0003]密态数据安全计算技术为解决上述问题提供了可行途径。常见的密态数据安全计算方案的工作流程为用户将数据先加密再上传至云服务器,然后云服务器在密态数据上执行指定的机器学习外包计算任务。现有面向机器学习的密态数据安全计算方案主要包括以下几种:
[0004](1)基于全同态加密的机器学习密态数据安全计算方案
[0005]同态加密(Homomorphic Encryption,HE)的基本思想为对密态数据进行某种特定的代数运算可以等价于对明文进行相同的代数运算。同态加密按照功能性进行划分主要包括两大类:全同态加密(Fully Homomorphic Encryption,FHE)和部分同态加密(Partiall ...
【技术保护点】
【技术特征摘要】
1.一种通用密态数据安全计算方法,应用于两个服务器,其特征在于,包括:步骤1,通过加法秘密分享方式接收来源于服务提供方用于评估数据的模型信息以及来源于服务评估方的评估数据;步骤2,根据模型信息在已构建的通用密态数据安全计算库中确定即将调用的目标组件,以组成与所述模型信息相匹配的模型计算图;步骤3,在所述通用密态数据安全计算库中调用用于生成辅助参数的组件,通过单次生成方式为需要辅助参数的目标组件生成其所需的辅助参数或通过并行生成方式在目标组件运行计算过程中生成未运行的目标组件的辅助参数;步骤4,按照所述模型计算图中的目标组件的顺序调用所述目标组件,并将所述评估数据作用于第一个目标组件,以使当前目标组件根据自身的辅助参数以及上一个目标组件的运算结果进行运算,并将自己的运算结果传递至下一个目标组件,获得最后一个目标组件的运行结果;步骤5,将所述运行结果发送至服务评估方。2.根据权利要求1所述的通用密态数据安全计算方法,其特征在于,所述模型信息以及评估数据均通过加法秘密分享的方式发送给服务器;其中每个服务器所接收的模型数据份额之和为全部的模型信息,以及评估数据份额之和为全部评估数据;其中,模型信息包括模型的内部参数、各层之间的连接关系以及模型结构。3.根据权利要求2所述的通用密态数据安全计算方法,其特征在于,所述步骤2中的通用密态数据安全计算库包括:辅助参数生成组件,用于生成辅助参数,得到辅助参数的加法秘密分享;安全基础操作组件,用于在服务器各自的份额数据上执行乘法和加法操作,得到乘法和加法操作结果的加法秘密分享;安全最高有效位求解组件,用于在服务器各自的份额数据执行数据最高位求解,得到最高位求解结果的布尔秘密分享;安全比较组件,用于比较服务器内不同份额数据的大小,得到比较结果的加法秘密分享;安全正弦函数计算组件,用于计算服务器内每个份额数据的正弦函数,得到正弦函数的计算结果的加法秘密分享;安全ReLU函数计算组件,用于计算服务器内每个份额数据的ReLU函数,得到ReLU函数的计算结果的加法秘密分享;安全Sigmoid函数计算组件,用于计算服务器内每个份额数据的Sigmoid函数,得到Sigmoid函数的计算结果的加法秘密分享;安全Tanh函数计算组件,用于计算服务器内每个份额数据的Tanh函数,得到Tanh函数的计算结果的加法秘密分享;安全最大池化函数计算组件,用于计算服务器内每个份额数据的最大池化函数,得到最大池化函数的计算结果的加法秘密分享。4.根据权利要求3所述的通用密态数据安全计算方法,其特征在于,所述步骤2中的通用密态数据安全计算库还包括:安全卷积计算组件,用于对服务器内每个份额数据利用秘密分享的卷积核进行卷积,
得到卷积结果的加法秘密分享;安全全连接计算组件,用于对服务器内每个份额数据与秘密分享的权重点乘,得到全连接计算结果的加法秘密分享。5.根据权利要求3所述的通用密态数据安全计算方法,其特征在于,当所述辅助参数生成组件基于辅助参数生成协议生成多种运算方式的辅助参数,得到多种运算方式的辅助参数的加法秘密分享;所述辅助参数生成协议的具体步骤包括:二进制n元与运算辅助参数生成:(1)根据参与运算的秘密分享<x>0和<x>1所在环的大小,确定生成任一n元与运算辅助参数的个数;(2)利用同态加密方式生成对应个数的n元与运算的第一辅助参数;十进制乘法辅助参数生成:利用同态加密方式生成用于辅助计算两个十进制数乘法的第二辅助参数;十进制n元乘法运算辅助参数生成:利用同态加密方式生成用于辅助计算n个十进制数连续乘法的第三辅助参数。6.根据权利要求1所述的通用密态数据安全计算方法,其特征在于,所述步骤3包括:步骤31,在所述通用密态数据安全计算库中调用用于生成辅助参数的组件,在主进程中为所有需要辅助参数的目标组件一次生成其所需的辅助参数;步骤32,在所述通用密态数据安全计算库中调用用于生成辅助参数的组件,在主进程中为需要辅助参数的部分目标组件生成所需的辅助参数直至主进程的共享内存无剩余空间;如果目标组件运行时调用所述共享内存中的辅助参数使得共享内存有所剩余,则辅助进程将持续生成辅助参数存储至所述共享内存直至所述共享内存无剩余空间。7.根据权利要求5所述的通用密态数据安全计算方法,其特征在于,安全最高有效位求解组件,基于安全最高有效位提取协议在服务器各自的份额数据执行数据最高位求解,得到最高位求解结果的布尔秘密分享;所述安全最高有效位提取协议的具体步骤包括:(1)参与最高有效位提取协议的数为服务器S0持有<x>0,服务器S1持有<x>1;服务器S0和服务器S1分别将秘密分享<x>0和<x>1转化为二进制比特串<x>0={[x
l
]0,[x
l
‑1]0,......,[x1]0}和<x>1={[x
l
]1,[x
l
‑1]1,......,[x1]1},其中括号外的下标0和1为区分服务器S0和服务器S1的数据,中括号内x的下标{l,l
‑
1,...,l}表示二进制比特串中对应位置的比特;(2)服务器S0生成新的比特串<x
′
>0={[x
l
‑1′
]0,[x
l
‑2′
]0,...,[x1′
]0},<x
″
>0={[x
l
‑1″
]0,[x
l
‑2″
]0,...,[x1″
]0},其中括号内x的上标
′
和
″
用于区分两个新的比特串;对于j=1,2,......,l
‑
1,使其对应的比特位[x
′
j
]0=[x
j
]0,[x
″
j
]0=0;服务器S1生成新的比特串<x
′
>1={[x
l
‑1′
]1,[x
l
‑2′
]1,...,[x1′
]1},<x
″
>1={[x
l
‑1″
]1,[x
l
‑2″
]1,...,[x1″
]1},对于j=1,2,......,l
‑
1,使其对应的比特位[x
′
j
]1=0,[x
″
j
]1=[x
j
]1;(3)服务器S0和服务器S1各自调用第一辅助参数计算第0层的信号元组{<G0>,<P0>},括号内G和P的上标表示信号元组所在层;<G0>和<P0>的比特串形式分别为<G0>={[G
l
‑
10
],
[G
l
‑
20
],[G
l
‑
30
],...,[G
10
]}、<P0>={[P
l
‑
10
],[P
l
‑
20
],[P
l
‑
30
],...,[P
10
]};对于j=1,2,......,l
‑
1,对应比特位的计算为[G
j0
]=[x
j
]0·
[x
j
]1,服务器S0持有<G0>0和<P0>0,服务器S1持有<G0>1和<P0>1;(4)对于j=1,2,......,l
‑
1,服务器S0和服务器S1从二进制n元与运算辅助参数中取出l
‑
1组二进制2元与运算辅助参数,服务器S0获取{[a
1j
]0,[a
2j
]0,{[a
Ij
]0(I∈{1,2})}},服务器s1获取{[a
1j
]1,[a
2j
]1,{[a
Ij
]1(I∈{1,2})}},其中括号内a的上标j用于区分l
‑
1组不同的辅助参数;(5)服务器S0计算并将其发送给S1;服务器S1计算并将其发送给S0;(6)服务器S0和服务器S1均在本地重构得到随后,服务器S0计算服务器S1计算服务器S0设服务器S1设服务器S0持有<G0>0和<P0>0,服务器S1持有<G0>1和<P0>1;(7)服务器S0和服务器S1各自构造第0层的l
‑
1个叶子结点,从左到右依次为node
l
‑
10
,node
l
‑
20
,...,node
10
,其中上标表示节点所在的层,下标为区分同层不同的节点;对于j=1,2,......,l
‑
1,服务器S0和服务器S1将比特信号元组{[G
j0
],[P
j0
]}分配给对应的叶子节点node
j0
;(8)服务器S0和服务器S1各自由第0层节点生成第一层节点,生成规则为:将第0层节点从左到右按优先级从大到小为4/3/2/1个节点一组的方式分组,为每个分组生成一个父节点,组成第一层节点;设第一层节点的数量为n,从左到右分别为node
n1
,node
n
‑
11
,...,node
11
;对于j=1,2,......,n,服务器S0和服务器S1均为第一层的节点node
j1
分配一组空的比特信号元组{[G
j1
],[P
j1
]};服务器S0和服务器S1按照以上生成规则依次由第一层生成第二层,第二层生成第三层,直到第h层只存在一个节点node
1h
为止,node
1h
节点为根节点,此时服务器S0和服务器S1得到了整个计算的树型结构;(9)服务器S0和服务器S1均根据树型结构从第一层开始依次为后续层的比特信号元组赋值,直到根节点node
1h
的空比特信号元组{[G
1h
],[P
1h
]}被赋值为止,在赋值过程中同一层节点的赋值计算并行运行,赋值计算的规则为:若当前父节点拥有t个子节点,从左到右依次为node
t
,node
t
‑1,...,node1,下标用于区分当前父节点的不同子节点,并且子节点分别有赋值的比特信号元组{[G
t
],[P
t
]},{[G
t
‑1],[P
t
‑1]},...,{[G1],[P1]},括号内部的下标表示此信号元组被赋予拥有相应下标的节点,则父节点的比特信号元组{[G],[P]}由如下公式计算:P=P
t
·
P
t
‑1·
...
·
P1,计算过程由第一辅助参数辅助完成;(10)通过(1)至(9)服务器S0和服务器S1能够以并行计算的方式为每一层的比特信号元
组赋值,最终服务器S0计算服务器S1计算得到最高有效位MSB的布尔秘密分享;其中,[MSB]0为服务器S0持有的最高有效位MSB的布尔秘密分享,[MSB]1为服务器S1持有的最高有效位MSB的布尔秘密分享。8.根据权利要求7所述的通用密态数据安全计算方法,其特征在于,安全比较组件,基于安全比较协议针对份额数据进行比较操作,得到比较结果的加法秘密分享;所述安全比较协议具体步骤包括:(1)参与比较的数分别为和服务器S0持有<x
A
>0,<x
B
>0,服务器S1持有<x
A
>1和<x
B
>1,其中括号内x的上标用于区分不同的输入数值;服务器S0和服务器S1通过计算得到两个数差值的秘密分享<x
A
‑
x
B
>;(2)服务器S0和服务器S1各自调用最高有效位提取组件得到x
A
‑
x
B
最高有效位的布尔分享[MSB
cp
],其中所有数值的下标cp均表示此数值仅作用于比较协议当中;(3)服务器S0设<A
cp
>0=[MSB
cp
]0,<b
cp
>0=0,服务器S1设<A
cp
>1=0,<b
cp
>1=[MSB
cp
]1;(4)服务器S0和服务器S1各自计算比较结果的秘密分享<y
cp
>=<a
cp
>+<b
cp
>
‑
2<a
cp
>
·
<b
cp
>,计算过程由第二辅助参数辅助完成;服务器S0持有<y
cp
>0,服务器S1持有<y
cp
>1;其中,<y
cp
>0为服务器S0持有的比较结果<y
cp
>的加法秘密分享,<y
cp
>1为服务器S1持有的比较结果<y
cp
>的加法秘密分享。9.根据权利要求5所述的通用密态数据安全计算方法,其特征在于,安全正弦函数计算组件,基于安全正弦函数计算协议计算服务器内每个份额数据的正弦函数,得到正弦函数的计算结果的加法秘密分享;所述安全正弦函数计算协议具体步骤包括:(1)参与正弦函数计算的数为服务器S0持有<x>0,服务器S1持有<x>1;服务器S0和服务器S1从十进制乘法辅助参数中取出一组{a,b,c};(2)服务器S0计算<u
sin
>0=sin(<x>0)
‑
a0,<e
cos
>0=cos(<x>0)
‑
b0,服务器S1计算<u
sin
>1=sin(<x>1)
‑
A1,<e
cos
>1=cos(<x>1)
‑
b1;其中括号内e和u的上标sin和上标cos分别表示正弦函数和余弦函数的计算中间值;...
【专利技术属性】
技术研发人员:沈玉龙,程珂,张志为,祝幸辉,刘新,付家瑄,宋安霄,
申请(专利权)人:西安电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。