欢迎来到南阳创想网络有限公司!

基于社会网络特性的双混沌互反馈加密算法研究

发布时间:2019-06-12 26
来源:大数据发展部                               

摘 要:社会网络的数据获取已经成为社会网络分析的重要基石,虽然大多数社会媒体提供给开发者官方接口以供数据获取,但是在调用频次、权限、内容等方面都有严格的限制,难以获取全面的数据。因此,基于用户模拟登录的数据获取方法显得尤为重要,然而目前大多数社会媒体的登录过程存在较大的安全隐患,其登录密码均采用明文传输,严重威胁到用户的隐私安全。本文详细分析了Twitter登录过程中客户端与服务器间的交互过程,并且在流量层面解析POST请求时,发现Twitter的登录密码采用明文传输。为此,提出一种基于社会网络特性的双混沌互反馈加密算法。该算法利用登录用户的ID、创建时间、关注数作为加密函数的初始值与参数,并通过Logistic映射和Tent映射两个混沌系统交互式运算,得出密钥序列。由于输入参数的特殊性,使得密文具有不可预测性。实验表明该算法取得了较好的加密和解密效果,同时加密与解密均处于毫秒级,可以做到用户的无感操作。此外,该算法拥有初始条件极度敏感、密钥空间大、加密强度高等特点。该算法能有效地防止攻击者使用相图、穷举、统计等方法进行密码破解,具有广阔的应用前景。

关键词:社会网络;模拟登录;混沌加密


1  引言

随着Web2.0技术的发展与普及,社会网络已经成为人们生活中必不可少的公共平台。截止到2015年3月份,Facebook和Twitter已经拥有了超过14.15亿和2.88亿的月活跃用户[1]。此外,截止到2015年4月份,作为中国最具影响力之一的社会网络平台,新浪微博拥有1.76亿的月活跃用户[2]。在社会网络中,信息数量随着用户数量的与日俱增呈现指数级的增长,海量的社会网络数据使得基于大数据的社会网络分析成为可能。社会网络的数据获取已经成为社会网络分析的重要基石。

虽然大多数社会媒体提供给开发者官方接口以供数据获取,但是在调用频次、权限、内容等方面都有严格的限制,难以获取全面的数据。以作为拥有上亿用户的全球第二大社交网站Twitter为例,目前世界上获取Twitter数据主要采用的方法是调用应用程序编程接口 (Application Programming Interface, API),该接口是面向第三方合作伙伴的开放平台,开发人员可根据需求调用相应接口程序。但由于官方的限制,无法保证数据获取的时效性和完整性。因此,基于用户模拟登录的数据获取方法应运而生,也显得尤为重要,然而目前大多数社会媒体的登录过程存在较大的安全隐患。其登录密码均采用明文传输,严重威胁到用户的隐私安全。

本文通过对流量层面的分析发现,在用户登录Twitter过程中,用户名、密码均为明文传输。尽管Twitter采用HTTPS的加密传输协议,但当用户受到网络攻击或中间人攻击 (Man-in-the-Middle Attack, MITM) 时,仍然会严重威胁Twitter账户的隐私安全。

结合上述问题,本文的主要贡献如下:

l  本文详细分析了Twitter登录过程中客户端与服务器间的交互过程;

l  在流量层面解析POST请求时,本文发现Twitter的登录密码采用明文传输;

l  本文提出一种基于社会网络特性的双混沌互反馈加密算法。该算法利用登录用户的ID、创建时间、关注数作为加密函数的初始值与参数,并通过Logistic映射和Tent映射两个混沌系统交互式运算得出密钥序列;

l  实验表明上述算法取得了较好的加密和解密效果,同时加密与解密均处于毫秒级,可以做到用户的无感操作。此外,上述算法拥有初始条件极度敏感、密钥空间大、加密强度高等特点。

