主页 > imtoken苹果闪退 > 区块链安全:区块链 P2P 网络的详细分析

区块链安全:区块链 P2P 网络的详细分析

imtoken苹果闪退 2023-12-21 05:10:26

区块链技术在很大程度上依赖于 P2P 网络。 可以说,没有P2P,就没有区块链的发展。 区块链具有去中心化的应用理论,因此对P2P过程有着近乎严格的安全要求。 本文讨论了 P2P 网络的基础设施和安全协议。 内容是在阅读了我的大量文献后提炼出来的。 希望大家多多交流!

一、P2P网络概述

1 什么是P2P?

P2P(peer-to-peer)网络也称为点对点网络,或点对点网络。 这是一个互联网系统,没有中央服务器,信息完全由用户组交换。 P2P网络的每个用户都是客户端,同时也具有服务器的功能。 在P2P技术出现之前,我们所有的网络应用都是使用C/S或者B/S架构实现的。 但是,在以往的C/S架构应用中,都是客户端软件向服务器发出请求,然后服务器再向客户端发出请求。 这样的话,如果客户端多了,这时候服务器的压力就大了。 但是,每台采用P2P技术实现的计算机既是客户端又是服务器,它们的功能都是等价的。 安装了P2P软件(如迅雷、QQ等)的计算机加入一个普通的P2P网络,网络中的节点之间可以直接进行数据传输和通信。

那么有的读者可能会问:我传统的P2P架构和C/S或者B/S架构有什么异同?

2 P2P架构与C/S架构对比

与C/S相比,P2P有其独特的优势:所有客户端都可以提供资源,包括带宽、存储空间和计算能力。 因此,其网络容量可以远超其他模式。 具体来说:

P2P系统中的客户端可以同时扮演客户端和服务器的角色,使两台计算机不经过服务器就可以直接共享信息。 也就是说,信息的传输分散在各个节点,不经过中央服务器,大大降低了窃听和泄露用户隐私信息的可能性。

在C/S架构中,所有的客户端直接从服务器下载所有的数据资源,必然会增加服务器的负担,而P2P则改变了以服务器为中心的状态,让每个节点都可以先从服务器下载。 一部分,然后从彼此或其他节点下载其余部分。 这样,当大量客户端同时下载时,就不会出现网络拥塞的情况。

C/S架构有以下缺点:

3 区块链中的P2P

解释了这么多内容,现在我们将区块链中的P2P技术单独拿出来,详细分析其背后的原因。

从技术角度看,区块链技术是——P2P+共识机制+密码学。 具体来说,区块链是一种P2P网络架构,使用密码学保证数据安全,使用共识算法保证数据一致性。 对于其他架构,失败是不可避免的。 但是对于区块链的分布式P2P网络来说,基本不存在单点故障。 即使节点频繁进退,也不会影响整个系统。

而我们知道区块链的落地项目很多,但是我们可以大致将这些内容分为三类——公有链、私有链、联盟链。 公链是完全开放的,所以决定了在网络中不会使用P2P加密。 对于另外两者(尤其是联盟链)来说,节点之间相互合作但又不完全信任的事实使得P2P网络显得尤为重要。

二、P2P的分类

P2P网络本身有很多优势,其在区块链中的应用如下:

区块链的资源和服务分布在所有参与的节点上,在不存在中心系统的情况下,通过共识机制维护区块链网络的一致性。

区块链节点可以自由加入和退出,网络系统可以根据节点自由扩展。

比特币李笑比特币身价_以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议

区块链网络中没有中心节点,也就没有攻击目标。 参与节点分布在网络中,部分节点的破坏对区块链系统没有影响。 (我们知道很多协议都依赖CA进行处理,这也成为了很多黑客的目标,但是区块链没有CA机制,所以规避了风险)。

区块信息采用广播机制,无法定位广播起始节点,避免用户通信被监听,保护用户隐私。

区块链通过限制节点连接数和其他配置来避免资源负载和网络拥塞。

针对区块链应用特点,按照 P2P 网络是否去中心化、节点地址是否结构化两个方面,将 P2P 网络分为如下四类。

1 集中式 P2P 网络

中心化网络中有一个“中心服务器”,其作用是保存接入节点的地址信息。 如果两个点要通信,他们可以通过中央服务器请求对方的地址。 例如:

将音乐文件与 保存文件的节点相互关联,用户查找某个音乐时,中心服务器告知储存节点地址,用户点对点连接以获得音乐。

由此可见,中心服务器是用来提供地址索引的(其他架构的中心服务器提供所有服务)。 如果它失败了,整个系统就会瘫痪。

siteshilian.com 比特币协议_以下哪种是比特币运用的p2p协议_比特币李笑比特币身价

对于小型网络,集中式拓扑模型在管理和控制方面具有一定的优势。 但鉴于其上述缺陷,该模型不适用于大规模网络应用。

2 全分布式非结构化P2P网络

因为它没有中央索引服务器,每台机器都是网络中真正的对等体,同时充当客户端和服务器。

