一种去中心化的匿名通信系统、方法及装置与流程

文档序号:30970040发布日期:2022-08-02 20:17阅读:131来源:国知局
1.本技术涉及通信领域,尤其涉及一种低延时、高可靠、强隐私保护的去中心化匿名通信系统、方法及装置。
背景技术
::2.当前,人们希望使用的通信系统在确保通信质量的同时,还可以保证消息的机密性以及用户的匿名性。机密性即指发出的消息其内容无法被他人得知,因此,只有保证机密性才能保证个人隐私不被泄露。匿名性即指通信双方的身份无法被外界获取,在多数场景下使用者不希望暴露自己正在与谁进行通信。显然,只有保证匿名性才能支持大量较为机密的线上应用(application,app),例如比特币(bitcoin)交易等。因此,如今人们更多的开始使用匿名通信系统。3.匿名通信系统是一种可以保证用户在因特网(internet)上进行实时通信时具有一定机密性和匿名性的通信系统。为了保障机密性,匿名通信系统通常会使用密码学手段来保障用户通信数据的明文不被窃取。例如可以采用对称加密或非对称加密保障机密性。而为了保障匿名性,匿名通信系统同行需要对抗两种网络攻击,根据攻击者可能实施的网络攻击可以划分为拒绝服务(denial-of-service,dos)攻击和流量分析攻击(trafficanalysisattack)。4.dos攻击是一种试图破坏通信系统的核心服务器,从而使得通信系统无法正常工作的网络攻击手段。流量分析攻击是一种试图破坏用户匿名性的网络攻击。与dos攻击不同的是,流量分析攻击的最终目的是揭露网络中通信双方的身份信息,而非破坏通信系统。较为具体的,流量分析攻击还可以细分为两种攻击,如被动流量分析攻击和主动流量分析攻击。5.在因特网上用户对强隐私保护的通信系统有三大要求:低延时、可抵抗dos攻击和可抵抗流量分析攻击。然而,对于目前的匿名通信系统,部分方案可以保证低延时,部分方案可以保证抵抗流量分析攻击。但是,并不存在可以同时满足低延时、可抵抗dos攻击和可抵抗流量分析攻击的系统,这导致了用户目前使用的通信系统仍然存在不安全性。技术实现要素:6.本技术实施例提供了一种去中心化的匿名通信系统,该系统包括多个网络节点,多个网络节点构成了结构化点对点(peer-to-peer,p2p)网络,并且每个网络节点均运行在可信运行环境(trustedexecutionenvironment,tee)中,从而可以抵抗dos攻击。当两个通信节点需要进行匿名通信时,通过从多个网络节点中选择匿名通信秘密交换节点作为通信数据的交换节点,从而可以抵抗主动流量分析攻击。每个网络节点在发送通信数据时采用随机洗牌的方式,抵抗了被动流量分析攻击。使得该匿名通信系统可以同时满足低延时、可抵抗dos攻击和可抵抗流量分析攻击,保障了通信系统的安全性。7.第一方面,提供了一种去中心化的匿名通信系统,系统包括:多个网络节点,其中,每个网络节点内具有可信运行环境,系统运行在网络节点的可信运行环境中,多个网络节点构成结构化点对点网络,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点;第一通信节点根据预先配置的第一路由表,将第一通信数据发送至匿名通信秘密交换节点,以及第二通信节点根据预先配置的第二路由表,将第二通信数据发送至匿名通信秘密交换节点,其中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点;匿名通信秘密交换节点根据预先配置的第三路由表将第一通信数据发送至第二通信节点,以及将第二通信数据发送至第一通信节点。本技术通过运行在可信运行环境中的网络节点进行匿名通信,并且两个网络节点之间采用匿名通信秘密交换节点作为数据交换的节点,可以抵抗可抵抗dos攻击和主动流量分析攻击,保障了通信系统的安全性。8.在一个可能的实施方式中,在第一通信节点根据预先配置的第一路由表,将第一通信数据发送至匿名通信秘密交换节点,以及第二通信节点根据预先配置的第二路由表,将第二通信数据发送至匿名通信秘密交换节点之前,系统还包括:第一通信节点与第二通信节点根据预先配置的秘密交换点种子,确定多个秘密交换节点;第一通信节点与第二通信节点根据相同的预设规则,从多个秘密交换节点中选择相同的秘密交换节点作为匿名通信秘密交换节点。本技术第一通信节点与第二通信节点通过从多个秘密交换节点种子中确定出相同的匿名通信秘密交换节点,保障了使用同一个匿名通信秘密交换节点进行匿名通信,同时使得匿名通信的过程更加不易被发现和跟踪,使得通信系统的安全性大大提升。9.在一个可能的实施方式中,第一通信节点与第二通信节点根据预先配置的秘密交换点种子,确定多个秘密交换节点包括:第一通信节点与第二通信节点根据相同的随机数生成器,对秘密交换点种子进行计算,确定相同的随机整型数组,其中,随机整型数组包括至少一个整型参数;第一通信节点与第二通信节点将随机整型数组中的每个整型参数作为秘密交换节点id,其中,每个秘密交换节点id对应一个秘密交换节点。10.在一个可能的实施方式中,网络节点还包括第一邻居节点和/或第二邻居节点;系统还包括:若第一路由表中并未配置匿名通信秘密交换节点的路由路径,则第一通信节点根据第一路由表确定第一邻居节点,并将第一通信数据发送至第一邻居节点;第一邻居节点根据预先配置的第四路由表将第一通信数据发送至匿名通信秘密交换节点;以及,若第二路由表中并未配置匿名通信秘密交换节点的路由路径,则第二通信节点根据第二路由表确定第二邻居节点,并将第二通信数据发送至第二邻居节点;第二邻居节点根据预先配置的第五路由表将第二通信数据发送至匿名通信秘密交换节点。11.在一个可能的实施方式中,系统还包括:若第四路由表中并未配置匿名通信秘密交换节点的路由路径,则第一邻居节点根据第四路由表确定新的第一邻居节点;第一邻居节点根据第四路由表将第一通信数据发送至新的第一邻居节点。12.在一个可能的实施方式中,系统还包括:若第五路由表中并未配置匿名通信秘密交换节点的路由路径,则第二邻居节点根据第五路由表确定新的第二邻居节点;第二邻居节点根据第五路由表将第二通信数据发送至新的第二邻居节点。13.在一个可能的实施方式中,匿名通信秘密交换节点根据预先配置的第三路由表将第一通信数据发送至第二通信节点,以及将第二通信数据发送至第一通信节点包括:匿名通信秘密交换节点通过第二通信数据确定第二通信节点;匿名通信秘密交换节点根据第三路由表,将第一通信数据发送至第二通信节点;以及,匿名通信秘密交换节点通过第一通信数据确定第一通信节点;匿名通信秘密交换节点根据第三路由表,将第二通信数据发送至第一通信节点。本技术通过匿名通信秘密交换节点作为匿名通信中通信数据交换的节点,由于运行在可信运行环境,并且该节点并不会被外界所获取,因此可以一定程度上抵抗dos攻击,保障了通信系统的安全性。14.在一个可能的实施方式中,网络节点还包括第三邻居节点;匿名通信秘密交换节点根据第三路由表,将第一通信数据发送至第二通信节点包括:若第三路由表中并未配置第二通信节点的路由路径,则匿名通信秘密交换节点根据第三路由表确定第三邻居节点,并将第一通信数据发送至第三邻居节点;第三邻居节点根据预先配置的第六路由表将第一通信数据发送至第二通信节点。15.在一个可能的实施方式中,系统还包括:若第六路由表中并未配置第二通信节点的路由路径,则第三邻居节点根据第六路由表确定新的第三邻居节点;第三邻居节点根据第六路由表将第一通信数据发送至新的第三邻居节点。16.在一个可能的实施方式中,网络节点还包括第四邻居节点;匿名通信秘密交换节点根据第三路由表,将第二通信数据发送至第一通信节点包括:若第三路由表中并未配置第一通信节点的路由路径,则匿名通信秘密交换节点根据第三路由表确定第四邻居节点,并将第二通信数据发送至第四邻居节点;第四邻居节点根据预先配置的第七路由表将第二通信数据发送至第一通信节点。17.在一个可能的实施方式中,系统还包括:若第七路由表中并未配置第一通信节点的路由路径,则第四邻居节点根据第七路由表确定新的第四邻居节点;第四邻居节点根据第七路由表将第二通信数据发送至新的第四邻居节点。18.在一个可能的实施方式中,针对多个网络节点中的任意一个网络节点,该网络节点包括:接收至少一个通信数据;针对每个通信数据进行解析,若该通信数据为混淆数据,则将该通信数据进行丢弃;若该通信数据为第一通信数据或第二通信数据,则确定通信数据的目的节点,其中,目的节点为第一通信节点、第二通信节点或匿名通信秘密交换节点;若该通信数据为其它通信数据,则确定通信数据的目的节点,其中,其它通信数据为其它通信节点之间匿名通信所传递的通信数据,目的节点为其它通信节点之间匿名通信中的匿名通信秘密交换节点、第一通信节点或第二通信节点;根据目的节点将通信数据存储至相应的洗牌池,其中,洗牌池与网络节点一一对应;针对每个洗牌池,每间隔预设的时间,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据;根据该网络节点中预先配置的路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点。本技术中的每个网络节点采用随机洗牌的方式发送通信数据,可以抵抗被动流量分析攻击,保障了通信系统的安全性。19.在一个可能的实施方式中,根据目的节点将通信数据存储至相应的洗牌池包括:若该网络节点预先配置的路由表中包含目的节点的路由路径,则将通信数据存储至目的节点对应的洗牌池;若该网络节点预先配置的路由表中不包含目的节点的路由路径,则将通信数据存储至邻居节点对应的洗牌池,其中,邻居节点为第一邻居节点、第二邻居节点、第三邻居节点或第四邻居节点中的任意一个。20.在一个可能的实施方式中,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据,包括:根据随机洗牌概率,从洗牌池存储的至少一个通信数据中确定待发送的通信数据,其中,通信数据包括第一通信数据、第二通信数据或其它通信数据;或根据随机洗牌概率,生成混淆数据,并将混淆数据作为待发送的通信数据。本技术通过生成混淆数据,并结合随机洗牌的方式发送通信数据,使得外界无法获知发送的数据是否为真实数据,从而抵抗被动流量分析攻击,保障了通信系统的安全性。21.在一个可能的实施方式中,系统还包括:第一通信节点与第二通信节点之间的匿名通信包括多个通信阶段,不同的通信阶段采用不同的匿名通信秘密交换节点进行匿名通信。本技术通过在不同的通信阶段采用不同的匿名通信秘密交换节点,使得路由路径动态变化,外界无法还原具体通信路径,从而抵抗主动流量分析攻击,保障了通信系统的安全性。22.第二方面,提供了一种去中心化的匿名通信方法,方法应用于结构化点对点网络中的第一通信节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点,方法执行在第一通信节点中的可信运行环境中,方法包括:根据预先配置的第一路由表,将第一通信数据发送至匿名通信秘密交换节点,其中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点;接收匿名通信秘密交换节点发送的第二通信数据。本技术通过运行在可信运行环境中的网络节点进行匿名通信,并且两个网络节点之间采用匿名通信秘密交换节点作为数据交换的节点,可以抵抗可抵抗dos攻击和主动流量分析攻击,保障了通信系统的安全性。23.在一个可能的实施方式中,在根据预先配置的第一路由表,将第一通信数据发送至匿名通信秘密交换节点之前,方法还包括:根据预先配置的秘密交换点种子,确定多个秘密交换节点;根据与第二通信节点相同的预设规则,从多个秘密交换节点中选择一个秘密交换节点作为匿名通信秘密交换节点,其中,选择出的秘密交换节点与第二通信节点选择出的秘密交换节点相同。本技术第一通信节点与第二通信节点通过从多个秘密交换节点种子中确定出相同的匿名通信秘密交换节点,保障了使用同一个匿名通信秘密交换节点进行匿名通信,同时使得匿名通信的过程更加不易被发现和跟踪,使得通信系统的安全性大大提升。24.在一个可能的实施方式中,根据预先配置的秘密交换点种子,确定多个秘密交换节点包括:根据与第二通信节点相同的随机数生成器,对秘密交换点种子进行计算,确定随机整型数组,其中,随机整型数组与第二通信节点生成的随机整型数组相同,随机整型数组包括至少一个整型参数;将随机整型数组中的每个整型参数作为秘密交换节点id,其中,每个秘密交换节点id对应一个秘密交换节点。25.在一个可能的实施方式中,网络节点还包括第一邻居节点;方法还包括:若第一路由表中并未配置匿名通信秘密交换节点的路由路径,则根据第一路由表确定第一邻居节点;将第一通信数据发送至第一邻居节点,以便通过第一邻居节点将第一通信数据发送至匿名通信秘密交换节点。26.在一个可能的实施方式中,方法还包括:若第一路由表中配置有匿名通信秘密交换节点的路由路径,则将第一通信数据存储至匿名通信秘密交换节点对应的洗牌池;若第一路由表中并未配置匿名通信秘密交换节点的路由路径,则将第一通信数据存储至第一邻居节点对应的洗牌池,其中,洗牌池与网络节点一一对应;针对每个洗牌池,每间隔预设的时间,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据;根据第一路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点。本技术中的每个网络节点采用随机洗牌的方式发送通信数据,可以抵抗被动流量分析攻击,保障了通信系统的安全性。27.在一个可能的实施方式中,方法还包括:接收至少一个通信数据;针对每个通信数据进行解析,若该通信数据为混淆数据,则将该通信数据进行丢弃;若该通信数据为其它通信数据,则确定通信数据的目的节点,其中,其它通信数据为其它通信节点之间匿名通信所传递的通信数据,目的节点为其它通信节点之间匿名通信中的匿名通信秘密交换节点、第一通信节点或第二通信节点;根据目的节点将通信数据存储至相应的洗牌池。28.在一个可能的实施方式中,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据,包括:根据随机洗牌概率,从洗牌池存储的至少一个通信数据中确定待发送的通信数据,其中,通信数据包括第一通信数据或其它通信数据;或根据随机洗牌概率,生成混淆数据,并将混淆数据作为待发送的通信数据。本技术通过生成混淆数据,并结合随机洗牌的方式发送通信数据,使得外界无法获知发送的数据是否为真实数据,从而抵抗被动流量分析攻击,保障了通信系统的安全性。29.在一个可能的实施方式中,方法还包括:与第二通信节点之间的匿名通信包括多个通信阶段,在不同的通信阶段内采用不同的匿名通信秘密交换节点与第二通信节点进行匿名通信。本技术通过在不同的通信阶段采用不同的匿名通信秘密交换节点,使得路由路径动态变化,外界无法还原具体通信路径,从而抵抗主动流量分析攻击,保障了通信系统的安全性。30.第三方面,提供了一种去中心化的匿名通信方法,方法应用于结构化点对点网络中的第二通信节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点,方法执行在第二通信节点中的可信运行环境中,方法包括:根据预先配置的第二路由表,将第二通信数据发送至匿名通信秘密交换节点,其中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点;接收匿名通信秘密交换节点发送的第一通信数据。本技术通过运行在可信运行环境中的网络节点进行匿名通信,并且两个网络节点之间采用匿名通信秘密交换节点作为数据交换的节点,可以抵抗可抵抗dos攻击和主动流量分析攻击,保障了通信系统的安全性。31.在一个可能的实施方式中,在根据预先配置的第二路由表,将第二通信数据发送至匿名通信秘密交换节点之前,方法还包括:根据预先配置的秘密交换点种子,确定多个秘密交换节点;根据与第一通信节点相同的预设规则,从多个秘密交换节点中选择一个秘密交换节点作为匿名通信秘密交换节点,其中,选择出的秘密交换节点与第一通信节点选择出的秘密交换节点相同。本技术第一通信节点与第二通信节点通过从多个秘密交换节点种子中确定出相同的匿名通信秘密交换节点,保障了使用同一个匿名通信秘密交换节点进行匿名通信,同时使得匿名通信的过程更加不易被发现和跟踪,大大提升通信系统的安全性。32.在一个可能的实施方式中,根据预先配置的秘密交换点种子,确定多个秘密交换节点包括:根据与第一通信节点相同的随机数生成器,对秘密交换点种子进行计算,确定随机整型数组,其中,随机整型数组与第一通信节点生成的随机整型数组相同,随机整型数组包括至少一个整型参数;将随机整型数组中的每个整型参数作为秘密交换节点id,其中,每个秘密交换节点id对应一个秘密交换节点。33.在一个可能的实施方式中,网络节点还包括第二邻居节点;方法还包括:若第二路由表中并未配置匿名通信秘密交换节点的路由路径,则根据第二路由表确定第二邻居节点;将第二通信数据发送至第二邻居节点,以便通过第二邻居节点将第二通信数据发送至匿名通信秘密交换节点。34.在一个可能的实施方式中,方法还包括:若第二路由表中配置有匿名通信秘密交换节点的路由路径,则将第二通信数据存储至匿名通信秘密交换节点对应的洗牌池;若第二路由表中并未配置匿名通信秘密交换节点的路由路径,则将第二通信数据存储至第二邻居节点对应的洗牌池,其中,洗牌池与网络节点一一对应;针对每个洗牌池,每间隔预设的时间,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据;根据第二路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点。本技术中的每个网络节点采用随机洗牌的方式发送通信数据,可以抵抗被动流量分析攻击,保障了通信系统的安全性。35.在一个可能的实施方式中,方法还包括:接收至少一个通信数据;针对每个通信数据进行解析,若该通信数据为混淆数据,则将该通信数据进行丢弃;若该通信数据为其它通信数据,则确定通信数据的目的节点,其中,其它通信数据为其它通信节点之间匿名通信所传递的通信数据,目的节点为其它通信节点之间匿名通信中的匿名通信秘密交换节点、第一通信节点或第二通信节点;根据目的节点将通信数据存储至相应的洗牌池。36.在一个可能的实施方式中,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据,包括:根据随机洗牌概率,从洗牌池存储的至少一个通信数据中确定待发送的通信数据,其中,通信数据包括第二通信数据或其它通信数据;或根据随机洗牌概率,生成混淆数据,并将混淆数据作为待发送的通信数据。本技术通过生成混淆数据,并结合随机洗牌的方式发送通信数据,使得外界无法获知发送的数据是否为真实数据,从而抵抗被动流量分析攻击,保障了通信系统的安全性。37.在一个可能的实施方式中,方法还包括:与第一通信节点之间的匿名通信包括多个通信阶段,在不同的通信阶段内采用不同的匿名通信秘密交换节点与第一通信节点进行匿名通信。本技术通过在不同的通信阶段采用不同的匿名通信秘密交换节点,使得路由路径动态变化,外界无法还原具体通信路径,从而抵抗主动流量分析攻击,保障了通信系统的安全性。38.第四方面,提供了一种去中心化的匿名通信方法,方法应用于结构化点对点网络中的匿名通信秘密交换节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点,其中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点,方法执行在匿名通信秘密交换节点中的可信运行环境中,方法包括:接收第一通信节点发送的第一通信数据;接收第二通信节点发送的第二通信数据;通过第一通信数据确定第一通信节点;通过第二通信数据确定第二通信节点;根据预先配置的第三路由表,将第一通信数据发送至第二通信节点;以及,根据第三路由表,将第二通信数据发送至第一通信节点。本技术通过运行在可信运行环境中的网络节点进行匿名通信,并且两个网络节点之间采用匿名通信秘密交换节点作为数据交换的节点,由于匿名通信秘密交换节点运行在可信运行环境,并且该节点并不会被外界所获取,因此可以一定程度上抵抗dos攻击和主动流量分析攻击,保障了通信系统的安全性。39.在一个可能的实施方式中,网络节点还包括第一邻居节点和/或第二邻居节点;接收第一通信节点发送的第一通信数据,包括:接收第一通信节点或第一邻居节点发送的第一通信数据;和/或接收第二通信节点发送的第二通信数据,包括:接收第二通信节点或第二邻居节点发送的第二通信数据。40.在一个可能的实施方式中,网络节点还包括第三邻居节点和/或第四邻居节点;方法还包括:若第三路由表中并未配置第二通信节点的路由路径,则根据第三路由表确定第三邻居节点,并将第一通信数据发送至第三邻居节点;和/或若第三路由表中并未配置第一通信节点的路由路径,则根据第三路由表确定第四邻居节点,并将第二通信数据发送至第四邻居节点。41.在一个可能的实施方式中,根据预先配置的第三路由表,将第一通信数据发送至第二通信节点;以及,根据第三路由表,将第二通信数据发送至第一通信节点,包括:将第一通信数据存储至第二通信节点对应的洗牌池,以及,将第二通信数据存储至第一通信节点对应的洗牌池,其中,洗牌池与网络节点一一对应;针对每个洗牌池,每间隔预设的时间,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据;根据第三路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点。本技术中的每个网络节点采用随机洗牌的方式发送通信数据,可以抵抗被动流量分析攻击,保障了通信系统的安全性。42.在一个可能的实施方式中,方法还包括:若该第三路由表中并未配置第二通信节点的路由路径,则将第一通信数据存储至第三邻居节点对应的洗牌池;和/或若该第三路由表中并未配置第一通信节点的路由路径,则将第二通信数据存储至第四邻居节点对应的洗牌池。43.在一个可能的实施方式中,方法还包括:接收至少一个通信数据;针对每个通信数据进行解析,若该通信数据为混淆数据,则将该通信数据进行丢弃;若该通信数据为其它通信数据,则确定通信数据的目的节点,其中,其它通信数据为其它通信节点之间匿名通信所传递的通信数据,目的节点为其它通信节点之间匿名通信中的匿名通信秘密交换节点、第一通信节点或第二通信节点;根据目的节点将通信数据存储至目的节点对应的洗牌池。44.在一个可能的实施方式中,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据,包括:根据随机洗牌概率,从洗牌池存储的至少一个通信数据中确定待发送的通信数据,其中,通信数据包括第一通信数据、第二通信数据或其它通信数据;或根据随机洗牌概率,生成混淆数据,并将混淆数据作为待发送的通信数据。本技术通过生成混淆数据,并结合随机洗牌的方式发送通信数据,使得外界无法获知发送的数据是否为真实数据,从而抵抗被动流量分析攻击,保障了通信系统的安全性。45.第五方面,提供了一种去中心化的匿名通信方法,方法应用于结构化点对点网络中的邻居节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括邻居节点、第一通信节点、第二通信节点和多个秘密交换节点,邻居节点为第一邻居节点、第二邻居节点、第三邻居节点或第四邻居节点中的任意一个,方法执行在邻居节点中的可信运行环境中,方法包括:当邻居节点为第一邻居节点,接收第一通信节点发送的第一通信数据;根据预先配置的第四路由表将第一通信数据发送至匿名通信秘密交换节点,其中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点;以及,当邻居节点为第二邻居节点,接收第二通信节点发送的第二通信数据;根据预先配置的第五路由表将第二通信数据发送至匿名通信秘密交换节点;以及,当邻居节点为第三邻居节点,接收匿名通信秘密交换节点发送的第一通信数据;根据预先配置的第六路由表将第一通信数据发送至第二通信节点;以及,当邻居节点为第四邻居节点,接收匿名通信秘密交换节点发送的第二通信数据;根据预先配置的第七路由表将第二通信数据发送至第一通信节点。本技术通过运行在可信运行环境中的网络节点进行匿名通信,并且两个网络节点之间采用匿名通信秘密交换节点作为数据交换的节点,可以抵抗可抵抗dos攻击和主动流量分析攻击,保障了通信系统的安全性。46.在一个可能的实施方式中,方法还包括:当邻居节点为第一邻居节点,若第四路由表中并未配置匿名通信秘密交换节点的路由路径,则根据第四路由表确定新的第一邻居节点;根据第四路由表将第一通信数据发送至新的第一邻居节点;以及,当邻居节点为第二邻居节点,若第五路由表中并未配置匿名通信秘密交换节点的路由路径,则根据第五路由表确定新的第二邻居节点;根据第五路由表将第二通信数据发送至新的第二邻居节点;以及,当邻居节点为第三邻居节点,若第六路由表中并未配置第二通信节点的路由路径,则第三邻居节点根据第六路由表确定新的第三邻居节点;根据第六路由表将第一通信数据发送至新的第三邻居节点;以及,当邻居节点为第四邻居节点,若第七路由表中并未配置第一通信节点的路由路径,则根据第七路由表确定新的第四邻居节点;根据第七路由表将第二通信数据发送至新的第四邻居节点。47.在一个可能的实施方式中,方法还包括:若邻居节点为第一邻居节点,则将第一通信数据存储至匿名通信秘密交换节点对应的洗牌池;以及,若邻居节点为第二邻居节点,则将第二通信数据存储至匿名通信秘密交换节点对应的洗牌池;以及,若邻居节点为第三邻居节点,则将第一通信数据存储至第二通信节点对应的洗牌池;以及,若邻居节点为第四邻居节点,则将第二通信数据存储至第一通信节点对应的洗牌池,其中,洗牌池与网络节点一一对应;针对每个洗牌池,每间隔预设的时间,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据;若邻居节点为第一邻居节点,则根据第四路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点;以及,若邻居节点为第二邻居节点,则根据第五路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点;以及,若邻居节点为第三邻居节点,则根据第六路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点;以及,若邻居节点为第四邻居节点,则根据第七路由表,将待发送的通信数据发送至该洗牌池所对应的网络节点。本技术中的每个网络节点采用随机洗牌的方式发送通信数据,可以抵抗被动流量分析攻击,保障了通信系统的安全性。48.在一个可能的实施方式中,方法还包括:当邻居节点为第一邻居节点,若第四路由表中并未配置匿名通信秘密交换节点的路由路径,则将第一通信数据存储至新的第一邻居节点对应的洗牌池;和/或当邻居节点为第二邻居节点,若第五路由表中并未配置匿名通信秘密交换节点的路由路径,则将第二通信数据存储至新的第二邻居节点对应的洗牌池;和/或当邻居节点为第三邻居节点,若第六路由表中并未配置第二通信节点的路由路径,则将第一通信数据存储至新的第三邻居节点对应的洗牌池;和/或当邻居节点为第四邻居节点,若第七路由表中并未配置第一通信节点的路由路径,则将第二通信数据存储至新的第四邻居节点对应的洗牌池。49.在一个可能的实施方式中,方法还包括:接收至少一个通信数据;针对每个通信数据进行解析,若该通信数据为混淆数据,则将该通信数据进行丢弃;若该通信数据为其它通信数据,则确定通信数据的目的节点,其中,其它通信数据为其它通信节点之间匿名通信所传递的通信数据,目的节点为其它通信节点之间匿名通信中的匿名通信秘密交换节点、第一通信节点或第二通信节点;根据目的节点将通信数据存储至目的节点对应的洗牌池。50.在一个可能的实施方式中,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据,包括:根据随机洗牌概率,从洗牌池存储的至少一个通信数据中确定待发送的通信数据,其中,通信数据包括第一通信数据、第二通信数据或其它通信数据;或根据随机洗牌概率,生成混淆数据,并将混淆数据作为待发送的通信数据。本技术通过生成混淆数据,并结合随机洗牌的方式发送通信数据,使得外界无法获知发送的数据是否为真实数据,从而抵抗被动流量分析攻击,保障了通信系统的安全性。51.在一个可能的实施方式中,方法还包括:第一通信节点与第二通信节点之间的匿名通信包括多个通信阶段,在不同的通信阶段内与不同的匿名通信秘密交换节点进行匿名通信。本技术通过在不同的通信阶段采用不同的匿名通信秘密交换节点,使得路由路径动态变化,外界无法还原具体通信路径,从而抵抗主动流量分析攻击,保障了通信系统的安全性。52.第六方面,提供了一种去中心化的匿名通信装置,装置为结构化点对点网络中的第一通信节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点,装置运行在可信运行环境中,装置包括:接收器,用于接收通信数据;收发器,用于发送待发送的通信数据;处理器用于与存储器耦合,以及读取并执行存储在存储器中的指令;当处理器运行时执行指令,使得处理器用于执行上述第二方面任意一项的方法。53.第七方面,提供了一种去中心化的匿名通信装置,装置为结构化点对点网络中的第二通信节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点,装置运行在可信运行环境中,装置包括:接收器,用于接收通信数据;收发器,用于发送待发送的通信数据;处理器用于与存储器耦合,以及读取并执行存储在存储器中的指令;当处理器运行时执行指令,使得处理器用于执行上述第三方面任意一项的方法。54.第八方面,提供了一种去中心化的匿名通信装置,装置为结构化点对点网络中的匿名通信秘密交换节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括第一通信节点、第二通信节点和多个秘密交换节点,其中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点,装置运行在可信运行环境中,装置包括:接收器,用于接收通信数据;收发器,用于发送待发送的通信数据;处理器用于与存储器耦合,以及读取并执行存储在存储器中的指令;当处理器运行时执行指令,使得处理器用于执行上述第四方面任意一项的方法。55.第九方面,提供了一种去中心化的匿名通信装置,装置为结构化点对点网络中的邻居节点,结构化点对点网络包括多个网络节点,其中,每个网络节点内具有可信运行环境,多个网络节点包括邻居节点、第一通信节点、第二通信节点和多个秘密交换节点,邻居节点为第一邻居节点、第二邻居节点、第三邻居节点或第四邻居节点中的任意一个,装置运行在可信运行环境中,装置包括:接收器,用于接收通信数据;收发器,用于发送待发送的通信数据;处理器用于与存储器耦合,以及读取并执行存储在存储器中的指令;当处理器运行时执行指令,使得处理器用于执行上述第五方面任意一项的方法。56.第十方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在终端上运行时,使得终端执行如第二方面、第三方面、第四方面或第五方面任意一项的方法。57.第十一方面,提供了一种包含指令的计算机设备,当其在终端上运行时,使得终端执行如第二方面、第三方面、第四方面或第五方面中的任意一项的方法。58.本技术公开了一种去中心化的匿名通信系统、方法及装置,包括多个网络节点和多个网络节点构成的结构化点对点网络,并且每个网络节点均运行在可信运行环境中,从而可以抵抗dos攻击。当两个通信节点需要进行匿名通信时,通过从多个网络节点中选择匿名通信秘密交换节点作为通信数据的交换节点,从而可以抵抗主动流量分析攻击。每个网络节点在发送通信数据时采用随机洗牌的方式,抵抗了被动流量分析攻击。使得该匿名通信系统可以同时满足低延时、可抵抗dos攻击和可抵抗流量分析攻击,保障了通信系统的安全性。附图说明59.图1为本技术实施例提供的一种应用场景示意图;60.图2为一种典型中继网络系统架构图;61.图3为本技术实施例提供的一种去中心化的匿名通信系统的网络结构示意图;62.图4为一种id环网络节点维护示意图;63.图5为一种id环网络节点路由表示意图;64.图6为本技术实施例提供的一种去中心化的匿名通信系统架构示意图;65.图7为本技术实施例提供的一种去中心化的匿名通信方法流程图;66.图8为本技术实施例提供的一种多路径信息交换方法流程图;67.图9为本技术实施例提供的一种网络节点收发数据方法流程图;68.图10为一种随机洗牌系统架构示意图;69.图11为本技术实施例提供的一种网络节点模块示意图;70.图12为本技术实施例提供的一种匿名通信系统信息传递示意图;71.图13为本技术实施例提供的不同匿名通信系统通信延迟变化对比图;72.图14为本技术实施例提供的一种匿名通信系统延迟变化图;73.图15为本技术实施例提供的一种匿名通信系统可靠性示意图;74.图16为本技术实施例提供的一种随机洗牌概率对匿名性影响示意图;75.图17为本技术实施例提供的一种去中心化的匿名通信系统装置示意图。具体实施方式76.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。77.本技术主要应用于匿名通信场景,例如图1所示的一种应用场景示意图。可以看出,通信者a与通信者b需要进行通信。在匿名通信的环境中,通信者a通过终端a与通信者b的终端b传递通信数据。此时通信者a与通信者b若处于普通的通信环境中,则非常容易被网络攻击者获取到路由路径,从而判断出通信者a与通信者b的身份信息。而在匿名通信环境中,网络攻击者通常无法获取到通信者a与通信者b的身份信息,从而保障了通信的匿名性。其中,匿名性是一种用户通信行为无法被外界感知的性质。例如,若通信者a与通信者b通过某种系统正在因特网上进行通信,若该系统的管理者或者外部的网络攻击者都无法知道通信者a与通信者b正在进行通信,则可以称该系统提供了匿名性。在匿名通信环境中,通信者a与通信者b通常需要通过匿名通信系统进行匿名通信。可以理解的是,匿名通信系统是一种可以保证用户在因特网上实时通信时保障匿名性的系统。经典的匿名通信系统包括洋葱路由(theonionroute,tor),也可以称为洋葱加密网络、洋葱网络、暗网等。78.但是,在一些基于中继网络的匿名通信系统中,例如tor、韩国科学研究院(koreaadvancedinstituteofscienceandtechnology,kaist)研发的基于可信硬件的指令集扩展洋葱路由(softwareguardextensions-theonionroute,sgx-tor),以及麻省理工学院(massachusettsinstituteoftechnology,mit)开发的匿名对等代理(anonymizingpeer-to-peerproxy,ap3)等。例如图2示出的一种典型中继网络系统架构图,可以看出,在该中继网络系统架构中,用户可以是以网络节点的身份加入该网络。在该网络中的每个节点既可以是消息的发送者,也可以是消息的转发者,或是消息的接收者。消息的发送者通常指代构造应用层消息并发送该消息的网络节点。在本技术中,发送的消息与发送的通信数据为同一涵义,均指代通信过程中发送的数据。例如,若用户a在网络中的节点构造了一个发往用户b的消息“hello”,则用户a为该消息的发送者。而消息的转发者通常指代仅用于转发来自发送者消息的网络节点。在图2所示的系统中,通信双方(即发送者与接收者)首先需要建立网络连接,例如需要进行传输控制协议(transmissioncontrolprotocol,tcp)握手和安全套接层协议(securitysocketlayer,ssl)握手。之后,目录服务器从系统中的多个中继节点中选取固定数目的中继节点,用于传递发送者发送的消息。例如图2中的r1、r2和r3。发送者通过与r1、r2和r3之间进行多次握手后,获取各个中继节点的密钥,并根据r1、r2和r3的密钥对需要发送的消息进行加密,形成层层包裹的数据包。当该数据包经过r1、r2和r3时,每经过一个节点均可以使用该节点的密钥进行解密,并将解密后的数据包发送至下一个节点。上述方式通过对数据包进行层层加密,使得数据包传输的路由路径上的每一个节点并不知道消息的源头,仅知道下一跳的节点,因此路径上的节点无法追踪消息发送者的身份,从而保障了匿名性。79.dos攻击者可以利用多个网络设备,例如通过云端租赁多个网络设备,向某个特定的通信系统的核心服务器不断发送冗余的无效数据包。由于通信系统的核心服务器不断地接收并处理来自攻击者的无效数据包,因此该核心服务器的计算资源被大量占用,从而使得该核心服务器无法处理来自真实用户的有效数据包,并进一步导致通信系统无法正常工作。80.在被动流量分析攻击中,攻击者可以通过被动的监控,统计并分析所有网络流量来还原通信数据的路由路径。从而分析通信双方的身份信息。显然该过程并不会干扰通信数据的正常发送和传递。其核心思想是依据网络中通信数据的时间模式(timepattern)来还原通信数据在网络中的路由路径,从而确定通信双方的身份信息并破坏匿名性。在主动流量分析攻击中,攻击者并不满足于通过被动地监控网络流量分析通信双方的身份信息,而是通过主动拦截网络流量,并分析网络流量的变化来分析通信者的身份。81.然而,基于该中继网络系统的匿名通信系统无法抵抗dos攻击以及流量分析攻击。由于该中继网络使用了中心化的目录服务器来选取传输路径上的中继节点,该目录服务器管理着全网的通信,一旦网络攻击者对目录服务器进行dos攻击使其瘫痪,则会导致整个系统无法正常工作。同时,由于中继网络仅能保障本地的网络攻击者不能推断上一条是否是消息源,即图2中的r1、r2和r3无法推断上一跳的节点是否为发送者。但是,由于每次通信的路由路径固定,若网络攻击者监控全网流量并进行流量分析,仍然可以还原出完整的路由路径,从而确定该路由路径两端的发送者和接收者。换句话说,基于该中继网络系统的匿名通信系统无法抵抗被动流量分析攻击。82.因特网上的用户对强隐私保护的匿名通信系统具有三大要求:低延时、可抵抗dos攻击和可抵抗流量分析攻击。需要低延时是因为目前因特网上许多关键的业务仅能允许几秒钟的通信延迟,例如实时通信、在线交易等。需要可抵抗dos攻击是因为一个匿名通信系统只有可以抵抗dos攻击,才算是个可靠的通信系统。否则一旦被dos攻击,该系统将无法提供服务,十分影响用户使用。而需要可抵抗流量分析攻击是因为当能够抵抗流量分析攻击,该匿名通信系统才能真正满足通信双方的匿名性。而目前的匿名通信系统均无法同时满足上述三个要求。83.显然,目前急需一个可以同时满足对强隐私保护的匿名通信系统三大要求的方案,即需要保障系统在大规模部署的情况下仍然拥有秒级的端到端通信延时,如拥有海量用户消息;以及,需要提供高可靠性,即在遭受dos攻击时系统仍可保障通信正常进行;以及,需要抵抗来自网络攻击者的流量分析攻击,即使遭受流量分析攻击时也能保障用户通信时的匿名性。可以理解的是,流量分析攻击可以包括被动流量分析攻击和主动流量分析攻击。84.为实现上述三大要求,本技术利用tee以及结构化p2p网络chord搭建了一个隐形对等网络,使得每个用户均可以作为一个网络节点加入隐形对等网络进行互相通信。基于隐形对等网络,本技术还提供了基于可信硬件的去中心化随机洗牌和基于可信硬件的多路径信息交换的方案,来分别抵抗被动流量分析攻击与主动流量分析攻击。85.首先,基于可信硬件的去中心化随机洗牌,目的是为了抵抗被动流量分析攻击。宏观来说,利用tee在通信数据的路由路径上的每个网络节点,均对当前收到的所有通信数据进行可信的随机洗牌,打乱通信数据先进先出的时序,还随机产生伪造的混淆数据并发出。从而使得只对全局网络流量进行被动监控及分析的被动流量攻击者无法判断一个通信数据是否是真实的通信数据。由于通信数据中夹杂了随机产生的混淆数据包并经过随机洗牌后时序被打乱,使得无法还原用户消息的路由路径。也就是说网络攻击者无法根据先进先出的规则关联一组进/出的通信数据,从而无法还原路由路径。86.其次,基于可信硬件的多路径信息交换,目的是为了抵抗主动流量分析攻击。主动流量分析攻击的攻击者为了实现主动攻击,其需要与消息的发送者保持长时间的通信连接,并且使用一条固定的路由路径进行消息传播。基于此,本技术利用tee在通信双方开始通信之前产生一系列达成共识的秘密传递点(deaddropnode),双方的通信分轮(round),并且在之后的每轮通信中,通信双方不再进行直接的信息交互,而是在每轮通信都以不同的秘密传递点作为通信数据的寻址终点,当秘密传递点收到来自通信双方的通信数据后,将收到的通信数据内容进行互换,然后分别发送回通信双方。由于每轮通信都使用了不同的秘密传递点进行通信数据的交换,因此每轮通信都具有不同的路由路径,从而使得主动流量分析攻击者不能通过恶意丢包或延迟数据包等行为来还原一条固定的路由路径,保障了通信双方的匿名性。87.因此,本技术提供了一种去中心化的匿名通信系统,该系统包括有多个网络节点,多个网络节点构成了结构化点对点网络,并且每个网络节点均运行在可信运行环境中,从而可以抵抗dos攻击。当两个通信节点需要进行匿名通信时,通过从多个网络节点中选择匿名通信秘密交换节点,作为通信数据的交换节点,从而可以抵抗主动流量分析攻击。每个网络节点在发送通信数据时采用随机洗牌的方式,抵抗了被动流量分析攻击。使得该匿名通信系统可以同时满足低延时、可抵抗dos攻击和可抵抗流量分析攻击,保障了通信系统的安全性。88.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行详细描述。89.图3为本技术实施例提供的一种去中心化的匿名通信系统的网络结构示意图。90.为了可以抵抗dos攻击,本技术提供了一种去中心化的匿名通信系统,该系统包括有多个网络节点,该多个网络节点构成了结构化p2p网络(structuredpeer-to-peernetwork)。并且该系统中的每个网络节点内均具有tee,且每个节点均运行在tee中。例如图3示出的一种去中心化的匿名通信系统300,该系统300中包括有多个网络节点,例如网络节点0、网络节点1、网络节点2、网络节点4、网络节点7、网络节点10、网络节点12等。91.多个网络节点构成了结构化p2p网络,在一些例子中,该结构化p2p网络可以是弦(chord)结构化p2p网络,其中,chord结构化p2p网络也可以简称chord。chord是一种完全去中心化的p2p网络,该网络中的每个网络节点的地位是对等的。因此,在chord中并不需要传统的中央特权服务器来管理各个网络节点之间的通信,即不存在中心节点或图2中的目录服务器。每个网络节点通过路由寻址的方式将消息发送至其它网络节点,同时,每个网络节点可以仅维护少数网络节点的信息,便可以与chord中的任意网络节点进行通信。92.在一些例子中,chord使用了分布式哈希表(distributedhashtable,dht)进行网络中的路由寻址。在dht中,每个网络节点均具有独特的标识符和该网络节点可以负责的寻址范围。在一个例子中,每个网络节点的标识符可以是节点身份标识号(identitydocument,id),该网络节点可以负责的寻址范围可以是一个id区间。93.在一个例子中,每个网络节点预先存储有固定的键(key)值,然后对于每个网络节点,均可以通过哈希算法对自身网络节点存储的key进行计算,得到一个m位的哈希值,并将该m位的哈希值作为自身网络节点的id。在一些例子中,采用的哈希算法可以是安全散列算法1(securehashalgorithm1,sha-1)。当然在其它例子中还可以采用其它哈希算法,例如sha-224、sha-256、sha-512等等。在一些例子中,m可以是预先设定的,m为正整数。可以理解的是,在系统300中最多可以包含2m个网络节点。也就是说,系统300中的网络节点个数为[1,2m]。若系统300中的网络节点个数未达到2m个时,可以用虚拟网络节点进行替代,例如,虚拟网络节点3、虚拟网络节点5、虚拟网络节点6等等。因此,图3中的网络节点和虚拟网络节点的个数总和为2m个。应当注意的是,由于第一个网络节点的序号由0开始,因此最后一个虚拟网络节点的序号为2m-1。在一些例子中,对于网络节点可以采用自身的互联网协议(internetprotocol,ip)地址作为key,并计算各个网络节点的id。而对于虚拟网络节点,则key可以是预先存储的任意数值,并根据预先存储的key计算虚拟网络节点的id。当然,对于网络节点的key还可以采用其它任意可能的数值,本技术在此不作限定。本领域技术人员应当清楚,图3的网络节点、虚拟网络节点的位置和排序仅是一种示意,本技术对此并不做限定。[0094]将所有网络节点的id和虚拟网络节点的id进行取模后按照顺序排列在一个环上,即图3中各个网络节点和虚拟网络节点所构成的环。该环还可以称为id环或chord环。在该id环上的任意一个节点所保存的key,例如key取k。该k是由环上第一个id大于或等于该节点id的网络节点负责维护。该网络节点可以称为k的后继(successor)节点,记作successor(k)。换句话说,successor(k)为id环上从存储k的节点顺时针起的第一个网络节点。若存储k的节点本身即是网络节点,则successor(k)为存储k的网络节点。通过图4可以更加清晰的看到,假设节点0存储的key为0,并按照顺序网络节点1存储的key为1、网络节点2存储的key为2、虚拟网络节点3存储的key为3、网络节点4存储的key为4等,则successor(1)=1、successor(2)=2、successor(3)=4、successor(4)=4、successor(5)=7、……、successor(2m-1)=0。显然处于该id环上的每个节点均按照上述方式找到后继节点。[0095]在一些例子中,为了使得系统300中的每个网络节点可以顺利发送通信消息至系统300中的其它任意一个网络节点,chord中的每个网络节点均需要维护一个属于自身网络节点的路由表(fingertable)。在一些例子中,每个网络节点维护的路由表可以是长度为m的路由表。从而保障每个网络节点可以按照自身维护的路由表进行路由寻址,以便将通信消息发送给其它网络节点。[0096]对于每个网络节点可以仅存储少量的邻居节点信息的路由路径即可。当某个网络节点需要发送通信数据给另一个网络节点时,例如网络节点a需要与网络节点b进行通信,则网络节点a可以根据网络节点b的id查询网络节点a维护的路由表。即网络节点a首先查询该路由表中是否存在到达网络节点b的路由路径。若存在则网络节点a直接通过该路由路径发送通信数据至网络节点b;若不存在,则网络节点a通过该路由表查找与网络节点b的id最接近的路由路径,该路由路径的目标地址指向的网络节点可以称为邻居节点。网络节点a再将通信数据发送至该邻居节点上。对于该邻居节点则可以重复上述过程,直至将通信数据发送至网络节点b为止。[0097]在一些例子中,对于路由表的建立,可以仍然以哈希算法中的m为标准,每个网络节点建立并维护的路由表其长度为m。假设网络节点的id为n,则该网络节点的路由表中第i项存储了(n+2i-1)mod2m之后,id环上的第一个网络节点s。其中,i为正整数且i∈[1,m]。换句话说,可以记为s=successor(n+2i-1),其中,网络节点s称为网络节点n的第i个路由选项。例如图5所示出的,为简单描述,图5中仅表示了m取3时的id环。该id环中包含3个网络节点,即网络节点0、网络节点1和网络节点3。在一个例子中,为了方便描述,令网络节点0的id为0、网络节点1的id为1、虚拟网络节点2的id为2、网络节点3的id为3、……、虚拟网络节点7的id为7。且每个网络节点或虚拟网络节点对应存储的key与id相同。当然,上述取值仅为一种示例以方便描述,各个网络节点或虚拟网络节点的id和存储的key的具体数值可以根据实际情况进行任意替换,本技术在此不作限定。[0098]图5示出了网络节点0、网络节点1和网络节点3各自的路由表和存储的key。以网络节点1为例,网络节点1的路由表的第一项的id值为1+21-1=2,则后继节点successor(2)=3;第二项的id值为1+22-1=3,则后继节点successor(3)=3;第三项的id值为1+23-1=5,则后继节点successor(5)=0。同时,对于id区间,每一项id区间的左端数值和该项的id值相同,右端数值与下一项的id值相同。对于最后一项,其id区间的右端数值为该网络节点id值。通过网络节点0、网络节点1和网络节点3各自的路由表可以看出,对于任意一个网络节点的路由表,其第一项的后继节点永远为该网络节点的后继节点。当每个网络节点的路由表建立完成后,便可以通过路由表寻址并进行通信。在一个例子中,当给定一个key,假设网络节点n想要查找key对应的资源位于结构化p2p网络中的哪个节点,则网络节点n需要查找该key的后继节点(也可称为目标节点)。可以理解的是,该查找过程可以类比通信过程,即网络节点n与拥有资源key的网络节点沿查找路径进行通信,该查找路径即路由路径。首先,网络节点n查找key的哈希值hash(key)是否与网络节点n路由表中的id值相同。若存在相同的id值,则网络节点n根据该项对应的后继节点,直接将通信数据发送至该后继节点。否则,则根据key,查找该key落入的id值区间,并根据对应的id值区间,将通信数据发送至该id值区间对应的后继节点。重复上述过程,直至将通信数据发送至存储key的网络节点。在本技术中,可以将通过路由表中的id区间查找到的后继节点称为邻居节点。[0099]本技术所采用的结构化p2p网络具有高扩展性和低延迟,使得结构化p2p网络非常适合作为匿名通信系统的底层网络架构。其中,由于每个节点仅维护m长度的路由表,使得每个节点仅需维护少数节点信息便可以将通信数据发送给结构化p2p网络中的任意一个网络节点,由于每个网络节点维护的信息较少,因此该结构化p2p网络可以支持海量的参与用户,从而体现了结构化p2p网络的高扩展性。其中每个用户可以看做一个网络节点,也就是说用户以网络节点的身份加入该结构化p2p网络与其它网络节点进行通信。同时,由于每个路由表维护了对数距离的节点信息,即(n+2i-1)mod2m。因此,即使进行通信的两个网络节点在网络中相对距离是最远的位置,也只需要时间复杂度为olog2x的路由寻址,其中x是网络里节点的总数,从而体现了结构化p2p网络的低延迟。[0100]图6为本技术实施例提供的一种去中心化的匿名通信系统架构示意图。[0101]通过图6可以看出,本技术所涉及的匿名通信系统处于上述图3至图5所描述的基于chord环的结构化p2p网络中,该结构化p2p网络中包括多个网络节点,每个网络节点可以是不同的用户。对于每个网络节点,均采用处于tee中的随机洗牌协议、秘密传递点交换协议、chord路由寻址协议,以及处于非tee中的通讯模块进行通信数据的传递。其中,通信数据即图中各个网络节点之间传递的网络数据包。本技术假设一个威胁模型(threatmodel),该威胁模型可以看做是成熟的网络攻击者,并且试图通过全网流量监控和分析,判断出匿名通信的通信双方身份。该网络攻击者可以采用被动流量分析攻击,也可以对网络中的某个网络节点进行丢包、延迟等主动流量分析攻击。甚至可以对某些网络节点发动dos攻击来破坏匿名通信系统。因此,本技术的基于chord环的结构化p2p网络中的每个网络节点均运行有tee,使得运行在tee中的协议无法被外界获知以及随意篡改,从而保障了数据机密性和代码完整性。[0102]可以理解的是,tee为中央处理器(centralprocessingunit,cpu)硬件提供商提供,与不可信运行环境相隔离的可信运行环境。在一些例子中,例如指令集扩展(softwareguardextensions,sgx)的tee,其中,sgx中包含一块安全的、外界不可见的内存区域。该块内存区域可以称为飞地(enclave)。运行在飞地中的程序和数据存储在与普通运行环境相隔离的一个独立内存区域中。因此,即使存在恶意的操作系统控制者或是基本输入输出系统(basicinputoutputsystem,bios)特权攻击者,均无法提取或篡改飞地中的数据和程序。[0103]tee为运行在其中的程序或数据提供了两个安全特性:保密性(confidentiality)和完整性(integrity)。其中,保密性使得tee中运行的程序或者数据无法被不可信运行环境中的任何程序或网络攻击者窥探。因为tee中运行的程序或者数据存储的内存区域与普通不可信运行环境的内存区域相隔离。而完整性是指飞地这块内存区域无法被任何网络攻击者进行篡改。同时,在一些例子中,tee为用户提供了远程验证(remoteattestation)的机制,例如可以通过打包签名的方式发送数据至专属服务器进行验证,从而确定运行的程序或传递的数据是否运行在真实的tee中,而非一个虚假的tee模拟器中。当然,可以理解的是,具体远程验证的方式可以参考现有方式,本技术在此不做赘述。[0104]因此,本技术所涉及的匿名通信系统中的每个网络节点,将chord路由寻址协议、随机洗牌协议和秘密传递点交换协议运行在tee的飞地中,保证外界无法获取节点的路由表信息。同时由于上述协议运行在tee的飞地中,还可以约束网络节点的行为,使得网络节点不能恶意进行上述协议之外的任何行为,保障了上述协议的正确执行。[0105]图7为本技术实施例提供的一种去中心化的匿名通信方法流程图。[0106]如图7所示,本技术提供了一种去中心化的匿名通信方法,该方法运行在上述图3至图6所涉及的去中心化的匿名通信系统中。该系统中可以包括多个网络节点。其中,每个网络节点内均具有上述tee,并且每个网络节点所涉及的方法均运行在该tee中。多个网络节点构成了上述基于chord环的结构化p2p网络。多个网络节点可以包括第一通信节点、第二通信节点和多个秘密交换节点。其中,第一通信节点与第二通信节点之间进行匿名通信。[0107]多个网络节点之间可以通过有线或无线的方式相连接并进行通信。其中,无线的方式例如可以是经典蓝牙、低功耗蓝牙(bluetoothlowenergy,ble)、无线保真(wirelessfidelity,wifi)和/或紫峰(zigbee)等,其中,经典蓝牙可以是蓝牙基本速率/增强速率(bluetoothbasicrate/enhanceddatarate,br/edr),本技术并不做限定。网络节点例如可以包括手机、个人电脑(personalcomputer,pc)、智能电视机、智能手表、智能手环、智能眼镜、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本,以及蜂窝电话、个人数字助理(personaldigitalassistant,pda)、增强现实(augmentedreality,ar)设备、虚拟现实(virtualreality,vr)设备、人工智能(artificialintelligence,ai)设备、可穿戴设备、车载设备、智能家居设备和/或智慧城市设备等,本技术并不对网络节点的具体形式进行限定。[0108]该方法可以包括以下步骤:[0109]s701,第一通信节点根据预先配置的第一路由表,将第一通信数据发送至匿名通信秘密交换节点。[0110]第一通信节点可以根据预先配置的第一路由表,确定需要发送的第一通信数据的路由路径,并将第一通信数据根据确定的路由路径发送至匿名通信秘密交换节点。在一个例子中,匿名通信秘密交换节点为多个秘密交换节点中的任意一个秘密交换节点。[0111]其中,第一路由表为第一通信节点根据图5中描述的路由表建立方式预先建立,并由第一通信节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。[0112]在一个例子中,网络节点还可以包括第一邻居节点。例如,当第一路由表中并未配置匿名通信秘密交换节点的路由路径时,第一通信节点可以采用图5中描述的路由方式,根据第一路由表确定第一邻居节点。例如,第一通信节点根据第一通信数据的目的地址查询第一路由表。其中第一通信数据的目的地址为匿名通信秘密交换节点的id。此时,若第一路由表中包括匿名通信秘密交换节点的id对应的路由表项,则第一通信节点根据该路由表项对应的后继节点即匿名通信秘密交换节点,发送第一通信数据至匿名通信秘密交换节点。但是,若第一路由表中不包括匿名通信秘密交换节点的id对应的路由表项,则查询第一路由表项中匿名通信秘密交换节点的id落入的id区间,并将该id区间对应的后继节点作为第一邻居节点。之后,将第一通信数据发送至该第一邻居节点。[0113]在另一个例子中,对于第一邻居节点,则在接收到第一通信数据后,查询预先配置的第四路由表。其中,第四路由表为第一邻居节点根据图5中描述的路由表建立方式预先建立,并由第一邻居节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。第一邻居节点根据第四路由表,确定将第一通信数据发送至匿名通信秘密交换节点或是新的第一邻居节点。例如,若第四路由表中包括匿名通信秘密交换节点的id对应的路由表项,则第一邻居节点根据该路由表项对应的后继节点即匿名通信秘密交换节点,发送第一通信数据至匿名通信秘密交换节点。当然,若第四路由表中不包括匿名通信秘密交换节点的id对应的路由表项,则查询第四路由表项中匿名通信秘密交换节点的id落入的id区间,并将该id区间对应的后继节点作为新的第一邻居节点。之后,将第一通信数据发送至该新的第一邻居节点。可以理解的是,对于新的第一邻居节点,其执行过程与第一邻居节点相同,直至将第一通信数据发送至匿名通信秘密交换节点为止。[0114]s702,第二通信节点根据预先配置的第二路由表,将第二通信数据发送至匿名通信秘密交换节点。[0115]第二通信节点可以根据预先配置的第二路由表,确定需要发送的第二通信数据的路由路径,并将第二通信数据根据确定的路由路径发送至匿名通信秘密交换节点。[0116]其中,第二路由表为第二通信节点根据图5中描述的路由表建立方式预先建立,并由第二通信节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。[0117]在一个例子中,网络节点还可以包括第二邻居节点。例如,当第二路由表中并未配置匿名通信秘密交换节点的路由路径时,第二通信节点可以采用图5中描述的路由方式,根据第二路由表确定第二邻居节点。例如,第二通信节点根据第二通信数据的目的地址查询第二路由表。其中第二通信数据的目的地址为匿名通信秘密交换节点的id。此时,若第二路由表中包括匿名通信秘密交换节点的id对应的路由表项,则第二通信节点根据该路由表项对应的后继节点即匿名通信秘密交换节点,发送第二通信数据至匿名通信秘密交换节点。但是,若第二路由表中不包括匿名通信秘密交换节点的id对应的路由表项,则查询第二路由表项中匿名通信秘密交换节点的id落入的id区间,并将该id区间对应的后继节点作为第二邻居节点。之后,将第二通信数据发送至该第二邻居节点。[0118]在另一个例子中,对于第二邻居节点,则在接收到第二通信数据后,查询预先配置的第五路由表。其中,第五路由表为第二邻居节点根据图5中描述的路由表建立方式预先建立,并由第二邻居节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。第二邻居节点根据第五路由表,确定将第二通信数据发送至匿名通信秘密交换节点或是新的第二邻居节点。例如,若第五路由表中包括匿名通信秘密交换节点的id对应的路由表项,则第二邻居节点根据该路由表项对应的后继节点即匿名通信秘密交换节点,发送第二通信数据至匿名通信秘密交换节点。当然,若第五路由表中不包括匿名通信秘密交换节点的id对应的路由表项,则查询第五路由表项中匿名通信秘密交换节点的id落入的id区间,并将该id区间对应的后继节点作为新的第二邻居节点。之后,将第二通信数据发送至该新的第二邻居节点。可以理解的是,对于新的第二邻居节点,其执行过程与第二邻居节点相同,直至将第二通信数据发送至匿名通信秘密交换节点为止。[0119]可以理解的是,第二通信节点发送第二通信数据所到达的匿名通信秘密交换节点与第一通信节点发送第一通信数据所到达的匿名通信秘密交换节点为同一个匿名通信秘密交换节点。[0120]本领域人员可以理解,上述s701与s702之间并无执行上的先后顺序。也就是说,s701可以先于s702执行,或者s702可以先于s701执行,又或者s701与s702可以同时执行,本技术在此不作限定。[0121]s703,匿名通信秘密交换节点根据预先配置的第三路由表将第一通信数据发送至第二通信节点,以及将第二通信数据发送至第一通信节点。[0122]在一个例子中,匿名通信秘密交换节点在接收到第一通信节点发送的第一通信数据,以及接收到第二通信节点发送的第二通信数据后,对第一通信数据和第二通信数据进行解析。由于第一通信数据和第二通信数据的目的地址均指向匿名通信秘密交换节点,因此匿名通信秘密交换节点需要确定第一通信数据的发送方,即第一通信节点;以及第二通信数据的发送方,即第二通信节点。之后,匿名通信秘密交换节点将第一通信数据重新打包,重新打包的第一通信数据的目的地址为第二通信节点,以及将第二通信数据重新打包,重新打包的第二通信数据的目的地址为第一通信节点。匿名通信秘密交换节点再根据预先配置的第三路由表,将重新打包的第一通信数据发送至第二通信节点,以及将重新打包的第二通信数据发送至第一通信节点。从而实现第一通信节点与第二通信节点的匿名通信。[0123]在一个例子中,匿名通信节点可以根据第一通信数据和第二通信数据中的successorid确定这两个数据是否处于同一个匿名通信会话中。当第一通信数据和第二通信数据中的successorid相同,则确定第一通信数据和第二通信数据处于同一个匿名通信会话中,之后对第一通信数据和第二通信数据的内容进行提取并重新打包。例如将第一通信数据的目的地址设定为第二通信节点,即第一通信数据的successorid为successor(第二通信节点的id);以及将第二通信数据的目的地址设定为第一通信节点,即第二通信数据的successorid为successor(第一通信节点的id)。之后,匿名通信秘密交换节点根据重新打包的第二通信数据的successorid将重新打包的第一通信数据发送至第一通信节点,以及根据重新打包的第一通信数据的successorid将重新打包的第一通信数据发送至第二通信节点。可以理解的是,若匿名通信节点接收到successorid不同的多个通信数据,则不会进行转发,直至接收到两个successorid相同的数据,再将successorid相同的两个数据进行交换并转发。[0124]其中,第三路由表为匿名通信秘密交换节点根据图5中描述的路由表建立方式预先建立,并由匿名通信秘密交换节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。[0125]在一个例子中,网络节点还可以包括第三邻居节点。例如,当第三路由表中并未配置第二通信节点的路由路径时,匿名通信秘密交换节点可以采用图5中描述的路由方式,根据第三路由表确定第三邻居节点。例如,匿名通信秘密交换节点根据重新打包的第一通信数据的目的地址查询第三路由表。其中,重新打包的第一通信数据的目的地址为第二通信节点的id。此时,若第三路由表中包括第二通信节点的id对应的路由表项,则匿名通信秘密交换节点根据该路由表项对应的后继节点即第二通信节点,发送重新打包的第一通信数据至第二通信节点。但是,若第三路由表中不包括第二通信节点的id对应的路由表项,则查询第三路由表项中第二通信节点的id落入的id区间,并将该id区间对应的后继节点作为第三邻居节点。之后,将重新打包的第一通信数据发送至该第三邻居节点。[0126]在另一个例子中,对于第三邻居节点,则在接收到重新打包的第一通信数据后,查询预先配置的第六路由表。其中,第六路由表为第三邻居节点根据图5中描述的路由表建立方式预先建立,并由第三邻居节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。第三邻居节点根据第六路由表,确定将重新打包的第一通信数据发送至第二通信节点或是新的第三邻居节点。例如,若第六路由表中包括第二通信节点的id对应的路由表项,则第三邻居节点根据该路由表项对应的后继节点即第二通信节点,发送重新打包的第一通信数据至第二通信节点。当然,若第六路由表中不包括第二通信节点的id对应的路由表项,则查询第六路由表项中第二通信节点的id落入的id区间,并将该id区间对应的后继节点作为新的第三邻居节点。之后,将重新打包的第一通信数据发送至该新的第三邻居节点。可以理解的是,对于新的第三邻居节点,其执行过程与第三邻居节点相同,直至将重新打包的第一通信数据发送至第二通信节点为止。[0127]在又一个例子中,网络节点还可以包括第四邻居节点。例如,当第三路由表中并未配置第一通信节点的路由路径时,匿名通信秘密交换节点可以采用图5中描述的路由方式,根据第三路由表确定第四邻居节点。例如,匿名通信秘密交换节点根据重新打包的第二通信数据的目的地址查询第三路由表。其中,重新打包的第二通信数据的目的地址为第一通信节点的id。此时,若第三路由表中包括第一通信节点的id对应的路由表项,则匿名通信秘密交换节点根据该路由表项对应的后继节点即第一通信节点,发送重新打包的第二通信数据至第一通信节点。但是,若第三路由表中不包括第一通信节点的id对应的路由表项,则查询第三路由表项中第一通信节点的id落入的id区间,并将该id区间对应的后继节点作为第四邻居节点。之后,将重新打包的第二通信数据发送至该第四邻居节点。[0128]在另一个例子中,对于第四邻居节点,则在接收到重新打包的第二通信数据后,查询预先配置的第七路由表。其中,第七路由表为第四邻居节点根据图5中描述的路由表建立方式预先建立,并由第四邻居节点维护。具体建立过程可以参考图5相应描述,在此不再赘述。第四邻居节点根据第七路由表,确定将重新打包的第二通信数据发送至第一通信节点或是新的第四邻居节点。例如,若第七路由表中包括第一通信节点的id对应的路由表项,则第四邻居节点根据该路由表项对应的后继节点即第一通信节点,发送重新打包的第二通信数据至第一通信节点。当然,若第七路由表中不包括第一通信节点的id对应的路由表项,则查询第七路由表项中第一通信节点的id落入的id区间,并将该id区间对应的后继节点作为新的第四邻居节点。之后,将重新打包的第二通信数据发送至该新的第四邻居节点。可以理解的是,对于新的第四邻居节点,其执行过程与第四邻居节点相同,直至将重新打包的第二通信数据发送至第一通信节点为止。[0129]图8为本技术实施例提供的一种多路径信息交换方法流程图。[0130]如图8所示,本技术还提供了一种多路径信息交换方法。可以理解的是,在s701和s702之前,需要确定多个秘密交换节点,并从多个秘密交换节点中确定匿名通信秘密交换节点作为通信数据交换的网络节点。因此,在s701和s702之前,方法还可以包括:[0131]s801,第一通信节点与第二通信节点根据预先配置的秘密交换点种子,确定多个秘密交换节点。[0132]第一通信节点与第二通信节点可以根据预先配置的秘密交换点种子,确定多个秘密交换节点。[0133]在一个例子中,秘密交换点种子可以是第一通信节点与第二通信节点预先通过任意方式进行协商确定的。例如可以通过外部渠道,即电子公告板(bulletinboardsystem,bbs)论坛等网络论坛提前协商确定。或是可以通过短信等任意通信方式进行协商确定。当然,在另一些例子中,第一通信节点与第二通信节点可以预先配置秘密交换点种子,并在需要通信时从节点中直接获取。本技术对秘密交换点种子的配置方式不做限定。[0134]在另一个例子中,第一通信节点与第二通信节点中配置有相同的随机数生成器,以便当第一通信节点与第二通信节点通信之前,可以采用相同的随机数生成器对秘密交换点种子进行计算,从而得到相同的随机整型数组(integerarray)。在一个例子中,随机数生成器可以是伪随机数生成器(pseudo-randomnoisegenerator,prng)。可以理解的是,该随机整型数组可以包括一个或多个整型参数。第一通信节点与第二通信节点将随机整型数组中的整型参数作为秘密交换节点id。而每个秘密交换节点id均唯一对应一个秘密交换节点。可以理解的是,这种对应关系是chord协议自身所具备的。因此,可以通过随机整型数组确定多个秘密交换节点。当然,在一些例子中,由于某些id并非对应真实的网络节点,因此,存在不同的秘密交换节点id对应同一个真实的网络节点,并将该真实的网络节点作为秘密交换节点。例如,若某个秘密交换节点id对应一个虚拟网络节点,则将该虚拟网络节点的后继节点作为秘密交换节点。[0135]s802,第一通信节点与第二通信节点根据相同的预设规则,从多个秘密交换节点中选择相同的秘密交换节点作为匿名通信秘密交换节点。[0136]在s801中确定的多个秘密交换节点后,第一通信节点与第二通信节点可以根据相同的预设规则,从多个秘密交换节点中选择相同的一个秘密交换节点作为匿名通信秘密交换节点。[0137]在一些例子中,预设规则可以是按照随机整型数组中整型参数的排列顺序,依次选择每个整型参数对应的秘密交换节点作为匿名通信秘密交换节点。当然还可以根据其它相同的规则进行选取,可以理解的是,由于采用的规则相同且随机整型数组也相同,因此第一通信节点与第二通信节点确定出的匿名通信秘密交换节点也是相同的。在一些例子中,可以提取整型参数的头部的一个整型数作为秘密交换节点id,并确定匿名通信秘密交换节点。[0138]在另一些例子中,对于主动流量分析攻击,通常网络攻击者扮演通信的接收者,即网络攻击者需要与发送者保持长时间的通信连接,且自始至终使用同一条路由路径来传递通信数据。然后网络攻击者采用丢包或延迟等方式干扰网络报的正常发送,并通过分析网络流量变化从而获取通信中的发送者身份。其核心思想是,若网络攻击者针对网络中某个网络节点采用主动丢弃或延迟等方式干扰该节点正常数据包的发送,同时确定消息的接收者(即网络攻击者自身)是否在通信会话结束之前收到大部分发送者发送的消息。通常通信会话一般在5s内未接收到任何消息后中断。若接收者(即网络攻击者自身)在通信会话结束之前并未收到大部分发送者发送的通信数据,则可以认为遭受攻击的网络节点处于发送者与接收者之间的路由路径上。通过不断重复上述步骤可以还原整个路由路径上的节点,并暴露发送者所在的网络节点。[0139]因此,为了阻止主动流量分析攻击者通过丢包或延迟的手段分析或观察确定通信双方的身份。可以通过在tee内生成若干可信的秘密交换节点,在不同的通信阶段使用不同的匿名通信秘密交换节点来交换信息,即通信双方不将通信消息直接发送至对端。这样在基于chord的结构化p2p网络中就形成了动态变化的路由路径,从而使得网络攻击者无法通过主动流量分析攻击还原一条具体的通信路径,从而保护了通信双方的匿名性。[0140]例如,第一通信节点与第二通信节点之间的匿名通信可以包括多个通信阶段。如可以设定每传递预设数量的通信数据为一个通信阶段,第一通信节点与第二通信节点在不同的通信阶段采用不同的匿名通信秘密交换节点进行匿名通信。其中,传递通信数据的预设数量,可以根据实际情况进行设定,如每传递8m数据或200k数据后更换匿名通信秘密交换节点,具体的预设数量本技术不作限定。当然,在另一些例子中,还可以设定预设时间段t1,并将每个时间段作为一个通信阶段,在不同的通信阶段采用不同的匿名通信秘密交换节点进行匿名通信。例如每经过30秒或者1分钟更换匿名通信秘密交换节点,具体的预设时间段的时长本技术不作限定。可以理解的是,当更换匿名通信秘密交换节点时,第一通信节点与第二通信节点仍然采用相同的规则从相同的随机整型数组中确定新的匿名通信秘密交换节点。因此,第一通信节点与第二通信节点确定出的新的匿名通信秘密交换节点也是相同的。在一些例子中,为了避免多个连续的通信阶段所使用的匿名通信秘密交换节点相同,在确定新的匿名通信秘密交换节点的过程中,第一通信节点与第二通信节点可以删除随机整型数组中使用过的整型参数。[0141]可以理解的是,每个不同的通信阶段也可以称为“轮”。即每一轮通信,第一通信节点与第二通信节点不直接将消息发送至对端,而是根据随机整形数组中确定的匿名通信秘密交换节点作为通信数据寻址的目的地址。第一通信节点与第二通信节点将第一通信数据和第二通信数据发送至同一个匿名通信秘密交换节点,再由该匿名通信秘密交换节点分别将第一通信数据和第二通信数据重新打包并发送。通过上述方式,可以使得路由路径动态变化,外界无法还原具体通信路径,从而抵抗主动流量分析攻击,保障了通信系统的安全性。[0142]本技术的通信双方在匿名通信前会先对一个秘密交换点种子(seed)达成共识。有了这个相同的秘密交换点种子,通信双方各自在tee内利用相同的随机数生成器生成相同的随机整型数组,随机整型数组中的每个整型参数代表一个匿名通信秘密交换节点的id。接着通信双方开始匿名通信,通信双方将需要发送的通信数据发送至同一个匿名通信秘密交换节点,该匿名通信秘密交换节点在收到来自通信双方的通信数据后将数据包内容进行交换,然后分别将交换后的通信数据发回通信双方。同时,可以在每一轮通信中,采用不同的匿名通信秘密交换节点交换通信数据。这样,通信双方在网络中由于每个通信阶段都使用了不同的匿名通信秘密交换节点进行通信数据的交换,因此在网络中有动态变化的路由路径,从而使得网络攻击者无法通过丢包或延迟,即主动流量分析攻击来还原一条固定的路由路径揭露通信双方的身份,保证了通信时的匿名性。[0143]图9为本技术实施例提供的一种网络节点收发数据方法流程图。[0144]针对上述图3至图8中所涉及到的任意一个网络节点,其接收和发送数据的过程是相同的。图9所描述的网络节点可以是第一通信节点、第二通信节点、匿名通信秘密交换节点、第一邻居节点、第二邻居节点、第三邻居节点、第四邻居节点中的任意一个网络节点。例如图9所示出的,对于每个网络节点,其收发数据的方法包括以下步骤:[0145]s901,接收至少一个通信数据。[0146]对于该网络节点,可以接收至少一个通信数据。[0147]在一个例子中,该网络节点在基于chord环的结构化p2p网络中不断接收来自其它网络节点发送的通信数据。可以理解的是,由于本技术的网络是基于chord环的结构化p2p网络,因此在该网络中的每个网络节点均扮演中继节点的角色,即可以转发其它匿名通信的通信数据。所以,每个网络节点均可能不断接收来自少数其它网络节点发送的通信数据。[0148]s902,针对每个通信数据进行解析。[0149]对于该网络节点,对接收到的每个通信数据进行解析。在一个例子中,该网络节点在接收到一个通信数据后,在该网络节点中的tee内,采用自己的对称密钥对接收到的通信数据进行解密。并将解密后的明文存储在tee中,因此该明文对外是不可见的,保障了数据内容的机密性。[0150]可以理解的是,本技术中传递的通信数据均采用了对称加密算法进行加密。由于采用了加密算法对通信数据进行了加密,从而保障传递的数据具有机密性。因为本技术中所涉及的方法均在网络节点中的tee内执行,因此可以采用对称加密算法,并将对称密钥存储至tee内,显然对称密钥对外也是不可见的。当然,在另一些例子中,为了保障数据加密后不易被网络攻击者解析,还可以采用非对称加密算法对通信数据进行加密,本技术在此不作限定。[0151]s903,确定接收的通信数据是否为混淆数据。[0152]针对每个接收到的通信数据,该网络节点确定接收到的通信数据是否为混淆数据,若接收到的通信数据为混淆数据,则执行s904;若接收到的通信数据不是混淆数据,则执行s905。[0153]在一个例子中,可以通过判断通信数据是否为空确定该通信数据是否为混淆数据,例如,若通信数据为空或者通信数据的内容一栏为不适用(notapplicable,n/a)时,表示该通信数据没有实际内容,因此可以确定该通信数据为混淆数据。否则,则认为该通信数据不是混淆数据。[0154]s904,将混淆数据进行丢弃。[0155]若s903中确定接收到的通信数据为混淆数据,则将该通信数据(即混淆数据)进行丢弃。[0156]s905,确定通信数据的目的地址。[0157]若s903中确定接收到的通信数据不是混淆数据,则确定该通信数据的目的地址。[0158]在一个例子中,若该通信数据为第一通信数据,则目的地址则为匿名通信秘密交换节点、第二通信节点、第一邻居节点或是第三邻居节点。在另一个例子中,若该通信数据为第二通信数据,则目的地址则为匿名通信秘密交换节点、第一通信节点、第二邻居节点或是第四邻居节点。在又一个例子中,若该通信数据为其它通信数据,则其它通信数据的目的节点为其它通信节点之间匿名通信中的可能经过的网络节点,例如其它通信节点之间匿名通信中的匿名通信秘密交换节点、第一通信节点、第二通信节点、第一邻居节点、第二邻居节点、第三邻居节点或第四邻居节点。其中,其它通信数据为其它通信节点之间匿名通信所传递的通信数据。[0159]s906,根据通信数据的目的地址,将各个通信数据存入相应的洗牌池中。[0160]该网络节点根据各个通信数据的目的地址,将各个通信数据存入相应的洗牌池中。[0161]可以理解的是,随机洗牌是一种保障用户通信时匿名性的技术。通常的随机洗牌技术与中继网络不同,采用了一组中心化的洗牌服务器(mixserver)来打乱整个网络内的通信数据顺序,即通信数据进入各个网络设备的时序。并且还在网络中增加若干伪造的混淆数据(dummymessage),从而使得网络攻击者无法判断出一个通信数据是否为真实数据还是混淆数据,进而难以分析数据的发送者和接收者身份。同时,由于通信数据进入各个网络设备的时序被洗牌服务器打乱,对于网络攻击者而言则无法判断一个刚刚进入某个网络节点的通信数据,与哪一个该网络节点发送的通信数据是同一个通信数据,从而无法还原路由路径,并保障了匿名性。[0162]在一个例子中,例如图10所示出的一种随机洗牌系统架构示意图。可以看出,图10中包括有多个洗牌服务器,例如m1、m2、m3。其中,同一横行表示为同一个洗牌服务器。对于同一纵列则构成一组洗牌服务器。显然,该系统中通过m1、m2和m3对来自用户的通信数据进行顺序打乱。对于顺序打乱的过程也可称为洗牌或洗牌过程。可以理解的是,图10仅示出了一种可能洗牌服务器数量进行描述,实际还可以具有更多或更少的洗牌服务器。发送者首先将需要发送的通信数据发送至其中一个洗牌服务器,例如m1,同时每个洗牌服务器不断收集网络中每一个用户发来的通信数据,并将收到的所有通信数据混合在一起。每个洗牌服务器在某一时刻将收集到的通信数据按照随机的顺序发送给任意一个洗牌服务器,其中还混杂着系统伪造的混淆数据。重复若干次洗牌操作后,最终将发送者发送的通信数转发至接收者。其中,若干次洗牌操作对应于图10中时间轴上的洗牌1、洗牌2直至洗牌y,y为正整数。[0163]在上述过程中,来自发送者的通信数据在一组洗牌服务器之间进行了多轮的洗牌,真实的消息路径(如图中实线箭头)被隐藏在所有的消息路径中(如图中虚线箭头)。其中既包括来自其它用户的通信数据,也包括系统伪造的混淆数据。因此,网络攻击者无法通过静态的观察,即被动流量分析攻击来分析谁在与谁进行通信,保障了用户通信时通信双方的匿名性。[0164]但是当前的基于随机洗牌的匿名通信系统具有高延时和不可抵抗拒绝服务攻击的问题。首先,基于随机洗牌的匿名通信系统在大规模部署下容易产生高延时通信,这是由于随机洗牌网络的承载能力受制于一组中心的洗牌服务器的处理能力,大规模部署下有海量的用户通信数据,而这组洗牌服务器需要在大量通信数据上进行计算资源消耗极大的洗牌验证,即验证是否按照程序规定完成了消息打乱,从而导致高延时通信。其次,不可抵抗拒绝服务攻击是由于目前基于随机洗牌的系统仍然受制于使用一组中心化的洗牌服务器进行通信数据打乱,因此只要存在某个洗牌服务器下线,整个网络就会无法工作。[0165]因此,为了保护用户通信时的匿名性,以及可以抵抗监控网络流量并试图分析通信双方身份的被动流量分析攻击者。本技术中不再使用一组中心的洗牌服务器,而是将洗牌任务分配给每个网络节点。由于每个网络节点中的路由表仅维护少量路由路径,因此每个网络节点无需进行大量计算,从而保障了低延时。同时,由于采用了基于chord环的结构化p2p网络,因此当某个网络节点受到dos攻击时,整个网络并不会瘫痪。[0166]在一个例子中,本技术提出了一种基于可信硬件的去中心化随机洗牌的技术,让网络中每个网络节点在收到通信数据后与其它通信数据、混淆数据进行混合,并在随机时间点发出,这样就打乱了网络节点中通信数据的时序,使得网络攻击者无法通过传统的“先到先发”的模式判断出通信数据在网络中的路由路径,从而保护了通信双方身份不被网络攻击者获取。[0167]例如,本技术中的基于chord环的结构化p2p网络中,每个网络节点均维护一个自身网络节点的chord路由表,具体建立过程可以参考图5相应描述,在此不再赘述。对于每个路由表均维护了一个或多个后继节点的信息,例如包括后继节点的ip,后继节点在chord环上的id,后继节点的密钥等。其中,后继节点的ip用于该网络节点将通信数据根据此地址发往该后继节点;后继节点在chord环上的id是运行chord路由寻址协议的重要参考,具体进行路由寻址的方式可以参考图3至图5中相应的描述,在此不再赘述。对于后继节点的密钥,则每个网络节点在自身维护的路由表中,均维护了各个后继节点对应的对称密钥,以便当有通信数据发送至该后继节点时,可以采用该对称密钥进行加密。可以理解的是当接收到该节点发送的数据时,可以采用相同的对称密钥进行解密。当然,在一些例子中,若采用非对称密钥,则根据实际情况切换加密密钥和解密密钥即可。在一些例子中,对于每个网络节点均拥有属于自身网络节点的对称密钥或非对称密钥。[0168]在一个例子中,根据s905中确定的通信数据的目的地址,将该通信数据存入该目的地址对应的洗牌池。可以理解的是,对于每个网络节点,其根据该网络节点维护的路由表中的后继节点,构建该网络节点的一个或多个洗牌池,其中,每个洗牌池对应一个网络节点。以图5中的网络节点0、网络节点1和网络节点3为例,对于网络节点0则构建有3个洗牌池,即网络节点1的洗牌池、网络节点3的洗牌池和网络节点0的洗牌池;对于网络节点1则构建有2个洗牌池,即网络节点3的洗牌池和网络节点0的洗牌池;对于网络节点3则构建有1个洗牌池,即网络节点0的洗牌池。[0169]在另一些例子中,各个网络节点根据自身网络节点维护的路由表来确定通信数据的目的地址对应的洗牌池。例如,若该网络节点根据自身的路由表确定该网络节点中包含通信数据的目的地址对应的洗牌池,则可以直接将通信数据存储至该洗牌池中。若该网络节点根据自身的路由表确定该网络节点中不包含通信数据的目的地址对应的洗牌池,则该网络节点根据通信数据的目的地址确定该通信数据的邻居节点,并将该通信数据存储至该邻居节点对应的洗牌池。以图5所示的网络节点3为例,若网络节点3中的通信数据需要发送至网络节点1,则可以将该通信数据存储至网络节点0的洗牌池。[0170]s907,每间隔预设的时间,按照预设的随机洗牌概率从该洗牌池中确定待发送的通信数据。[0171]针对每个网络节点,在每间隔预设的时间t2时,可以按照预设的随机洗牌概率从各个洗牌池中确定待发送的通信数据。在一个例子中,t2可以是50ms、100ms等,本技术在此不作限定。[0172]在一个例子中,预设的随机洗牌概率p可以为0到1之间的任意数值。在一个例子中,随机洗牌概率p可以为0.8。[0173]s908,确定是否从洗牌池中确定真实的待发送的通信数据。[0174]在根据随机洗牌概率p,从各个洗牌池存储的至少一个通信数据中确定待发送的通信数据后,确定是否从洗牌池中确定真实的待发送的通信数据。若并未从洗牌池中确定真实的待发送的通信数据,则执行s909;以及,若从洗牌池中确定了真实的待发送的通信数据,则执行s910。例如,若某次确定待发送的通信数据时的随机概率α小于p,则该轮不从该洗牌池中确定真实的待发送的通信数据并执行s909;若随机概率α大于或等于p,该轮从该洗牌池中确定真实的待发送的通信数据并执行s910。[0175]在一个例子中,真实的待发送的通信数据可以是第一通信数据、第二通信数据或其它通信数据。在另一个例子中,针对每个洗牌池,在确定真实的待发送的通信数据时,可以随机从洗牌池中挑选出一个通信数据作为待发送的通信数据。当然,在另一些例子中,为了保障每个通信数据均可以被发送出去,则可以根据洗牌池中通信数据的存入顺序,依次将最先存入的通信数据作为待发送的通信数据,即从该洗牌池的队列头部提取一个真实的通信数据。[0176]s909,生成混淆数据,并将该混淆数据作为待发送的通信数据。[0177]若网络节点在s908中确定并未从洗牌池中确定真实的待发送的通信数据,这生成混淆数据,并将该混淆数据作为待发送的通信数据,并继续执行s910。可以理解的是,本技术所涉及的混淆数据,其大小和真实的通信数据一致,因此可以使得外界无法判断待发送的通信数据是否为真实的通信数据。[0178]本技术通过生成混淆数据,并结合随机洗牌的方式发送通信数据,使得外界无法获知发送的数据是否为真实数据,从而抵抗被动流量分析攻击,保障了通信系统的安全性。[0179]s910,将待发送的通信数据发送至该洗牌池所对应的网络节点。[0180]该网络节点根据该网络节点维护的路由表,将各个洗牌池中确定的待发送的通信数据发送至各个洗牌池对应的网络节点。可以理解的是,此时发送的通信数据包含有真实的通信数据以及混淆数据。[0181]在一个例子中,网络节点在发送待发送的通信数据之前,可以采用对称密钥对待发送的通信数据进行加密,然后再发送至各个洗牌池对应的网络节点。[0182]可以理解的是,上述图7至图9所述的方法,均运行在相应网络节点中的tee内,从而保障了信息的安全性,以及不易被篡改。[0183]在一些例子中,为了更加节省资源,可以在所有网络节点内的所有洗牌池不存在通信数据时,各个网络节点停止发送通信数据。当然为了避免出现洗牌池中有通信数据的网络节点发送通信数据,而洗牌池中没有通信数据的网络节点不发通信数据导致的路由路径的暴露。在另一些例子中,可以当某个网络节点的洗牌池中存有通信数据时,按照预设的规则选择出一定数量的洗牌池中没有通信数据的网络节点。并使得上述网络节点同时发送通信数据,对于洗牌池中没有通信数据的网络节点,则一直发送混淆数据即可。从而避免通过是否发送通信数据判断出路由路径。当然,在又一些例子中,可以让网络中的所有网络节点不断发送通信数据,不考虑网络节点中洗牌池中是否存在通信数据。[0184]本技术中各个网络节点在进行收发数据时,采用随机洗牌的方式,[0185]本技术通过让每个网络节点在收到通信数据后与其它通信数据、混淆数据进行混合,并在随机时间点发出,这样就打乱了各网络节点中通信数据的时序,使得网络攻击者无法通过传统的“先到先发”的模式判断出通信数据在网络中的路由路径,从而保护了通信双方身份不被网络攻击者获取。可以理解的是,虽然在确定真实待发送的通信数据时,是根据洗牌池中数据的存入顺序先入先出,但是由于每次发送数据并不一定为真实的通信数据,因此,对网络攻击者而言仍然无法确定某个通信数据何时被转发,从而保障了网络攻击者无法判断出通信数据的路由路径。[0186]图11为本技术实施例提供的一种网络节点模块示意图。[0187]如图11所示,本技术提供了一种网络节点模块示意图,该网络节点1100可以是上述图3至图9中涉及的任意一个网络节点。该网络节点包括随机洗牌协议模块1101、秘密传递点交换协议模块1102、chord路由寻址协议模块1103和通讯模块1104。[0188]其中,随机洗牌协议模块1101、秘密传递点交换协议模块1102和chord路由寻址协议模块1103位于在tee中,而通讯模块1104位于非可信运行环境中。[0189]网络节点1101可以通过上述各个模块实现图3至图9中所涉及的任意方法或方案。例如,可以通过通讯模块1104中的传输控制协议/网际协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)进行网络连接。以及在进行通信数据传递过程中,通过chord路由寻址协议模块1103将通信数据经过网络里的若干网络节点。由于采用了基于chord环的结构化p2p网络,从而可以有效避免dos攻击对网络的影响。网络节点1101还通过随机洗牌模块保障路径上的每个节点会随机生成伪造的混淆数据,并将混淆数据与当前收到的来自其它网络节点的所有通信数据、本次需要传递的通信数据混合在一起并进行随机洗牌。每隔一段时间随机发出若干通信数据(包括真实的通信数据和混淆数据),从而打乱通信数据先到先发的固有模式,使得网络攻击者无法根据时序判断通信数据双方的身份,即抵抗了被动流量分析攻击,从而无法还原通信数据的完整路由路径,保证了通信时的匿名性。另外,由于通信路径无法还原,网络攻击者无法找到路由路径上的网络节点进行dos攻击来破坏通信双方之间的通信。网络节点1101还通过秘密传递点交换协议模块1102实现了多路径信息交换,从而抵抗了通过针对网络节点进行丢包、延迟的方式的主动流量分析攻击。[0190]在一些例子中,可以仅当网络节点1101作为第一通信节点、第二通信节点和/或匿名通信秘密交换节点时,再调用秘密传递点交换协议模块1102。[0191]基于图3至图9所描述的方案中的每个网络节点均为图11所示出的模块架构,每个网络节点在tee内运行三大模块:随机洗牌协议模块1101、秘密传递点交换协议模块1102和chord路由寻址协议模块1103。通过在tee内运行上述模块,所有的网络节点构成了一个基于chord环的、可提供强隐私保护的隐形对等网络,在这个网络中各个网络节点间可以进行低延迟的、可靠的、抗dos以及抗流量分析攻击的匿名通信。首先,通过运行chord路由寻址协议模块1103,利用了chord的高扩展性以及低延迟的特性将所有网络节点部署到了一个去中心化的p2p网络中,实现了三大要求中的第一个要求低延时。然后将路由寻址协议运行在tee内,既可以保障每个网络节点的路由表信息都无法被tee外部的网络攻击者,甚至是恶意的操作系统所获取,也可以保障每个网络节点都遵守了路由寻址协议的规则。其次,通过另外随机洗牌协议模块1101、秘密传递点交换协议模块1102,实现了强隐私保护性。[0192]图12为本技术实施例提供的一种匿名通信系统信息传递示意图。[0193]如图12所示,为本技术提供的一种匿名通信系统。在一个例子中,该系统可以是匿名聊天系统,即分散匿名高效网络(decentralizedanonymousandefficientnetwork,daenet)。每一个用户可以以一个网络节点的身份加入该匿名通信系统,在该匿名通信系统中的每个网络节点均包含图11所示出的网络节点模块以便使用随机洗牌协议模块1101、秘密传递点交换协议模块1102、chord路由寻址协议模块1103和通讯模块1104完成去中心化随机洗牌与多路径信息交换,并实现上述图3至图9所涉及的任意一种方法或方案,以抵抗网络攻击者。[0194]daenet中的第一通信节点与第二通信节点通过一个秘密交换点(deaddrop)进行信息交换。该秘密交换点可以是上述提到的秘密传递点或是匿名通信秘密交换节点。第一通信节点通过普通箭头所指的路径,将第一通信数据路由至匿名通信秘密交换节点处;同样第二通信节点通过带竖线的箭头所指的路径,将第二通信数据路由至匿名通信秘密交换节点处。其中,第一通信数据例如图12中示出的“hello”,以及第二通信数据例如图12中示出的“hi”。路径中的每一个网络节点是由其上一跳的网络节点在其tee内运行chord寻址协议得到的。匿名通信秘密交换节收到第一通信数据和第二通信数据后,将第一通信数据路和第二通信数据路的内容进行调换,生成两个新的数据包,即重新打包的第一通信数据和重新打包的第二通信数据,并将重新打包的第一通信数据发给至第二通信节点(沿普通箭头),以及将重新打包的第二通信数据发给至第一通信节点(沿带竖线的箭头)。若存在多个通信阶段,则每个通信阶段均采用相同的方式,唯一不同是使用不同的匿名通信秘密交换节点。[0195]对于匿名通信系统中的每个网络节点而言,其无论是否正在与某个网络节点进行通信,都会不断地进行随机洗牌,打乱自己收到的通信数据的顺序。例如,假设某网络节点收到了三条来自其它网络节点的通信数据,分别为通信数据1、通信数据2和通信数据3。首先该网络节点在其tee内将三条通信数据解密,解密后观察明文。如发现通信数据3是一个系统伪造的混淆数据,于是该网络节点直接丢弃通信数据3。接着,该网络节点读取通信数据1和通信数据2的内容以获取两个通信数据的目的节点id,在tee内运行chord路由寻址协议模块可以找到了通信数据1的下一跳是后继节点1,通信数据2的下一跳是后继节点2。于是该网络节点分别将通信数据1放入后继节点1的洗牌池p1,将通信数据2放入后继节点2的洗牌池p2。其中,p1和p2是该网络节点对自己一个或多个后继节点维护的洗牌池,每个洗牌池可以是一个先进先出的队列。然后,该网络节点每隔固定时间,例如50ms从每个洗牌池p1和p2中以等概率提取待发送的通信数据。当然若该网络节点具有更多的洗牌池,则从所有的洗牌池中均以概率提取每个洗牌池对应的待发送的通信数据。例如,针对每个洗牌池依据随机概率α并与预设的随机洗牌概率p进行对比,当随机概率α大于或等于p,则从该洗牌池中提取一个通信数据作为待发送的通信数据,如将该洗牌池中的第一个通信数据推出,并加密后发送至该洗牌池对应的后继节点;否则,生成一个伪造的混淆数据,并在加密后发送至该洗牌池对应的后继节点。[0196]本技术所涉及的匿名通信系统,用户只需配备一个带有tee的终端设备,例如装备因特尔(intel,intel)六代或以上cpu的机器,并下载本匿名通信系统的客户端,就可以享受低延迟,高可靠,强隐私保护的去中心化匿名通信。[0197]在一个例子中,选取了20台服务器部署了daenet。每台服务器的配置如下:配备sgx硬件的intel(r)xeon(r)cpue3-1280v6,24核,64gb的随机存取存储器(random-accessmemory,ram)以及2tb的固态硬盘(solidstatedrive,ssd)。每台机器间都组成了40gbps的网络。并且在每台机器上分别跑了至多500个网络节点,总计构成了最多约10000个网络节点同时参与的匿名通信系统。[0198]为了与现实生活中的使用相匹配,需要给匿名通信系统添加了两个约束:首先,每个网络节点之间的网络通信使用linux流量控制(trafficcontrol,tc)工具规定了40ms的通信延时,来模拟真实因特网下的网络环境。其次,为了与真实的在线聊天系统负载相匹配,在10000个网络节点中随机抽样了10%的网络节点作为活跃的网络节点不断发送通信数据,其余剩下的网络节点为空闲网络节点。[0199]为此,在一些例子中,将本技术的匿名通信系统与另外两个匿名通信系统进行了性能比较,例如可以是伦敦大学学院开发的新型匿名通信系统loopix,以及耶鲁大学和得克萨斯大学奥斯汀分校(universityoftexasataustin,ut-austin)共同开发的匿名群组通信dissent。其中,loopix是当前最流行的开源的基于随机洗牌技术的匿名通信系统,loopix可以抵抗被动流量分析攻击,但loopix不可以抵抗dos攻击以及主动流量分析攻击。而dissent是目前最快的开源的基于随机洗牌技术的匿名通信系统,即通信延时最低,但dissent不可抵抗dos攻击、被动流量分析攻击以及主动流量分析攻击。[0200]对于daenet的通信延迟,即daenet在海量用户的情况下是否仍然能保证秒级别的低延时通信。例如图13则示出了不同匿名通信系统通信延迟变化对比图。可以非常明显的看出1000个网络节点以内,本技术的匿名通信系统daenet比目前最流行的开源随机洗牌网络loopix快了6至7倍,而与最高效的dissent系统有近乎接近的性能。[0201]例如图14示出了本技术实施例提供的一种匿名通信系统延迟变化图。[0202]对于daenet的可拓展性,即daenet是否能支持大规模的海量用户并且能正常处理用户发出的海量信息。图14比较了在daenet中随网络节点增加直到10000个网络节点。可以发现其通信延迟只成对数级别的增长。在10000个网络节点的daenet中,两个随机分布的网络节点只产生约2.2s的端到端通信延迟。图14中存在错误条(errorbar)是因为在实验中从网络的随机位置抽样网络节点,因此较远的网络节点距离会带来约正负1s的通信时延的变化。其中,在daenet中网络节点的连通性测试程序(packetinternetgroper,ping)延迟(latency)可以默认设置为80ms。当然pinglatency还可以设置为其它任意可能的数值,本技术并不做限定。[0203]值得注意的是,除了daenet,loopix和dissent均不能拓展至10,000节点的用户规模。[0204]图15为本技术实施例提供的一种匿名通信系统可靠性示意图。[0205]对于daenet的可靠性(也可称为鲁棒性),即daenet是否能在遭受网络攻击的情况下快速恢复并保证通信质量。图15则展示了daenet的可靠性。例如对正在运行的daenet进行了网络攻击实验。实验分三次攻击daenet中任意10%的网络节点使其下线。通过图15可以看出每当延迟为超时时,则代表daenet遭到了一次dos攻击。但是对于每次dos攻击,daenet都能快速恢复,并且不影响通信性能。值得注意的是,在其它匿名通信系统,如loopix和dissent中均不允许丢包,否则将丢失信息并且无法正常工作。[0206]图16为本技术实施例提供的一种随机洗牌概率对匿名性影响示意图。[0207]图16展示了daenet的匿名性随着随机洗牌概率p的变化图。纵坐标为似然差(likelihooddifference)是计算机安全领域通用的对安全性的衡量指标。若likelihood小于0.4则表明拥有强匿名性。图16中的likelihood一直小于0.4,随着随机洗牌概率p降低,likelihood逐渐降低,匿名性逐渐增强。但由于p过低时会导致匿名通信系统内产生过多的混淆数据。使得大大降低p却无法带来过高的匿名性提升,即likelihood并没有产生明显下降。因此本技术中预设的随机洗牌概率p取0.8即可。[0208]显然,通过图13至图16可以看出,本技术所涉及的基于chord环的结构化p2p网络可以同时保证低延时、抵抗dos攻击和抵抗流量分析攻击。相比普通的随机洗牌网络可以抵抗dos攻击具有更好的可靠性(或称鲁棒性)以及具有更低的延时。对于普通的中继网络则可以抵抗dos攻击具有更好的可靠性(或称鲁棒性),以及可以抵抗流量分析攻击,包括主动流量分析攻击和被动流量分析攻击,具有更高的安全性。[0209]本技术提供了一个低延时、高可靠、强隐私保护的去中心化匿名通信系统。底层网络架构利用了chord,从而保证了一个扩展性极强的去中心化低延时网络。同时各个网络节点利用tee的机密性和完整性实现了两个关键技术点,保证了用户通信时的匿名性。首先,本发明在网络中的每个网络节点对收到的通信数据进行随机洗牌,打乱了通信数据的发出顺序,并生成伪造的混淆数据从而使得网络攻击者无法通过流量监控来还原通信数据的路由路径。其次,通过使用随机生成的匿名通信秘密交换节点来交换通信数据的内容,使得通信双方的路由路径是动态变化的,导致网络攻击者无法通过丢包或延迟的手段来还原路由路径上的节点,保证了用户通信时的匿名性。[0210]图17为本技术实施例提供的一种去中心化的匿名通信系统装置示意图。[0211]如图17所示,提供了一种中心化的匿名通信系统装置1700,该装置1700可以是上述图3至图16中所涉及的任意一个网络节点。该装置1700可以包括处理器1701、存储器1702、发送器1703、接收器1704以及总线1705。装置1700中的处理器1701、存储器1702、发送器1703和接收器1704可以通过总线1705建立通信连接。[0212]发送器1703用于发送通信数据,以及接收器1704用于接收通信数据。在一些例子中,收发器1703以及接收器1704可以为天线。[0213]处理器1701可以为cpu。[0214]存储器1702可以包括易失性存储器(volatilememory),例如ram;存储器1702也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(read-onlymemory,rom),快闪存储器,硬盘(harddiskdrive,hdd)或ssd;存储器1702还可以包括上述种类的存储器的组合。[0215]处理器1701,用于与存储器1702耦合,以及读取并执行存储器1702中的指令;当处理器1701运行时执行指令,使得处理器1701还用于执行上述图3至图16中任意一个网络节点所涉及的方法或方案。具体实现方式可以参考述图3至图16中的相应描述,在此不再赘述。[0216]本技术中,为了让网络攻击者无法通过被动地监控全网流量并进行分析来还原通信双方之间的路由路径。采用让每个网络节点在tee内进行消息的随机洗牌,以此来打乱通信数据发出的时序,并生成无法区分的混淆数据。保障了被动流量分析攻击下用户通信时的匿名性。同时,由于通信路径无法还原,网络攻击者无法找到路由路径上的网络节点,因此无法针对路由路径上的网络节点进行dos攻击来破坏通信。以及,为了让网络攻击者无法通过主动地针对网络节点进行丢包或延迟的手段来判断受攻击的网络节点是否在路由路径上,从而无法还原通信双方之间的路由路径。采用在通信双方通信前在tee内生成随机的匿名通信秘密交换节点,并在匿名通信时,通信双方都将自己的通信数据发送至同一个匿名通信秘密交换节点。若匿名通信具有多个通信阶段,则每个不同的通信阶段采用不同的匿名通信秘密交换节点。使得匿名通信秘密交换节点将通信双方的通信数据内容进行交换,然后发回至通信双方。保障了主动流量分析攻击下用户通信时的匿名性。[0217]在一个例子中,图3至图17所示出的方案,可以运行在区块链底层p2p网络中来支持强隐私保护的区块链交易,例如加密货币比特币(bitcoin)交易。[0218]本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0219]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetictape),软盘(英文:floppydisk),光盘(英文:opticaldisc)及其任意组合。[0220]以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1