密钥共享

Posted qinhongmei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密钥共享相关的知识,希望对你有一定的参考价值。

密钥共享

编写人:岑鹏、吴易佳、秦红梅

1密钥共享背景

       密钥管理是为了防止通信双方在信息交换时密钥泄露或者被篡改和替换的系列过程,保证通信双方在通信时密钥的安全性与可靠性,当一个密钥对多份信息进行加密时,该密钥一旦丢失、损坏或者被非法获得时,多个加密的机密文件就可能会被非法解密,从而造成巨大的损失。为了解决这个问题,将密钥进行多个备份,并让不同的人把密钥保存在不同的地方,而这个方案也出现了一个问题,那就是越多的人知道该密钥则密钥泄漏的可能性就越大,越少的人知道了该密钥,密钥全部丢失后还原出源文件的可能性越小。为了解决上述问题,1979年,shamir用Blakley分别用不同的方法独立的提出密钥共享的概念,其基本思想是将密钥分成若干部分,并且不同的参与者分别保管,只有当参与者的数是达到一定门限时,他们分别拿出自己的密钥才能恢复出主密钥。Shamir的(t,n)门限方案是利用多项式插值法构造出一个(t-1)次多项式,将多项式的常数项当作需要共享的密钥。Blakley的(t,n)门限方案基于射影几何理论,其共享密钥是由t个(t-1)维超平面的空点来构成。另外,Asmuth-Btoom提出了基于中国剩余定理的方案,Kamaa-Creene-Helman提出了基于矩阵的方案。从此,密钥共享技术的研究与应用获得了比较快的发展。

       基于门限方案仅针对门限访问结构的局限性,1987年,Ito等人提出了一般存取结构的密钥共享方案,该方案的本质是Shamir的密钥分配算法的推广,但该方案导致每个人掌握的子密钥信息量大,致使数据扩散很大,因而该方案并不实用。针对同一组人(或共享控制集合)要共享多个密钥,而且不同的主密钥对应不同的密钥控制要求的问题,产生了多密钥共享控制的概念。例如,在一个导弹发射指挥平台上,发射指令需要进行共享控制,但由于多种型号的导弹,故有多个不同的发射指令,不同权限的人在共享控制中起到的作用也不相同,这就需要研究和设计多密钥共享体制。至今,多密钥共享体制的已有研究成果并不多,而多密钥共享在数字签名、电子拍卖、密码图像共享等方面又具有极其重要的利用价值,因此,对多密钥共享体制的构造,特别是安全且高效的模型建立,还需要进一步研究。

       传统的密钥共享方案只能共享密钥K,但是密钥K一旦被一些攻击者破解时,就不能继续作为密钥被共享。当前,许多国内外学者提出了许多的密钥共享方案。如:广义的多密钥共享方案、可验证的多密钥共享方案、动态的多密钥共享方案等。为了提高方案的安全性和降低系统的复杂性,可以将这些方案与一些密码体制相结合如:离散对数算法或RSA从而得到了一些性能更好的方案。在密钥共享发展的早期,都是假设(t,n)门限密钥共享方案中的密钥分发者和参与者是诚实的。然而,在实际运行过程中该假设并不一定成立。为了解决密钥分发者及参与者不诚实的问题,一些学者经过不断的研究提出了可验证的密钥共享方案。