本文组织结构如下:第2节主要介绍了基于混沌理论的加密算法方面的相关工作,第3节分析了Twitter API的限制、Twitter登录过程中客户端与服务器间的交互过程,第4节介绍了基于社会网络特性的双混沌互反馈加密算法,第5节从多角度的实验,讨论了加密算法的安全性、性能以及特点,第6节对全文进行了总结。

2  相关工作

2.1    基于混沌理论的加密算法相关研究

国内外许多研究者在信息安全与保密研究方面做出了重要的贡献。自从1977年美国国家数据加密标准DES (Data Encryption Standard) 正式公布实施后,密码学领域的相关研究在全世界掀起了一波高潮,此后又相继出现了新的密码加密算法,例如FEAL、SAFER、RC5、IDEA等。网络信息传输加密需要具备安全、快速、实时等指标。1989年英国数学家Matthews[3]分析了Logistic混沌映射,将其作为密钥序列生成器,并逐步对其进行改进,最终提出了一种基于变形Logistic映射的混沌流密码方案。同年,Wheeler[4]指出混沌序列在计算机上实现时,将产生不可预测的、短周期的极限环。此后,大量的混沌密码算法以及相关的分析成果被提出,选用何种混沌系统能产生满足密码学中各项要求的混沌序列,是目前密码研究者有待解决的问题。Habutsu[5]等人提出了一种混沌加密系统,即加密时用Tent混沌映射的逆映射,对表示明文的初值做N次迭代,而在解密过程中则做N次Tent映射迭代;GC Wu[6]指出使用选择明文攻击可容易地对该加密系统解密,并且一直明文的复杂度为238;Baykasoglu A等人提出了将Logistic映射产生的浮点数序列转化为二值序列并加密明文,此外还指出将Logistic映射的参数和初始条件作为部分密钥[7, 8]

不过迄今为止,并没有一种成熟的可适用于社会网络登录过程的加密算法。本文拟提出一种结合Logistic映射和Tent映射方式的双混沌互反馈加密算法,对Twitter登录过程中的用户密码进行加密。本文首次采用社会网络中的特性作为算法的参数和初始条件对密码进行加密。由于不同用户的ID、创建时间、关注数量等信息也不尽相同,因此其加密过程不可重复,在确保解密正确性的同时也使得加密算法具有一定的灵活性。

3   Twitter登录过程分析

3.1    Twitter API接口

Twitter提供了非常完善的API接口,开发者可通过HTTP的GET方式进行调用,在需要提交信息或传送私密信息时则使用POST方法。根据用户特定的请求,Twitter会返回对应格式的数据,目前支持以下四种数据返回格式:XML、JSON、RSS、Atom,用户可在每次请求时使用不同的请求方式指定不同的返回结果。

当前Twitter API已更新至1.1版本,该平台共包括17个接口类型、109个调用函数,如:GET friends/ids为获取指定用户的粉丝ID列表;GET followers/ids为获取指定用户的关注ID列表;GET users/lookup为通过用户ID列表批量获取用户基本信息接口;GET statuses/show/:id为获取推文信息。

在Twitter逐步完善API接口的同时,其对API调用的限制力度也在渐渐加大,每小时只能请求一定的次数,即限制了采集速率,使得数据获取速率远小于需求速率。本文总结了部分接口的限制次数,如表1所示。

Table 1. Restrictions of Twitter API

表1. Twitter API接口限制

功能模块

针对每个用户

(次/15分钟)

针对每个应用

(次/15分钟)

获取用户收藏列表

15

15

获取粉丝列表

15

30

获取关注列表

15

30

获取用户关系

15

获取地理位置

15

基于Twitter搜索

180

450

获取推文信息

180

60

获取用户信息

180

60

可见,Twitter平台API的限制难以满足Twitter数据实时获取、全面获取的实际需求。因此,需要对Twitter登录过程中客户端与服务器间的交互过程进行研究,从而设计基于Twitter模拟用户登录方式的网络爬虫[9]

