分享

《密码术的奥秘》 密码术的用途

 循天园 2023-01-10 发布于广东

引言

到目前为止,我们一直假定密码算法是用来保障机密性的。但是,它还有很多其他用途。不论何时,当我们使用密码术时,检验它是否帮助我们达到了预期的目标很重要。下面我们举一个例子来说明对密码术的一种可能的误用。

1983年,美国米高梅影片公司(MGM)制作了一部叫做《战争游戏》的影片,它曾风靡一时,影片强调了电脑黑客行为的危险性。该电影的一个剧情概要说“人类的命运掌握在一个十几岁的孩子手中,他在玩电脑时不经意地闯入了国防部的战术计算机”。影片开场时,这个男孩非法进入他所在大学的计算机系统,并窜改了他女朋友的分数。当时,很多大学将考试成绩存在可以远程访问的数据库中。毫不奇怪,这些学校担心这些成绩可能会像影片中所描述的那样被越权者改动,因此想要引入适当的保护机制。

有人提议给每个学生的分数加密。然而这实际上是达不到保密目的的,探究其中的原因既重要,又很有趣。不难看出给分数加密可以达到什么样的效果。结果是,不管是谁进入数据库后都看不到任何一名学生的分数,看到的只是每个名字后面毫无意义的数据。很不幸,这种办法并不一定能防止电脑黑客将分数改高。如果一名黑客考试不及格,但他刚好知道有一名学生得了好分数,那么他只须把自己名下那个无意义的数据改成跟那名同学一样即可。当然,如果他不知道那名同学的准确分数,那他也就不知道自己改动后的新分数。但无论如何,他知道现在他是及格了。使用加密而达不到用户目的的情况很多,上面只是其中一例。加密并不能解决人们遇到的所有问题。还要注意,在这个特定的例子中,加密算法并没有被破译,实际上它根本没有受到攻击。之所以发生这种事情,是由于用户未能正确地分析问题。

alt

现在假定,大学不是只对分数加密,而是对整个数据库加密,这是否能达到防止黑客窜改分数的目的呢?在这个例子中,给整个数据库加密就意味着整个文件对黑客来说都是无法识别的。然而,即便如此也不能阻止黑客窜改分数。例如,假设文件的每一行代表一名学生的姓名和分数,如果全班学生姓名是按字母顺序排列的,那么在上一段讨论过的那种攻击仍可能发生。

在我们关注如何使用密码术来保护存储的信息以防别人动手脚之前,我们先花一点时间考虑如下问题:若某个人能够窜改保存在一个特定数据库里的分数,是否真有严重后果?当然,确保每名学生分数的真实性是很重要的。不过,要是被窜改了的数据库不是唯一的可供查阅分数的地方,那么这名黑客学生极有可能无法从窜改那个特定记录中的分数中得到任何好处。关键之处也许在于,应该设立某种机制,使其能够警告所有授权用户,提醒他们分数已被窜改。因此,倘若任何窜改都能被查出来,那么预防窜改也许就不是生死攸关的事了。接到警告的授权用户就不会仅依赖于该数据库而是去查阅权威记录了。在很多情况下,查出越权窜改比预防窜改更有必要。

密码术被普遍用来监测越权者对文件的变更。事实上,至少在商界,提供机密性已不再是密码术的主要用途。除了传统的用于保护隐私外,密码术现在还用于确保:

● 数据完整性:保证信息不被未经授权的或来历不明的手段所窜改;

● 实体认证:确认实体的身份;

● 数据源认证:确认信息的来源;

● 不可否认性:防止(通常是发信人)对信息内容和(或)发信人身份的否认。

自然,也可采用一些标准的(非密码术的)方法来防止数据遭受意外的损坏,例如,可以利用奇偶校验或更高级的纠错码。然而,由于这些方法只适用于公开的信息,如果要保护数据不受到蓄意的窜改,这些技巧就未必够用了。任何一个蓄意窜改信息的人都会把改变后的信息加以适当编码,以使窜改的内容无人察觉。因此,为了阻止蓄意窜改,必须使用某些仅为发信者和(可能的)收信者所知道的值,比如密码密钥。

使用对称算法的保密

