PGP(Pretty Good Privacy)最初是用传统公钥密码学加密email信息的,之后又被用于加密本地文件。
注意:PGP和WoT(Web of Trust)不是同一样事务,PGP采用了WoT的方式。
PGP没有可信任的中心权威(第三方机构),但是相对应的是,系统中的每个人都可以签发自己的公钥并通过证书签名建立起自己的信任网。
一、公钥证书
公钥证书是PGP的重要核心。每个证书包含公钥所有者的用户ID(通常使用email地址),公钥,密钥ID,日期以及创建时间。证书需要被多个“介绍人”签名,“介绍人”是指用户完全信任的实体。PGP信任网的每个实体的主要标识是其公钥ID,而非与证书相关的用户ID号(这是因为用户ID号不稳定而公钥ID全局唯一且稳定不变)。但是公钥ID难以记忆,这也是唯一的问题(目前尚未完全解决)。
二、信任的定义
在PGP中有两个方面来定义信任:
1.公钥证书的有效性;
2.介绍人的可信度。
在此做个说明:一是所谓公钥之间的“介绍”其实就是“介绍人”对“被介绍人”的公钥证书上进行签名,其它人通过证书上的签名判断“被介绍人”的可信度,后面会讲到如何判断;二是公钥的有效性是指公钥通过证书上完全可信的签名将其与对应的公钥ID号紧密相连,如果失联则有效性消失。
首先介绍公钥证书有效性的层级:
未定义有效(undefined):公钥的有效性无法判断;
边际有效(marginal):公钥可具有一定的有效性,但是无法完全确认;
完全有效(complete):公钥完全有效。
“介绍人”可信度主要定义的是用户认为某公钥所有者作为其它公钥的“介绍人”的可信任度。
下面再介绍“介绍人”可信度的层级:
完全可信(full):该公钥介绍其它公钥是完全值得信任的;
边际可信(marginal):该公钥可以介绍其它公钥,但其可信度值得怀疑;
不可信(untrustworthy):该公钥完全不值得信任,它为其它公钥所做的签名可忽略不计;
可信未知(don't know):该公钥介绍其它公钥的可信度仍属未知状态。
然而以上的有效性和可信度定义得十分模糊,PGP就想办法使其更具实际指导意义。PGP赋予用户自行调节标准的能力,它定义了两个参数:COMPLETES_NEEDED(完全需要数量)和MARGINALS_NEEDED(边际需要数量)。前者定义为使公钥证书完全有效时所需的完全可信签名的数量,后者定义为使公钥部分有效时所需的边际签名的数量。这两个参数都是需要用户根据自身情况定的。
三、信任评估算法
当PGP评估一个公钥证书的可信度时,它需要运用如下算法,即信任评估算法(用伪代码表示):
1. For each signature do
// scan signatures
2. if signature is completely valid then
3. if key trust ∈{undefined,unknown,untrusted} then
4. ignore signature
5. if key trust is marginal then
6. accumulate marginals_counter
7. if key trust is complete then
8. accumulate completes_counter
9. else
10. ignore signature
// decision
11. if (marginals_counter>0) or (completes_counter>0) then
12. if (marginals_counter>=MARGINALS_NEEDED) or
13.(completes_counter>=COMPLETES_NEEDED) then
14. mark key validity as 'complete'
15. else
16. mark key validity as 'marginal'
其中:
line 6: marginals_counter 计算该公钥证书的边际信任签名个数;
line 8: completes_counter 计算该公钥证书的完全信任签名个数;
line 10:非完全有效的签名将被忽略,即便它是由可信任的“介绍人”提出;
lines 11,12,13: COMPLETES_NEEDED(完全需要数量)和MARGINALS_NEEDED(边际需要数量)均大于1。
四、介绍人
PGP是通过证书的签名人来证明公钥的有效性的,这些签名人又被称为“介绍人”,即,一个用户通过用自己的私钥签名一个新的公钥证书来向其它用户证明该证书中包含的公钥的有效性。如果一个用户有幸被划分为“完全可信介绍人”,则其被人完全信任,它在介绍其它公钥证书时影响力更大,介绍的人不需更多;若该用户被划分为“边际可信介绍人”,则其影响力就不足,需要更多这样的人来签名证书作证明。其中每个介绍人的可信度都是根据用户的考虑和隐私的需求结合起来定义的。
在PGP中,信任是不可以传递的。即在下图的介绍人(证书)链中,Carol不能假设Eric 的证书是有效的,除非通过介绍人的介绍。
在PGP中的CERT_DEPTH参数尽管定义了证书链长度的最大值,但是也不能用其确定出证书的有效性。
也就是说,这些链的作用仅在于寻求用户之间的直接信任关系,帮助减少关系网的冗余度,使关系网更加清晰。
网友评论