3.2    Twitter登录过程中客户端与服务器间的交互过程

由于Twitter API受到了官方严格的限制,为此需要采用模拟用户登录及访问的方式进行数据采集。该方法主要包括两个部分:模拟用户登录和数据获取,而其中的前者是后者执行的前提,也是整个数据采集的关键步骤,因此本文详细研究了在国内网络环境下,Twitter登录过程中客户端与服务器之间的交互过程,如图1所示。


如图1所示,具体交互过程如下:

1. 需要完成Twitter的预登录,通过GET方法请求访问https://twitter.com站点,当服务器接收到该请求后会根据当前的系统时间,经过MD5加密算法生成一个登录认证的Token字符串,目的是防止服务器受到CSRF攻击。之后该Token字符串会被添加到登录页面的HTML源码中,随着响应一同发送至客户端。

2. 通过网页解析技术对参杂在HTML源码中的Token字符串进行识别,文中采用的识别方法为Jsoup解析。Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常完备的API,可通过DOM、CSS以及类似于jQuery的操作方法来取出和操作数据。

3. 提交POST请求,将用户名、密码、Token字符串以及其他信息打包发送至服务器,需要发送的部分参数如下:

l  session[username_or_email]:XXXX //登录用户的用户名

l  session[password]:XXXX //登录用户的密码

l  remember_me:1 //是否记住密码

l  return_to_ssl:true //是否采用SSL数字证书

l  authenticity_token:112a4f2b64c7e8abf1a81ea971d2f15f56309f60 //Token字符串

当服务器获得POST参数后,首先会对用户名、密码进行确认,确认成功后还需验证Token字符串的正确性。最后服务器端会生成登录成功后的Cookie,并将登录用户的主页信息发送给客户端。

4. 将服务器返回的Cookie进行保存,用于后续GET请求访问Twitter的其他页面。

然而,在流量层面解析POST请求时,发现Twitter的登录密码采用明文传输。为了进一步证明Twitter采用明文密码进行传输,首先在局域网中设置了一台代理服务器,与网络中的客户端进行SSL交互。当有客户端有用户登录Twitter时,需要先将请求提交至代理,代理服务器会通过密钥将HTTPS进行解密,这时会看到网络流量中包含密码在内的全部明文用户信息。由此可得出结论,在用户访问Twitter时,Twitter除了对流量采用HTTPS协议传输外,并没有对用户密码进行加密处理。尽管Twitter采用HTTPS的加密传输协议,但当用户受到网络攻击或MITM时,仍然会严重威胁用户的隐私安全。因此,如何利用社会网络的特性,对用户登录密码进行加密成为本文的一个研究重点。

4   基于社会网络特性的双混沌互反馈加密算法

4.1    稳定特性指标以及混沌动力系统分析

由于在用户在登录Twitter过程中,需要考虑加密的时效性以及字符串解密后的正确性,因此在选取密钥时要保证其在登录过程中不可变,否则会造成解密失效。而通过对社会网络的各项指标分析发现,社会网络中符合稳定特性的指标包括:用户创建时间、用户ID以及用户关注数等。

为实现Logistic映射、Tent映射产生混沌序列对明文密码进行双混沌互反馈加密,由Logistic映射开始产生混沌序列,将Logistic的运算结果输入Tent映射中作为初始值,而后再将Tent产生的结果回馈到Logistic,如此循环最终产生一个加密序列。

选取Logistic映射和Tent映射的原因是因为Logistic映射是一种非常简单却被广泛研究的混沌动力系统,其定义如下:

                                                  (1)

  对于离散动力系统Logistic映射,根据其参数值的设定进行如下说明:

l  当0<x≤1时,由f(x)=μ(1-x)所决定的离散动力系统的动力学形态十分简单,除了不动点x1=0外,再也没有其它的周期点,且x1为吸引不动点。

