本发明涉及数据安全技术领域,尤其涉及一种密钥保存方法及装置。
背景技术:
为了实现信息的安全保密,一般采用加密手段来对信息加以保护,而加密信息所使用的密钥往往比密文信息本身更为重要。如果因为保管不善或者其他不可抗力原因导致密钥被毁坏,将直接导致已加密的信息无法被解密,甚至引起当前系统不可用的后果,可见其安全管理与存储十分重要。
目前对密钥的管理与保存方式为,将密钥按照存储长度直接等分为几等份,分别将这几个等份发送给备份设备进行备份,在需要恢复时获取所有设备中的备份片段完成恢复。
这种保存与恢复密钥方式的问题在于,若备份的设备中有任一个设备出现故障损坏失效而相应的备份片段无法获得,则无法通过其余的备份片段获得完整的密钥。
技术实现要素:
本申请提供一种密钥保存方法及装置,用以解决若密钥的部分备份片段无法获取,则不能恢复完整密钥的问题。
本发明实施例提供一种密钥保存方法,包括以下步骤:
根据密钥和n个不同的备份参数,计算出不同的n个备份片段;
将所述n个备份片段分别发送给n个备份设备;
若所述密钥无法获得,则从所述n个备份设备中任选k个备份设备;
获取所述k个备份设备中存储的k个备份片段及所述k个备份片段对应的k个备份参数;
根据所述k个备份片段和所述k个备份参数,计算出所述密钥;其中,n>0,1≤k<n。
可选的,所述根据密钥和n个不同的备份参数,计算出不同的n个备份片段,包括:
任选一个有限域GF(p)上的k-1次多项式,其中,p为大于所述密钥的素数,所述多项式的常数项等于所述密钥;
针对n个备份设备,分别从所述有限域GF(p)中任选出n个有限域元素作为所述n个不同的备份参数,其中,每个有限域元素均不为零且互不相等;
利用所述多项式以及选出的n个有限域元素,计算出每个有限域元素对应的备份片段。
可选的,所述有限域GF(p)上的多项式为:
f(x)=(a0+a1x+...+ak-1xk-1)modp
其中,p为大于所述密钥的素数,x为有限域元素,a0的值等于所述密钥,a1、a2...ak-1∈GF(p);
根据以下公式计算每个有限域元素对应的备份片段:
sm=f(xm),1≤m≤n
其中,xm为对应于第m个备份设备的有限域元素,sm为对应于第m个备份设备的备份片段。
可选的,根据以下公式计算出所述密钥:
其中,s为所述密钥,si为对应于第i个备份设备的备份片段,x为有限域元素,p为大于所述密钥的素数,1≤i≤n,1≤j≤k,1≤k<n。
可选的,所述将所述n个备份片段分别发送给n个备份设备,包括:
针对每个备份片段,对所述备份片段加密,将加密后的备份片段和所述备份片段对应的备份参数发送给对应的备份设备。
一种密钥保存装置,包括:
计算模块,用于根据密钥和n个不同的备份参数,计算出不同的n个备份片段;
收发模块,用于将所述n个备份片段分别发送给n个备份设备;
选择模块,用于若所述密钥无法获得,则从所述n个备份设备中任选k个备份设备;
所述收发模块,还用于获取所述k个备份设备中存储的k个备份片段及所述k个备份片段对应的k个备份参数;
所述计算模块,还用于根据所述k个备份片段和所述k个备份参数,计算出所述密钥;其中,n>0,1≤k<n。
可选的,所述计算模块,具体用于:
任选一个有限域GF(p)上的多项式,其中,p为大于所述密钥的素数,所述多项式的常数项等于所述密钥;
针对n个备份设备,分别从所述有限域GF(p)中任选出n个有限域元素作为所述n个不同的备份参数,其中,每个有限域元素均不为零且互不相等;
利用所述多项式以及选出的n个有限域元素,计算出每个有限域元素对应的备份片段。
可选的,所述有限域GF(p)上的多项式为:
f(x)=(a0+a1x+...+ak-1xk-1)modp
其中,p为大于所述密钥的素数,x为有限域元素,a0的值等于所述密钥,a1、a2...ak-1∈GF(p);
所述计算模块,具体用于根据以下公式计算每个有限域元素对应的备份片段:
sm=f(xm),1≤m≤n
其中,xm为对应于第m个备份设备的有限域元素,sm为对应于第m个备份设备的备份片段。
可选的,所述计算模块,具体用于根据以下公式计算出所述密钥:
其中,s为所述密钥,si为对应于第i个备份设备的备份片段,x为有限域元素,p为大于所述密钥的素数,1≤i≤n,1≤j≤k,1≤k<n。
可选的,所述收发模块,具体用于:
针对每个备份片段,对所述备份片段加密,将加密后的备份片段和所述备份片段对应的备份参数发送给对应的备份设备。
本发明实施例中,针对需要备份的密钥,确定出n个不同的备份参数,并利用该密钥以及对应的n个不同的备份参数,计算出不同的n个备份片段,然后将每个备份片段分别发送给相应的备份设备进行存储。之后,若由于设备损坏等原因导致密钥无法直接获取,则从存储了备份片段的n个备份设备中任选出k个备份设备,获取这k个备份设备中存储的k个备份片段以及对应的k个备份参数,根据k个备份片段和相应的k个备份参数计算出密钥。本发明实施例中,k的值小于n的值,也就是说,从根据密钥计算得出的所有备份片段中,只需获取其中部分备份片段,即可以根据选出的备份片段以及相应的备份参数计算出密钥。这样,在原始密钥无法获得时,即使存储了备份片段的部分备份设备丢失了备份片段,或出现故障损坏失效,只要完好的备份片段个数大于或等于k个,则可以利用其余完好的备份设备重新计算得出密钥,从而降低了密钥恢复失败的风险。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例适用的一种系统架构示意图;
图2为本发明实施例提供的一种密钥保存方法的流程示意图;
图3为本发明具体实施例中密钥保存方法的流程示意图;
图4为本发明实施例提供的一种密钥保存装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,本发明实施例所适用的一种系统架构,包括主设备101和多个备份设备102,其中,主设备101和备份设备102可以是计算机等网络设备。优选地,主设备101和备份设备102可以采用云计算技术进行信息处理。
主设备101中设置有安全存储区,将密钥存储在安全存储区中,其它未授权的程序或设备不得随读取。当需要将密钥进行备份时,主设备101选出n个备份参数,通过计算得出n个备份片段,然后将每个备份片段发送给相应的备份设备102进行备份。
备份设备102的数量为n个,每个备份设备102均接收到主设备101发送的备份片段,并将接收到的备份片段进行存储。若因主设备101损毁或丢失密钥而无法获取原始密钥,则需要从n个备份设备102中选出k个,从选出的k个备份设备中获取备份片段,从而计算出原始的密钥。
主设备101和备份设备102之间通过安全的网络进行通信,如通过SSL(Secure Sockets Layer,安全套接层)等协议传输数据,也可通过电缆等网线进行连接。
图2示例性示出了本发明实施例提供的一种密钥保存方法的流程示意图,如图2所示,本发明实施例提供的密钥保存方法,包括以下步骤:
步骤201、根据密钥和n个不同的备份参数,计算出不同的n个备份片段;
步骤202、将所述n个备份片段分别发送给n个备份设备;
步骤203、若所述密钥无法获得,则从所述n个备份设备中任选k个备份设备;
步骤204、获取所述k个备份设备中存储的k个备份片段及所述k个备份片段对应的k个备份参数;
步骤205、根据所述k个备份片段和所述k个备份参数,计算出所述密钥。其中,n>0,1≤k<n。
本发明实施例中,针对需要备份的密钥,确定出n个不同的备份参数,并利用该密钥以及对应的n个不同的备份参数,计算出不同的n个备份片段,然后将每个备份片段分别发送给相应的备份设备进行存储。之后,若由于设备损坏等原因导致密钥无法直接获取,则从存储了备份片段的n个备份设备中任选出k个备份设备,获取这k个备份设备中存储的k个备份片段以及对应的k个备份参数,根据k个备份片段和相应的k个备份参数计算出密钥。本发明实施例中,k的值小于n的值,也就是说,从根据密钥计算得出的所有备份片段中,只需获取其中部分备份片段,即可以根据选出的备份片段以及相应的备份参数计算出密钥。这样,在原始密钥无法获得时,即使存储了备份片段的部分备份设备丢失了备份片段,或出现故障损坏失效,只要完好的备份片段个数大于或等于k个,则可以利用其余完好的备份设备重新计算得出密钥,从而降低了密钥恢复失败的风险。
对于密钥的保存和备份,现有技术一般有两种方式,一是将原始密钥存储在主设备的特定区域,如安全芯片中,并将原始密钥直接复制得到备份密钥,并发送给指定的几个其它设备进行备份;另一种方式是将原始密钥按照存储长度直接分成几等份,将这几等份分别发送给备份设备进行备份,这样在需要恢复密钥时,可以通过获取每个备份设备中存储的等份组合形成密钥。
这两种保存和备份密钥方式的缺点在于,在第一种方式中,是将完整的密钥存储在多个备份设备中,如果这些备份设备中有任何一个设备中的密钥被恶意获取,则直接导致密钥泄露;在第二中方式中,只要任何一个备份设备保存的密钥丢失或者出错,密钥都无法重新组合恢复。
为了解决上述问题,本发明实施例构造一个k-1次多项式,将密钥Y作为这个多项式的常数项,然后为每个它的备份设备li(i=1、2、…、n)计算对应的备份片段si,将n个备份片段分别分给这n个备份设备。当原始的密钥丢失或者存储区遭到破坏时,可以通过任意k(k<n)个或k个以上的备份设备利用插值公式计算恢复出密钥Y。
除了上述构造k-1次多项式的方法,还可以利用几何向量法,具体来说,为将密钥Y看成k维空间中的一个点,每个备份片段为包含这个点的k-1维超平面方程,任意k个k-1维超平面的交点可以恢复密钥Y。除此之外,也可以为基于中国剩余定理的方法、使用矩阵的方法等。
下面详细说明利用k-1次多项式备份和恢复密钥Y的方式。上述步骤201,包括:
任选一个有限域GF(p)上的k-1次多项式,其中,p为一个大素数(超过100位的十进制数),并且大于所述密钥,所述多项式的常数项等于所述密钥;
针对n个备份设备,分别从所述有限域GF(p)中任选出n个有限域元素作为所述n个不同的备份参数,其中,每个有限域元素均不为零且互不相等;
利用所述多项式以及选出的n个有限域元素,计算出每个有限域元素对应的备份片段。
有限域是仅含有有限多个元素的域,有限域GF(p)是一个很重要的域,其中p为素数。简单来说,GF(p)就是mod p,即为求p的余数,这个结果在[0,p-1]之间。对于有限域中的元素,任意相加或相乘后再对p求余数,其结果都仍是该有限域中的元素。本发明实施例中任选一个有限域GF(p)上的多项式,即该多项式的系数均为有限域GF(p)内的元素,并使该多项式的常数项等于密钥。因此,有限域GF(p)中的p为大于该密钥的素数,一般来说,由于密钥的位数较多,因此,p为一个大素数。另一方面,由于需根据密钥形成n个备份片段,则从有限域GF(p)中任选出n个有限域元素作为备份参数,其中每个有限域元素均不为零且互不相等。任选出的n个有限域元素分别与n个备份设备相对应。然后,根据选出的n个有限域元素以及多项式,计算出每个有限域元素对应的备份片段,即n个备份设备对应的备份片段。
这里的备份参数可公开,可以公开地统一保存在主设备中,或者主设备将备份参数统一发至其它设备进行统一保存,统一保存时,需将备份参数和备份设备之间的对应关系也同时保存,此外也可由主设备将各个备份参数分别发送给相应的备份设备。
备份片段是非公开的,这样可以保证密钥的安全性,主设备将备份片段通过安全的方式发送给相应的备份设备。所述将所述n个备份片段分别发送给n个备份设备,包括:
针对每个备份片段,对所述备份片段加密,将加密后的备份片段和所述备份片段对应的备份参数发送给对应的备份设备。
例如,主设备可以通过SSL或TLS(Transport Layer Security,传输层安全)等协议将加密后的备份片段发送给对应的备份设备。这样可以对设备进行认证,确保数据发送到正确的备份设备;对备份片段的加密可以防止数据中途被窃取,同时维护备份片段的完整性,确保数据在传输过程中不被改变。同样的,密钥需要恢复时,备份设备将备份片段发送回主设备时,也需要将备份片段进行加密后再发送。
较佳的,本发明实施例中,有限域GF(p)上的多项式为:
f(x)=(a0+a1x+...+ak-1xk-1)modp……公式1
其中,p为大于所述密钥的素数,x为有限域元素,a0的值等于所述密钥,a1、a2...ak-1∈GF(p)。
本发明实施例中,通过构建公式1,计算每个备份设备对应的备份片段。为了使根据公式1计算得出的备份片段与密钥相关,使a0的值等于密钥,a1至an的值从有限域GF(p)内随机选择,其中,a1至an的值可以互不相同,也可部分或全部相同。
同时,主设备从有限域GF(p)内随机地选取n个互不相同的有限域元素作为备份参数,记为x1、x2、…、xn。其中,有限域元素均不为零,且与备份设备一一对应,如将n个备份设备分别记为l1、l2、…、ln,则有限域元素x1与备份设备l1相对应,有限域元素x2与备份设备l2相对应,以此类推,有限域元素xn与备份设备ln相对应。
之后,利用随机选出的有限域元素计算每个有限域元素对应的备份片段,即每个备份设备对应的备份片段,计算备份片段的公式如下:
sm=f(xm),1≤m≤n……公式2
其中,xm为对应于第m个备份设备的有限域元素,sm为对应于第m个备份设备的备份片段。
举例来说,对于第1个备份设备,其对应的有限域元素为x1,则根据公式2,备份设备l1的备份片段s1满足下列公式:
s1=f(x1)=(a0+a1x1+...+ak-1x1k-1)mod p……公式3
在公式3中,系数a0等于密钥Y,a1至an的值为主设备从有限域GF(p)内随机选取,备份设备l1的备份参数即有限域元素x1为已知,则可以通过公式3求出备份设备l1的备份片段s1。
同样的,对于第m个备份设备,其对应的有限域元素为xm,则根据公式2,备份设备lm的备份片段sm满足下列公式:
sm=f(xm)=(a0+a1xm+...+ak-1xmk-1)mod p……公式4
对于第n个备份设备,其对应的有限域元素为xn,则根据公式2,备份设备ln的备份片段sn满足下列公式:
sn=f(xn)=(a0+a1xn+...+ak-1xnk-1)mod p……公式5
这样,主设备求出每个备份设备对应的备份片段,将n个备份片段分别发送给对应的备份设备。这里将备份片段发送给对应的备份设备为加密发送,即备份设备只获取自身对应的备份片段,而不知道其它备份设备对应的备份片段为多少。如此一来,即使某个别备份设备中的备份片段被恶意获取,也不会泄露整个密钥,增加了密钥的安全性。
将备份片段分发之后,若因主设备中的密钥丢失或芯片损坏而无法获取密钥,则需要进行密钥恢复,即根据备份设备中的备份片段重新计算出密钥,具体根据以下公式进行计算:
其中,Y为所述密钥,si为对应于第i个备份设备的备份片段,x为有限域元素,p为大于所述密钥的素数,1≤i≤n,1≤j≤k,1≤k<n。
具体来说,当需要恢复密钥时,主设备从n个备份设备中任选出k个,获取这k个备份设备中的备份片段。选取的k个备份设备将各自存储的备份片段通过安全的传输方式发送给主设备。这里,k个备份设备为从n个备份设备中任意选取,选取后,为了方便计算,将k个备份设备进行重新编号为l1至lk,对应的备份片段和有限域元素也重新编号,备份片段重新编号为s1至sk,有限域元素重新编号为x1至xk。则可以根据公式6计算出密钥Y。如此,即使n个备份设备中的某个甚至某些设备被损坏或其中的备份片段丢失,只要损坏或丢失的备份设备数目不大于n-k,就不会对密钥恢复产生影响。此外,可以在密钥不受影响的情况下,增加新的备份设备并为其分配新的密钥份额,因此不会对备份设备产生过度依赖。
为了更清楚地理解本发明,下面以具体的实施例对上述流程进行详细描述,方法可以分为初始化、备份片段分发和密钥恢复三个阶段,具体步骤如图3所示,包括:
(一)初始化阶段
步骤301、主设备将密钥Y存储与安全芯片内,未授权的程序或其他设备不得随意读取。
步骤302、主设备需要备份密钥Y时,随机地从有限域GF(p)内选取n个互不相同的非零有限域元素,记为x1、x2、…、xn。其中p是一个大于密钥Y的素数。有限域元素xi(1≤i≤n)分别对应一个备份设备li。
步骤303、主设备将有限域元素xi以及与备份设备li的对应关系进行存储,并设置为可以所有设备随意读取。
(二)备份片段分发阶段
此阶段是主设备给n个备份设备分配备份片段的过程,为了防止由于设备损坏、密钥存储区被破坏等原因所导致的密钥不可用问题,主设备根据密钥Y计算出n个备份片段s1至sn,然后将密钥份额si(1≤i≤n)分别发送给相应的备份设备li。
步骤304、主设备随机选择一个有限域GF(p)上的多项式,如公式1,并使得f(0)=a0=Y,即备份密钥Y作为多项式的常数项。
步骤305、主设备利用公式1和公式2,计算备份设备li对应的备份片段si。
步骤306、主设备将备份片段加密后,分别发送给相应的备份设备。
(三)密钥恢复阶段
在密钥Y由于设备损坏等原因导致不可用之后,主设备或者其他具有恢复密钥权限的设备、管理员等都可能有恢复密钥Y的需求。主设备可以在n个备份设备中任意选择k(k<n)个备份设备,使用恢复算法计算密钥Y。
步骤307、主设备要求任意k个备份设备发送其存有的备份片段,以前k个备份设备l1至lk为例,分别将其存有的备份片段s1、s2、…、sk发送给主设备。
步骤308、主设备获取公开的备份参数,即有限域元素x1、x2、…、xk,并将xj与sj(1≤j≤k)分别一一对应。
步骤309、主设备利用公式6计算密钥Y,密钥Y得到恢复。
图4示例性示出了本发明实施例提供的一种密钥保存装置的结构示意图。
如图4所示,本发明实施例提供的一种密钥保存装置,包括:
计算模块401,用于根据密钥和n个不同的备份参数,计算出不同的n个备份片段;
收发模块402,用于将所述n个备份片段分别发送给n个备份设备;
选择模块403,用于若所述密钥无法获得,则从所述n个备份设备中任选k个备份设备;
所述收发模块402,还用于获取所述k个备份设备中存储的k个备份片段及所述k个备份片段对应的k个备份参数;
所述计算模块401,还用于根据所述k个备份片段和所述k个备份参数,计算出所述密钥;其中,n>0,1≤k<n。
可选的,所述计算模块401,具体用于:
任选一个有限域GF(p)上的多项式,其中,p为大于所述密钥的素数,所述多项式的常数项等于所述密钥;
针对n个备份设备,分别从所述有限域GF(p)中任选出n个有限域元素作为所述n个不同的备份参数,其中,每个有限域元素均不为零且互不相等;
利用所述多项式以及选出的n个有限域元素,计算出每个有限域元素对应的备份片段。
可选的,所述有限域GF(p)上的多项式为:
f(x)=(a0+a1x+...+ak-1xk-1)mod p
其中,p为大于所述密钥的素数,x为有限域元素,a0的值等于所述密钥,a1、a2...ak-1∈GF(p);
所述计算模块401,具体用于根据以下公式计算每个有限域元素对应的备份片段:
sm=f(xm),1≤m≤n
其中,xm为对应于第m个备份设备的有限域元素,sm为对应于第m个备份设备的备份片段。
可选的,所述计算模块401,具体用于根据以下公式计算出所述密钥:
其中,s为所述密钥,si为对应于第i个备份设备的备份片段,x为有限域元素,p为大于所述密钥的素数,1≤i≤n,1≤j≤k,1≤k<n。
可选的,所述收发模块402,具体用于:
针对每个备份片段,对所述备份片段加密,将加密后的备份片段和所述备份片段对应的备份参数发送给对应的备份设备。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。