全分布式P2P节点可以自由加入和退出,没有中心节点,节点地址也没有结构化的统一标准。 整个网络结构是一个随机的图结构,没有固定的网络结构图。 但是,完全自由意味着新节点无法获知P2P网络节点的信息,因此无法加入网络。 全分布式P2P网络在更加自由化的同时,也带来了节点管理的问题。 节点的频繁加入和退出使得整个网络结构不稳定。 大量的广播消息不仅造成资源浪费,甚至会阻塞网络。

比特币采用这种P2P网络结构,完全分布式使得任何人和任何节点都可以参与,非结构化使得节点可以通过区块链P2P协议同步区块数据,同时保持匿名和隐私保护。

举例如下:

当一台计算机要下载一个文件,它首先以文件名或者关键字生成一个查询,并把这个查询发送给与它相连的所有计算机,这些计算机如果存在这个文件,则与查询的机器建立连接,如果不存在这个文件,则继续在自己相邻的计算机之间转发这个查询,直到找到文件为止。为了控制搜索消息不至于永远这样传递下去,一般通过TTL (Time To Live)的减值来控制查询的深度。

比特币李笑比特币身价_siteshilian.com 比特币协议_以下哪种是比特币运用的p2p协议

3 全分布式结构化P2P网络

比特币李笑比特币身价_siteshilian.com 比特币协议_以下哪种是比特币运用的p2p协议

全分布式最大的问题是节点地址管理。 节点之间没有固定规则,无法准确定位节点信息。 只能通过泛洪查询的方式进行查找,非常耗费网络。 结构化网络使用分布式哈希表(distributed hash table,DHT),通过Hash函数等加密哈希函数,将不同节点的地址标准化为标准长度的数据。

结构化模型与非结构化模型类似,但结构化模型的节点管理有固定的结构图。 例如:

以太坊将节点椭圆加密算法的公钥转换为 64 Byte 长度的 NodeID 作为唯一标志符来区分节点,使得以太坊可以在没有中心服务器的情况下实现节点地址精确查找。

4 半分布式P2P网络

半分布式P2P网络结合了集中式和分布式模型的优点,将节点分为普通节点和超级节点,从而形成半分布式网络结构。

超级节点维护一些网络节点地址、文件索引等,超级节点共同实现中心服务器功能。 超级节点本身是分布式的,可以自由扩容和退出,具有分布式网络的优势。

这就是hyperledger fabric采用的P2P网络结构。 它将节点分为普通用户节点和超级节点(排序、背书节点等)。 超级节点可以由普通节点选举产生,也可以自行配置。 单个超级节点的关闭不会影响系统的运行。

以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议_比特币李笑比特币身价

3.密码协议解决方案分析

上面我们介绍了P2P网络中的几种类型。 下面我们详细介绍区块链中具体的安全加密算法。

在描述协议之前,我们先讨论一下为什么要使用P2P加密?

我们需要在区块链中的节点和客户端之间建立安全的加密隧道,防止敏感信息在信息传输过程中暴露给外人。 此外,还可以减少网络安全监管工作,提高安全性。

1 传统通用SSL服务

简单来说以下哪种是比特币运用的p2p协议,在比特币“钱包”的应用中,早期的应用是使用SSL来加密客户端之间的数据。 SSL/TLS可以与HTTP协议结合形成HTTPS对网页内容进行加密,也可以与FTP等一些常用的协议结合,保证P2P网络中应用数据层的安全。

具体如下:

比特币李笑比特币身价_以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议

siteshilian.com 比特币协议_比特币李笑比特币身价_以下哪种是比特币运用的p2p协议

1. 客户端发出一个 client hello 消息,携带的信息包括:

比特币李笑比特币身价_以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议

    所支持的SSL/TLS 版本列表;支持的与加密算法;所支持的数据压缩方法;随机数A; 2. 服务端响应一个 server hello 消息,携带的信息包括:     协商采用的SSL/TLS 版本号;会话ID;随机数B;服务端数字证书 serverCA;     由于双向认证需求,服务端需要对客户端进行认证,会同时发送一个 client certificate request,表示请求客户端的证书; 3. 客户端校验服务端的数字证书;校验通过之后发送随机数C,该随机数称为pre-master-key,使用数字证书中的公钥加密后发出;     由于服务端发起了 client certificate request,客户端使用私钥加密一个随机数 clientRandom随客户端的证书 clientCA一并发出; 4. 服务端校验客户端的证书,并成功将客户端加密的随机数clientRandom 解密;     根据 随机数A/随机数B/随机数C(pre-master-key) 产生动态密钥 master-key,加密一个finish 消息发至客户端; 5. 客户端根据 同样的随机数和算法 生成master-key,加密一个finish 消息发送至服务端;

比特币李笑比特币身价_以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议

6. 服务端和客户端分别解密成功,至此握手完成,之后的数据包均采用master-key进行加密传输。

详见SSL/TLS算法流程分析

但由于比特币的官方理念是严格限制“钱包”用户的身份,所以在设计之初就已经保证了用户的身份是合法的,因此在后续版本中并没有维护其SSL。

