PGP工作原理及其安全体制
3.2 防止篡改公钥的方法
(1)直接从B手中得到其公钥,这种方法有局限性。
(2)通过电话认证密钥:在电话上以radix-64的形式口述密钥或密钥指纹。密钥指纹(keys fingerprint)就是PGP生成密钥的160bit的SHA-1摘要(16个8位十六进制)。
(3)从双方信任的D那里获得B的公钥。如果A和B有一个共同的朋友D,而D知道他手中的B的公钥是正确的。D签名的B的公钥上载到BBS上让用户去拿,A想要获得B的公钥就必须先获取D的公钥来解密BBS或网上经过D签名的B的公钥,这样就等于加了双重保险,一般没有可能去篡改而不被用户发现,即使是BBS管理员。这就是从公共渠道传递公钥的安全手段。有可能A拿到的D或其他签名的朋友的公钥也是假的,但这就要求攻击者C必须对三人甚至很多人都很熟悉,这样的可能性不大,而且必需经过长时间的策划。
只通过一个签名证力度可能是小了一点,于是PGP把用不同私钥签名的公钥收集在一起,发送到公共场合,希望大部分从至少认识其中一个,从而间接认证了用户(A)的公钥。同样用户(D)签了朋友(A)的公钥后应该寄回给他(A)(朋友),这样可以让他(A)通过该用户(D)被该用户(D)的其他朋友所认证。与现实中人的交往一样。PGP会自动根据用户拿到的公钥分析出哪些是朋友介绍来的签名的公钥,把它们赋以不同的信任级别,供用户参考决定对它们的信任程度。也可指定某人有几层转介公钥的能力,这种能力随着认证的传递而递减的。
(4)由一个普通信任的机构担当第三方,即“认证机构”。这样的“认证机构”适合由非个人控制的组织或政府机构充当,来注册和管理用户的密钥对。现在已经有等级认证制定的机构存在,如广东省电子商务电子认证中心(WWW.cnca.net)就是一个这样的认证机构。对于那些非常分散的用户,PGP更赞成使用私人方式的密钥转介。
3.3 信任的使用
PGP确实为公开密钥附加侂任和开发信任信息提供了一种方便的方法使用信任。
公开密钥环的每个实体都是一个公开的密钥证书。与每个这亲的实体相联系的是密钥合法性字段,用来指示PGP信任“这是这个用户合法的公开密钥”的程度;信任程度越高,这个用户ID与这个密钥的绑定越紧密。这个字段由PGP计算。与每个实体相联系的还有用户收集的多个签名。反过来,每个签名都带有签名信任字段,用来指示该PGP用户信任签名者对这个公开密钥证明的程度。密钥合法性字段是从这个实体的一组签名信任字节中推导出来的。最后,每个实体定义了与特定的拥有者相联系的公开密钥,包括拥有者信任字段,用来指示这个公开密钥对其他公开密钥证书进行签名的信任程度(这个信任程度是由该用户指定的)。可以把签名信任字段看成是来自于其他实体的拥有者信任字段的副本。
例如正在处理用户A的公开密钥环,操作描述如下:
(1)当A在公开密钥环中插入了新的公开密钥时,PGP为与这个公开密钥拥有者相关联的信任标志赋值,插入KUa,则赋值=1终极信任;否则,需说明这个拥有者是未知的、不可任信的、少量信任的和完全可信的等,赋以相应的权重值1/x、1/y等。
javascript:window.open(this.src);" style="cursor:pointer;"/>
(3)密钥合法性字段的值是在这个实体的签名信任字段的基础上计算的。如果至少一个签名具有终极信任的值,那么密钥合法性字段的设置为完全;否则,PGP计算信任值的权重和。对于总是可信任的签名赋以1/x的权重,对于通常可信任的签名赋以权重1/y,其中x和y都是用户可配置的参数。当介绍者的密钥/用户ID绑定的权重总达到1时,绑定被认为是值得信任的,密钥合法性被设置为完全。因此,在没有终极信任的情况下,需要至少x个签名总是可信的,或者至少y个签名是可信的,或者上述两种情况的某种组合。如图4所示。
总之,PGP采用了RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法、加密前压缩等,可以用来加密文件,还可以代替Uuencode生成RADIX 64格式(就是MIME的BASE 64格式)的编码文件。PGP创造性地把RSA公钥体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计。这是目前最难破译的密码体系之一。
用户通过PGP的软件加密程序,可以在不安全的通信链路上创建安全的消息和通信。PGP协议已经成为公钥加密技术和全球范围内消息安全性的事实标准。因为所有人都能看到它的源代码,从而查找出故障和安全性漏局。