一种适合P2P网络的分布式公开密钥基础设施*
2019-12-04张吉刚李师谦王海涛
张吉刚,李师谦,王海涛
(1.中国人民解放军32125部队,山东 济南 250002;2.南京审计大学金审学院,江苏 南京 210023)
0 引 言
可测量性和错误容忍性是对等(Peer to Peer,P2P)网络需要满足的两个重要性质,已被多个成功的P2P系统所证实[1],如Kazaa系统或Gnutella系统。在一个分散非可信的网络环境中,难以达到类似于集中式网络结构的安全性能[2]。例如,当前许多安全服务(如贸易伙伴关系的证明)依赖于可信的公开密钥基础设施。但是,典型的公开密钥基础设施(Public Key Infrastructure,PKI)采用集中式部署结构,与P2P网络的分布式特征相冲突[3]。值得欣慰的是,传统的PKI能够以后门运作的方式使得集中部署变得分散[4],且使用良好隐私协议(Pretty Good Privacy,PGP)加固分散部署的安全性[5]。然而,这种PKI部署方式仍存在一些严重缺陷,且难以在理论上证明其安全性。因此,本文提出一种基于统计学(基于法定人数)思想的分散部署的PKI,以克服现有部署方法的缺点。
1 分布式PKI系统的设计
1.1 设计思路
P2P网络中部署分布式PKI的关键是基于某种合理的统计信任模型[6],在对等节点之间建立得到大多数节点认可的证书列表,并且能够适用于多种P2P网络结构。在分布式PKI系统中,任意节点p唯一地被一个标识符Idp标识,也称全局唯一标识符(Universally Unique Identifier,UUID)。UUID是在一个节点加入对等网络时通过使用随机哈希函数一次性产生的,且被永久保存在节点路由表中。此外,每一个节点p还在其高速缓存中保存节点Idp到其物理地址addrp的映射关系。
考虑到节点的加入和离开可能导致IP地址改变,正确的地址映射必须通过对等网络内部的信息交互来维持。具体来说,分布式PKI系统中每个节点p产生一个私钥Dp和一个公钥Ep,且需要维持若干设计参数。
1.2 工作过程
1.2.1 引导启动阶段(Bootstrap)
当一个新节点p加入P2P系统时,需要执行如下操作:
(1)p决定它自己当前的IP地址,并产生Idp、Dp/Ep;
(2)p使用Idp作为密钥,将(Idp,addrp,Ep,TSp,Dp(Idp,addrp,Ep,TSp))插入到P-Gird中(TSp是一个用于阻止重复攻击的时间栈)[7]。插入到P-Grid中的Id/IP映射用于应对物理地址可能的改变。如果Idp在P-Gird里已经存在(尽管概率非常低),p将产生一个新的Idp;
(3)p在P-Grid里随机重复插入Rmin1(设计参数之一),以便产生一个期望的不同复制品Rmin2(设计参数之一);
(4)pi在所有复制品中开始更新所有复制品,收到插入消息的节点发送一个确认消息给p。如果在收到第一个更新消息Tout1时间后还未收到Rmin3消息,则丢弃该信息;
(6)如果p收到Rmin4≤Rmin3的确认消息,则确信它的公钥被完全复制;否则,p产生一个新的Idp并重新开始插入操作。
1.2.2 对等节点重启阶段(Peers Startup)
当一个节点p重新加入P2P系统时,p开始检查它的addrp是否改变。假如改变,它开始更新物理地址的映射,以保证路由表是正确的。
1.2.3 认证实施阶段
认证实施阶段具体包括以下操作:
(1)p接受一个来自q的请求Q;
(2)如果p能够满足q,则返回q结果;否则,p找到节点pf传送请求并且重新得到适合这个意图的(Idpf,addrpf,Epf,TSpf);
(3)p产生一个随机数ρ,联系pf并发送一个Epf(ρ);pf回答一个Dpf(Epf(ρ)),p能够检查Dpf(Epf(ρ))是否等于ρ;若正确,则pf是正确的标识符。也就是说,p与它想要回话的节点建立了联系,Q被传送给pf,意味Q在节点p处成功完成;否则,转步骤4;
(4)如果步骤3失败,pf会有一个新的IP地址或者是不在线的,且p可以选择另一个路由表,也可以发送请求到P-Grid,并使用Idpf重新获得一个当前addrpf。
(5)p搜集所有的回答ti=(Idpf,Epf,addrpf,TSpf,Dppf(Idpf,Epf,addrpf,TSppf)),且节点。假如需要安全保证,pj会标记它们的答案,也就是发送(ti,Dpj(ti));p至少收集Rmin3个答案来察觉错误的信息和恶意节点,否则查询会在中断之前重复一定数量的次数;
(6)重复执行步骤3~步骤5,直到满足预设条件或超时。
通过上面描述的操作过程,节点可以在P2P系统中访问和维护任何消息。上述基于P-Grid的分散PKI的方法是有效的,因为P-Grid里的搜索和路由操作是随机的,攻击很难奏效,而且可以通过设置法定人数阈值确保计算结果的有效性。
2 系统抗攻击能力分析
2.1 系统引导阶段
这个阶段最普遍的攻击是恶意节点插入一个错误的拓扑,并使用这个错误的拓扑发送一个更新的消息。通过确保系统中大多数个体的行为是正常行为,可以确保在P2P系统中存储了正确的信息。假如恶意用户的数量大于正常行为节点的数量,将会导致建立分布式PKI系统创建失败[8]。例如,最坏的情况是P2P网络内所有节点都是恶意的,此时节点不能成功加入该系统。
2.2 节点启动阶段
此时,节点p已经在P-Grid里成功注册了正确的公钥。当节点p重新加入网络时,它不得不与其他节点进行交互通信,而p的标识符会通过它的公钥被正确鉴别。本阶段可能的攻击是,当一个节点pv请求P-Grid验证p的公钥信息时,恶意节点可以提供错误的信息,从而试图发起拒绝服务攻击。但是,由于查询是被随机发送到不同的节点,所以可以有效阻止这种攻击。
2.3 系统操作阶段
除了上述攻击外,还会出现一种扮演攻击。扮演可以通过使用基于证明的公钥来阻止,但依赖于系统中恶意节点的比列。如果系统中扮演重要角色的节点是恶意的,将难以阻止扮演攻击。
3 服务性能分析
查找公钥信息可靠性的费用是分析分布式PKI系统可用性需要考虑的一个关键要素。分析中定义ℜ表示所有复制节点的数量,Ron表示对其他节点是可知的、有正确物理地址的在线节点,并且假设所有请求被发送到这些可靠和在线复制品中的任何一个。
为了便于分析,假设网络拓扑是静态的,也就是说Ron在一个单一请求传播期间不会明显变化。基于这个假设,在P-Grid里需要决定请求希望的数量,如从在线的Ron之外的不同Rmin2复制品中获得回答。请求希望的数量Rmin1是一个Ron和Rmin2的函数,定义:
图1给出了20个在线复制节点中不同复制品接触Rmin2期望达到的效果Rmin1。
假如某一节点是恶意节点的概率是m,则成功形成一个群体的概率如下:
一次拒绝服务攻击成功的概率,也就是不能成功形成一个P2P群体的概率如下:
因为P-Grid里节点被随机赋值一个密钥空间,所以所有恶意节点互相合作是不大可能的,从而难以发起有效的拒绝服务攻击。
图1 服务性能分析示例1
图2 显示的是有20个节点在线的情况下至少11个节点匹配成功形成一个P2P群体的概率曲线。
图2 服务性能分析示例2
显然,拒绝服务攻击的概率是成功形成一个群体概率的补集。从图2可以看出,存在一个阶段转换的过程,即当恶意节点的百分比较小时,顺利形成一个群体的概率接近1;当随着恶意节点增加时,成功概率迅速下降,此时易受到攻击。
4 结 语
针对现有公开密钥基础设施(PKI)在非集中不可信网络上部署的困境,本文提出了一种适合P2P网络(对等网络)的分布式公钥密码体系。该体系建立在统计学方法上,可以作为P2P系统提供安全服务的基础。今后,需要对本文所设计的分布式PKI系统作进一步完善,并在实际网络环境中验证这种分布式PKI系统的有效性。