l  当0<μ≤3.5699456…时,系统的动力学形态也比较简单,不动点0、1-1/μ为仅有的两个周期点,且0是排斥不动点。

l  当3≤μ≤4时,系统的动力学形态十分复杂,系统由倍周期通向混沌。

l  μ>4,系统的动力学形态更加复杂。

此外,Tent映射又称为帐篷映射,其动力学方程为:

                       (2)

文献[8]中分析了Tent映射具有混沌特性,同Logistic映射一样,通过控制参数λ取不同的值代入表达式可得当λ[1.4, 2]时,Tent映射进入完全混沌状态。综上所述,Tent映射易于实现,且复杂,适合作为字符串加密的伪随机序列生成器。

4.2    基于社会网络特性的双混沌互反馈加密算法设计

根据上述分析,本文提出了一种基于社会网络特性的双混沌互反馈加密算法,如表2所示:

Table 2. Encryption algorithm of double chaos with mutual feedback based on the features of social network

表2. 基于社会网络特性的双混沌互反馈加密算法

算法 1  基于社会网络特性的双混沌互反馈加密算法

1: 输入     p: 待加密的明文密码

2:         c: 用户创建时间

3:         i: 用户ID

4:         f: 用户关注数

5: 输出     e: 加密后的字符串

6: 开始

7:  toASC(p)àchart1[]; //将明文密码转换为二进制ASCII编码

8:  normal(c, i, f)à{ζc, ζi, ζf }; //对三个初始参数分别进行归一化

9:  int i = 0;

10:  List list = null;

11:  while i<ζi

12:      if i==0

13:          xLi =ζf ;

14:      else

15:          xLi =list.last();

16:      end if

17:          xL(i+1)= ζf 。xLi (1- xLi); //Logistic映射函数

18:          list.set(xL(i+1));

19:      if  0< xL(i+1)≤0.5

20:          xT(i+1)= μ. xTi ; //Tent映射函数

21:      else

22:          xT(i+1)= μ.(1- xTi) ; //Tent映射函数

23:      end if

24:          list.set(xH(i+1));

25:      i++;

26:  end while

27:  for each  Vjlist.sub(2ζi -chart1.length(), 2ζi)

28:      chart2[]=Vj ;

29:  end for

30:  chart3=XOR(chart1, chart2); //将加密序列与明文字符串进行异或运算

31:  Base64(chart3)àencryption; //对异或结果进行Base64编码,生成密文

表2所示的基于社会网络特性的双混沌互反馈加密算法步骤如下所示:

1)  首先,读取明文密码字符串,将该字符串转换为二进制的ASCII编码。

2)  其次,完成Logistic映射中第一个参数x的初始化。本文将用户关注数进行归一化处理,通过min-max方法转化为0到1之间的数值,并将该值x作为Logistic映射函数的初始值传入。

3)  确定两个参数初始值,将用户创建时间转化为时间戳形式的标准格式,使其符合参数μ的取值范围并输入Logistic映射函数;将用户ID进行对数变换,作为迭代次数i输入。

4)  运行混沌发生器Logistic,计算出结果x1,并将x1作为Tent的初始值传入,经过运算生成第二次迭代Logistic函数的初值x1

5)  循环步骤3的过程,直至到达第i次。

6)  记录最近的n个计算结果,如:xL(i-n) , xH(i-n) ,…, xLi, xHi。这里的n表示明文密码转换为二进制ASCII编码后的位数。

最后,将加密序列与转换后的二进制密码进行异或运算并采用Base64编码输出,从而完成整个加密。

4.3    算法复杂度分析

从表2中不难看出,该算法是将两个混沌系统进行融合,采用互反馈的方式交替产生加密序列,这种方式的优势在于具有较大的密钥空间,以及较高的加密强度。经过计算,系统的时间复杂度为O(n),在算法的实际应用中不会影响Twitter登录时的用户体验。

5   实验

