掌桥专利:专业的专利平台
掌桥专利
首页

一种针对洋葱网络系统共识文件的加密方法

文献发布时间:2023-06-19 09:36:59


一种针对洋葱网络系统共识文件的加密方法

技术领域

本发明涉及一种基于AES算法(Advanced Encryption Standard)的数据加密机制,尤其涉及一种针对洋葱网络系统共识文件的加密方法,能够增强系统的安全性与隐蔽性,属于隐蔽通信中有关Tor(洋葱路由,The Onion Router)系统安全技术领域。

背景技术

随着信息化时代的到来,网络已经深入到经济社会生活的各个领域。同时,网络安全,尤其是在网络上对个人的隐私保护已经越来越得到人们的重视。隐蔽通信系统在这个大的环境下应运而生。

隐蔽通信系统具有很好的隐藏用户身份和保护数据传输安全的特征,在金融领域、军事领域、网络交易领域等得到了广泛的使用。相对于传统的互联网点对点通信,隐蔽通信的核心特征在于:在系统中增加多个虚假的服务器,并将加密过后的数据通过多个虚假的代理服务器访问目的主机,最后在到达目的主机之前解密,在实现隐藏用户真实身份的同时,保证数据传输过程中的安全性。

目前,常用的隐蔽通信技术包括:(1)采用I2P建立通信链路;(2)Freenet技术;(3)采用tor网络建立匿名通信;(4)ZeroNet匿名通信网络。在上述主流的隐蔽通信技术中,Tor的应用范围更加广泛并且用户众多。因此,关于Tor安全性显得额外的重要。

然而,针对Tor网络的服务器存在着安全隐患,即,共识文件以明文的方式存储(普通用户可以通过访问目录服务器的IP地址的形式来查看共识文件)。攻击者如果入侵Tor中任意服务器,就可以获取共识文件,并根据共识文件的内容来获取整个网络中和Tor相关的中间节点服务器的IP。同时,共识文件中的密钥也会泄露。这在极大程度上增加了系统的不稳定性和易受攻击性。在隐蔽通信系统Tor中,Tor客户端先访问目录服务器,从目录服务器中获取共识文件。然后根据共识文件里面的中间节点,随机选择三个节点组成电路。用户流量跳跃三个节点之后,最终到达目标网站服务器。每隔10分钟左右会重新选择三个节点。并且每个中间节点也会拥有这个共识文件。由于Tor的这种特性,共识文件必须满足以下条件:(1)可以被客户端获取。(2)可以被客户端解读。(3)基于HTTP协议传输。但是,由于是基于HTTP协议,这样导致任意用户(包括攻击者)可以直接获取明文的共识文件,属于敏感文件泄露漏洞。

因此,基于Tor搭建的隐蔽通信系统存在安全隐患,需要采用一种有效技术来实现对共识文件的隐藏和加密,从而增加攻击者对于共识文件的获取以及阅读难度,达到维护Tor系统安全性的目的。

现有的避免Tor共识文件泄露的方案,按其技术原理可分为以下几种:

1.更改Web服务的配置信息。之所以普通用户可以通过浏览器访问Tor网络中目录服务器的共识文件,是因为Tor目录服务器开启了Web服务。而目前为止最常用的Web容器有:Nginx、Apache、Tomcat。这些Web容器都会考虑自身安全而加入更多配置选项,而通过修改这些Web容器的配置文件。例如:Apache就可以修改httpd.conf中的标签属性,可以达到拒绝某一些用户来访问这台服务器中的某些文件夹或者文件。只要配置得当,就可以避免攻击者窃取目录服务器中的共识文件

但是,该方案配置过程繁琐。Tor系统是使用C语言开发的一款隐蔽通信系统。其使用的Web容器并不属于常见类型,而是将配置写在源码当中,启动系统会自动开启HTTP服务。若想关闭,必须了解Tor整体源码架构,这使得学习和配置成本加大。且此方案不适用于中间节点被入侵情况。中间节点同样拥有共识文件,然而中间节点由于数量多,安全性差,容易遭受攻击。使得共识文件泄露。同时部分功能受限。共识文件的传输是基于HTTP协议,如果只是单纯停掉HTTP协议相关服务,很有可能导致共识文件传输失败,使得整体系统功能受损,严重情况会导致系统无法正常运行。

