一种基于动态黑名单机制的通信方法与流程

文档序号:17180024发布日期:2019-03-22 20:48阅读:289来源:国知局
一种基于动态黑名单机制的通信方法与流程

本发明属于匿名通信网络技术领域,尤其涉及一种基于动态黑名单机制的通信方法。



背景技术:

在1981年chaum,d.l.首次提出匿名通信的概念,从国内外目前发展现状来看,研究在大规模网络环境下的匿名通信技术的应用和可部署于网络上的匿名通信系统非常有必要。通过研究匿名网络通信,可以增强国家军事领域、安全领域和重点基础环境领域等网络抗攻击的能力,也可以维护现实通信世界中用户的隐私权,还可以有效保护用户的网络商业传输和行为,最终对互联网整体信息安全起到一定的积极影响作用。

匿名通信的重要目的是隐藏通信参与者的身份,防止被其合作伙伴及其第三方发现,使得用户的个人隐私及通信内容的安全性得到更好保护。一般来说,在一次通信过程中,有三种匿名性:发送者匿名、接收者匿名,以及发送者和接受者之间通信连接的匿名。例如:用户a和b通过某种网络通信方式进行通信,如果b和网络上的用户都不知道a的身份,那么这种情况就是发送者匿名。如果网络上的其他用户都不知道b的身份,那么这种情况就是接受者匿名。如果网络上的用户都不知道发送者a和接收者b进行了一次消息发收,那么这种情况就是发送者和接受者之间通信连接的匿名。

现代技术中比较著名的匿名通信技术叫做洋葱路由技术(theonionrouting,tor),在洋葱路由网络中,来自发送者的消息通过一连串代理,最后到达目的接收端,这种中间代理被称为洋葱路由器。tor系统在用户通信前,首先要建立一条通过公开网络的虚电路,虚电路中的转发节点只知道自己的直接前驱和直接后继,而不知道路径中的其它节点,外部观测者看到的ip数据包中的地址并不是通信发起者和接收者的地址,而是路径中前后节点的地址,由此通信发起者和接收者被匿名。

由于tor系统是开放的系统,成员加入的形式未采用严格的认证机制进行限制,也就是说任意节点经过签名认证之后,便成为tor匿名系统中的成员。从理论上来看,通过系统目录服务器可以查到任意一个已经注册的参与节点的实体信息,事实上系统资源的发布机制无法对节点信息的全局匿名性提供任何保护,任意用户都可以获取当前状态下的匿名网络提供的所有网络通信资源。因此,系统中很有可能存在一部分恶意成员,这样就会造成很多匿名通信系统遭到攻击的可能性。



技术实现要素:

为解决上述问题,本发明提供一种基于动态黑名单机制的通信方法,能够保障用户在访问网络时的匿名性,安全性和高效性。

一种基于动态黑名单机制的通信方法,包括以下步骤:

建立转发路径,其中,所述转发路径第一个节点为入口节点、中间为两个以上的中间节点、最后一个节点为出口节点,且所述入口节点、中间节点以及出口节点的ip地址分别对应一个随机数;

将转发路径上所有节点对应的随机数按照与其在路径上相反的顺序逐层附加在用户向入口节点发送的原始数据包的头部,得到消息,其中,出口节点的随机数附加在原始数据包头部的层数为两层;

入口节点将所述消息通过转发路径的中间节点转发给出口节点后,出口节点将消息发送给目标,实现通信;

其中,所述入口节点、中间节点以及出口节点均具备各自的私钥,所述入口节点和出口节点还具备一对对称秘钥,且所述入口节点、中间节点以及出口节点在接收所述消息之后且在消息转发出去前,执行动态黑名单检测操作;

所述动态黑名单检测操作包括以下步骤:

s101:当前节点收到一个消息,检测接收到的消息的源ip地址是否在黑名单中:如果是,则将该消息丢弃;如果否,则进入步骤s102,其中,初始的黑名单为空名单;

s102:查询所述消息携带的当前第一个随机数是否存在于随机数与ip地址对应关系表中,如果否,进入步骤s103,如果是,进入步骤s104;其中,初始的随机数与ip地址对应关系表为空表;

s103:采用当前节点对应的私钥解密消息中当前第一个随机数的所在层:如果解密失败,则将消息的源ip地址加入所述黑名单;如果解密成功,则得到当前节点的下游节点的ip地址对应的随机数,进而得到当前节点的下游节点的ip地址,然后将随机数与ip地址加入所述随机数与ip地址对应关系表中,并将解密后的消息转发给下游节点;