5.1    加密仿真分析

为了验证上述加密算法的有效性,本文根据社会网络中三类特性指标对密码进行加密。这三类特性指标分别为用户ID、用户创建时间以及用户关注数,其中分别对应Logistic映射函数中的迭代次数i、参数μx1。利用min-max归一化方法与对数变换等手段对三类数据进行规范化,使50<i≤100、3.596≤μ≤4、0< x1<1。传统的混沌序列都是由确定的方程产生,理论上攻击者可以通过相空间重构的方法对加密信息进行破译。而采用Twitter的用户指标作为Logistic映射的参数和初始值,可以致使不同用户每次登录过程中加密方程的不确定性。

本实验通过对几组真实账户的密码进行加密,并根据用户的关注数、创建时间、ID号分别计算初始值、参数和迭代次数。具体数据如表3所示:

Table 3. Initial value and parameters generation

表3. 初始值与参数生成

用户ID

创建时间

关注数

迭代次数i

参数μ

初始值x1

135386260

2010-04-21 12:41:42

1582

86

3.876

0.64102

70078033

2009-08-30 15:59:12

457

81

3.992

0.38597

14934161

2013-08-16 20:42:59

3164

56

3.625

0.82646

通过算法得到对应的加密Base64编码如表4所示:

Table 4. Results of encryption and decryption

表4. 加密与解密结果

明文密码

加密后密文

解密后明文

jiangjingchi

YwNjEwEwNTExUwAxMTMxMzAyIwNTA1MTMwNTA0cwOTA5cwA1MTMwAwMDMwMQ==

jiangjingchi

yichengqi

AxAwExNTEyMDAwOTE1MwNzAxMDcwNzAxMDIwNzE0UwMTE0M=

yichengqi

biwenchong

IwMjEzMTUwMzA0UxMTE1kwMTA2cwNTA5kxMTA5MwNDAwMDIwMjAx

biwenchong


5.2    密钥空间分析

上述算法共有两个参数以及一个初始值,其中参数μλ取值范围分别为3.5699456≤μ≤4,1.4≤λ≤2。对于Logistic映射的初始值x1,需符合0<x1<1范围。计算参数空间大小为0.258×1032,初始值空间大小为1×1016,因此算法总的密钥空间为0.258×1048

该算法与同类算法相比,在一定程度上增大了密钥空间,同时也具备了良好的运行效率。由于Twitter的登录过程往往最多只需要消耗几秒钟时间,如果攻击者在几秒钟之内不能破译登录密码,便会大大影响Twitter用户真实体验,使用户有感。因此该算法的密钥空间可以完全满足登录过程中的密码加密需求。

5.3    初值敏感性分析

文献[10]中分析了Logistic映射处于混沌状态时初始值变化0.0000001,控制参数和迭代次数均不变的情况下,经Logistic迭代大概18次时,两个序列已产生很大的差异;本算法中取x1=0.64102、x1'=0.6410201,当算法迭代至16次时,序列产生了极大的差异。由此可以观测出本算法对初始值也具有敏感性,且敏感性比文献[10]算法效果要好,如图2所示为文献算法与本算法随迭代次数增加的序列差对比。


Figure 2. Comparison of sequence difference

图2. 序列差对比图

上述结果已经表明,本算法对于初始值具有极强的敏感性,且具有较大的密钥空间,因此足以说明本文所设计的系统具备抗穷举攻击的能力。

5.4    加密解密时间

本文对算法的加密时间以及解密时间进行了多组实验,由于算法主要针对的对象为Twitter密码,而Twitter密码规定由英文和数字组成,长度则不可少于6个字节。按照以上规则,实验随机选取长度从6个字节至30个字节不等的24个字符串集合,根据本文算法对其进行加密解密,并将两个过程进行时间统计。如图3所示,绿色曲线代表字符串加密时间;粉色曲线代表解密时间;剩余两条直线分别代表加密和解密曲线的线性拟合。