2密码学基础知识

       密码学算法主要分为两种:对称加密和非对称加密。对称加密就是使用了一样的密钥来加密,需要在只有通信的双方知道密钥的情况下才安全。在非对称加密算法中,有公钥和私钥两种密钥,其中,公钥是公开的,不需要保密,私钥由个人持有,必须妥善保管和注意保密。加密和解密使用两种不同的密钥,用公钥加密,只有私钥能解密,用私钥加密,只有公钥能加密。RSA就是一种常见的、应用很广的非对称加密算法。

       加密解密过程就是A往B发送消息,A用B的公钥把消息加密,只有B的私钥能解密。然后A把加密后的消息发送给B,B用自己的私钥解密就能看到了,途中没有别人可以破解消息,因为别人只有B的公钥。然后B用自己的私钥加密消息,回复给A,A用B的公钥解密读取回复。但是这样真的安全吗?如果传输过程中消息被人修改了怎么办?如果A加密使用的公钥不一定是B的公钥呢,只是他以为是B的公钥。

      上面的问题可以用数字签名和数字证书解决。数字签名可以解决消息被人修改的问题,数字签名是一个hash算法,A把要发送的消息通过hash算法计算出一个hash值,当做摘要,和消息一起传送,B把消息hash之后得到另一个摘要,验证是否和A传送过来的摘要相同。如果担心消息和hash摘要都被修改,可以把hash摘要用B的公钥加密,就不怕别人改了。数字证书可以解决这个公钥是不是B的公钥问题,数字证书是通过权威机构-证书管理机构发放的证书,如同现实中的身份证一样,是证明这个公钥是某人的,数字证书会把这个人的公钥,姓名,证书机构名称,有效期放在一起。这样A就可以先请求B的公钥,然后B把数字证书给A看,就证明这个是B的公钥,A再拿这个B的公钥去发送消息。但是证书也可以伪造,中途被拦截了,修改成C的公钥,以及B的名字,这怎么办呢?所以在证书机构颁发证书的时候,会用数字签名给证书内容做个摘要,然后用机构的私钥加密这个摘要,这样就不怕别人篡改造假证书了。现在https协议就是基于非对称加密技术的,首先客户端往服务器发起加密请求,于是服务器会用自己的私钥加密网页,然后连同自己的数字证书(这个证书里包含证书颁发机构做的签名)发送客户端,客户端浏览器会查看操作系统认证的受信任的证书颁发机构查找公钥,验证证书是否被篡改,如果被篡改会发出警告。如果查找不到受信任的证书颁发机构,浏览器也会发出警告。

RSA算法公式

①M为明文,C为密文,e为公钥

技术图片

②密文解密公式

技术图片

d为私钥

RSA算法流程

  1. 确定n
    独立选取两个大素数p,q(100~200位十进制数字) 。
  2. 确定e
    计算n的欧拉函数值技术图片,在1-技术图片中随机选取整数e,使得,欧拉函数值和公钥的最大公因数为1,即为互素数。
  3. 确定d
    计算e mod技术图片 的乘法逆元,即为d。

3数学基础知识

3.1椭圆曲线数学基础

      一般的椭圆曲线的三次方程为:

技术图片

 其中a,b,c,d,和e是域上的一个值,这里的域可以是实数域、有理数域以及复数域,或者是有限域。给定不同的参数值,会得到不同的椭圆曲线。

       椭圆曲线上的点应该满足以下:

        结合律技术图片 ,则技术图片

        单位元技术图片

        逆元 若技术图片。点技术图片是P的逆元。

        椭圆曲线上的运算包括点的加法和点的数乘。

        椭圆曲线密码体制是基于ECDLP的公钥密码体制,它是利用有限域上的椭圆曲线的离散对数难题得到的一系列密码体制。即在椭圆曲线上Q=kP,k和P计算Q比较容易,而对给定的Q和P计算k则比较困难。

3.2三个著名的密码假设

1. 大整数分解问题

     设技术图片,其中技术图片是互不相同的大素数,技术图片为正整数。讲n分解为技术图片

     大整数分解算法分为普通算法和特殊算法:

     1)普通算法:算法困难行与n的大小有关;

     2)特殊算法:算法的运行时间依赖于n的特性。

2. 离散对数求解问题

      概念:设有限循环群G,技术图片是G的一个生成元,技术图片元素是离散对数唯一的整数技术图片,使得技术图片成立,记做技术图片。若技术图片不是生成元,那么技术图片是离散对数是指有最小的正整数技术图片,使得技术图片

      设技术图片是阶为n的有限群,技术图片具有以下特点:

       ①技术图片

       ②技术图片

       ③如果h是G的另一个生成元,那么技术图片,且当a=h时,有技术图片