s104:检测所述第一个随机数对应的ip地址是否为当前节点所在的ip地址,如果是,则说明当前节点为出口节点,则使用对称秘钥对消息中的原始数据包进行解密,并将解密后的消息转发给目标,如果否,将剥除当前第一个随机数所在层的消息转发给下游节点。

进一步地,所述建立转发路径包括以下步骤:

s201:用户选取一条转发路径,入口节点执行加密操作得到路径初始化消息,其中,所述加密操作具体为:

入口节点采用所述转发路径上的每个中间节点自身的公钥,加密各中间节点的上游节点对应的随机数和ip地址以及下游节点对应的随机数和ip地址,得到各中间节点的路段加密结果;

入口节点采用转发路径中出口节点自身的公钥,加密最后一个中间节点对应的随机数和ip地址、入口节点的对称秘钥以及所述转发路径上所有节点对应的随机数序列,得到出口节点的路段加密结果;

入口节点将各中间节点的路段加密结果以及出口节点的路段加密结果依次进行拼接,得到路径初始化消息;

s202:入口节点将路径初始化消息转发给第一个中间节点,第一个中间节点采用自身的私钥解密所述路径初始化消息的第一个路段加密结果,得到第一个中间节点的上游节点的随机数与ip地址、下游节点的随机数与ip地址,然后将解密后的路径初始化消息转发给下游节点;以此类推,转发路径的后续节点分别采用自身的私钥解密所述路径初始化消息的各路段加密结果,直到所有节点均获取自身上游节点的随机数与ip地址,下游节点的随机数与ip地址,出口节点将转发路径建立成功的反馈信息逆着所述转发路径发送到入口节点,完成转发路径的建立。

进一步地,若所述转发路径中的入口节点与出口节点为第一次组合,则所述入口节点执行加密操作得到路径初始化消息前,还执行以下步骤:

入口节点为出口节点生成一个随机的对称秘钥,其中,该对称秘钥使用出口节点的公钥加密,入口节点私钥签名;

入口节点将所述对称秘钥通过中间节点发送给出口节点,出口节点验证签名后安装所述对称秘钥,并生成一个随机秘钥,其中,该随机秘钥使用入口节点的公钥加密,出口节点的私钥签名;

出口节点将所述随机秘钥通过中间节点发送给入口节点,入口节点安装所述随机秘钥。

进一步地,所述入口节点建立转发路径后,得到消息前,还执行以下步骤:

入口节点使用自身的对称秘钥加密所述原始数据包。

进一步地,步骤s104中所述出口节点使用对称秘钥对消息中的原始数据包进行解密,并将解密后的消息转发给目标,具体为:

出口节点使用入口节点的对称秘钥解密消息中的原始数据包,并向目标发送通信请求;

目标接收到所述通信请求后接收所述消息并生成目标响应,然后将所述目标响应发送给出口节点;

出口节点使用自身对称秘钥加密所述目标响应,然后将加密后的目标响应通过中间节点发送给入口节点;

入口节点使用出口节点的对称秘钥解密所述目标响应,然后将解密后的目标响应发送给用户,实现通信。

有益效果:

本发明提供一种基于动态黑名单机制的通信方法,采用动态黑名单机制来完成组网,每个节点通过对接收到的数据包的解密是否成功来判断该节点是否合法,同时每个节点解密成功,只能得到当前节点的下游节点对应的随机数与ip地址,以及上游节点对应的随机数与ip地址,而不知道完整的路径,实现路径匿名,能够保障用户在访问网络时的匿名性,安全性和高效性。

附图说明

图1为本发明提供的网络通信路径示意图;

图2为本发明提供的一种动态黑名单检测操作流程图;

图3为本发明提供的路径建立操作的流程图;

图4为本发明提供的路径建立的过程示意图;

图5为本发明提供的一种数据包转发示意图;

图6为本发明提供的一种入口节点和出口节点之间进行点对点协商加密的信令图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

实施例一

一种基于动态黑名单机制的通信方法,包括以下步骤:

s1:建立转发路径,其中,所述转发路径第一个节点为入口节点、中间为两个以上的中间节点、最后一个节点为出口节点,且所述入口节点、中间节点以及出口节点的ip地址分别对应一个随机数;