2.更改服务器配置。对于私网搭建Tor来说,用户数量和身份确定,所以可以考虑防火墙白名单策略。通常情况服务器开启HTTP服务会默认打开80/443端口。可以配置指定的IP,也可以修改目录服务器的80/443端口。进而使得攻击者无法访问目录服务器的Web服务,更不能获取其中的任何文件。保证了共识文件的安全。

但是,此种方案影响扩充性。配置防火墙白名单虽然可以有效抵御攻击者访问,但是也将会导致新增加的客户端用户和管理员用户无法访问。如果要扩充用户还需要更改防火墙策略,这样极大影响扩充性,增加不必要的时间成本。且此种方案不适用于中间节点被入侵情况。此方法同样无法保证中间节点被入侵后的共识文件安全性。

3.传统方式加密共识文件。为了防止共识文件内容泄露,可以将共识文件进行加密,从而达到了即使共识文件被窃取也无法查看内容的目的。例如:DES、DSA、ECDSA、Hash等等。

但是,此种方案影响管理员查看。若使用哈希算法等单向加密算法进行加密,虽然攻击者无法查看共识文件内容,但是哈希算法是有损加密,无法还原共识文件。增加了安全性,却会导致共识文件无法被使用。同时,密钥存储与分发不便。若使用非对称加密算法进行加密,需要同时拥有公钥和私钥,才可以完成加密解密的过程。而公钥和私钥的如何存储如何分发,又是一个比较难解决的问题。

发明内容

本发明的目的是为了增加攻击者对于Tor共识文件的获取以及阅读难度,提高Tor的安全性与隐蔽性,创造性地提出了一种针对洋葱网络系统共识文件的加密方法,达到维护Tor系统安全性的目的。

本方法采用的核心算法如下:

AES密码是一种对称加密算法,它与分组密码Rijndael基本上完全一致,分组大小和秘钥大小都可以分为128、192或256位。但是,AES的标准只要求128位,所以,只有128位的Rijndael才称为AES算法。因此,首先将明文拆分为128bit的小块,结尾不足处用0补齐。

AES加密中随着密钥长度的不同,加密的轮数(次数)也随之不同,这种设计是根据NIST的要求来设计的,具体的密钥长度和轮数n关系,如表1所示:

表1

首先,对初始的128明文进行分块,以8bit为基本单位分成16块,按照从上到下、从左到右的顺序填写到一个4×4的矩阵之中。在接下来的操作中都是以矩阵中每个元素来进行变化和运算,这个矩阵成为状态阵(state)(AES算法主要是对矩阵的有序变换和运算),如图2所示,其中X代表8bit。

AES算法流程包括轮密钥加、字节代替、行移位、列混合四个部分,将每个部分按照图3所示的流程进行运算,最终得出加密后的结果。

有益效果

与现有技术相比,本发明具有以下优点。

1.本发明方法安全性强。在抵抗暴力破解方面,也是最主流的破解方式来说,AES目前为止可以说是牢不可破的,通过现在市面上的CPU的计算能力,大概需要225年,这样的理论值,使得该算法实现了时间不可达性。

2.本发明实用性强,适用于目录服务器和节点服务器。本发明对于用户使用友好。管理员和用户可以在完全不了解内部原理的情况下使用。如果管理员需要查看文件内容,只需要运行固定脚本或者根据路径查找密钥并解密,便可以查看。

3.本发明也具有效率高且耗费资源少的优点。

附图说明

图1为AES输入输出形式;

图2为明文分块矩阵;

图3为本方法的加密流程;

图4为共识文件生成流程;

图5为目录服务器端操作;

图6为中间节点端操作。

具体实施方式

下面结合附图对本发明方法做进一步详细说明。

一种针对洋葱网络系统共识文件的加密方法,包括以下步骤:

步骤1:分析共识文件的生成过程。