3. Diffie-Hellman

       设有限循环群G及生成元g,两个元素技术图片,求对应元素技术图片

    (1)判定性Deffie-Hellman问题。对于有限循环群G和它的生成元g以及三个元素技术图片判定技术图片技术图片是否相等。

    (2)计算性Deffie-Hellman问题。对于有限循环群G和它的生成元g以及两个个元素技术图片,计算技术图片,使得技术图片

4可验证密钥共享研究

       密钥共享方案最早是出Shami和Blakley与1979年分别提出的。在早期的研究中都有一个前提,那就是密钥共享方案中的密钥分发者(Dealer)都是可信任的。但是在现实中,这样的假设却不一定在任何情况下都成立。一旦密钥分发者将错误的子密钥发送给一个或者多个参与者,那会造成一些访问结构无法恢复出密钥。以至于损害到合法参与者的利益。为了解决密钥分发者的不可信任问题,研究者们提出了可验证密钥共享(Verifiable Secret Sharing,简称VSS)这-概念。可验证密钥共享是一类特殊的密钥共享,它不仅能过使参与者共享一个密钥,而且参与者在不泄露子密钥信息的条件下可以验证子密钥的有效性。

4.1可验证密钥共享的概念

       通常的密钥共享方案,都假设密钥分发者是诚实的。这会导致基本密钥共享中存在--个主要的安全问题:不能防止密钥分发者的欺骗,即分发者在分发子密钥时可能会给一个或者多个参与者分发伪造的子密钥。为了解决这个问题,Chor等人提出了可验证密钥共享(VSS)的概念。可验证密钥共享就是把一个普通的密钥共享方案附加上一个允许参与者认证他们收到的子密钥的交互式算法,参与者可通过认证算法检验自己的子密钥是否有效。

4.2可验证密钥共享的研究现状

       目前可验证密钥共享的研究方面,主要存在两点不足之处,一是提出安全高效的门限方案不多,已经提出的可验证密钥共享方案主要是门限方案,只有为数不多的几个非门限方案。而是对--般访问结构上的可验证密钥共享的研究非常薄弱,在已有的文献中还见不到安全实用的广义可验证密钥共享方案。在关于可验证密钥共享的应用研究方面也存在着几个明显的缺陷,主要表现在:

       (1)  对门限可验证密钥共享方案在密码学中的研究较多,而对其在签名的门限生成及共享验证的数字签名方面的研究涉及的甚少。

       (2)  对广义可验证密钥共享在面向群体的密码学中的应用,如基于--般访问结构的分布式密钥生成,分布式签名的研究几乎没有涉及。

       (3)  对可验证密钥共享在电子商务中的应用研究的不够深入。可验证密钥共享的研究虽然在理论和应用两方面都取得了一定的成果,但仍然有许多问题值得我们进一步的研究。

4.3 Feldman的研究方案

        Feldman在Shamir的密钥共享方案基础上提出了一种可验证的密钥共享方案。以下为详细算法:

(1)  初始化阶段

        设p是一个大素数,q为p-1的一个大素数因子,技术图片且为q阶元素,三元组(p,q,g)是公开的,k是门限值,n是参与者的数目,s为要共享的密钥。

(2)  子密钥分发阶段

       密钥分发者(Dealer)选取一个k-1次的随机多项式技术图片,并使得技术图片。即在技术图片任意选取k-1个随机数技术图片,构造多项式

技术图片

然后计算并发送子密钥技术图片给参与者技术图片,并且广播验证信息,技术图片

(3)  验证阶段

        参与者技术图片,i=1,2,…,n在收到子密钥技术图片之后,可通过检查等式

技术图片

是否成立来验证子密钥的正确性。若等式成立相等则说明参与者技术图片拥有的子密钥是正确的,否则说明收到的子密钥是不正确的。

(4)  密钥恢复阶段

        当k个参与者,不妨假设为技术图片合作恢复密钥时,每一个参与者技术图片都要公开他的子密钥份额技术图片。此时任何一个参与者都可以通过验证上述等式来验证其他参与者的子密钥的正确性。若经检验,所有公开的子密钥都是正确的,那么密钥可以由拉格朗日插值公式来恢复。