s2:将转发路径上所有节点对应的随机数按照与其在路径上相反的顺序逐层附加在用户向入口节点发送的原始数据包的头部,得到消息,其中,出口节点的随机数附加在原始数据包头部的层数为两层;

s3:入口节点将所述消息通过转发路径的中间节点转发给出口节点后,出口节点将消息发送给目标,实现通信。

其中,所述入口节点、中间节点以及出口节点均具备各自的公钥和私钥,所述入口节点和出口节点还具备一对对称秘钥,且所述入口节点、中间节点以及出口节点将所述消息转发出去前,执行动态黑名单检测操作。

参见图1,该图为本实施例提供的网络通信路径示意图。在进行传输时,用户a向入口节点发送消息,入口节点将所述消息通过a节点和b节点转发给出口节点后,出口节点将消息发送给目标a,实现通信。在传输过程中,路径上的每个节点,预先不需要获取可以与其通信的合法列表,而是通过动态黑名单机制来完成合法性验证。

参见图2,该图为本实施例提供的一种动态黑名单检测操作流程图。所述动态黑名单检测操作包括以下步骤:

s101:当前节点收到一个消息,检测接收到的消息的源ip地址是否在黑名单中,如果是,则将该消息丢弃;如果否,则进入步骤s102,其中,初始的黑名单为空名单;

s102:查询所述消息携带的当前第一个随机数是否存在于随机数与ip地址对应关系表中,如果否,进入步骤s103,如果是,进入步骤s104;其中,初始的随机数与ip地址对应关系表为空表;

s103:采用当前节点对应的私钥解密消息中当前第一个随机数的所在层:如果解密失败,则将消息的源ip地址加入所述黑名单;如果解密成功,则得到当前节点的下游节点的ip地址对应的随机数,进而得到当前节点的下游节点的ip地址,然后将随机数与ip地址加入所述随机数与ip地址对应关系表中,并将解密后的消息转发给下游节点;

s104:检测所述第一个随机数对应的ip地址是否为当前节点所在的ip地址,如果是,则说明当前节点为出口节点,则使用对称秘钥对消息中的原始数据包进行解密,并将解密后的消息转发给目标,如果否,将剥除当前第一个随机数所在层的消息转发给下游节点。

需要说明的是,步骤s2中,将转发路径上所有节点对应的随机数按照与其在路径上相反的顺序逐层附加在用户向入口节点发送的原始数据包的头部,得到消息的一种具体的实现方式为:

获取转发路径上所有中间节点和出口节点对应的随机数,然后采用所述对称秘钥对原始数据包进行加密,得到数据包x,再将各随机数按照其对应节点在转发路径上相反的顺序逐层附加在数据包x的头部,且数据包x的头部每附加一层随机数,就对数据包x进行一次加密,依次完成附加了各层随机数的数据包的加密后,得到消息;

进一步的,所述依次完成附加了各层随机数的数据包的加密具体为:

所述入口节点、中间节点以及出口节点均具备各自的私钥;

所述转发路径的出口节点的随机数附加在数据包x头部的层数为两层,在数据包x上附加第一层出口节点的随机数后,采用所述出口节点的私钥对附加了第一层出口节点的随机数的数据包x进行加密,得到数据包x1;

在数据包x1上附加第二层出口节点的随机数后,采用最后一个中间节点的私钥对附加了第二层出口节点的随机数的数据包x1进行加密,得到数据包x2;

在数据包x2上附加最后一个中间节点的随机数后,采用倒数第二个中间节点的私钥对附加了最后一个中间节点随机数的数据包x2进行加密,得到数据包x3;

以此类推,直到采用入口节点的私钥加密附加了第一个中间节点随机数的数据包xn,完成各层随机数的加密,其中,n为中间节点与出口节点的个数之和。

需要说明的是,由于在原始数据包的头部附加了两层出口节点对应的随机数,则出口节点第一层随机数在最后一个中间节点被剥除,最后一个中间节点根据解密得到出口节点的随机数,获取该随机数对应的ip地址,根据该ip地址将剥除第一层出口节点随机数的消息转发给出口节点,此时出口节点采用自身的私钥解密消息,得到第二层出口节点的随机数,则第二层出口节点的随机数对应的ip地址即为当前主机,即出口节点所对应的ip地址,也就是说,消息被转发到了出口节点;然后出口节点使用对称秘钥对剥除完各层随机数的消息进行解密,最后将解密后的消息转发给目标。

