摘 要:社會網絡的數據獲取已經成為社會網絡分析的重要基石,雖然大多數社會媒體提供給開發者官方接口以供數據獲取,但是在調用頻次、權限、內容等方面都有嚴格的限制,難以獲取全面的數據。因此,基于用戶模擬登錄的數據獲取方法顯得尤為重要,然而目前大多數社會媒體的登錄過程存在較大的安全隱患,其登錄密碼均采用明文傳輸,嚴重威脅到用戶的隱私安全。本文詳細分析了Twitter登錄過程中客戶端與服務器間的交互過程,并且在流量層面解析POST請求時,發現Twitter的登錄密碼采用明文傳輸。為此,提出一種基于社會網絡特性的雙混沌互反饋加密算法。該算法利用登錄用戶的ID、創建時間、關注數作為加密函數的初始值與參數,并通過Logistic映射和Tent映射兩個混沌系統交互式運算,得出密鑰序列。由于輸入參數的特殊性,使得密文具有不可預測性。實驗表明該算法取得了較好的加密和解密效果,同時加密與解密均處于毫秒級,可以做到用戶的無感操作。此外,該算法擁有初始條件極度敏感、密鑰空間大、加密強度高等特點。該算法能有效地防止攻擊者使用相圖、窮舉、統計等方法進行密碼破解,具有廣闊的應用前景。
關鍵詞:社會網絡;模擬登錄;混沌加密
隨著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節對全文進行了總結。
國內外許多研究者在信息安全與保密研究方面做出了重要的貢獻。自從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、創建時間、關注數量等信息也不盡相同,因此其加密過程不可重復,在確保解密正確性的同時也使得加密算法具有一定的靈活性。
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]。
由于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時,仍然會嚴重威脅用戶的隱私安全。因此,如何利用社會網絡的特性,對用戶登錄密碼進行加密成為本文的一個研究重點。
由于在用戶在登錄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映射易于實現,且復雜,適合作為字符串加密的偽隨機序列生成器。
根據上述分析,本文提出了一種基于社會網絡特性的雙混沌互反饋加密算法,如表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 Vj∈list.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編碼輸出,從而完成整個加密。
從表2中不難看出,該算法是將兩個混沌系統進行融合,采用互反饋的方式交替產生加密序列,這種方式的優勢在于具有較大的密鑰空間,以及較高的加密強度。經過計算,系統的時間復雜度為O(n),在算法的實際應用中不會影響Twitter登錄時的用戶體驗。
為了驗證上述加密算法的有效性,本文根據社會網絡中三類特性指標對密碼進行加密。這三類特性指標分別為用戶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 |
上述算法共有兩個參數以及一個初始值,其中參數μ和λ取值范圍分別為3.5699456≤μ≤4,1.4≤λ≤2。對于Logistic映射的初始值x1,需符合0<x1<1范圍。計算參數空間大小為0.258×1032,初始值空間大小為1×1016,因此算法總的密鑰空間為0.258×1048。
該算法與同類算法相比,在一定程度上增大了密鑰空間,同時也具備了良好的運行效率。由于Twitter的登錄過程往往最多只需要消耗幾秒鐘時間,如果攻擊者在幾秒鐘之內不能破譯登錄密碼,便會大大影響Twitter用戶真實體驗,使用戶有感。因此該算法的密鑰空間可以完全滿足登錄過程中的密碼加密需求。
文獻[10]中分析了Logistic映射處于混沌狀態時初始值變化0.0000001,控制參數和迭代次數均不變的情況下,經Logistic迭代大概18次時,兩個序列已產生很大的差異;本算法中取x1=0.64102、x1'=0.6410201,當算法迭代至16次時,序列產生了極大的差異。由此可以觀測出本算法對初始值也具有敏感性,且敏感性比文獻[10]算法效果要好,如圖2所示為文獻算法與本算法隨迭代次數增加的序列差對比。
Figure 2. Comparison of sequence difference
圖2. 序列差對比圖
上述結果已經表明,本算法對于初始值具有極強的敏感性,且具有較大的密鑰空間,因此足以說明本文所設計的系統具備抗窮舉攻擊的能力。
本文對算法的加密時間以及解密時間進行了多組實驗,由于算法主要針對的對象為Twitter密碼,而Twitter密碼規定由英文和數字組成,長度則不可少于6個字節。按照以上規則,實驗隨機選取長度從6個字節至30個字節不等的24個字符串集合,根據本文算法對其進行加密解密,并將兩個過程進行時間統計。如圖3所示,綠色曲線代表字符串加密時間;粉色曲線代表解密時間;剩余兩條直線分別代表加密和解密曲線的線性擬合。
Figure 3. Inspection of timeliness between encryption and decryption
圖3. 加密與解密時效性檢驗
從圖3中我們可以觀測出,隨著加密字符集長度的增加,加密與解密的過程所消耗的時間會逐步變長,但始終保持著線性平穩的增長態勢,并不會出現時間的陡增。由此也證明了本文算法的可用性以及時效性。
本文的雙混沌互反饋加密系統相圖如圖4所示。
Figure 4. Phase diagram analysis of encryption algorithm
圖4. 加密算法相圖分析
在某些未經設計的加密混沌系統中,其產生混沌序列的方程始終確定,在相圖中體現為單一的曲線或分段直線,很容易受到攻擊。而本文設計的加密系統由于初始輸入和參數值只與Twitter用戶本身的屬性相關,而且會隨時間變化而變化,因此混沌加密序列產生相圖是無規律的,攻擊者很難從相圖空間重構或統計分析方面實現密碼破解。
本文詳細分析了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.
版權所有 南陽創想網絡有限公司
豫ICP備10206988號