论文部分内容阅读
无证书公钥密码是处于传统公钥密码与基于身份的密码系统之间的一种密码学。与传统公钥密码系统相比,无证书公钥密码的公钥不需要通过认证来保障其有效性,这样就避免了传统公钥密码存在的许多相关的问题。从另一个角度来考虑,无证书公钥密码确实也必须依赖于可信第三方(TTP)的存在,从这一方面来看,无证书密码系统和基于身份的密码系统有更多的相似之处。但是,无证书公钥密码系统却解决了基于身份密码系统遗留的密钥托管问题,因为无证书公钥密码系统中,用户用来进行密码操作的密钥是由两部分构成的:一部分是由密钥生成中心(KGC)根据用户的身份信息计算得到的,KGC是知道这部分密钥的;另一部分是由用户自己选择的,所以KGC是不可能获取的,这样就限制了KGC的一部分能力。自从2003年,Al-Riyami和Paterson介绍了这个定义以来,无证书密码系统得到了广泛的发展。出现了许多种定义无证书的密码系统的方法。2007年,Dent等人总结了目前存在的各种定义方法,并对他们进行了各种优劣分析:Al-Riyami和Paterson给出了第一个无证书加密算法的定义,该定义主要包括七个算法:系统建立、部分私钥提取、设定秘密值、设定私钥值、设定公钥、加密和解密。后来,又出现了一种包括五个算法的简化定义,主要是利用设定用户密钥算法来代替上面的设定秘密值算法和设定公钥算法,然后省掉设定私钥算法,这样这个简化定义就包括:系统建立、部分私钥提取、设定用户密钥、加密和解密。但是在解密算法的输入参数中必须包括用户的部分私钥。实际上,这个五个算法的简化定义和七个算法的定义是等价的,我们能从任何一方得到另一方。为了避免双线性对的使用,Baek、Safavi-Naini和Susilo提出了一种比较有意义的定义方法。在他们的定义中,他们把部分私钥作为设定公钥密码算法的其中一个输入参数,所以,用户只有获得了部分私钥才能够设定自己的公钥。Dent等人声称这种定义可以抵抗DoD攻击,但是从另外一个角度考虑,即使公钥是攻击者任意选择的,加密者也无法辨别出公钥的真伪,所以说还是不能抵抗DoD攻击的。另外,这种模型的最大的缺点就是不允许用户将来加密,也就是说,在以前的模型中,加密者可以在解密者还没有获得部分私钥之前进行加密,这样解密者在得到密文之后,在想解密的时候索取部分私钥即可,这也是基于身份的密码系统的一大优点。但是Baek等人的模型是不允许提前加密的,因为解密者在没得到部分私钥之前是不可能公布公钥的,那样加密者就不可能提前加密。上面的几种模型有两个共同的缺点:首先,KGC和用户之间的通信通道必须是秘密的而且可信的,因为一旦偷听者从通信通道中获得信息,他就可以通过代替用户的公钥而进行任何的密码操作;其次,上面定义的无证书的密码算法是不能达到和传统公钥密码算法一样的可信任水平的,它只达到2级可信任水平,而传统公钥密码算法则是3级可信任水平。为了弥补这两个缺点,一种更实用的模型被提供了,这种模型也是包括七个算法:系统建立、设定秘密值、设定公钥、部分私钥提取、设定私钥值、加密和解密。这七个算法的排列顺序是和前面的定义不同的,这样排列,就可以使得用户的公钥可以作为部分私钥提取算法的其中一个输入参数。那么,即使偷听者获取到了通信通道中的信息,由于他不能得到和这个部分私钥相对应的用户的秘密值,他仍然无法冒充用户进行任何的密码操作。从另一方面来看,如果KGC通过用自己选择的公钥代替用户的公钥来冒充用户进行密码操作,那么用户就可以公布他的部分私钥来揭露KGC,这样,这个新的模型就可以使得无证书的密码算法达到3级可信任水平,而且,用户和KGC之间的通道可以是公开的,这样就避免了“鸡和蛋”的两难问题。作为本篇博士论文的第一个结果,我们首先在第三章里分析了两个无证书的密码算法,一个是无证书的加密算法,该算法声称在标准模型下是抗两种型号的攻击的,但是据我们分析该算法在密钥代替攻击下是不安全的,即任何一个外部攻击者都能够选择可以验证有效的公钥来代替原有的合法公钥,从而轻易的解密在此公钥下加密所得的密文;另外一个是无证书的签名算法,我们发现该算法不能抵抗恶意的KGC攻击,即使KGC无法得到用户的秘密值,他仍然可以通过设定特殊的系统参数来构造用户的私钥。这是基于Waters的无证书的密码算法所共同面临的问题。然后,基于上面的比较实用的模型,我们设计了一个有效的无证书加密算法,我们的算法具有下列比较好的性质:●如果Decisional Truncated q-ABDHE问题是困难的,那么我们的无证书的加密算法被证明是标准模型下抗型号I攻击者适应性选择密文不可区分的。●在决定双线性Diffie-Hellman问题是困难的假设下,我们的无证书加密算法被证明是标准模型下抗恶意的KGC适应性选择密文不可区分的。●我们的无证书加密算法可以达到Girault的3级可信任水平。●在我们的算法里,KGC和用户之间的通信通道是不需要保密的。●比较于以前的标准模型下的无证书的加密算法,该算法具有较短的系统公钥。最后,我们给出了一个无证书的签名算法,满足在标准模型下抗恶意的KGC攻击和DoD攻击存在不可伪造的,这是据我们所知第一个满足这些性质的无证书的签名算法:●在BB~+签名算法是存在不可伪造的情况下,我们的新的无证书的签名算法是标准模型下抗恶意的KGC伪造攻击的。●在Computational q-BSDH assumption和扩展Diffie-Hellman(EDH)假设成立的情况下,此无证书签名算法是在标准模型下抗第一种型号的伪造攻击的。基于以上的签名算法,我们又构造了一个常数大小的群签名算法,不同于以往由基于身份的签名算法直接转变而来的群签名算法,我们的群签名算法是在标准模型下抗恶意的群管理者攻击的,而且由同一个签名者得到的群签名是不可连接的,并且此群签名算法也同时满足CCA匿名性和强的开脱性。密码操作的代理需要导致了代理密码的产生。1996年,Mambo等人首先提出了代理签名的定义,自那以后,由于其在现实生活中的广泛的应用,代理签名得到了快速的发展。根据应用背景的不同,出现了很多种代理签名的分类;Mambo等人首先根据代理能力的不同把代理签名分成了三种等级:完全代理,部分代理和带授权的代理。部分代理和带授权的代理要比完全代理安全得多,部分代理的优势是速度比较快,而带授权的代理对于授权的撤销是比较方便的。Kim、Park和Won结合部分代理和带授权的代理的优点,提出了带授权的部分代理的定义,不但提高了代理签名的有效性,而且可以更容易的控制签名权利的代理;根据原来签名者是否能够生成和代理签名一样的签名,代理签名又可以分成代理保护的代理签名和代理无保护的代理签名;根据验证者是否能够单纯从代理签名中得到签名者的身份,又把代理签名分成明显代理签名和匿名代理签名。对于代理签名的安全,Lee等人总结了安全的代理签名所应具备的几个性质:强的不可伪造性、可验证性、强的可辨别性、强的不可否认性、抵抗代理权力滥用性。当然根据代理签名的类型的不同,这些性质可以作适当的调整,比如,对于代理保护的匿名代理签名,强的可辨别性就要换成代理隐私保护性,而为了控制代理者的权力滥用,还必须加上一条性质:匿名身份可打开性。在Boldyreva,Palacio和Warinschi给出代理签名的精确的攻击模型之前,许多代理签名算法就被提出了,但是他们只是根据上面的几种性质对他们的算法进行了简单的安全性描述而没有进行完整的安全性证明,所以除了LKP算法,大部分算法都被证明是不安全的。Boldyreva、Palacio和Warinschi对代理签名算法的精确的攻击模型的定义使得代理签名算法的安全有了精确的衡量,而且他们还给出了第一个可证明安全的代理签名算法。在本篇博士论文的第四章我们总结了一下目前存在的代理算法:对于代理保护的签名算法,为了获得代理保护性,主要有两种方法:第一个也是被大多数算法采用的方法是原始签名者用自己的私钥签署授权,代理签名者结合这个签名和他自己的私钥生成代理签名密钥,所以原始签名者无法生成有效的代理签名。另外一个方法就是原始签名者和代理签名者之间进行3过程的盲签名协议,所以原始签名者仍然无法知道代理签名密钥。这种方法在一定程度上起到了代理保护的效果,但是这种算法不能抵抗原始签名者伪造攻击。PH算法就是采用的这种方法。另外一种就是匿名代理签名算法:匿名代理签名算法保护代理签名者的隐私,因为验证者无法从代理签名中辨别出签名者的身份。但是为了限制代理签名者滥用代理的权力,安全的代理签名算法是在发生争端的时候可以揭露签名者的身份的。Shumhe和Wei提供了一种方法,该方法是把签名者的真正身份隐藏在别名里,一般来说,一共有四方参与:别名提出中心、原始签名者、代理签名者、验证者,一旦存在争端,验证者可以从签名中得到一个参数送给别名提出中心,从而该中心可以揭露签名者的身份。1997年,Mambo等人又提出了代理解密的概念。比较于代理签名算法,代理解密没有得到很好的发展。Mambo等人提出的代理解密算法是只有当原始解密者把密文转换成另外一个密文时,代理解密者才能够恢复出明文。这种代理解密算法仍然不能解放出原始解密者。在1998年,Blaze等人提出微原代理密码系统,在他们的定义中,原始解密者和代理解密者共同生成一个转换密钥,那么一个半信任中介就可以利用这个转换密钥把密文转换成代理解密者可以解密的密文。为了彻底解放原始签名者,一系列的无转换的代理算法出现了,算法中代理解密者不经过密文转换就可以恢复明文。作为我们另外一个主要结果,我们在第五章首先给出了第一个代理保护的匿名代理密码的一般模型,在我们的模型中,任何第三方都不能区分出进行密码操作的人的身份,因为所有的公共信息都没有泄露代理者的身份,而且被代理者也可以进行相同的密码操作,这样既保护了代理者的隐私,也保护了被代理者的隐私。另外我们的模型具有强的不可否认性,不管是代理者还是被代理者都不能否认他们进行的密码操作。这样我们的模型既满足了代理保护的代理算法的所有性质,而且也满足了匿名代理算法的所有性质。我们的模型中是不需要授权的,因为我们的代理是隐含代理,被代理者可以随时撤消代理者的代理能力,而且第三方也不需要特别来检查代理者代理的合法性,因为一旦代理者的代理权限被撤消以后,他就无法再进行有效的密码操作。也就是说,我们的模型提供了一种有效的方法来解决代理能力的撤消问题。特别的,在我们的模型中,代理者和被代理者之间的通信通道是可以不保密的。然后,我们又给出了我们这个模型所对应的攻击模型,在我们的攻击模型中,主要考虑两种型号的攻击,—个是被代理者的攻击,再一个就是没被代理的外部攻击者的攻击,在第一种攻击中,由于攻击者知道被代理者的密钥,所以自己就可以生成部分代理私钥,所以只进行解密(签名)预示,而在第二种攻击中,攻击者可以询问两种类型的预示:部分代理私钥预示和解密(签名)预示。攻击模型对于设计可证明安全的代理保护的匿名代理算法提供了安全标准。最后,我们给出了两个具体的算法作为例子:一个是代理解密算法,在决定双线性Diffie-Hellman问题是困难的情况下,这个算法是标准模型下抗两种型号的攻击的适应性选择密文不可区分的。另外一个是代理签名算法,我们利用分叉引理可证明:在假定计算双线性Diffie-Hellman问题是困难的情况下,这个算法是抗两种型号的攻击存在不可伪造的。