抗BGP 中间人攻击的无证书签名方法①

2022-06-27 03:54韩增杰姚志强
计算机系统应用 2022年5期
关键词:中间人私钥公钥

韩增杰, 胡 杨, 姚志强

(福建师范大学 计算机与网络空间安全学院, 福州 350117)

边界网关协议(border gateway protocol, BGP)的作用是在不同的自治系统之间传递路由, 通过BGP 提供的各种路由属性为自治系统通信提供最佳路径. 由于BGP 协议的通信双方无条件信任彼此, 自治系统不验证路由信息的有效性, 因此容易受到中间人攻击[1].BGP 的中间人攻击主要包括前缀劫持攻击和路径伪造攻击. 中间人可以宣布自己为目标前缀的起源, 通告一个比目标前缀更长的虚假路由, 其余的BGP 路由器在接收到这些虚假的通告后将其放到路由表中传送数据.如果中间人将劫持的路由信息丢弃, 则通信双方不可达, 产生路由黑洞; 如果中间人把自己作为中转中心,将受害者路径重定向到目标网络, 原始路径依旧可达,恶意的中间人可以随时窃听双方的通信, 导致消息泄露. 中间人攻击能够得逞的原因是由于缺少对路由消息来源以及对AS-PATH 路径的认证, 目前针对中间人攻击的研究方案主要分为两大类, 一类是以S-BGP 为代表的安全扩展技术, 另一类是当发生中间人攻击时及时响应的异常检测技术. 在使用证书的BGP 安全扩展方案中, 证书的颁布和撤销都是复杂的过程, 而无证书方法只需要引入可信的第三方与用户交互生成公私钥即可, 不需要引入证书, 因此本文提出无证书的签名方法来防止中间人攻击.

1 相关研究

针对BGP 的中间人攻击, S-BGP[2]通过公钥基础设施为每个AS 颁发证书来验证路由的起始源, 通过签名的方式使得攻击者无法劫持, 但由于S-BGP 采用基于证书的安全扩展方案来防御中间人攻击, 在域间路由验证时会产生较大的计算开销和存储代价, 难以实施. 文献[3]提出一种改进的BGP 路由源认证方案. 将从RP 获取的ROA 证书附加到更新报文中, 接收端从RP 申请可信的ROA 证书公钥并进行解密, 通过与更新报文比较从而验证路由源的真实性. 文献[4]针对路由传输路径上的负载变化提出了前缀劫持检测系统LDC, 攻击者发动前缀劫持后流量负载会发生异常. 文献[5]根据BGP 在受到中间人攻击时路由控制平面路径和真实转发路径不一致的特征, 提出一种针对中间人攻击的实时检测系统, 但该方案无法检测延长距离为1 的中间人攻击. 文献[6]提出了一种实时检测与缓解系统ARTEMIS, 由AS 本身检测和自动缓解针对其自身前缀的劫持, 该方案利用控制面板监视的最新进展实时检测前缀劫持, 并且会进行自动缓解. Li 等人[7]提出了针对BGP 的特殊中间人攻击Tiger 攻击, Tiger攻击不会破坏路由在控制平面和数据平面一致性, 因此可以规避现有的检测方案. Alkadi 等人[8]针对前缀劫持提出了一种实时处理方法OGI, 通过AS 本身来检测由被劫持节点引起的可疑传输自治系统. 邓海莲等人[9]从Route Views 系统获取路由信息, 根据路由变化的幂律性建立正常域间路由模型, 从而检测前缀劫持和路径篡改等异常行为. 大多数针对BGP 的中间人攻击检测系统通常是在前缀劫持发生后进行的检测机制, 因此无法从根本上解决BGP 的中间人攻击.

为解决基于身份的密码体制中私钥生成中心(PKG)可能造成的伪造签名攻击, Al-Riyami 等人[10]提出了无证书公钥密码体制. 该体制通过引入可信中心KGC 来产生用户的部分私钥, 用户根据随机生成的秘密值产生另一部分私钥, 完整私钥由用户自己保存. 陈亚萌等人[11]提出的基于双线性对的无证书签名方案成员交互次数过多, 效率较低. 刘帅等人[12]提出的基于椭圆曲线的无证书签名方案在计算效率上有一定的提升, 但是签名长度不固定, 会随着签名人数的增加而改变.

将无证书公钥密码体制和有序多重签名结合构造成无证书的有序多重签名, 既可以解决传统签名方案中公钥合法性和私钥托管问题, 又可以解决签名时多个签名人无法有序验证的问题. 罗文俊等人[13]提出一种不含双线性对运算的无证书签名方案, 计算效率较高, 但是该方案的签名长度不固定, 且签名人数越多,通信效率越低. 秦艳琳等人[14]提出的无证书有序多重签名方案被许艳等人[15]通过安全性分析证明其无法抵抗伪造攻击, 许艳等人对方案进行改进从而使其能够抵抗伪造攻击. 但是杜红珍等人[16]提出许艳等人的方案存在不足, 并且通过修改后发现其验证过程需要n+1 个双线性对计算, 计算效率大大降低. 孙玉等人[17]提出的多重签名方案没有验证签名者的顺序, 各个签名成员可以私自改变签名顺序从而伪造签名.