5密钥共享中的防欺骗问题

       Shamir的基于拉格朗日插值多项式的密钥共享算法是在1979年提出的。1989年,Tompa等人首次提出了一种对Shamir的密钥共享方案中的攻击方法。该攻击方法可以描述如下:假设k个参与者在一起进行密钥恢复,其中P1,P2,…,Pk-1是k-1个共谋的参与者,他们企图欺骗诚实的参与者Pk使得Pk在不知情的情况下,得到一个错误的密钥。在公开子密钥的时候,P1,P2,…,Pk-1分别拿出假的子密钥技术图片,而参与者Pk则拿出正确的子密钥mt。这样参与者Pk只能得到一个由技术图片恢复出来的假的密钥s‘,而其他共谋的参与者却可以恢复出正确的密钥s。与此同时,诚实的参与者Pk无法判断密钥s‘的真伪。在Shamir的密钥共享中,即使是一个不诚实的参与者也可以利用上述手段来欺骗其他k-1个参与者,而Shamir的密钥共享方案本身不具备任何抵抗该欺骗的能力。自此以后,密钥共享中的防欺骗的研究便成为了密钥共享中的热点研究问题。

5.1 抵抗欺骗的密钥共享研究现状

       目前,对密钥共享中的防欺诈研究主要是针对门限访问结构的。在密钥恢复的过程中,参与者拿出自己的子密钥来进行密钥重构。此时,不诚实的参与者会拿出伪造的子密钥,在这种情况下,诚实的参与者将恢复一个伪造的密钥,而欺骗者能获得正确的密钥。因而,密钥共享中的防欺诈就是诚实的参与者能够判断恢复的密钥的正确性,从而维护自己的合法利益。早在1989年,McEliece等就利用纠错码提出了一种(k,n)门限密钥共享体制,使得最多含有e个欺骗者的k+2e个参与者可以正确的恢复出密钥。然而在这个方案中,参与者密钥恢复的人数是多于k个的。当含有欺骗者的k个参与者进行密钥共享的时候,诚实的参与者无法判断恢复的密钥是否正确。Tompa等人提出了一种防欺骗的密钥共享方案,能够在k个参与者进行密钥共享的时候抵抗欺骗。与Shamir的密钥共享方案不同的是,在该方案中,子密钥的取值范围|Vi|相对密钥的取值范围|S|有一定的扩张,它们满足:

技术图片 

其中技术图片表示在该方案中,欺骗者成功的概率。

       我们上述的在密钥共享方案屮的欺骗行为有可以被分为两种不同的模式。Carpentieri等人提出了一种欺骗模式,在这种模式中,欺骗者是在已经知道密钥的情况下欺骗其余的诚实的参与者,使他们获得一个错误的密钥。我们把这种模式叫做“CDV”模式。另外,Ogata等人最近提出一种新的欺骗模式,欺骗者在不知道密钥的情况下进行欺骗。我们把这种欺骗模式叫做“OKS”模式。Tompa等人提出的方案实际上是属于“CDV”模式的。Carpentieri等人分析在“CDV”模式下,可抵抗欺骗的密钥共享中的子密钥的取值范围,并且给出了一个取值范围的下限:

技术图片 

        同样,Ogata等人也分析了在“OKS”模式下,可抵抗欺骗的密钥共享中子密钥的取值范围,并且给出一个下限:

技术图片 

        在“OKS”模式中,Ogata等人还提出了一种可抵抗欺骗的密钥共享方案,在这个方案中,子密钥的范围达到了上述表达式中的下限。但是,该方案只有在密钥是均匀分布的情况下才是安全的。对于“CDV”模式,Cabello等人提出了一个可抵抗欺骗的密钥共享方案,在该方案中,子密钥的规模接近理论的下限,并且密钥可以随机分布。

        以上提到的方案考虑的是参与密钥恢复的参与者的欺骗行为,因而,他们假设欺骗者的数量不会超过k。Araki提出一种更新的欺骗模式。在这种模式里,不但参与密钥重构的参与者可能存在欺骗行为,没有参与密钥重构的参与者也有可能与参与重构的欺骗者共谋,来欺骗诚实的参与者,欺骗者的数量是会大于K的。在这种假设下,欺骗者可以获得足够的子密钥而获得正确的密钥。所以我们把这类新的欺骗模式叫做“CDVn-1”模式。Araki还提出了一个“CDVn-1”模式下的可抵抗欺骗密钥共享方案。另外,我们指出,Tompa等人的方案也可以抵抗“CDVn-1”模式的欺骗。

       在矢量空间访问结构上的密钥共享中,对于防止欺骗也有一定的研究,但相对于门限访问结构上的防欺骗研究还显得不够深入。

       上述介绍的密钥共享中的防欺骗手段,主要是使得诚实的参与者可以判断恢复的密钥的正确性。但是当判断出密钥是伪造的时候,诚实的参与者却没有办法鉴别哪一个子密钥是伪造的。虽然这样可以在一定程度上防止欺骗,但是如果仅仅只能判断密钥的真伪,而不能鉴别出欺骗者,会使得这些欺骗者在后续的密钥重构过程中继续作假。实际上,最早的能够鉴别欺骗者的密钥共享方案最多含有e个欺骗者的k+2e个参与者不仅能够恢复出正确的子密钥,而且可以将这些不超过e个的欺骗者全部鉴别出来。但是该方案的局限性在于参与密钥重构的人数要大于门限值k。这样,在很多密钥共享的应用场景中,这种鉴别欺骗者的方法并不奏效。1989年,Rabin等人提出了一种新的可鉴别欺骗者密钥共享方案。该方案可以在k个参与者进行密钥重构的时候,成功的进行的欺骗者鉴别,只是该方案的效率不是太高。1995年,Kurosawa等人给出了一种效率较高的可鉴别欺骗者密钥共享方案。该方案能成功的前提条件是欺骗者的数目t要满足t(k-1)/3。2011年,Obana又提出了一个最新的方案。该方案的前提条件和Kurosawa方案的条件一样,可是效率却比之前的方案有了很大程度上的提高。

       无论是能够判断密钥的正确性的密钥共享方案,还是可鉴别欺骗者的密钥共享方案,为了能够抵抗欺骗,参与者的子密钥的取值范围都相对密钥有一定程度的扩张。但是,就扩张的程度来说,可鉴别欺骗者的密钥共享方案中的子密钥的扩张程度要远远大于能够判断密钥的正确性的密钥共享方案中子密钥的扩张程度。我们在考虑一个密钥共享方案的效率的时候,主要的参数就是子密钥的扩张程度。当子密钥扩张的越大的时候,方案的效率就越低,反之效率越大。

5.2 可抵抗欺骗密钥共享的模型

       可抵抗欺骗的密钥共享方案和一般的密钥共享方案相同,也由一个密钥分发者D、参与者集合P、访问结构T、密钥空间S、密钥空间M、密钥分发算法ShareGen和一个密钥恢复算法Recons组成。可抵抗欺骗的密钥共享方案分为两个阶段,密钥分发阶段和密钥恢复阶段。其中密钥分发阶段和一般密钥共享中的密钥分发阶段相同。而在密钥恢复阶段,参与者不仅可以重构密钥,而且更进一步,可以判断恢复的密钥的正确性。

(1)密钥分发阶段

     假设参与者们需要共享的密钥s∈S,密钥分发者D调用密钥分发算法ShareGen,将s∈S作为密钥分发算法的输入,并且计算出n个子密钥:

ShareGen(s)={m1,m2,…,mn},mi∈M

之后,密钥分发者将子密钥mi发送给参与者Pi ∈P。