我们已经认识到,如果使用分组密码以ECB模式加密数据,会出现一些安全隐患。一种可能的隐患是,某人掌握了对应的密文与明文区组后,可以巧妙处理密文区组来构作一篇新的密文,并使其在解密后呈现为有意义的信息。收信人将无法察觉其中的变化。我们在前文已经看到过这种行为的一个小例子。然而,这里要强调的是有意义这个词。如果按ECB模式使用分组密码,那么很清楚,解密算法可以按任意次序作用于密文区组,同时有可能单独破译每一个区组而得到潜在的信息。然而,最后得到的被破译的资料不太可能形成一个前后连贯的、可以理解的信息。虽然不能忽视这种攻击存在的可能性,但其成功的机会很小。

使用ECB模式的更严重缺陷是,攻击者针对一个固定的密钥,可能会编制一本已知明文区组与密文区组相对应的词典,而且ECB模式容易受到基于明文所用语言的统计特性所进行的攻击。这类攻击的“典型”例子是第三章中演示的对简单代换密码的攻击。

易受上述两种攻击的原因在于这些区组的加密都是相互独立进行的。所以,对于某个固定的密钥,相同的明文区组会导出相同的密文区组。克服这个缺点的一个办法是,让每个密文区组不仅随对应的明文区组而定,而且还取决于它在整篇文章中的位置。这就是维热纳尔密码所用的方法。这种技巧确实能够达到使语言统计数据“变平”的效果。但是,更常用也更有效的技巧是,设法使对应于任一给定明文区组的密文区组,随信息中所有位于它前面的明文区组的内容而定。为达到此目的,最常用的两种方法是使用密码分组链接(CBC)模式和密码反馈(CFB)模式。接下来我们描述一下CBC模式。

假定我们有一条信息,它由n个信息区组M1、M2、……、Mn组成,我们希望用密钥为K的区组密码来为其加密。在CBC模式下,所得的密文有n个区组:C1、C2、……、Cn,但此时每个密文区组都依赖于所有在它前面的信息区组。具体做法是这样的:除了C1之外的每个密文区组,都是先由对应的信息区组与它前面的一个密文区组作XOR运算后再进行加密而得到的。例如,C2是加密M2⊕C1之所得。如果我们用EK表示使用密钥K进行的加密,则可得出C2=EK(M2⊕C1)。显然,第一个信息区组需要与此不同的处理方法。一种办法是让C1等于EK(M1)。另一种常用的方法是使用一个初始化值(IV)并设C1是对(M1⊕IV)加密的结果。(注意,若IV区组中全是0,那么这两种方法是等同的。)因为C1依赖于M1,C2依赖于M2和C1,所以很清楚C2同时依赖于M1和M2。类似地,因为C3=EK(M3⊕C2),所以C3同时依赖于M1、M2和M3。总体上说,每个密文区组依赖于它所对应的明文区组以及所有位于它前面的明文区组。这样做的效果就是将所有的密文区组用一种合适而特定的次序连接起来。这不仅破坏了信息所用语言的统计特性,而且实际上还排除了他人对密文动手脚的可能性。

alt

密码分组链接

现在我们用在第五章出现过的有关分组密码的小例子来解释CBC模式是如何运作的,并比较在使用同一算法和密钥时,EBC模式与CBC模式加密所得密文的异同。不幸的是这个例子表面看起来比实际上要复杂。所以我们鼓励读者坚持看完这个例子。当然,如果你跳过这段直接去读下一节也无碍大局。

这个例子中的明文用十六进制写为A23A9,密钥KB。加密算法是先对明文区组与密钥作XOR运算,然后再将M⊕K中的二进制数字向左移转一个位置,从而得到密文区组。对于CBC模式,我们使用全为0的IV,使得C1与ECB模式加密的所得相同。于是M1⊕K=A⊕B=1010+1011=0001,经移转后得到0010,这便是C1,所以C12

计算C2的过程如下:

M2⊕C122=0010⊕0010=0000

0000⊕K=0D=0000⊕1011=1011

施行移转后得C2=0111=7。C3是这样算出的:

M3⊕C237=0011⊕0111=0100

0100⊕K=0100⊕1011=1111

施行移转后得C3=1111=F。C4的计算过程是:

M4⊕C3AF=1010⊕1111=0101

0101⊕K=0101⊕1011=1110

施行移转后得C4=1101=B。我们请读者来计算出C5(答案在下面给出)。

这样,对同一个信息,我们用不同的加密模式得到两种密文。

alt

即便是从这个小例子中我们也可以清楚地看到,CBC模式下相同的信息区组的位置与相同的密文区组的位置之间没有明显的关联。

alt

CBC模式例子的图示

在CFB模式下使用分组密码时,运作过程与此不同;但最后的效果是类似的,即每个密文区组依赖于它所对应的明文区组以及所有原信息中依次出现在它前面的明文区组。关于CFB模式的详情,可参见梅内策斯、范·奥尔斯霍特和范斯通所著的《应用密码术手册》一书。

认证

在信息安全领域,认证一词有两种不同的含义。一种含义是数据来源的认证,它关注的是核实所收到数据的来源,另一种含义是(对等)实体的认证,即一个实体对另一个实体身份的验证。

典型的数据来源认证都伴随着对数据完整性的确认。实体认证有很多种形式,但基于密码术的实体认证往往有赖于两个实体之间某种信息的交换。这种交换被称为认证协议。本书中我们常常提到用户并认为用户就是指人。然而在这里所谓的实体可能指计算机,也可能指人。

当然,用户认证是访问控制【1】概念中最基本的要素,用户可通过多种方法在彼此之间或是在计算机网络上认证自已的身份。基本的技巧至少需要依靠下列三样东西中的一样:

● 已知物:例如,它可能是需要用户保密的口令或PIN;

● 拥有物:例如塑料卡或个人专用手持计算器等;

● 用户的某些特征:包括生物识别标志,例如指纹和视网膜扫描、手写签名或声音识别等。

最常用的方法大概是使用已知物或拥有物的组合体。当然,风险总是存在的:已知物可能被对手发现,而拥有物可能被对手偷去或复制。这种情形支持了下述观点:唯一能够对用户作出认证的方法应该以用户的特征为基础,诸如其生物识别标志。然而,由于存在一些实际困难,生物识别标志还不能广泛使用。

利用对称算法的认证和数据完整性

认证和数据完整性都能利用对称密码来达成。我们首先考虑认证问题,然后是数据完整性问题。认证的类型有两种。在单向认证时,需要一个用户认证另一个用户;在双向认证时,两个用户需要彼此认证。第九章讨论的磁条卡在ATM上的应用,就是一个单向认证的例子。通过输入PIN,磁卡由ATM在加密的情况下加以认证。但磁卡持有人必须使用非加密的手段——比如观察ATM的位置和结构样式——来确认所使用的ATM机并非是伪造的。登录一台计算机也是单向认证的例子。无论哪一种类型的认证都要用到事先商定的算法以及秘密信息或密钥。算法中密钥的正确使用是认证的关键。很明显,这个过程取决于密钥不被泄漏。更进一步,高级的认证技术常常要求使用双方商定的协议,其中包含质询与应答(即质询的加密版本)的交换。

必须注意,认证协议仅限于在协议生效的瞬间确立双方的身份。如果要在刚被认证的整个联络过程中对信息加以保密,或是保证数据的完整性,则必须用其他加密机制来提供保护。保密过程所需要的密钥可以作为认证协议的一部分来交换。但如果还要防止冒名顶替者对(部分)认证协议进行重放【2】,那么就需要使用诸如序列号或时间标记等额外的信息了。

为了保证信息的数据完整性,可以使用认证算法和密钥。认证算法以信息和商定的密钥为输入信息,然后计算出一个认证值作为输出信息。这个认证值只是一个(短的)比特串,它的值取决于认证算法、信息本身和商定的密钥。用第五章的术语来说,认证算法就是由密钥控制的散列作用。

当用户A想给用户B发一个信息时,他将认证值添加到信息上。B收到的是该信息及其认证值。然后B用从A处收到的信息和商定的密钥作为输入信息,经认证算法算出输出信息。如果这个输出值与A发来的认证值相符合,则B可以确信这个信息确实是A发出的,而且没有被改动过。(所以,这一认证功能同时保证了数据完整性及对A的认证。)善于观察的读者一定会注意到,这种类型的认证方式并不能阻止冒名者重放。我们已经说过,为了对抗这种重放攻击,用户还需要在信息上附加标识符,如序列号等。