为了从根本上解决BGP 协议中存在的中间人攻击, 本文从有序多重签名出发, 结合无证书签名方案的优势, 在路由传递过程中源AS 和传播AS 需要按序对路由信息进行多重签名, 路由信息接收者通过正确的签名顺序对其进行验证, 从而解决域间路由在传递过程中的路径认证问题. 该方案不仅解决了传统公钥密码体制中存在的证书管理问题和基于身份的密码体制中秘钥生成中心伪造签名的问题, 同时能够抵抗边界网关路由协议的中间人攻击.

2 无证书有序多重签名方案

无证书多重签名方案通常是以双线性对为工具构造的, 也有研究人员提出不含双线性对的无证书有序多重签名方案, 本文采用基于双线性对的多重数字签名方案, 其安全性是基于离散对数和计算性Diffie-Hellman 问题, 这里不再赘述双线性对和困难问题定义.

无证书有序多重签名方案的步骤如下:

(1)初始化系统参数: KGC 生成参数params、系统主密钥和系统公钥, 将params对用户公开.

(2)生成秘密值: 用户Ni随机生成秘密值, 并根据参数params生成部分公钥.

(3)生成部分私钥: KGC 验证用户的身份, 并根据参数params生成对应的部分私钥发送给用户Ni.

(4)生成完整公私钥: 用户Ni通过参数params验证部分私钥, 生成完整公钥和完整私钥.

(5)用户签名: 输入消息m和params生成部分签名 σi, 并将部分签名发送给后续签名成员.

(6) 验证签名: 验证上一个签名成员的签名结果σi是否正确. 若正确, 则继续签名, 否则停止签名.

为简述方便, 将方案中使用的符号和含义列于表1.无证书有序多重签名方案主要包括注册阶段、签名阶段和整体验证阶段, 其中注册阶段包括KGC 初始化系统参数及用户公私钥的生成; 签名阶段包括每个用户的部分签名; 整体验证阶段是对生成的完整签名进行验证. 下面详述无证书有序多重签名方案的具体过程:

表1 符号说明

(1)注册阶段

(2)抑尘效果明显。该装置采用密闭收集和超声波雾化除尘技术,将生产过程中形成的硫磺粉尘加以处理,起到了降低现场粉尘浓度的作用。

3 效率分析

为方便计算, 本文将双线性对运算记为BP, 椭圆曲线上的点乘计算记为A,C表示一次模乘运算,D表示一次模逆运算,H表示使用了一次哈希函数, 忽略模加和模减运算, 根据双线性对运算的性质, 验证公式右边可以化简为一个双线性对, 一次签名使用了一次哈希函数. 从表2 可以看出在整体验证阶段, 文献[15]的方案需要n+1 次双线性对运算, 而本文方案和文献[16]仅需要两个双线性对运算, 且比文献[16]在整体验证时少了n倍的哈希运算.

表2 与其他方案比较

表2 中, 根据文献[18]和文献[19]提供的数据,本文用Tm代表模乘运算所需的计算开销, 则模的取逆运算≈11.60Tm, 椭圆曲线标量乘运算≈29.00Tm, 映射到点的哈希运算≈29.00Tm, 双线性配对运算≈87.00Tm. 设置签名成员n=5, 在I5-4590、16 GB 内存和Windows 7操作系统环境下本方案在注册阶段用时为0.63 ms, 签名阶段用时为0.20 ms, 整体验证阶段用时为2.75 ms.从表3 可以看出, 在安全性方面, 文献[13]无法抵抗第2 类攻击者且签名长度不固定, 文献[15]提出的方案被杜红珍等人[16]证明无法抵抗第1 类攻击者和第2类攻击者, 本文在第5.2 节对签名过程进行了详细的分析, 证明本方案能够同时抵抗这两类攻击者的伪造签名攻击. 通过在相同实验环境下分析得出本方案总体计算效率要高于文献[15]和文献[16]: 文献[15]在签名阶段用时0.29 ms, 在整体验证阶段用时4.24 ms;文献[16]在签名阶段的用时0.29 ms, 在整体验证阶段的用时3.06 ms. 本方案较文献[15]在整体验证效率上提升了约35%, 较文献[16]在注册阶段提升了约31%.因注册阶段的效率基本相同, 考虑到各成员只进行一次注册阶段, 而签名过程需要多次验证, 因此随着签名人数的增多, 本方案的优势越明显. 同时本方案的签名长度固定, 验证者只需要验证最后产生的完整签名即可, 属于紧凑的有序多重签名.

表3 安全性对比

4 方案在BGP 中的应用

4.1 基于无证书多重签名的BGP 方案

