摘 要 基于分布式計算的暴力破解密碼系統(tǒng)長久以來承擔著檢驗密碼強度和安全性的重要任務,但隨著系統(tǒng)規(guī)模的進一步加大以及密碼強度的不斷升級,系統(tǒng)出現(xiàn)一定程度的效率下降問題。本文的主要工作是對傳統(tǒng)分布式暴力破解密碼系統(tǒng)流程進行完善和創(chuàng)新,以便達到克服以上問題的目的。
【關鍵詞】暴力破解 密碼 分布式系統(tǒng)
1 引言
隨著社會經濟的發(fā)展,特別是Internet的發(fā)展,社會信息化進程越來越快,互聯(lián)網絡環(huán)境下的信息安全由于涉及到國家政治、經濟、軍事等領域的安全和社會穩(wěn)定,已日益成為國家安全領域中的重中之重,2014年中央網絡安全和信息化領導小組宣布成立以及2016年《中華人民共和國網絡安全法》的頒布已經充分說明了網絡安全的重要性。而密碼技術作為信息安全領域中的重要內容,它的安全性是不言而喻。而暴力破解密碼系統(tǒng)是測試密碼安全性的重要方法,所以提高暴力破解密碼的效率便是人們一直追求的目標。但是隨著計算規(guī)模的不斷增大,傳統(tǒng)的分布式密碼暴力破解系統(tǒng)出現(xiàn)各種各樣的問題。本文在傳統(tǒng)的分布式密碼暴力破解流程的基礎上進行了改進和研究,期望能有效的解決上述問題。
2 分布式計算和暴力破解簡介
2.1 分布式計算
與分布式計算相對的是集中式計算。集中式計算的代表就是世界各國所研制的超級計算機,而分布式計算就是利用散布在世界各地的連接在Internet上的微型計算機以達到可以媲美超級計算機計算能力的一種計算方法。在計算機剛出現(xiàn)的早期,因為硬件資源的昂貴,計算機經歷了從早期的一臺服務器、多臺客戶機的C/S架構逐步發(fā)展到現(xiàn)在的分布式計算,同時也出現(xiàn)了以Hadoop為代表的優(yōu)秀的分布式計算平臺。
所謂的分布式計算就是把需要一個龐大計算量的任務按一定的規(guī)則分解成一個個彼此獨立的小型子任務,然后將這些子任務分發(fā)到分布式平臺上的節(jié)點計算機進行相應的計算以及處理,最后將這些節(jié)點計算機的計算結果進行匯總處理以得到最終的結果。
分布式計算有如下優(yōu)點:
(1)數(shù)據(jù)處理能力媲美超級計算機。
(2)強大的容錯能力,一個節(jié)點失效和出錯,可以迅速由另一個節(jié)點取代。
(3)便于管理,分布式節(jié)點的加入和退出非常方便。
(4)在所有節(jié)點上實現(xiàn)平衡負載,得以把任務放到最適合處理它的節(jié)點上進行處理。
正是具有了這些優(yōu)點,分布式計算以其強大的計算能力和具有一定彈性機制的擴展性被視為新一代互聯(lián)網發(fā)展的基礎和趨勢。
2.2 暴力破解
暴力破解(Brute Force Attack)就是通過搜索密鑰空間中所有密鑰的方法來找到正確的密鑰以達到破解密碼的目的。
暴力破解的循環(huán)工作流程如圖1所示:
(1)從密鑰空間中提取一個密鑰;
(2)將此密鑰送入破解程序進行驗證;
(3)判斷此密鑰是否正確;
(4)如果正確則運算結束,否則返回第一步。
從理論上說,暴力破解一定會奏效,但在現(xiàn)實生活中暴力破解所需要的金錢成本和時間成本非常巨大。但是當暴力破解結合了分布式計算的強大計算能力,暴力破解就顯示出了它巨大的優(yōu)勢。
3 系統(tǒng)架構以及流程圖
3.1 系統(tǒng)架構
暴力破解系統(tǒng)的實現(xiàn)一般采用Server/Client模式,我們借鑒經典的C/S架構,并在此基礎上做出一點改進:增加一個控制端(Controller)的角色,改進后的C/S架構如圖2所示。
服務器端主要負責任務的分塊、分發(fā)以及計算結果的接收等;控制端主要負責客戶端的注冊、向服務器端提供客戶端節(jié)點信息等;客戶端主要負責任務塊的計算。
3.2 服務器端(Server)
服務器端的主要功能包括任務的分塊、任務塊的狀態(tài)跟蹤、任務的分發(fā)以及計算結果的接收。并且可以隨時暫停和取消客戶端的任務。
3.2.1 任務分塊
服務器端內部集成了任務分片算法,可以將一個或者多個大任務分成多個小型子任務。任務塊的劃分與具體的密碼算法有關。
3.2.2 任務塊狀態(tài)跟蹤
在給客戶端分發(fā)任務塊前,服務器需要跟蹤任務塊的狀態(tài)。我們把任務塊狀態(tài)分成三種情況:
(1)尚未分配給客戶端;
(2)已經分配給客戶端,但尚未返回結果;
(3)計算完畢。
我們可以根據(jù)不同的任務設定不同的超時時間,在規(guī)定的時間內仍未返回結果的任務塊將被賦予更高的優(yōu)先級。
3.2.3 任務分發(fā)
服務器端把任務塊狀態(tài)是A或者B的任務塊分發(fā)給客戶端,我們可以根據(jù)任務的精密程度將任務塊分發(fā)到兩個或者多個客戶端。
3.2.4 結果接收
當服務器接收到兩個(或者多個)客戶端上傳的計算結果后進行結果比對,將認定計算錯誤的結果丟棄,同時將計算錯誤的客戶端加入黑名單,以防止惡意節(jié)點的破壞。如果計算結果正確,則停止任務分發(fā),任務成功結束。
3.3 控制端(Controler)
控制端是整個計算任務的協(xié)調者,負責協(xié)同一致性等處理,它的主要工作包括:負責客戶端節(jié)點的注冊、把客戶端節(jié)點信息介紹給服務器端,與客戶端節(jié)點保持心跳連接。
(1)客戶端節(jié)點的注冊:當客戶端節(jié)點加入到系統(tǒng)中時首先在控制端進行登記注冊,之后便與客戶端節(jié)點保持松散耦合的關系,當客戶端節(jié)點退出或者被加入黑名單之后都會在控制端進行登記。
(2)把客戶端節(jié)點信息介紹給服務器端:當服務器節(jié)點需要分配新的計算任務時便去控制端查詢可用的客戶端節(jié)點,然后進行任務的分配。
(3)與客戶端節(jié)點保持心跳連接:在一定的心跳間隔時間內與客戶端節(jié)點進行一次通信,如果客戶端節(jié)點死掉則剔除它,以便每次服務器端查詢客戶端節(jié)點的時候都能得到最新的可以調用的客戶端信息。
3.4 客戶端(Client)
客戶端作為分布式計算的運算節(jié)點執(zhí)行真正的破解任務,是計算任務的真正承擔者。
客戶端節(jié)點在控制端上進行注冊,之后服務器為每個注冊成功的節(jié)點分配一個已知結果的測試任務塊:如果客戶端節(jié)點計算正確則為它們分配真正需要計算的任務塊和解密算法進行計算;如果客戶端節(jié)點沒有返回正確的計算結果,則將它加入黑名單。客戶端節(jié)點完成計算任務后向服務器端返回任務結果——同樣測試返回結果的正確性來決定是否繼續(xù)給客戶端節(jié)點分發(fā)任務還是將其加入黑名單。如果計算的過程中客戶端節(jié)點發(fā)生故障,控制端則在規(guī)定的心跳間隔時間內與客戶端節(jié)點進行一次通信,如果客戶端仍然沒有回應,控制端就會刪除此客戶端節(jié)點信息。上述執(zhí)行過程循環(huán)往復一直進行下去直到計算任務的完成。
4 結論
分布式計算以其強大的計算能力被廣泛應用于科學研究以及生產生活的各個方面。本文在傳統(tǒng)的分布式暴力破解密碼的計算架構基礎上進行了改進和創(chuàng)新,以期望獲得更好的并發(fā)性和效率,為暴力破解密碼系統(tǒng)的研究提供了一個新的思路。本文的內容只是一個開始,接下來的計劃是在局域網中甚至互聯(lián)網中利用這一思想進行驗證分析。
參考文獻
[1]付安民,張玉清.對稱密碼算法暴力破解的研究現(xiàn)狀和進展[A].2006.
[2]姜峰.基于分布式GPU密碼破譯平臺的研究與實現(xiàn)[D].北京郵電大學,2013.
[3]蔣秉天.基于分布式計算的密碼恢復系統(tǒng)研究[D].上海交通大學,2010.
[4]張麗麗,張玉清.基于分布式計算的RC4加密算法的暴力破解[J].計算機工程與科學,2008(07):15-17+20.
[5]蔣秉天.基于分布式計算的密碼恢復系統(tǒng)研究[D].上海交通大學,2010.
作者簡介
陳萬里(1989-),男,河南省安陽市人。現(xiàn)為貴州大學計算機科學與技術學院在讀研究生。主要研究方向為網絡與信息安全。
吳紹華(1989-),男,黑龍江省綏化市人?,F(xiàn)為貴州大學計算機科學與技術學院在讀研究生。主要研究方向為數(shù)據(jù)挖掘,高維數(shù)據(jù)聚類。
作者單位
貴州大學計算機科學與技術學院 貴州省貴陽市 550025