这种认证过程的一个重要特征是发送方与接收方所作的计算是完全一样的。所以,当AB为到底发送了什么信息而发生争执时,将无法用密码学方面的办法来解决争端。这并不是该系统的缺点,只不过是使用了对称密码术的必然结果。在这里,AB必须彼此信任。他们共享一个密钥并依靠这个密钥的保密能力保护他们不受第三方的窜改性攻击。他们不会彼此防范,因为他们是互相信任的。一般而论,对称密码的大多数用户都是这样的。互相信任的团体使用对称密码来保护他们的信息不受他人的攻击。

alt

使用对称算法的认证

使用最为广泛的、特别是财政部门喜欢使用的认证手段被称为信息认证码MAC)。如果信息是M1、M2、……、Mn,其中每个Mi由64个比特组成,那么就可以使用CBC模式的数据加密标准。但此时仅需用到Cn这个密文区组,所以MAC由Cn的32个比特组成。

数字签名

根据第五章指出的理由,非对称算法的用途往往局限于保护对称密钥的安全和提供数字签名。如果需要解决发送方与接收方由于信息内容或信息的来源等问题而发生的争执,对称密码是无能为力的,所以就出现了对数字签名的要求。

一个特定的发信人在信息上的数字签名是由该信息和发信人共同决定的一个密码值。与此不同,手写签名仅取决于发信人而与信息无关。数字签名可用来保证数据完整性及证明信息来源(不可否认性)。如果发送方拒绝承认他发出的信息内容甚至否认发过信息,收信人持有发送方的数字签名就能解决纠纷。它提供了解决发送方与接收方之间纠纷的一种手段,这也是数字签名机制与上节所描述MAC实施过程的区别。很显然,这类纠纷只有在发信人与收信人处于非对称的状态时才能够解决。上述情况表明非对称密码系统是提供数字签名的最自然的工具。

alt

数字签名

基于公钥密码系统(如RSA或贾迈勒算法等)的数字签名模式,其基本原理是很简单的。每个用户有一个只供他们自己使用的私钥,而且使用它就能让收信人确认自己的身份。然而,还存在一个对应的公钥。任何人只要知道这个公钥便可检验与之对应的私钥是否已被使用,但不能具体地确定出私钥本身。

当收信人确认私钥已被使用后,他就会确信信息的来源和内容都正确无误。当然,发信人也会确信想要冒名顶替是不可能的,因为他人不能从公钥或验证密钥或数字签名中推导出私钥或签名密钥。

非对称密码的运作过程要求进行大量的计算,所以要对信息进行散列作用处理以得到它的压缩版本或简称散列。签名是应用非对称算法及对应的私钥从散列(它代表信息)中产生的,因此只有私钥的使用者才能生成签名。任何一位知道所对应公钥的人都能够确认该签名。要实现这一点,需使用非对称算法及相应公钥从签名中算出一个值。这个值应该等于信息的散列值,并且是任何人都能算出来的。如果这个值与散列值一致,这个签名就是真实的;如果它们不一致,这个签名则是假的。

RSA和贾迈勒算法是两个使用范围最为广泛的非对称算法。RSA的加密与解密方法是一样的,所以签名和验证过程也一样。RSA的一个替代算法是基于贾迈勒算法的数字签名标准(DSS)。对于DSA【3】而言,签名与验证过程并不相同。此外,DSA需要一个随机数生成程序(一个附加处理过程),而RSA并不需要。不过,DSA总是产生一个固定长度为320比特的签名,相反,RSA的签名区组和模数具有同样的长度:当安全水平的要求越高时,它们就越长。

假定使用数字签名作为识别身份的工具,若用户A想假冒用户B,此时存在两种不同形式的攻击方法:

1.A尝试去获得B的私钥并使用之。

2.A试着用他的公钥来代替B的公钥。