需要说明的是,由于协商采用rsa方式,频繁处理会消耗大量性能,因此限定每个源ip处理rsa解密失败的频率不能超过10次/s,并对解密失败次数过多的ip加入黑洞一段时间避免恶意攻击。

由此可见,本实施例没有采用集中目录服务器来组织网络,而是从组网角度出发,基于动态黑名单机制来构建一个匿名通信网络方案,并采用逐段加密的方式,多级网络结构、多层加密等技术,提供匿名通信路径的可用性,从而保障用户在访问网络时的匿名性,安全性和高效性。

实施例二

基于以上实施例,用户想要与目标通信,事先需要选定入口节点、出口节点和转发路径。因此,本实施例将给出转发路径的一种确定方式。

所述建立转发路径,包括以下步骤:

s201:用户选取一条转发路径,入口节点执行加密操作得到路径初始化消息,其中,所述加密操作具体为:

入口节点采用所述转发路径上的每个中间节点自身的公钥,加密各中间节点的上游节点对应的随机数和ip地址以及下游节点对应的随机数和ip地址,得到各中间节点的路段加密结果;

入口节点采用转发路径中出口节点自身的公钥,加密最后一个中间节点对应的随机数和ip地址、入口节点的对称秘钥以及所述转发路径上所有节点对应的随机数序列,得到出口节点的路段加密结果;

入口节点将各中间节点的路段加密结果以及出口节点的路段加密结果依次进行拼接,得到路径初始化消息;

其中,第一个中间节点的上游节点为入口节点,最后一个中间节点的下游节点为出口节点。

s202:入口节点将路径初始化消息转发给第一个中间节点,第一个中间节点采用自身的私钥解密所述路径初始化消息的第一个路段加密结果,得到第一个中间节点的上游节点的随机数与ip地址、下游节点的随机数与ip地址,然后将解密后的路径初始化消息转发给下游节点;以此类推,转发路径的后续节点分别采用自身的私钥解密所述路径初始化消息的各路段加密结果,直到所有节点均获取自身上游节点的随机数与ip地址,下游节点的随机数与ip地址,出口节点将转发路径建立成功的反馈信息逆着所述转发路径发送到入口节点,完成转发路径的建立。

需要说明的是,在建立转发路径的过程中,入口节点首先判断是否为第一次选择所述转发路径,如果是,则执行上述步骤s201~s202,如果否,则直接执行后续步骤,即执行实施例中的步骤s2~s3;也就是说,后续步骤即为将转发路径上所有节点对应的随机数按照倒序逐层附加在用户向入口节点发送的原始数据包的头部,得到消息,其中,转发路径最后一个节点的随机数附加在原始数据包头部的层数为两层;然后入口节点按照所述转发路径将所述消息通过两个以上顺次连接的中间节点转发给出口节点后,出口节点将消息发送给目标,实现通信。

参见图3,该图为本实施例提供的路径建立操作的流程图。本实施例以图1中的用户a向入口节点发送消息,入口节点将所述消息通过a节点和b节点转发给出口节点后,出口节点将消息发送给目标a为例,对路径建立的过程进行详细说明。

用户选取一条转发路径,入口节点首先判断之前是否已经建立该路径。如果是,则继续使用原先的通知(节点ip地址、随机数、端口),即将路径去和返的所有回路对应节点的随机数放在加密的原始数据包头部,并发送给a节点;如果否,则入口节点采用a节点的公钥加密b节点对应的随机数b和ip地址,入口节点的随机数x和入口节点的ip地址;入口节点采用b节点的公钥加密a节点对应的随机数a和ip地址,出口节点的随机数d和入口节点的ip地址;入口节点采用出口节点的公钥加密b节点对应的随机数b和ip地址,入口节点的aes对称秘钥以及所述转发路径上所有节点对应的随机数序列xabd;入口节点将上述加密操作得到的加密结果进行拼接得到路径初始化消息,入口节点再将路径初始化消息依次转发给所述转发路径上的a节点、b节点以及出口节点。

需要说明的是,当前节点通过自身的私钥解密上游节点转发来的路径初始化消息,得到当前节点的上游节点随机数和ip地址、下游节点随机数和ip地址,并将随机数和ip地址加入所述随机数与ip地址对应关系表中。实际上,当前节点的上游节点随机数和ip地址对应关系已经作为上一个节点的下一个节点的随机数加入到随机数与ip地址对应关系表中。