共识文件的生成:每一个小时系统中各个中间节点会上传路由描述符,描述符作用为发布一次Tor网络的状态,包括节点的带宽大小、在线时间、身份标识、密钥等信息。目录服务器将收到的信息进行周期性整合,最终由网络目录机构投票决定并生成共识文件(明文)。如图4所示。

步骤2:目录服务器端操作。针对上述流程在目录服务器通过投票筛选得到了共识文件信息后,采用AES加密的方式写入。

如图5所示,采用AES加密的具体流程为:

首先,找到系统中writeConsensus()函数,这里泛指写入函数。该写入函数的写入路径为/usr/local/var/lib/tor/下面的cached-microdesc-consensus文件。

然后,使用WriteConsenByAES()函数代替writeConsensus()函数,对共识文件加密。先截取待写入文件流,并将其内容进行分块操作,每一块数据长度为128bit。如果结尾不足128bit则用数字0填充,在后续操作中,均以矩阵中每个元素来进行变化和运算。

之后,采用将每一块分别进行加密并拼接的方式。第一步:将每块128bit明文按照以8bit为基本单位分成16块,按照从上到下、从左到右的顺序填写到一个4×4的矩阵之中。第二步:对该矩阵进行轮密钥加,具体为:用密钥矩阵与明文矩阵对应位置逐一做异或运算。第三步:字节代替,使用一个S盒,S盒是一个16×16的固定矩阵,其非线性置换为:输入的列的每个元素用来指定S盒的地址:前4位指定S盒的行,后4位指定S盒的列。第四步:行位移。状态阵列的4个行循环以字节为基本单位进行左移,而每行循环左移的偏移量是由明文分组的大小和所在行数共同确定,即列数N

如图3所示,将上述步骤进行拼接。首先,使用初始密钥对明文矩阵做一次轮密钥加。然后进入循环阶段,依次进行字节代替、行位移、列混合和轮密钥加。此时,根据判断是否为最后一轮,如果不是,则继续进行“字节代替-行位移-列混合-轮密钥加”操作。当最后一轮执行完成后,进入“字节代替-行位移-轮密钥加”操作,最后生成密文块。

在此过程中,第1次轮密钥加使用的是用户输入的密钥。后续各轮次的轮密钥加以及最后一次轮密钥加,使用的是密钥扩展函数KeyExpansion(),根据初始密钥生成的n组新密钥。

然后,形成密文块,完成对文件流的加密。将密文块按顺序进行拼接,生成密文文件。可以将文件保存到/usr/local/var/lib/tor/中,并命名为cached-microdesc-consensus。

若想查看明文共识文件,通过函数内部的密钥进行解密读取,此处使用函数ReadConseByAESKey()。其中,解密的具体过程和加密完全类似。

最后,提取关键信息。

步骤3:中间节点端操作:对于节点服务器获取共识文件Consensus。

Tor传统做法是:中间节点使用networkstatus_get_laest_consensus()获取最新的共识文件,或者通过networkstatus_get_live_consensus()获取现在有效的共识文件,然后将收到的信息写入本地文件。

而本方法获取的是目录服务器的密文文件,首先将密文共识文件写入本地,在使用时,只需要用保存在本地的密钥进行解密。如图6所示。

步骤4:密钥存储。将密钥写入源码中并以注释的方式隐藏,管理员用户只需要记住该密钥的绝对路径,即可查看该密钥。

由于该加密算法属于对称加密,只需要保存一个密钥就可以完成加密和解密。同时,又兼顾密钥的存储和使用的安全性和方便性。此种方式,使得原本应该明文输出的共识文件变成了密文输出,并且在需要使用明文共识文件的时候进行解密,不会影响系统整体功能。同时,攻击者即使入侵服务器获取了共识文件但是无法进行解密。虽然密钥存在于函数的内部,但是对于庞大且复杂的目录结构和源码程序,如果不了解密钥存放位置的系统管理者,其他人将无法在短时间找出密钥准确位置。

相关技术
  • 一种针对洋葱网络系统共识文件的加密方法
  • 一种针对洋葱网络系统共识文件的加密方法
技术分类

06120112232208