第一种类型的攻击方法可以是试图破译算法,也可以是设法接触存储私钥的物理设备。对算法的攻击已经在第六章中讨论过;而物理设备的安全性是密钥管理中的重要环节,第八章将对此进行集中讨论。这两种攻击与针对对称系统的攻击类似。然而,第二种类型的攻击是特别针对公钥密码系统的,当前流行的大多数“防御措施”都要使用由认证中心颁发的数字证书。

认证中心【4】

我们已经讨论过对密码系统的“传统”攻击,比如通过破解算法来确定私钥,或是经由物理手段接触密钥,比如获取一台能够使用密钥或能探测到秘密数值的装置等。然而,公钥系统还需要能对付模仿攻击【5】的基础设施。假设用户A能使他的公钥看起来就像属于B的一样,此时其他用户可能会用A的公钥为B的对称密钥加密。但是最终A将会得到被这些对称密钥所保护的机密信息,B却得不到。此外,A还能够用他的私钥签署信息,而他的这些签名也将被别人当作是B的签名。利用认证中心以及建立公钥基础设施(PKI)的目的就是为了防止这类模仿攻击。

认证中心(CA)的主要作用是提供数字签名的“证书”,它把实体的身份与其公钥值绑在一起。为了使CA的证书也能被核查,CA自己的公钥必须广为人知并被广泛认可。在这个背景下,证书乃是一种带签名的信息,它包含了实体的身份、其公钥值,也许还有些附加信息,如终止日期等。这些证书可以看作是由广受尊敬的发证机构(即CA)签发的“介绍信”。

假定CERTA是由CA颁发的一份证书,其中包含了A的身份和A的公钥,所以CERTA将A的身份及其公钥值绑在了一起。任何人只要有真实的CA公钥的副本就能验证CERTA中的签名的正确性,从而确认他们知道A的公钥。于是,确保A的公钥可靠性的问题就被替换成保证CA公钥的可靠性的问题,同时还要确信对A身份的验证正确无误。注意,如有人能在认证过程中假冒A,那他就可以得到将他的公钥与A的身份绑在一起的证书。这使他们能在那份证书的整个有效期内假冒A。这个例子说明身份盗窃的隐患将来可能会愈发严重。

值得注意的是,任何人都能够编造出一个特定用户的证书,使得用户A的数字证书的所有权不能用来识别A。这个证书只是将A的身份与一个公钥值绑在一起。此时,身份证明可以使用质询–应答协议来达成,该协议能证明A的私钥是否已使用。这可能涉及到收到质询的A需要给出签名。A用他的签名作答,校验器利用A的证书中的公钥值来证实签名是真实的。在这里,正是与A的证书中的公钥相对应的私钥的使用,才确认了A的身份。

现在假定有两个用户AB,他们持有由不同的CA颁发的证书。若A需要确认B的公钥的可靠性,那么A就需要一份B的CA颁发的公钥的副本。这可以通过交叉验证的方式完成,此时每个CA都要给另一个颁发一份证书;也可以引入认证阶层的办法,即有一个“根CA”,它位于那两个CA之上并给每一方都颁发证书。

我们可以用图来解释这两种过程。图(a)和(b)中的XY都是CA,XA意指XA颁发证书。图(b)中的Z是根CA。例如,当B需要确认E的公钥时,那么在(a)中,B需要核实由X颁发给Y的证书以及由Y颁发给E的证书。而在(b)中,B需要核实由Z颁发给Y的证书和由Y颁发给E的证书。因此,无论是在哪种情形中,B都需要检验由两个证书组成的一个链。在更复杂的系统中,会遇到包括很多交叉验证和多层次认证的组合,此时需要检验的链也会更长。

alt

交叉验证

alt

认证阶层

很多人认为数字签名是电子商务的核心问题,许多国家都在制定法律,以使数字签名与手写签名具有同等的法律地位。若有读者想对当前的数字签名机制有一个全面的了解,并对公钥基础设施相关课题的讨论感兴趣,我们建议其参阅由派珀、布莱克–威尔逊(Blake-Wilson)和米切尔(Mitchell)所著的《数字签名》一书。当然其中有一些问题十分重要,需要在这里加以讨论。与证书的使用有关的一个主要问题是撤销的问题。例如,某公司发给一名雇员一份证书,但后来该雇员离开了。第二个例子是关于密钥持有者的,他了解到他的私钥已受到侵害。在这两种情形中,都需要CA能够撤销那份证书。由于这些证书可能已经广为散布,直接去通知每个人该证书已被撤销是不太现实的。一种常用的解决办法是由CA发布一份“证书撤销表”(CRL),然而,这是一笔重要的管理费用,而且还有很多与此相关的问题。

