一种基于两阶段工作量证明的防攻击方法

未命名 09-19 阅读:63 评论:0


1.本发明涉及网络安全领域,具体涉及一种基于两阶段工作量证明的防攻击方法。


背景技术:

2.在网络服务中,服务方为请求方提供各种网络服务或接收邮件,服务方需要确保自己的系统在面对恶意请求和攻击时具有一定的防御能力,以维护系统的稳定性和安全性。攻击者通常会伪装成请求方通过发送大量垃圾请求或信息,给服务方造成负担,甚至在某些时候导致正常的服务请求无法被响应。因此为了使请求方能够快速、安全地访问所需的服务,避免服务方被恶意攻击,需要针对性的建立防攻击机制。


技术实现要素:

3.针对现有技术中的上述不足,本发明提供的一种基于两阶段工作量证明的防攻击方法可以有效防止垃圾请求和垃圾信息攻击。
4.为了达到上述发明目的,本发明采用的技术方案为:
5.提供一种基于两阶段工作量证明的防攻击方法,其包括以下步骤:
6.s1、设定第一难度系数d1;
7.s2、获取请求方生成的消息体msgl和数字n1;其中消息体msgl包含请求方身份信息、服务方身份信息、时间戳和请求服务类型;
8.s3、计算并判断hash(msg1+n1)《d1是否成立,若是则认定请求方第一阶段工作量有效,并进入步骤s4;否则拒绝向请求方提供服务;
9.s4、根据msgl中的请求服务类型和当前负载情况计算第二难度系数d2,并将第二难度系数d2发送至请求方;
10.s5、判断在设定时间内是否接收到请求方返回的请求信息request_message和数字n2,若是则进入步骤s6;否则判定无第二阶段工作量,作废当前的第二难度系数d2;其中请求信息request_message包括请求的时间和请求服务类型;
11.s6、计算并判断hash(request_message+n1+n2)《d2是否成立,若是则向请求方提供相应的服务;否则拒绝向请求方提供服务。
12.进一步地,步骤s2中数字n1的获取方法为:
13.响应于第一难度系数d1,请求方从0开始以逐步递增的方式选取一个数字n1,直至hash(msg1+n1)《d1成立,并将此时的msgl和n1发送至服务方;其中hash为哈希函数,包括sha256和sha512。
14.进一步地,步骤s4中计算第二难度系数d2的具体方法为:
15.基于当前的系统负载,通过线性回归模型预测下一时间段的系统负载l_predicted(t_next);根据公式:
16.d2=d_base+α*l_predicted(t_next)+γ*cost(request_type)
17.获取第二难度系数d2;其中d_base为预设常数;α为负载影响因子;γ为请求的服
务代价因子;cost(request_type)表示请求服务类型的成本。
18.本发明的有益效果为:本发明通过第一难度系数使请求方进行工作量证明,然后根据系统负载动态调整第二阶段的工作量证明难度,避免了请求方通过大量垃圾请求和垃圾信息对服务方的攻击,提高了系统的安全性,改善了用户体验、优化了资源分配,并增强了系统的可扩展性。
附图说明
19.图1为本方法的流程示意图。
具体实施方式
20.下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
21.如图1所示,该基于两阶段工作量证明的防攻击方法包括以下步骤:
22.s1、设定第一难度系数d1;
23.s2、获取请求方生成的消息体msgl和数字n1;其中消息体msgl包含请求方身份信息、服务方身份信息、时间戳和请求服务类型;
24.s3、计算并判断hash(msg1+n1)《d1是否成立,若是则认定请求方第一阶段工作量有效,并进入步骤s4;否则拒绝向请求方提供服务;
25.s4、根据msgl中的请求服务类型和当前负载情况计算第二难度系数d2,并将第二难度系数d2发送至请求方;
26.s5、判断在设定时间内是否接收到请求方返回的请求信息request_message和数字n2,若是则进入步骤s6;否则判定无第二阶段工作量,作废当前的第二难度系数d2;其中请求信息request_message包括请求的时间和请求服务类型;
27.s6、计算并判断hash(request_message+n1+n2)《d2是否成立,若是则判定第二阶段工作量有效,并向请求方提供相应的服务;否则拒绝向请求方提供服务。
28.步骤s2中数字n1的获取方法为:响应于第一难度系数d1,请求方从0开始以逐步递增的方式选取一个数字n1,直至hash(msg1+n1)《d1成立,并将此时的msgl和n1发送至服务方;其中hash()是一个公开的哈希函数,包括sha256和sha512。
29.步骤s4中计算第二难度系数d2的具体方法为:基于当前的系统负载,通过线性回归模型预测下一时间段的系统负载l_predicted(t_next);根据公式:
30.d2=d_base+α*l_predicted(t_next)+γ*cost(request_type)
31.获取第二难度系数d2;其中d_base为预设常数;α为负载影响因子;γ为请求的服务代价因子;cost(request_type)表示请求服务类型的成本。
32.在具体实施过程中,请求方收到返回的难度系数后,如果他认为收到的第二阶段的难度系数(即第二难度系数d2)过高,不值得继续,可以放弃访问。具体设计上,请求方的客户端软件上,用户可以设置可以缺省接受的难度系数d。如果d大于d2,则软件自动进入第二阶段。如果d小于d2,则通过用户界面询问用户,是否接受这个计算量的工作量证明(可附
带预期的平均计算代价)。如果用户接受,则进入第二阶段,否则放弃。这种机制不仅可以对恶意攻击者发起拒绝服务攻击带来巨大的代价,也可以让服务提供者在负载紧张的时候,通过高难度系数的工作量证明要求,抑制一部分非必要访问需求,从而提高系统的可用性。
33.在认定请求方第一阶段工作量有效后,服务方将在第二阶段,根据请求类型所消耗的代价和自身的负载情况,要求进一步完成一个动态工作量证明。也就是说,如果服务方自身负载紧张,则要求请求方完成更高的工作量证明。如果负载宽松,则要求降低。与此同时,工作量证明也与务请求类型所消耗的代价成正比,以避免非对称拒绝服务攻击。如此,可提高攻击者的攻击成本,让真正有迫切需求的访问者得到更好的服务。
34.当请求方通过第一阶段工作量证明后,若在设定时间内未反馈请求信息request_message和数字n2,则作废该第二难度系数d2和第一阶段工作量有效的认定结果,此时请求方若再次发起请求,则需要重新进行第一阶段工作量有效的认定。虽然d1可以保持不变,但由于第一阶段工作量证明过程中有时间戳,因此请求方若直接使用之前得到的数字n1进行第一阶段工作量证明,也可能无法通过证明,即时间戳的加入避免了请求方持续沿用之前得到的数字n1,防止一劳永逸。
35.当请求方在首次通过第二阶段工作量的证明后,在一定时间内若请求方再次发起请求,可以直接提供相应服务,也可以要求请求方进行第二阶段工作量证明。当超出该一定时间后,可以只进行第二阶段工作量证明,也可以重新进行第一阶段工作量证明。该方式可以提高服务的响应,也可以避免攻击者在开始阶段伪装成正常请求方,在首次通过两阶段工作量证明之后实施攻击,改善了用户体验、优化了资源分配,提高了系统的稳定性。
36.在本发明的一个实施例中,l_predicted(t_next)采用如下的线性回归模型进行预测:
37.l_predicted(t_next)=β0+β1*l_current(t)
38.其中β0和β1是通过历史负载数据进行拟合得到的系数。即可以通过历史负载数据拟合来预测未来的负载,计算β0和β1的具体方法如下:
39.设历史的负载数据为(l1,l2,...,lt),对应的时间点为(t1,t2,...,tt)。t为当前时间,这里的负载数据l是在对应的时间点上系统的负载。我们要预测的是t_next时间点的系统负载。在线性回归模型中,可以通过以下公式计算β0和β1:
40.β1=[σ((ti-mean(t))*(li-mean(l)))]/σ((ti-mean(t))^2)
[0041]
β0=mean(l)-β1*mean(t)
[0042]
其中ti表示第i个时间点,li表示第i个历史负载数据,mean(t)和mean(l)分别表示历史负载数据和对应的时间点的平均值,σ表示求和。
[0043]
本实施例中采用的是简单的线性回归模型,根据历史负载数据来预测未来的负载。在实际操作中,还可以加入其他的因素,例如系统的特性、服务提供方的策略等,来调整这个模型,使得预测更加准确。
[0044]
综上所述,本方法根据服务方的实际负载和性能指标,动态调整第二阶段的难度门槛,有助于优化资源分配,提高系统的可扩展性和适应性。本方法通过在第二阶段通知用户具体的难度门槛,使用户能够了解服务器的拥堵程度,避免在不知情的情况下反复尝试,提升用户体验。本方法为服务方提供了更高级别的安全保障,有效抵御拒绝服务攻击、垃圾邮件等恶意行为。