(2)密钥恢复阶段

       一组属于访问结构的参与者计划可以调用密钥恢复算法Recons来恢复密钥。这里的密钥恢复算法与一般密钥共享中的密钥恢复算法有所区别,它包含了一个抵抗欺骗的功能。不妨假设{P1,P2,…,PK}∈Γ ,参与者们调用Recons来恢复密钥。如果Recons没有检测到有欺骗行为,那么:

s=Recons(m1,m2,…,mk)

否则:w=Recons(m1,m2,…,mk)。其中w技术图片S,它表示密钥恢复算法Recons检测到了有欺骗行为的存在。

6密钥共享应用

       密钥共享最初是应用在密钥管理,即将一个密钥交由多个参与者共同管理保存,使得参与者对密钥的重构形成了一定制约,在一定程度上解决了密钥的遗失和信息泄露等问题。经过几十年的研究发展,密钥共享自身的理论不断的自我加强和日趋完善,人们还发现它在构建许多其他密码协议时起到了关键的作用。

(1)在数字签名中的应用

       数字签名在信息安全领域,尤其是电子商务中起到了至关重要的作用。与一般意义上的手写签名不同,数字签名是对以数字形式存储的信息进行签名。一般来讲,一个数字签名方案包括一个签名函数Sig和一个对应的验证函数Ver。令m为需要签名的消息,签名者计算Sig(m),然后连同消息m,即{m,Sig(m)}—起传送给接收者。接收者可以利用验证函数Ver对{m,Sig(m)}进行验证。一个好的数字签名方案应该具有签名不可伪造,不可抵赖,被签名消息不可更改等性质。在现实中,很多情况下需要多个签名,文件才能生效。因此数字签名也就出现了门限数字签名和多重签名等方案,还有将这两者特点相结合的门限多重签名方案。 

       在一个(t,n)门限签名方案中,有n个签名者都有签名权,其中任何t个或者t个以上的签名者利用自己的私钥对消息进行签名,生成部分签名,然后由一个合并人将所有的部分签名合并成一个有效地代表所有签名者的签名,任何少于t个的签名者都无法伪造群体的有效签名。

(2)在电子拍卖中的应用

       一个电子竞拍系统包括注册中心,拍卖服务器,卖主和竞拍者。注册中心负责给卖主和竞拍者分发合法证书,进行投标注册等,实际上注册中心是一个有权威的认证机构。拍卖服务器主要负责拍卖的工作,竞拍者将自己的标价密封好通过密钥信道传送给拍卖服务器,拍卖服务器打开标价后按照一定的规则,如标价最局者中标,然后公布最后中标的标价。

        一个简单的应用是采用n个拍卖服务器,每个竞拍者将自己的标价通过一个(t,n)门限密钥共享方案在n个拍卖服务器中共享,至少有t个拍卖服务器联合才能获得每个竞拍者的标价信息,而任何少于t个拍卖服务器联合起来也无法获得任何标价信息。为了实现匿名性,每个竞拍者也可以利用密钥共享体制将自己的标价分成若干份,不一次性全部交给拍卖服务器,而是分为若干次上交,每次上交后拍卖服务器进重构,直到找出最高标价为止。

(3)在电子选举中的应用

       电子选举是将生活中实实在在的选举电子化,选民可以通过互联网进行投票选举。电子选举需要满足一些最基本的条件,比如选票匿名,唱票的过程以及当选结果的正确性,可以被选民监督,选民的选票的必须合法等等条件,通过相关的密码协议实现。密码共享在电子选举中的应用即利用门限的思想,在选举中设立n个唱票人,然后给定一个门限值t,使得至少t个唱票人联合才能得到最终的选举结果,而任何少于t个唱票人都不能获得最终的选票结果。

 

 

 

 

技术图片

 

以上是关于密钥共享的主要内容,如果未能解决你的问题,请参考以下文章

从共享密钥生成派生密钥 (ECDH-ES) - ConcatKDF

如何在 OpenSSL 中使用预共享密钥

手机中的WIFI , HG520s的共享密钥是啥?求高手解救。

各种微服务中 JWT 的共享签名密钥

IPsec搭建(预共享密钥)---Centos部署服务器

检查共享首选项中是不是存在密钥