什么是密钥分存?

时间:2022-05-04 23:13:08

现在我们了解了各种保存密钥的方法,什么是密钥分存?但在这些方法里,我们总是把密钥保存在一个地方:要么锁在保险箱,要么保存在软件中或打印在纸上。这密钥分存会造成一个问题:一毁俱毁。当然,我们可以为密钥建立备份,这密钥分存可以降低密钥丢失或损坏的风险(可获取性),但同时会增加密钥被盗的风险(安全性)。那是否存在一种方法,可以使密钥的可获取性和安全性都得到提高?答案是肯定的。密码学上有一种称为“密钥分存”的技术,就可以做到这一点。方法如下:密钥被分成N个片段,只要我们获得其中的K个片段,就可以把原密钥重新还原。但如果密钥分存获得的片段数量少于K,就无法知道关于密钥的任何信息。要实现上述效果,把密钥简单地切分成若干片段是不行的,这样的话,每一个片段都会透露密钥的部分信息。所以,密钥分存并不是简单地切分密钥,而是将密钥转换成若干“子密钥”。

举个例子,我们设定N=2,K=2,意味着我们把想要加密的密钥(原密钥)转换成两个子密钥,只有同时获得这两个子密钥才能拼出原密钥。我们密钥分存把原密钥称为S,S是一个很大的数字(比如128位)。然后,我们可以随机产生另一个128位的数字R,让R作为其中的一个子密钥,那么另外一个子密钥就是S⊕R(⊕代表逻辑算符互斥,exclusive OR,或缩写成XOR,也叫异或),我们把S⊕R称为“密文”。然后,我们把子密钥R和密文S⊕R保存在两个不同的地方。单独根据子密钥R或密文都无法知晓原来密钥的任何信息,但如果我们同时得到R和S⊕R,我们可以通过异或逻辑运算得到原来的密钥。