技术特征:
1.一种基于两阶段工作量证明的防攻击方法,其特征在于,包括以下步骤:s1、设定第一难度系数d1;s2、获取请求方生成的消息体msgl和数字n1;其中消息体msgl包含请求方身份信息、服务方身份信息、时间戳和请求服务类型;s3、计算并判断hash(msg1+n1)<d1是否成立,若是则认定请求方第一阶段工作量有效,并进入步骤s4;否则拒绝向请求方提供服务;s4、根据msgl中的请求服务类型和当前负载情况计算第二难度系数d2,并将第二难度系数d2发送至请求方;s5、判断在设定时间内是否接收到请求方返回的请求信息request_message和数字n2,若是则进入步骤s6;否则判定无第二阶段工作量,作废当前的第二难度系数d2;其中请求信息request_message包括请求的时间和请求服务类型;s6、计算并判断hash(request_message+n1+n2)<d2是否成立,若是则向请求方提供相应的服务;否则拒绝向请求方提供服务。2.根据权利要求1所述的基于两阶段工作量证明的防攻击方法,其特征在于,步骤s2中数字n1的获取方法为:响应于第一难度系数d1,请求方从0开始以逐步递增的方式选取一个数字n1,直至hash(msg1+n1)<d1成立,并将此时的msgl和n1发送至服务方;其中hash为哈希函数,包括sha256和sha512。3.根据权利要求1所述的基于两阶段工作量证明的防攻击方法,其特征在于,步骤s4中计算第二难度系数d2的具体方法为:基于当前的系统负载,通过线性回归模型预测下一时间段的系统负载l_predicted(t_next);根据公式:d2=d_base+α*l_predicted(t_next)+γ*cost(request_type)获取第二难度系数d2;其中d_base为预设常数;α为负载影响因子;γ为请求的服务代价因子;cost(request_type)表示请求服务类型的成本。

技术总结
本发明公开了一种基于两阶段工作量证明的防攻击方法,其包括以下步骤:设定第一难度系数D1;基于第一难度系数D1和请求方生成的消息体msgl和数字n1判断请求方第一阶段工作量是否有效,若无效则拒绝向请求方提供服务,若有效则根据系统负载动态调整第二阶段的工作量证明难度,要求请求方进行第二阶段的工作量证明,当请求方通过第二阶段的工作量证明后向其提供相应服务。本方法避免了请求方通过大量垃圾请求和垃圾信息对服务方的攻击,提高了系统的安全性,改善了用户体验、优化了资源分配,并增强了系统的可扩展性。并增强了系统的可扩展性。并增强了系统的可扩展性。


技术研发人员:罗旭斌 刘家芬
受保护的技术使用者:西南财经大学
技术研发日:2023.07.14
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