2 站间协议(站到站)

由于P2P之间的信息传递不可避免地需要TCP连接,因此保证连接的安全就显得尤为重要。 但是我们如何保证会话的前向安全呢? 具体的算法过程是如何实现的?

站间协议(station to station)是一种密钥协商方案,它基于经典的DH密钥交换算法,提供密钥和实体的认证。

它还保证了密钥的前向安全性。

对于前向安全性,我们简单总结为:A与B之间的所有会话均有一个公共秘钥。但是假如我的这个公共秘钥丢失了那么我之前的所有会话均会被泄密。所以我们在每次会话过程中需要根据公共秘钥来生成一个“会话秘钥”,而需要根据这个会话秘钥来进行当前会话。

siteshilian.com 比特币协议_比特币李笑比特币身价_以下哪种是比特币运用的p2p协议

以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议_比特币李笑比特币身价

比特币李笑比特币身价_以下哪种是比特币运用的p2p协议_siteshilian.com 比特币协议

由于传统的DH密钥交换协议没有设计验证部分,所以很可能会出现中间人攻击。 但是STS通过协商和设计加入了验证对方身份的过程,避免了中间人攻击的可能。

该协议使用密码学“离散对数问题”来确保其安全性。 即向前计算C = F(M)很容易,但是不知道秘钥K就很难计算M = F^-1(C)。

例如上述图中,a,b不泄露只是传递x与y的话,任何人是没有办法通过结果x,y来推出秘密a,b。

3 狮身人面像协议

Sphinx 是由学术研究人员 George Danezis 和 Ian Goldberg 设计的协议,用于通过对等网络中继匿名消息。 该解决方案于 2009 年 5 月首次提出,最初与闪电网络甚至比特币无关。 Lightning Labs 的 Olaoluwa Osuntokun 意识到 Sphinx 可能被利用,他与 Blockstream 的 Christian Decker 合作修改协议以更好地适应闪电网络。

Sphinx 与著名的匿名通信工具 Tor(洋葱路由)有许多相似之处。 与 Tor 一样,所有使用 Sphinx 发送的数据包都可以加密——包括接收 IP 地址。 然后多次执行此加密,直到生成多个“加密层”(因此将 Tor 称为“洋葱”隐喻)。

siteshilian.com 比特币协议_以下哪种是比特币运用的p2p协议_比特币李笑比特币身价

使用巧妙的加密技巧,应用所有加密层,以便沿着通往最终加密数据包目的地的路由的每个中介只能打开一个“加密层”。 该层显示中介将此加密数据包重定向到何处。 (与 Tor 相比,Sphinx 使用改进的加密算法并创建固定大小的数据包,以更好地混淆节点在路由中的位置。)

简单来说,Sphinx协议就是中间沟通的人不知道起点和终点,他们只知道前一个人经过了下一个人。

例如我们儿时在教室向其他人传纸条。假设两个人隔的很远,那么我传递纸条的时候要在中间经过许多人的手。但是我纸条的内容又不能让其他人看到,所以此时我就要想办法既能传出去,又不会泄露。

请看我下面的分析。

假设A要传一张纸条给D以下哪种是比特币运用的p2p协议,那么中间有ABCDE。

这里要用到公钥的思想,假如我的ABCDE均会配合我传递信息。那么我A首先要计算路径,嗯,,A说:“我发现最近的传递方法是经过 B C D到E”。于是他就要开始处理自己的消息了。

假设消息为M。公钥分别为Pa Pb Pc Pd Pe。地址分别为Addr_a,Addr_b,Addr_c,Addr_d,Addr_e。
之后A进行倒序操作,先使用E进行处理。Pe(M)---对M用e的私钥加密。之后用D的消息处理。 Pd(Addr_e , Pe(M))........直到最后用B的私钥签名Pb(xxxxxxx)。

至此,A就可以将处理过的消息以此传递,首先给B,B解密后发现地址是C,所以B传递给C。C解密后给D.........直到到了E处,E解密得到消息。每个参与者只知道各自这一跳的前一个和下一个节点。

4. P2P在区块链中的应用

根据我们上面的内容,我们可以知道像比特币、以太坊这样的公链需要节点自由进出,所以不存在使用P2P加密的可能。

但比特币缺乏匿名性的劣势 区块链安全——匿名与隐私

对于区块链的隐私处理问题,比较有前途的解决方案是闪电网络+Sphinx协议。

闪电网络的本质是在比特币主链之外建立一个可以双向流动的小额支付通道,币可以跨节点转移。 将大量小额交易放在闪电网络上,减轻主链负载,提高小额交易速度。

闪电网络基于名为 Sphinx 的方案实施洋葱路由协议。 该路由协议确保付款发送方可以通过闪电网络构建和通信路径,以便:

Sphinx与闪电网络结合后,网络中的数据包被多次加密,闪电网络的中间层只能开启相应的加密层。 该层主要显示这个数据包的路由信息​​。 这使得在网络上隐藏详细的交易细节成为可能。

5.参考链接