第二个显而易见的问题与责任有关。很多用户怀着信任的心理使用这种证书。假定一份证书出了差错,使得列在表中的公钥值不属于列表中的主人,在这种情况下,可能会搞不清楚谁该负责:是公钥的所有者,是用户,还是CA。

公钥基础设施

利用公钥基础设施(PKI)的初衷是为了促进公钥密码术的使用。亚当斯(Adams)和劳埃德(Lloyd)写了一本题为《理解公钥基础设施》的书,据我们所知这是关于这个主题的第一本书。书中将PKI定义为“一种无所不在的保障安全的基础设施,它的服务功能是借助于公钥的概念和技巧实现和展开的”。

我们已经强调了身份验证的重要性、撤销证书的必要性,以及交叉验证的概念等。其中交叉验证可能是极难实现的,除非参与其中的CA使用的技术能够兼容。即便如此,还是会出现一些问题,它们与用户如何决定哪个CA的验证是可信赖的这一普遍性问题有关。于是,CA需要公布其政策和实际工作状态,讲明其所实行的各种安全程序等信息。

到目前为止,我们已认识了PKI系统的三个关键角色。第一个是证书的所有者,他申请证书;第二个是CA,它颁发证书,将证书所有者的身份与该所有者的公钥值绑在一起;第三个是信赖证书者,他使用(因而信赖)该证书。在某些系统中,身份识别的验证由独立的权威机构实施,该机构名叫注册中心(RA)

正如我们已经看到的,在一个拥有大量CA的大型PKI中,一个用户要认定另一用户的公钥是否可靠,可能需要对一长串证书中的签名进行核实。这可能是一次既昂贵又费时的运作,用户们不想这样做。为了使用户“节省”这项开支,证书验证中心(VA)的概念就出现了。其基本理念是,终端用户只须去询问VA某份证书是否仍然有效,并收到是或否的答复。于是,这项工作便从用户转移到了VA。

在密码术中,PKI和数字签名可以说是当前与电子商务关系最密切的两个领域了。但是有志于此的实践家们正亲身体验着若干技术难点,例如与可扩展性有关的问题。此外,尽管有一些断言宣称,PKI技术对电子邮件的安全、访问网络服务器的安全、虚拟专用网络的安全和其他通信的安全等具有决定性的作用,但是组建CA这样的机构的商业诱惑力,已被证明比预期的要弱。

当PKI建立之后,需开展下列活动,当然不一定按下列的先后次序进行:

● 必须生成为CA所用的密钥对。

● 必须生成为用户所用的密钥对。

● 用户必须申请证书。

● 必须确认用户的身份。

● 必须确认用户的密钥对。

● 必须制备好证书。

● 必须检验证书。

● (需要时)必须去除/更新证书。

● (需要时)必须撤销证书。

与这些活动相关的根本问题是在哪里?以及由谁开展?某些CA制造的证书是附带着不同“水平”标识的,大致地说,水平是反映证书可信赖程度的一个指标。例如,用户会被建议在高价值交易时不要使用低水平的证书。在这种系统里,证书的水平可能会反映出识别过程是如何进行的。例如,当识别过程是建立在使用电子邮件地址基础上的时候,产生的证书就会是低水平的,而高水平的证书必须经过手工操作的程序才能配送给用户,包括提供口令等。亚当斯和劳埃德的《理解公钥基础设施》或克拉珀顿(Clapperton)的《电子商务手册》都是很好的讨论有关PKI的问题及其潜在的解决办法的概述性文章,有兴趣的读者可以阅读。

信任需求

CA是所谓可信任的第三方(TTP)概念的一个例子。在这个例子中,两个参与者都信任第三个参与者,即CA,他们利用这种信任建立起他们之间的安全通信联络。TTP几乎出现在所有使用密码术的地方,而且对它们的使用常常会引发一些忧虑。一般来说,用户必须信任TTP的诚信以及技术能力。要精确地判断它们应发挥多大的影响以及用户的安全应在多大程度上依赖于它们,这通常是很难的。

