1.本发明涉及一种基于区块链的匿名通信方法,属于区块链和匿名通信技术领域。
背景技术:2.随着互联网用户网络安全意识逐渐提高,匿名通信逐渐走入人们的视野。匿名通信是指通过技术手段隐藏发送者、接受者、通联关系的一种通信方式,其匿名方式主要分为单代理技术匿名通信系统(如anonymizer等)、多跳代理技术匿名通信系统(如tor等)、基于广播/组播的匿名通信系统(如dc-nets、p5等)、基于p2p的匿名通信系统(如crowds、tarzan等)。
3.其中,tor(the second-generation onion route)是目前使用人数最多、应用最广的匿名通信系统,其核心“洋葱路由”是上世纪九十年代由美国海军研究实验室提出。该系统主要由大量的分布式中继节点组成。如图1所示,整体系统主要分为以下五个部分:
4.(1)客户端(op):运行在用户操作系统上的本地程序,为用户提供匿名代理服务。
5.(2)目录服务器(ds)。全球共有10个。作用是收集并整理网络中的节点信息、根据内部算法生成共识文件、主动对节点进行可达性探测、根据可达性更新共识文件、供客户端访问并获取共识文件等功能,以便完成节点选择和链路建立。
6.(3)洋葱路由器(or)。tor匿名网络中的数据中继节点。tor默认匿名链路由3个or组成,分别为入口节点(entry)、中间节点(middle)和出口节点 (exit),其中,入口节点一般选择可信度较高的守护节点(guard)。
7.(4)隐藏服务器(hidden server)。提供web,irc等tcp应用服务。隐藏服务器受到tor匿名性的保护,必须使用tor客户端才能够访问其tcp应用服务。
8.(5)隐藏服务目录服务器。隐藏服务目录服务器存储并为客户端提供隐藏服务器的引入节点(introductionpoint,ipo)、公钥等节点信息。
9.tor匿名通信系统的脆弱性主要体现在:共识文件被公开、目录服务器中心化、恶意节点无法识别、暗网带来社会不稳定因素等。
10.在tor系统中,目录服务器ip地址被全网公开,任何人想要获得共识文件都可以通过向目录服务器发送get请求的方式,获取整个系统的共识文件。因此,当攻击者在获取目录节点的ip之后,可以模拟客户端向目录服务器发送get 请求。图2展示了共识文件可以通过浏览器访问明文内容,泄露系统节点重要信息。
11.图3展示了tor系统中存在10个目录服务器提供系统运行的必要功能,可见其存在中心化问题。从图3可以看出,这10台目录服务器中,有7台支持 ipv6地址访问,并且节点的所有信息均是公开的,如目录服务器的地址、运行时间、带宽资源等等。目录服务器具有测量节点信息、投票生成共识文件等功能,攻击者可以对这些公开的目录服务器发起攻击,若控制半数以上的目录服务器,便可以篡改共识文件,破坏整体系统的匿名性。同时,监管者可以针对以上目录服务器的ip地址进行屏蔽,使用这种封锁方法会使用户无法访问匿名通信网络。
12.图4展示了tor中节点加入与离开波动情况,并存在大量恶意节点。恶意节点监听网络通信,破坏用户匿名性,增加了不安全因素。
13.此外,不法分子在匿名通信技术的庇护下进行各种非法活动,如暗网 (darkweb)。目前已有很多研究人员对于暗网上的交易溯源与去匿名化进行广泛的研究,这种不受监管的匿名通信系统,给社会带来了更多不安全因素,因此遭到各个国家的抵制和封锁。
技术实现要素:14.本发明的目的是针对现有技术存在的缺陷,为了解决tor匿名通信系统无法被监管以及系统脆弱性等技术问题,创造性地提出一种基于区块链的匿名通信方法,能够实现普通用户匿名的同时可以监管非法用户。
15.区块链技术因其去中心化架构和共识算法带来的信任机制,被广泛关注。区块链本质上是一种分布式账本数据库,将每一条交易数据通过hash链的方式连接起来,保证了不可篡改、可溯源的特性,主要包含公有链、私有链、联盟链等类型。目前,区块链技术已经被广泛应用在比特币、以太坊等系统中。
16.本发明的创新点在于:将联盟链与tor匿名通信系统相结合,通过联盟链 (具体为hyperledger fabric)这种非公开化的区块链,将隐蔽通信网络与外网隔开。共识文件内容只对使用匿名通信系统内网用户展示,防止了共识文件被公开后带来的安全性问题。由于联盟链作为区块链的一种类型,其同样具有去中心化的特性。通过部署并运行联盟链中的智能合约来代替目录服务器的生成共识文件、分发共识文件等功能。
17.tor匿名通信系统中没有目录服务器,只有对等的分布式节点,成为去中心化去匿名通信系统。其次,通过引入匿名注册进制,对加入的用户进行审核。此方法引入密码学中的群签名方法,将用户注册的信息进行混合加密,保证了用户身份的同时又保护了用户匿名性。通过设定监管者,在必要时刻通过密码学机制,在经过半数以上同意时,可以恢复出用户的匿名身份,保证了匿名用户不作恶。
18.有益效果
19.本发明方法,对比现有技术,具有以下优点:
20.1.通信效率更高。联盟链是一个由各个组织、企业等组成联盟区块链,本身属于非公开网络,因此通信效率与公网相比更高。
21.2.安全性更高。本发明通过区块链的去中心化架构,去除了目录服务器的中心化架构,可以防止dos攻击,以及对目录服务器进行封锁。同时,共识文件通过执行链码来获得,避免了存储在公开的服务器上暴露链码内容,给整体匿名通信系统带来的危害。
22.3.解决了暗网滥用危害社会。在tor匿名通信系统中存在大量非法交易,因此被各个国家封锁,但是普通合法用户匿名性需求得不到满足。利用本发明的群签名机制,该匿名通信系统针对对等客户端保证了匿名性,对等用户无法了解其身份。若存在非法交易,可以通过三方监管机构(国家层面)来根据保存的群私钥恢复出非法用户的身份。对于匿名网络起到治理作用。
附图说明
23.图1为tor匿名通信系统拓扑结构示意图;
24.图2为共识文件内容示意;
25.图3为10个权威目录服务器示例;
26.图4为网络节点抖动情况示意;
27.图5为系统架构示意图;
28.图6为客户端注册流程图;
29.图7为网络拓扑更新流程图。
具体实施方式
30.下面结合附图对本发明做进一步详细说明。
31.如图5所示,tor匿名通信系统包括客户端节点、中继节点、排序节点、监管者、通道,中继节点根据功能划分为领导节点、锚节点、普通节点。
32.其中,客户端节点:用于发起匿名通信、运行tor客户端、根据共识文件内容建立多跳链路进行匿名通信,如图5中的alice和bob。
33.中继节点:负责三跳代理、节点中账本存储匿名网络中的共识文件,锚节点负责验证客户端节点请求获得共识文件的链码,领导节点负责链码执行广播到自己所在的组织中。
34.排序节点:执行系统中各个节点发布的交易,负责对客户端和中继节点提交的链码进行执行,并将执行后的结果发送给每个组织的领导节点。
35.通道:负责将不同节点之间连接起来,只有加入同一个通道的节点才能互相通信。
36.监管者:一个可信的监管机构,用于发布链码、保存客户端和各个节点的身份信息。
37.一种基于区块链的匿名通信方法,包括以下步骤:
38.客户端用户使用tor匿名通信系统,包括注册身份加入匿名网络,客户端获取共识文件建立三跳链路进行匿名通信,中间节点变动时,进行网络拓扑更新。
39.步骤1:客户端注册。
40.alice注册身份加入到匿名网络。联盟链选取一个第三方代理证书签发机构 rtca(root certificate authority)生成根证书rtcert(rootcertificate),随后将证书发送给ca集群服务器(fabric-ca intermediate server)。ca随后生成群公钥和群私钥,并广播群公钥到客户端节点和中间节点中。群私钥发送给监管方。并将群公钥和群私钥上链保存。当ca收到了客户端的注册请求之后,对其身份进行校验,之后对客户端发送准入证书ecert(enrollment certificate)并发送群证书gcert(group certificate))。同时发送匿名通信系统共识文件。此时,客户端完成注册。如图6所示。
41.通过这种基于群签名的注册方式,保护了客户端身份信息不会被其他对等的客户端知道身份信息,又能在通过监管方在某些特殊情况下通过群私钥恢复出这个用户的注册信息。
42.步骤2:链路构建。客户端根据注册流程中获得的共识文件,构造三跳链路进行匿名通信。
43.具体地,包括以下步骤:
44.步骤2.1:选择共识文件中一个节点作为第一跳入口节点peer1,选择方式如下:将
所有中间节点的根据带宽从大到小进行排序,将排序后的节点按照50 个一组进行分组,对于每一个组,利用随机函数random()选择一个节点,且每过 10分钟,客户端会下载一个文件30秒,重新计算带宽。其中,节点带宽测量方法参考tor系统,并通过链码实现(例如,https://tpo.pages.torproject.net/network-health/sbws/index.html)。
45.步骤2.2:客户端首先向peer1发送建立链路请求;peer1验证客户端合法性之后生成一对密钥:公钥pubkey_peer1_client、私钥prikey_peer1_client。然后,将公钥pubkey_peer1_client发回给客户端。
46.至此,客户端成功的建立了其与peer1的通信链路。
47.步骤2.3:客户端从获取的共识文件中,按照步骤2.1的选择方式,选择另一个节点作为中继节点peer2,并向peer1发送一个数据包,使用公钥 pubkey_peer1_client加密peer2的地址。
48.客户端从获取的共识文件中根据步骤2.1选择方式,选择另一个节点作为中继节点peer2,并向peer1发送一个数据包,使用公钥pubkey_peer1_client加密 peer2的地址。
49.步骤2.4:peer1收到数据包后,使用自己的私钥prikey_peer1_client解开数据包,如发现是一个让其自身与另外一个服务器peer2建立链接的请求,则peer1 重复步骤2.2与peer2建立链接,并将peer2返回的peer1与peer2链路的公钥 pubkey_peer1_peer2返回给客户端;
50.客户端重复步骤2.3至2.4,建立peer2与节点peer3之间的通信链路,并接收到peer2与peer3之间链路的公钥pubkey_peer2_peer3。
51.至此,客户端与3个中继服务器之间的链路已经成功建立。客户端拥有3把公钥:pubkey_client_peer1、pubkey_peer1_peer2、pubkey_peer2_peer3。然后,客户端通过三跳代理进行匿名通信。
52.步骤3:网络拓扑更新。
53.当中间节点的加入和离开导致网络拓扑发生变动,要重新获取共识文件。
54.当中间节点peer0加入网络时,在peer0经过注册之后,首先将准备执行链码请求发送给锚节点。锚节点验证链码真实性合法性,确定无误后对链码内容进行签名并发送给peer0。peer0向排序节点发送执行链码请求,排序节点验证签名并执行其链码,之后排序连接到区块链上。各个组织中的领导节点在接收到上链交易之后,将内容广播到自己所在的组织。最后同步各个节点的本地账本。
55.当peer0节点离开网络时,peer0节点如果在某一时间离开或者故障,则不能执行定期信息的链码,导致peer0节点中的时间戳属性无法更新,因此,各个节点本地记录中的peer0节点时间戳信息不同步于当前时间。根据匿名系统运行机制,此类节点不会被选中作为可用节点,新的共识文件也不会包含这个节点相关信息。
技术特征:1.一种基于区块链的匿名通信方法,其特征在于,包括以下步骤:客户端用户使用tor匿名通信系统,包括注册身份加入匿名网络,客户端获取共识文件建立三跳链路进行匿名通信,中间节点变动时,进行网络拓扑更新;步骤1:客户端注册;alice注册身份加入到匿名网络;联盟链选取一个第三方代理证书签发机构生成根证书,随后将证书发送给ca集群服务器;ca随后生成群公钥和群私钥,并广播群公钥到客户端节点和中间节点中;群私钥发送给监管方;并将群公钥和群私钥上链保存;当ca收到了客户端的注册请求之后,对其身份进行校验,之后对客户端发送准入证书并发送群证书;同时发送匿名通信系统共识文件;此时,客户端完成注册;步骤2:客户端根据注册流程中获得的共识文件,构造三跳链路进行匿名通信;步骤2.1:选择共识文件中一个节点作为第一跳入口节点peer1;步骤2.2:客户端首先向peer1发送建立链路请求;peer1验证客户端合法性之后生成一对密钥:公钥pubkey_peer1_client、私钥prikey_peer1_client;然后,将公钥pubkey_peer1_client发回给客户端;步骤2.3:客户端从获取的共识文件中,按照步骤2.1的选择方式,选择另一个节点作为中继节点peer2,并向peer1发送一个数据包,使用公钥pubkey_peer1_client加密peer2的地址;客户端从获取的共识文件中选择另一个节点,作为中继节点peer2,并向peer1发送一个数据包,使用公钥pubkey_peer1_client加密peer2的地址;步骤2.4:peer1收到数据包后,使用自己的私钥prikey_peer1_client解开数据包,如发现是一个让其自身与另外一个服务器peer2建立链接的请求,则peer1重复步骤2.2与peer2建立链接,并将peer2返回的peer1与peer2链路的公钥pubkey_peer1_peer2返回给客户端;客户端重复步骤2.3至2.4,建立peer2与节点peer3之间的通信链路,并接收到peer2与peer3之间链路的公钥pubkey_peer2_peer3;至此,客户端与3个中继服务器之间的链路已经成功建立;客户端拥有3把公钥:pubkey_client_peer1、pubkey_peer1_peer2、pubkey_peer2_peer3;然后,客户端通过三跳代理进行匿名通信;步骤3:网络拓扑更新;当中间节点的加入和离开导致网络拓扑发生变动,要重新获取共识文件;当中间节点peer0加入网络时,在peer0经过注册之后,首先将准备执行链码请求发送给锚节点;锚节点验证链码真实性合法性,确定无误后对链码内容进行签名并发送给peer0;peer0向排序节点发送执行链码请求,排序节点验证签名并执行其链码,之后排序连接到区块链上;各个组织中的领导节点在接收到上链交易之后,将内容广播到自己所在的组织;最后同步各个节点的本地账本;当peer0节点离开网络时,peer0节点如果在某一时间离开或者故障,则不能执行定期信息的链码,导致peer0节点中的时间戳属性无法更新,因此,各个节点本地记录中的peer0节点时间戳信息不同步于当前时间;根据匿名系统运行机制,此类节点不会被选中作为可用节点,新的共识文件也不会包含这个节点相关信息。
2.如权利要求1所述的一种基于区块链的匿名通信方法,其特征在于,步骤2.1和步骤2.3中,选择共识文件中一个节点的方式如下:将所有中间节点的根据带宽从大到小进行排序,将排序后的节点按照50个一组进行分组,对于每一个组,利用随机函数random()选择一个节点,且每过10分钟,客户端会下载一个文件30秒,重新计算带宽;其中,节点带宽测量方法参考tor系统,并通过链码实现。3.如权利要求1所述的一种基于区块链的匿名通信方法,其特征在于,tor匿名通信系统包括客户端节点、中继节点、排序节点、监管者、通道,中继节点根据功能划分为领导节点、锚节点、普通节点;其中,客户端节点:用于发起匿名通信、运行tor客户端、根据共识文件内容建立多跳链路进行匿名通信;中继节点:负责三跳代理、节点中账本存储匿名网络中的共识文件,锚节点负责验证客户端节点请求获得共识文件的链码,领导节点负责链码执行广播到自己所在的组织中;排序节点:执行系统中各个节点发布的交易,负责对客户端和中继节点提交的链码进行执行,并将执行后的结果发送给每个组织的领导节点;通道:负责将不同节点之间连接起来,只有加入同一个通道的节点才能互相通信;监管者:一个可信的监管机构,用于发布链码、保存客户端和各个节点的身份信息。
技术总结本发明涉及一种基于区块链的匿名通信方法,属于区块链和匿名通信技术领域。本方法将联盟链与Tor匿名通信系统相结合,通过联盟链将隐蔽通信网络与外网隔开。共识文件内容只对使用匿名通信系统内网用户展示,防止共识文件被公开后带来的安全性问题。通过部署并运行联盟链中的智能合约来代替目录服务器的生成共识文件、分发共识文件等功能。通过引入密码学中的群签名方法,将用户注册的信息进行混合加密,保证用户身份的同时又保护了用户匿名性。通过设定监管者,在必要时刻通过密码学机制,在经过半数以上同意时可以恢复出用户的匿名身份,保证了匿名用户不作恶。本方法通信效率和安全性更高,对于匿名网络起到了有效治理作用。用。用。
技术研发人员:徐大伟 高家奇 薛姣 赵剑 王建光
受保护的技术使用者:长春大学
技术研发日:2022.06.24
技术公布日:2022/11/1