发明内容
本公开至少一个实施例的主要目的提供一种用于秘密共享的方法,以提高秘密共享的安全性。
第一方面,一种用于秘密共享的方法,包括:用于秘密共享的方法,其特征在于,包括:在第一电子设备处,
利用第一单向函数对n个备份中的每一个备份分别进行校验;其中,n为对共享秘密备份的个数;
根据每一个备份以及对各个备份的校验结果生成每一个备份对应的影子;
将n个备份对应的影子一对一发送给n个个体。
第二方面,一种用于秘密共享的方法,所述方法包括:在第二电子设备处,
搜集k个影子;其中,每一个影子为利用第一单向函数对每一个备份进行校验,并根据该备份和对各个备份的校验结果生成的;k大于或者等于恢复秘密所需的影子的个数的最小值;
根据搜集到的每一个影子确定该影子对应的备份以及各个校验结果;
利用第一单向函数对各个备份进行运算,得到对应的校验位;
从各个校验结果中确定第一校验结果;所述第一校验结果为具有同值校验结果最多的校验结果;一个校验结果的同值校验结果是指与该校验结果的值相同的校验结果;
在所述校验位与所述校验结果不一致时,终止恢复。
第三方面,一种用于秘密共享的装置,包括:
第一校验模块,用于利用第一单向函数对n个备份中的每一个备份分别进行校验;其中,n为对共享秘密备份的个数;
影子生成模块,用于根据每一个备份以及对各个备份的校验结果生成每一个备份对应的影子;
发送模块,用于将n个备份对应的影子一对一发送给n个个体。
第四方面,一种用于秘密共享的装置,包括:
搜集模块,用于搜集k个影子;其中,每一个影子为利用第一单向函数对每一个备份进行校验,并根据该备份和对各个备份的校验结果生成的;k大于或者等于恢复秘密所需的影子的个数的最小值;
第一恢复模块,用于根据搜集到的每一个影子确定该影子对应的备份以及各个校验结果;
校验位获取模块,用于利用第一单向函数对各个备份进行运算,得到对应的校验位;
第一校验结果获取模块,用于从各个校验结果中确定第一校验结果;所述第一校验结果为具有同值校验结果最多的校验结果;一个校验结果的同值校验结果是指与该校验结果的值相同的校验结果;
第一判断模块,在所述校验位与所述校验结果不一致时,终止恢复。
第五方面,一种计算机存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序用于执行如第一方面任一项所述的方法中的步骤。
第六方面,一种电子设备,包括:处理器、存储器和通信模组;存储器和通信模组均耦合至所述处理器;所述存储器中存储有计算机程序;所述计算机程序在被所述处理器执行时,用于执行如第一方面任一项所述的方法中的步骤。
第七方面,一种计算机存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序用于执行如第二方面任一项所述的方法中的步骤。
第八方面,一种电子设备,其特征在于,包括:处理器、存储器和通信模组;存储器和通信模组均耦合至所述处理器;所述存储器中存储有计算机程序;所述计算机程序在被所述处理器执行时,用于执行如第二方面任一项所述的方法中的步骤。
本公开至少一个实施例中,在备份时,利用对各个备份进行校验,根据校验结果得到校验结果,并每一个备份以及其根据校验结果得到对应的影子,从而在恢复时,能够通过对影子进行校验,确定影子是否为伪造的影子,并在影子为伪造时终止恢复,提高安全性。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本公开,并不用于限定本公开。
图1为本公开一个实施例的电子设备的结构示意图,包括处理器11、存储器12以及通信模组13;其中存储器12以及通信模组13均耦接至所述处理器11;存储器12上存储有多个计算机程序,比如应用程序,处理器被配置为执行存储器12中存储的程序。
这里的通信模组,可以为有线的通信模组,也可以为无线的通信模组,根据实际需要,可以配置支持一种或者多种通信协议的协议栈。如无特殊说明,本公开各个实施例中的“耦接”是指元器件之间通信连接,能够交互数据的一种状态。并不要求两个元器件直接相连。
除了图1中示出的结构之外,图1中的电子设备通常还可能包括电源等,另在还可能会包含显示屏、声音播放设备等其他外设。在此不再详细说明。
对于本公开各实施例中可能涉及的术语进行如下说明。
单向函数的定义:
若一个函数f若满足下列两个条件,则f称为单向函数:
一、对于所有属于f定义域的任一x,可以很容易计算f(x)=y;
二、对于几乎所有(Almost All)属于f值域的任一y,则在计算上可能(Computationally Infeasible)求出x使得y=f(x)。
第一方面,本公开实施例提供的用于秘密共享的方法,可以参照图2;在实施时,该方法可以由第一电子设备实施,第一电子设备的结构可以具体参考图1。该方法主要涉及秘密共享时影子的生成过程,具体来说,可以包括:
步骤S21,利用第一单向函数对n个备份中的每一个备份分别进行校验;其中,n为对共享秘密备份的个数。
比如需要将共享秘密分享给10个对象,则这里的n的取值为10。n的大小可以根据需要进行设定。为了便于说明,以下将第i个备份表示为Ci。
步骤S22,根据每一个备份以及其对应的校验结果生成每一个备份对应的影子。
这里的影子的概念可以参考现有技术中的相关概念,在此不再详细说明。
步骤S23,将n个备份对应的影子一对一发送给n个个体。
不难理解的是,n个备份对应的影子的数量也是n个,将该n个影子一对一发送给n个个体,使得每一个个体均获得一个影子。
通过本实施例的方法,能够使得所得到的影子中关联了利用第一单向函数对备份进行校验所得到的校验结果,这样在后续恢复过程中,可以利用第一单向函数进行恢复验证,从而提升秘密共享的安全性。恢复验证的具体过程会在下文中进行详细说明。
可选的,在实施时,在步骤S21之前,所述的方法还可以包括对共享秘密S进行校验的过程,具体可以包括如下步骤:
步骤S20a,对于共享秘密S,利用第二单向函数对共享秘密S进行校验。
这里的共享秘密可以为需要共享的密钥,或者其他需要加密共享的信息。
步骤S20b,根据共享秘密S以及校验结果生成带校验的共享秘密C。
步骤S20c,根据共享秘密C生成n个备份。
通过这种方式,能够使得所得到的带校验的共享秘密C关联了利用第二单向函数对共享秘密S进行校验所得到的校验结果,这样在后续恢复过程中,可以利用第二单向函数进行恢复验证,从而提升秘密共享的安全性。恢复验证的具体过程会在下文中进行详细说明。
在具体实施时,这里的第一单向函数和/或第二单向函数可以为SHA256函数。SHA256函数,能够适用于各操作系统平台,计算上相对简单。在第一单向函数为SHA256时,根据每一个备份以及对各个备份对应的校验结果生成每一个备份对应的影子,可以是指将该备份与各个校验结果进行连接,比如对于第i个备份Ci,其影子Si可以为Si=Ci|H1|H2|...|Hn(i=1,2,...,n)。其中,Hi表示对第i个备份进行SHA256校验得到的校验结果。这里的连接与现有技术的概念一致,是指将两个值组合到一起。
类似的,在第二单向函数为SHA256时,将共享秘密S与其校验结果连接得到带校验的共享秘密C;具体来说,带校验的共享秘密C可以为C=S|H。其中,H=SHA256(S),为对待共享的秘密S进行SHA256校验得到的校验结果。
以第二单向函数为SHA256函数为例,步骤S20c中,根据共享秘密C生成n个备份生成的过程可以具体为:
第一步:选择大素数p(C<p<P),其中P是素数有限域,随机生成:
aj≤p(j=1,2,...,k-1); (1)
其中,这里的k为进行恢复时所需要的影子的数量,其大于或者等于恢复秘密所需的影子的个数的最小值;
第二步:计算:
第三步:连接i和yi得到各个备份;
其中第i个备份为Ci;Ci=i|yi(i=1,2,...,n)。
应当说明的是,在具体实施时,仅对各个备份进行校验而不对共享秘密S进行校验的方案也能够一定程度提升秘密共享的安全性。此时,在上述的第二步中,公式(2)中的C可以直接替换为共享秘密S。
第二方面,本公开实施例提供的用于秘密共享的方法,可以参照图3;在实施时,该方法可以由第二电子设备实施,第二电子设备的结构可以具体参见图1。该方法主要涉及秘密共享时,根据影子恢复秘密的过程,具体来说,可以包括:
步骤S31,搜集k个影子;其中,每一个影子为利用第一单向函数对每一个备份进行校验,并根据该备份和对各个备份的校验结果生成的。
在实施时,这里的k为进行恢复时所需要的影子的数量,其大于或者等于恢复秘密所需的影子的个数的最小值;这里的k的值可以根据需要设定,比如可以设定恢复一个秘密所需要的影子的数量不能低于5;则这里的k的最小值为5。另外,不难理解的是,这里的搜集是获得k个影子的过程。
这里的影子可以是按照第一方面任意实施例所得到的影子。为了方便说明,将第i个影子表示为Si。
步骤S32,根据搜集到的每一个影子确定该影子对应的备份以及各个校验结果。
由于每一个影子均为利用第一单向函数对每一个备份进行校验,并根据该备份和对各个备份的校验结果生成的,则根据第一单向函数以及设定的计算规则,可以还原出该影子对应的备份以及各个校验结果。
为了方便说明,将第i个影子对应的备份表示为Ci,将个体i得到的对个体j基本备份的校验值表示为Hj,i。
步骤S33,利用第一单向函数对各个备份进行运算,得到对应的校验位。
为了方便说明,将对第i个影子的备份Ci校验位表示为Hi'。
步骤S34,从各个校验结果中确定第一校验结果;所述第一校验结果为具有同值校验结果最多的校验结果;一个校验结果的同值校验结果是指与该校验结果的值相同的校验结果。
具体来说,对每个i,可以取各个校验结果中两两相同值最多的作为Hi
步骤S35,在所述校验位与所述校验结果不一致时,终止恢复。
具体来说,对于第i个个体而言,可以判断Hi是否与Hi'相等,如果相等,则认为是一致,如果不相等,则认为是不一致。
本实施例中,在恢复时,能够通过对影子进行校验,确定影子是否为伪造的影子,并在影子为伪造时终止恢复,提高安全性。
在实施时,在第一单向函数为SHA256函数,按照第一方面所述的方法产生的影子所产生的影子中第i影子可以为Si=Ci|H1,i|H2,i|...|Hn,i(i=1,2,...,k)。此时,步骤S32中,根据搜集到的每一个影子确定该影子对应的备份以及各个校验结果,可以具体是指,将上述的影子Si进行分割,分别得到各个影子对应的备份以及各个校验结果。
在步骤S35中,在验证不一致时,还可以输出错误报警信息,提示用户当前恢复出现错误。
如果所述校验位与所述校验结果一致,可以继续进行恢复。具体来说,可以包括:
步骤S36,将各个备份进行分割,得到共享秘密C;
计算共享秘密C具体可以按照公式进行:
Ci=i|yi(i=1,2,...,k)(4)
可以理解的是,如果这里的共享秘密C为不带验证的共享秘密,则此时所得到的共享秘密C即为最终要恢复的共享秘密。当这里的共享秘密C为带验证的共享秘密时,上述的方法还可以包括如下步骤:
步骤S37,在得到带校验的共享秘密C后,根据所述共享秘密C得到共享秘密S以及该共享秘密S对应的校验位H;所述共享秘密C为利用第二单向函数对共享秘密S进行校验后,根据共享秘密S和校验结果生成的;
步骤S38,利用第二单向函数对共享秘密S进行校验得到校验结果H’;
步骤S49,在校验位H与校验结果H’不一致时,终止恢复。
具体来说,可以在H与H’相等时,认为二者一致,否则认为不一致。
通过这种方式,能够进一步提升秘密共享的安全性。
具体来说,当这里的第二单向函数为SHA256函数,C=S|H时,此时根据带验证的共享秘密C得到共享秘密S以及该共享秘密S对应的校验位H可以是带验证的共享秘密C进行分割分别得到共享秘密S以及该共享秘密S对应的校验位H。此时,H′=SHA256(S)。
在步骤S49中,在校验位H与校验结果H’不一致时,还可以输出错误报警信息,提示用户当前恢复出现错误。
在校验位H与校验结果H’一致时,此时可以将所得到的共享秘密S作为恢复的结果输出,完成恢复的过程。
第三方面,本公开实施例还提供了一种用于秘密共享的装置,可以用于实施第一方面任一项所述的方法,参见图4,包括:
第一校验模块41,用于利用第一单向函数对n个备份中的每一个备份分别进行校验;其中,n为对共享秘密备份的个数;
影子生成模块42,用于根据每一个备份以及对各个备份的校验结果生成每一个备份对应的影子;
发送模块43,用于将n个备份对应的影子一对一发送给n个个体。
可选的,所述第一单向函数为SHA256函数;
所述影子生成模块,用于根据每一个备份以及对各个备份的校验结果生成每一个备份对应的影子,包括:
将每一个备份与对各个备份的校验结果连接。
可选的,还包括:
第二校验模块42,用于在所述利用第一单向函数对n个备份中的每一个备份分别进行校验之前,
对于共享秘密S,利用第二单向函数对共享秘密S进行校验;
根据共享秘密S以及校验结果生成带校验的共享秘密C;
根据共享秘密C生成n个备份。
可选的,所述第二单向函数为SHA256函数;
所述第二校验模块42,用于根据共享秘密S以及校验结果生成带校验的共享秘密C,包括:
将共享秘密S与其校验结果连接得到共享秘密C。
由于本公开实施例提供的用于秘密共享的装置,能够用于实施如第一方面任一项所述的方法。因此本公开实施例中的技术效果、相关技术术语以及相关的实施方式可以参考第一方面的实施例,在此不再详细说明。
第四方面,本公开实施例提供了一种用于秘密共享的装置,可以用于执行第二方面任一项所述的方法,参见图5,包括:
搜集模块51,用于搜集k个影子;其中,每一个影子为利用第一单向函数对每一个备份进行校验,并根据该备份和对各个备份的校验结果生成的;k大于或者等于恢复秘密所需的影子的个数的最小值;
第一恢复模块52,用于根据搜集到的每一个影子确定该影子对应的备份以及各个校验结果;
校验位获取模块53,用于利用第一单向函数对各个备份进行运算,得到对应的校验位;
第一校验结果获取模块54,用于从各个校验结果中确定第一校验结果;所述第一校验结果为具有同值校验结果最多的校验结果;一个校验结果的同值校验结果是指与该校验结果的值相同的校验结果;
第一判断模块55,在所述校验位与所述校验结果不一致时,终止恢复。
可选的,所述第一单向函数为SHA256函数;
每一个影子为将该影子对应的备份与对各个备份的校验结果连接得到的。
可选的,上述的装置还可以包括:
第二恢复模块56,用于在得到带校验的共享秘密C后,根据所述共享秘密C得到共享秘密S以及该共享秘密S对应的校验位H;所述共享秘密C为利用第二单向函数对共享秘密S进行校验后,根据共享秘密S和校验结果生成的;
第二校验结果获取模块57,用于利用第二单向函数对共享秘密S进行校验得到校验结果H’;
第二判断模块58,用于在校验位H与校验结果H’不一致时,终止恢复。
可选的,所述第二单向函数为SHA256函数;
所述共享秘密C是将共享秘密S与对共享秘密S进行SHA256校验后得到的校验结果连接得到的。
由于本公开实施例提供的用于秘密共享的装置,能够用于实施如第二方面任一项所述的方法。因此本公开实施例中的技术效果、相关技术术语以及相关的实施方式可以参考第二方面的实施例,在此不再详细说明。
第五方面,本公开的实施例提供了一种计算机存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行第一方面任一项所述的方法中的步骤。
第六方面,本公开的实施例提供了一种电子设备,该电子设备的结构可以参考图1,主要包括:处理器11、存储器12和通信模组13;存储器12和通信模组13均耦合至所述处理器12;所述存储器12中存储有计算机程序;所述计算机程序在被所述处理器执行时,用于执行第一方面任一项所述的方法中的步骤。
第七方面,本公开的实施例提供了一种计算机存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行第二方面任一项所述的方法中的步骤。
第八方面,本公开的实施例提供了一种电子设备,该电子设备的结构可以参考图1,包括:处理器11、存储器12和通信模组13;存储器12和通信模组13均耦合至所述处理器11;所述存储器11中存储有计算机程序;所述计算机程序在被所述处理器11执行时,用于执行第二方面任一项所述的方法中的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
以上仅为本公开的优选实施例,并非因此限制本公开的专利范围,凡是利用本公开说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本公开的专利保护范围内。