例如,考虑公钥与私钥对的生成。我们已经指出,这是一个数学过程,需要专用的软件。普通人无法完成这一过程,所以密钥或密钥生成软件都须由外部提供。无论是哪种情形,无疑都需要信任。通常密钥都是在外部生成的。一个显而易见的问题是:密钥应由CA生成还是由另一家TTP生成。我们提出这个问题的目的不是为了给出答案,因为很清楚,答案取决于具体的用途和环境。我们只是想引起对某些课题的关注。值得担心的是,如果一个组织为另一个实体生成了私钥和公钥对,该组织可能会保存私钥的副本,甚至将其透露给其他实体。对此的争论影响深远,一些人主张根本就不需要CA。

1991年,名为优良保密协议(PGP)的软件包的首个版本问世,任何一位希望使用强加密的人都能免费使用它。它采用RSA方法进行用户认证和对称密钥配送,并且采用称为IDEA的对称加密算法来保证机密性。虽然它使用了数字证书,但原始版的PGP并不依赖于核心CA,而是任一用户对其他任何用户而言都可以担任CA角色。它成了众所周知的信任网工作方式。本质上,它意味着用户判断证书的可靠性是根据签发人是否为他所信赖的人而定的。对于小规模的通信网络而言,上述方式确实不需要核心CA而仍能正常工作。然而,对于大规模网络而言,这种做法还存在许多隐患。

另一个取消CA的可能做法是让用户的公钥值完全由他们的身份来确定。如果用户的身份与公钥值(本质上)是等同的,那就很清楚不再需要使用证书把它们绑在一起了。基于用户身份的公钥密码术概念是沙米尔在1984年提出的,此后出现了多种基于此概念的签名方案,但直到2001年才生产出基于身份的公钥加密算法。这样的算法有两个,一个是博内(Boneh)和富兰克林(Franklin)设计的,另一个是英国通信电子安全组(CESG)设计的。

在基于身份的系统中,必须存在一个受到普遍信任的中心体,由它来根据客户的公钥计算出相应的私钥并交付给客户。因此这种方法不会消除对TTP的需求,必须通过它生成所有用户的私钥。然而这种方法确实消除了对证书的需求。在这种系统下,用户A声称自己是B,大概不会给他带来什么好处,因为只有B才具有由B的身份确定的私钥。

基于身份的公钥系统的应用代表了除传统的PKI途径之外的另一有趣的加密途径。不幸的是,它也显现出了自身的问题,最明显的是关于唯一身份的概念和公钥撤销的问题。假定用户用他的名字和地址确定了他的公钥,如果他的私钥泄密,那么他就得搬家或改名字。这种做法当然是不实际的。对于这种身份盗窃的特殊问题,还是有些解决办法的。一个办法是让用户的公钥取决于身份和另一个公开变量,比如日期。这将保证用户的私钥每天都在变化,但可能会给中心体带来难以承受的工作量。目前有相当多的研究都想弄清楚是否能够用基于身份的系统来代替PKI。

还有另一种极端的观点,有些人主张,保证安全的最好方法是将众多危险集于一处,然后为此处提供最强大的安全保障。如果采纳这种想法,那么就可以由CA来生成用户的密钥。持这种观点的人争论道,如果用户对生成其密钥的CA足够信任,那么用户也应信任由它来代表其进行密钥管理。辩护理由是密钥需要这种高度安全的CA环境。这就是所谓的中心服务器的安全手段,事实证明,它对某些组织而言是有吸引力的。(弗雷德·派珀)

注释

【1】 访问控制(access control),又译为“存取控制”。

【2】 重放攻击(replay attack)指攻击者通过重放消息或消息片断达到对主体进行欺骗的攻击行为,主要用于破坏认证正确性。

【3】 DSA(Digital Signature Algorithm),数字签名算法,它是数字签名标准的一部分。

【4】 认证中心(Certification authorities),又译作“证书管理机构”。

【5】 模仿攻击(impersonation attack),又译“假冒攻击”。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多