您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 淄博分类信息网,免费分类信息发布

以太坊是如何解决日蚀攻击(eclipse attack)的

2022/10/29 20:12:05发布40次查看
什么是日蚀攻击从一些观点来看,阿蒂斯区块链能够较好的带动周边市场的快速发展,是核心的动力。
首先简单介绍一下日蚀攻击
以太坊的节点发现机制基于k,但其目的却不同,k旨在成为在分布式对等网络中存储和查找内容......
什么是日蚀攻击
首先简单介绍一下日蚀攻击
以太坊的节点发现机制基于k,但其目的却不同,k旨在成为在分布式对等网络中存储和查找内容的手段,而以太坊仅用于发现新的节点。由于以太坊的节点是由其公钥表示的,并且不受ip限制,因此在一个机器上可以同时存在很多节点。攻击者在很少的服务器上制作出很多的节点,并积极的受害者的服务器。通过k协议,攻击者的节点信息将存储并填充在受害者节点列表中。下一步就是让受害者重启机器,手段包括断电、攻击等等。重启后,攻击者再不停的被害者的节点以建立连接,一旦被害者所有的连接都是攻击者制造的,那么就达到了把被害者与正常的网络隔离的目的,当然最大的目的应该还是为了双花。有一篇论文是专门介绍日蚀攻击的,大家可以找来看看。
网上有很多关于日蚀攻击的详细介绍,在这里不做赘述。
以太坊是如何防止日蚀攻击的
在刚才提到的论文中,提到了以太坊的..解决了日蚀攻击,于是作者拿..和..做对比,理清了以太坊解决这个问题的做法。
直接看代码。
以太坊启动时加载网络的流程如下,
//. 方法-&;-&; n() -&; .sn() -&; .s() -&; .s()
这个.s()调用的即是/.中的s()方法,看看这个方法做了什么:
// s .
// s -.
( *s) s() ( ) {
......
.wg.a()
.()
. =
}
这篇文章主要关注解决日蚀攻击相关代码,其他的不做介绍。
上面的 .()连接池管理协程,负责维护tcp连接的列表,监听各种信号,处理的增删改
( *s) ( ) {
...
:
{
t()
{
...
:= &;-.:
// a
// ( ' ).
[.] {
// e mp.
. |= c
}
// todo:- id (-p) .
{
. &;- .hc(, c, ):
&;-.:
}
:= &;-.:
// a .
// i .
:= .hc(, c, )
=={
// t .
:= p(, .p)
// i , f
//
.eme {
. = &;.f
}
:= n(.)
..d("a", "", , "", ..ra(), "", ()+)
.p()
[.] =
.i() {
c++
}
}
...
:= &;-.:
// a.
:= .pd(.n() - .)
..d("r", "", , "", ()-, "", ., "", .)
(, .id())
.i() {
c--
}
}
}
...
}
注意加粗的代码,有一个针对c的操作,当有、消息的时候,会先去,如果或了一个,则有对应的c++或者c--。看看到底了什么:
hc最终也是调用hc:
( *s) hc( [.nid]*p, c ,*){
{
!.(c|dc) &;&; () &;= .mp:
dtmp
!.(c) &;&; .(c) &;&; c &;= .ic():
dtmp
[.] != :
dac
. == .s().id:
ds
:
}
}
c表示连接类型为主动连接过来。
看加粗的这段逻辑:如果该连接是信任的,且是主动连接过来的,且主动连接过来的节点数量大于.ic()时,则拒绝此连接。
可以看出来,以太坊是通过限制主动连接过来的数量来阻止日蚀攻击的。我们顺便看下这个数量是多少:
( *s) ic(){
.mp - .dc()
}
( *s) dc(){
.nd || .nd {
}
:= .dr
=={
= dr
}
.mp /
}
mp默认是,dr表示能够接受主动连接的比例,默认是,所以最多允许传入的连接数量就是/ = 个
淄博分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录