Figure 3. Inspection of timeliness between encryption and decryption

图3. 加密与解密时效性检验

从图3中我们可以观测出,随着加密字符集长度的增加,加密与解密的过程所消耗的时间会逐步变长,但始终保持着线性平稳的增长态势,并不会出现时间的陡增。由此也证明了本文算法的可用性以及时效性。

5.5    抗相图攻击

本文的双混沌互反馈加密系统相图如图4所示。


Figure 4. Phase diagram analysis of encryption algorithm

图4. 加密算法相图分析

在某些未经设计的加密混沌系统中,其产生混沌序列的方程始终确定,在相图中体现为单一的曲线或分段直线,很容易受到攻击。而本文设计的加密系统由于初始输入和参数值只与Twitter用户本身的属性相关,而且会随时间变化而变化,因此混沌加密序列产生相图是无规律的,攻击者很难从相图空间重构或统计分析方面实现密码破解。


6   结束语

本文详细分析了Twitter登录中客户端与服务器的交互过程,并基于此设计了一套Twitter网页解析爬虫。在流量层面解析post请求时,发现Twitter的登录密码均采用明文传输,严重威胁到用户的隐私安全。为此,提出一种结合社会网络特点的双混沌互反馈的数据加密算法,对明文密码进行加密传输。算法利用登录用户的ID、创建时间、关注数作为加密函数的初始值与参数,并通过Logistic映射和Tent映射两个混沌系统交互式运算,得出密钥序列。由于输入参数的特殊性,会根据不同用户随着时间的变化而变化,因此使得密文具有不可预测性。通过以上对算法的仿真分析可知,该算法取得了较好的加密和解密效果;通过细微的改变参数可使得混沌系统对初始条件极其敏感。其次本文的加密算法主要应用在用户登录Twitter过程中,因此实验特别对算法的时效性进行了统计,结果表明加密与解密均处于毫秒级,可以做到用户的无感操作。最后对该算法进行安全性分析,可知其密钥空间较大且加密强度高,能有效的防止攻击者使用相图、穷举、统计进行密码破解,是比较安全的加密方法。

参考文献:

[1].    Statista, “Leading social networks worldwide as of March 2015, ranked by number of active users (in millions)” [EB/OL]. Available: http://www.statista.com/statistics/272014/global-social-networks-ranked-by-number-of-users/.

[2].    Craig S, “By the Numbers: 40 Amazing Weibo Statistics” [EB/OL]. Available: http://expandedramblings.com/index.php/weibo-user-statistics/.

[3].    Matthews R. On the derivation of a “chaotic” encryption algorithm [J]. Cryptologia, 1989, 13(1): 29-42.

[4].    Wheeler D D. Problems with chaotic cryptosystems [J]. Cryptologia, 1989, 13: 243-250.

[5].    Zhang G, Liu Q. A novel image encryption method based on total shuffling scheme [J]. Optics Communications, 2011, 284(12): 2775-2780.

[6].    Wu G C, Baleanu D. Discrete fractional logistic map and its chaos [J]. Nonlinear Dynamics, 2014, 75(1-2): 283-287.

[7].    Baykasoglu A. Design optimization with chaos embedded great deluge algorithm [J]. Applied Soft Computing, 2012, 12(3): 1055-1067.

[8].    Liu L, Yang P, Zhang J, et al. Compressive Sensing with Tent Chaotic Sequence [J]. Sensors & Transducers, 2014, 165(2): 1726-5479.

[9].    Jingchi J, Chengqi Y, Yuanyuan B, et al. Online Community Perceiving Method on Social Network[C]//1st International Workshop on Cloud Computing and Information Security. Atlantis Press, 2013.

[10].  Malik S. A Novel Key-Based Transposition Scheme for Text Encryption[C]//Frontiers of Information Technology (FIT), IEEE, 2011: 201-205.