基于证书的BGP 安全扩展技术存在不足, 因此本文将无证书有序多重签名引入到BGP 的路由信息认证中, 解决S-BGP 的证书颁发和撤销的复杂问题. 基于无证书多重签名的BGP 安全方案主要分为KGC 初始化阶段、自治系统注册认证阶段、发布路由阶段和路由传播阶段.

(1) KGC 初始化阶段

(4)路由传播阶段

当前自治系统收到路由信息时, 需要验证签名结果, 若验证通过则将路由条目添加到路由表, 并将路由信息继续传输, 验证不通过则丢弃路由.

验证过程如下: 计算Qj,Vj, 其中, 1≤j≤i-1; 验证等式:

4.2 方案分析

4.2.1 抗伪造性

定理1. 在随机预言机模型下, 如果攻击者A1能够以不可忽略的概率伪造出多重签名, 则挑战者D可以通过A1解决CDH 问题.

假设攻击者拥有最大优势已经获得n-1 个签名者的签名, 即攻击者已经获得了n-1 个签名者的私钥, 可以伪造出这n-1 个签名者的签名, 为了证明本方案难以抵抗伪造性, 攻击者需要在多项式时间内以一个不可忽略的概率伪造出最后一个签名者的签名.D已知P,X=aP,Y=bP, 如果可以求出abP, 则称D可以通过A1解决CDH 问题.

模拟过程如下:

若成立, 则式(17)和式(18)相除可求解sY即abP,从而解决CDH 困难问题, 这与定理1 矛盾, 因此A1无法伪造签名.

定理2. 在随机预言机模型下, 如果攻击者A2能够以不可忽略的概率伪造出多重签名, 则挑战者D可以通过A2解决ECDLP 问题.

假设攻击者拥有最大优势已经获得n-1 个签名者的签名, 即攻击者已经获得了n-1 签名者的私钥, 可以伪造出这n-1 个签名者的签名, 为了证明本方案难以抵抗伪造性, 攻击者需要在多项式时间内以一个不可忽略的概率伪造出最后一个签名者的签名.D已知用户n的公钥U和P, 如果可以求出u, 则可以通过A2解决ECDLP 问题.

模拟过程如下:

挑战者D选择椭圆曲线上的点构成阶为q的循环群G和GT, 其中,q为素数,G为加法群,GT为乘法群,双线性映射e:G×G→GT. 选择两个安全的哈希函数H1和H2, 其中,H1: {0,1}*×G×G→Zq*,H2: {0,1}*→Zq*.D随机选择s∈Zq*, 计算P0=sP, 其中,P为群G的一个生成元,s为系统主密钥,P0为系统公钥,D维护4 张表:L1对应用户的秘密值询问,L2和L4分别对应哈希函数H1和H2的询问,L3对应用户的部分私钥询问,将params={G,GT,q,e,H1,H2,P,P0}和系统主密钥s发送给攻击A2,A2进行如下询问:

若成立, 则式(19)和式(20)相除可求解u的值,从而解决ECDLP 困难问题, 这与定理2 矛盾, 因此攻击者A2无法伪造签名.

4.2.2 抗中间人攻击

在BGP 中, 恶意的中间人通过伪造路由信息的方式, 使其在控制层面的转发路径和真实传输路径不一致, 导致面临威胁. 本方案中发布或者转发路由信息的自治系统需要向KGC 注册身份信息, KGC 通过运营商验证自治系统的合法身份后才会向其分配部分私钥和完整的公钥. 其次在路由传递过程中包含了自治系统的身份集合{ID1,ID2, …,IDi, …,IDn}, 恶意的中间人无法伪造身份信息. 当中间人使用新的身份ID进行签名后, 下一个自治系统会通过原始的身份集合进行验证. 由于签名时的随机数发生改变, 根据无证书有序多重签名方案的验证方式, 下一个自治系统将无法验证, 则会停止签名, 并将验证失败的路由条目丢弃. 本方案通过签名的方式确保路由条目没有被篡改, 当攻击者和受害者前缀网络所在的自治系统相邻时同样满足上述的验证过程, 因此本方案也解决文献[5]方案存在的不足. 同时本方案存在用来表明签名顺序的0-1字符串, 每个自治系统都有固定的签名顺序, 各个自治系统不能擅自改变签名顺序来伪造签名.

5 结论

本文针对边界网关路由协议存在的中间人攻击威胁, 将无证书公钥密码体制和有序多重签名结合, 提出一种无证书的有序多重签名方案, 并对私钥生成过程和签名过程进行改进. 与同类型方案相比, 本文提出的签名方案在计算效率上有一定的提升, 同时能够抵抗BGP 的中间人攻击.

猜你喜欢
中间人私钥公钥
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
夹在妻子和弟弟中间,怎样当好中间人?
程序员把7500枚比特币扔掉损失巨大
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
跟杨绛学做“中间人”
一种公开密钥RSA算法的实现