参见图4,该图为本实施例提供的路径建立的过程示意图。本实施例以图1中的用户a向入口节点发送消息,入口节点将所述消息通过a节点和b节点转发给出口节点后,出口节点将消息发送给目标a为例,对路径建立的过程进行详细说明。

每一个节点都会被设计为仅知道自己的上游节点和下游节点。a节点利用自己的私钥解密后得到路径上游节点信息(入口节点ip地址、随机数x)和下游节点信息(b节点ip地址、随机数b),并将剩余部分继续传递给b节点。b节点利用自己的私钥解密后得到路径中的上游节点信息(a节点ip地址、随机数a)和下游节点信息(出口节点ip地址、随机数d),并将剩余部分继续传递给出口节点;出口节点利用自己的私钥解密后得到路径中的上游节点信息(b节点ip地址、随机数b)、入口节点的密钥(aes密钥)、路径序列(xabd)。这样整个网络中每一个节点只与有限的上游与下游节点相连。同时每一个节点仅知道自己的私钥,证书与提供服务的端口,每个节点都被设计为不会接收多于自己需要的信息。

参见图5,该图为本实施例提供的一种消息转发示意图。转发路径确定后,入口节点已将用户a的消息通过出口节点的aes对称密钥进行加密,并将整条路径上的节点序列已经翻译成对应的路径序列,附加在加密后的原始数据包头上转发给a节点。从数据转发角度分析,a节点通过识别路径序列将剩余数据转发给b节点,b节点继续进行转发,到达出口节点时,将消息解密后发送给目标a,并通过路径序列在内存中找到对应数据返回路径,将转发路径建立成功的反馈信息逆着所述转发路径发送到入口节点。

需要说明的是,在离原始数据包头部最近的地方,即两层出口地址随机数后面,还附加有一层将由转发路径上所有节点对应的随机数组成的路径序列xabd,则转发路径建立成功的反馈信息逆着所述转发路径,即按照随机数dbax对应的ip地址发送回入口节点。

由此可见,在消息传输过程中,用户首先利用对称密钥对消息进行加密,入口节点再对路径上每个节点的密钥进行逐层加密,这样数据入口由用户自行掌控,网络中的中间节点无法知道数据的内容,数据出口无法知道数据来自哪个数据入口,为用户提供非常高的安全性与隐蔽性。

实施例三

在入口节点和出口节点之间进行通信,即入口节点将消息通过两个以上的中间节点转发给出口节点时,若所述转发路径中的入口节点与出口节点为第一次组合,入口节点和出口节点需要协商aes256对称密钥。下面基于以上实施例,详细介绍入口节点和出口节点协商aes256对称密钥的过程。

参见图6,该图为本实施例提供的一种入口节点和出口节点之间进行点对点协商加密的信令图。

若所述转发路径中的入口节点与出口节点为第一次组合,则所述入口节点执行加密操作得到路径初始化消息前,还执行以下步骤:

入口节点为出口节点生成一个随机的对称秘钥,其中,该对称秘钥使用出口节点的公钥加密,入口节点私钥签名;

入口节点将所述对称秘钥通过中间节点发送给出口节点,出口节点验证签名后安装所述对称秘钥,并生成一个随机秘钥,其中,该随机秘钥使用入口节点的公钥加密,出口节点的私钥签名;

出口节点将所述随机秘钥通过中间节点发送给入口节点,入口节点安装所述随机秘钥。

进一步地,所述入口节点建立转发路径后,得到消息前,还执行以下步骤:

入口节点使用自身的对称秘钥加密所述原始数据包。

进一步地,步骤s104中所述出口节点使用对称秘钥对消息中的原始数据包进行解密,并将解密后的消息转发给目标,具体为:

出口节点使用入口节点的对称秘钥解密消息中的原始数据包,并向目标发送通信请求;

目标接收到所述通信请求后接收所述消息并生成目标响应,然后将所述目标响应发送给出口节点;

出口节点使用自身对称秘钥加密所述目标响应,然后将加密后的目标响应通过中间节点发送给入口节点;

入口节点使用出口节点的对称秘钥解密所述目标响应,然后将解密后的目标响应发送给用户,实现通信。

进一步地,若入口节点在设定时间内未收到出口节点的目标响应,入口节点将重置该出口节点的秘钥状态。

进一步地,所述入口节点在第一次对外发送消息时,将重置出口节点密钥状态。

当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当然可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1