国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MPI的并行密碼恢復框架

2014-07-03 08:16:06蔣璐瑾
計算機與現(xiàn)代化 2014年7期
關鍵詞:解密線程字典

蔣璐瑾

(湖南省婦幼保健院信息中心,湖南 長沙 410011)

0 引言

密碼是保護保密數(shù)據(jù)的重要手段,對稱密鑰加解密算法雖然安全度不高,但是具有使用方便的優(yōu)點。因此,對稱密鑰加解密方法至今仍然被廣泛使用。用戶可以將數(shù)據(jù)用一個密鑰進行處理,并把加密后的數(shù)據(jù)發(fā)送到接收端,在接收端用戶再用同樣的密鑰解密。如果加密數(shù)據(jù)在傳輸過程被獲取,解密方在不知道加密密鑰的情況下,需要通過幾百萬次、甚至幾百萬億次的嘗試才可能破解密碼,此種方法也稱為“暴力破解”。在沒有任何密碼破解提示的情況,使用當前的單機系統(tǒng),很難在有限時間內(nèi)破解一個加密文件。

基于字典(Dictionary-based Password Recovery)的密碼破解技術[1-4]通過嘗試一個密碼字典中的所有密碼來破解加密數(shù)據(jù)。密碼字典通常由熟悉的名稱、常用單詞、簡單字符序列等組成,針對由大量密碼組成的密碼字典,順序地測試每個密碼是一種很費時的工作。但是,此類計算具有天然的并行性,因為各個密碼的測試是相互獨立的,這些測試可以并行執(zhí)行。因此基于字典的密碼恢復技術易于被高性能計算機并行執(zhí)行。

一個大的密碼字典通常會提高破解密碼的可能性。但是,這也提高了計算復雜性?;谟脩裘艽a的可能概率分布,Weir[2]設計了一個自動生成字典的系統(tǒng)。基于特殊字符和數(shù)字出現(xiàn)的概率,該系統(tǒng)首先分析訓練密碼集合,從而決定生成密碼的不同語法的概率。此方法可以根據(jù)已知的密碼集合,分析出密碼生成的概率,從而派生出可能的未知密碼集合。生成的密碼集合以預測的可能性的概率從高到低排序。JtR[5]是一個開源的軟件包,該軟件包設計的目的是破解具有特殊格式的密碼,例如基于MD5和SHA-1的加密密碼。這個工具對于恢復忘記的密碼和弱密碼很有用。此外JtR還支持基于字典的攻擊。馬爾科夫鏈也可以用來進行數(shù)據(jù)解密[6],某些情況下性能優(yōu)于JtR和暴力破解。在實際應用過程中,馬爾科夫過程比JtR更有效果。馬爾科夫過程的另一個突出的優(yōu)點是它可以在一個確定的時間完成。

在高性能計算領域,有很多基于MPI(Message Passing Interface,消息傳遞接口)或OpenMPI的工具集[7-15]。Foster[16]首 先 提 出 了 網(wǎng) 格 計 算 技 術,MPICHG是一種基于網(wǎng)格的MPI實現(xiàn)?;诜植际教峁┑闹驹赣嬎阗Y源,Bernaschi[4]設計了一種面向松耦合系統(tǒng)結構的密碼破解框架。該框架把異構的節(jié)點分為不同類型節(jié)點,第1層是根節(jié)點,第2層和第3層是計算節(jié)點,不同層次的計算節(jié)點的功能不同。Pellicer[17]基于 BOINC 系統(tǒng)結構,設計了一種面向MD4算法的密碼搜索算法。

本文設計并實現(xiàn)了一個基于MPI的并行密碼恢復框架P2RF(Parallel Password Recovery Framework)。該框架把需要解密的數(shù)據(jù)和候選密鑰在任務級分布到不同的計算節(jié)點上,計算節(jié)點再根據(jù)節(jié)點計算資源配置的不同把計算分布到計算資源上。本文使用多種實驗測試集分析了P2RF的內(nèi)存占用和執(zhí)行時間情況,針對不同的測試集合分析了其任務分布和內(nèi)存占用的策略。

1 P2RF框架的設計與實現(xiàn)

1.1 框架設計

P2RF框架由3部分組成:根節(jié)點、計算節(jié)點、字典文件,如圖1所示。根節(jié)點和計算節(jié)點集合可以是獨立的物理節(jié)點也可以是網(wǎng)格上的虛擬節(jié)點,字典文件存儲在文件系統(tǒng)中,可以在本地磁盤中也可以在磁盤陣列中。

圖1 P2RF框架設計

加密數(shù)據(jù)破解的基本步驟為:

1)把密碼字典和加密數(shù)據(jù)分布到不同的節(jié)點;

2)每個節(jié)點根據(jù)分布到自己的密碼字典,解密加密數(shù)據(jù),通過CRC校驗判斷密碼的有效性;

3)如果發(fā)現(xiàn)正確的密碼,則程序停止并報告。

根節(jié)點的功能是從字典文件中讀取字典,然后派發(fā)到計算節(jié)點,根節(jié)點讀取是采用非阻塞讀取的方式,把字典文件中的數(shù)據(jù)分批讀入到根節(jié)點的主存中,根節(jié)點再把數(shù)據(jù)以非阻塞的方式發(fā)送到計算節(jié)點。因此,根節(jié)點開辟了多塊緩沖區(qū),這些緩沖區(qū)順序地被字典文件數(shù)據(jù)填滿,當數(shù)據(jù)被發(fā)送到計算節(jié)點后,緩沖區(qū)被標記為空閑,等待下次被字典文件數(shù)據(jù)填滿。

計算節(jié)點使用雙緩沖從根節(jié)點接收字典數(shù)據(jù),當緩沖數(shù)據(jù)到達后,把數(shù)據(jù)發(fā)派到計算線程或加速器上(這些都稱為可執(zhí)行部件Process Element,PE),這些可執(zhí)行部件根據(jù)收到的字典密鑰,進行對加密數(shù)據(jù)的解密操作,通過比較校驗和判斷該密鑰是否為正確的密鑰,當計算節(jié)點找到了正確的密鑰,就把正確的密鑰報告給根節(jié)點,此時,根節(jié)點發(fā)送結束通知信息給所有的計算節(jié)點。如果一個計算節(jié)點嘗試了所有的密鑰都沒有找到正確的密鑰,則發(fā)送請求給根節(jié)點,讓根節(jié)點發(fā)送新的字典給自己。如果一個計算節(jié)點在測試本次的密鑰集合過程中,收到了根節(jié)點已經(jīng)尋找到正確密鑰的通知,則該計算節(jié)點等待當前密鑰的判斷結束后,立即退出程序。

1.2 框架實現(xiàn)

圖2 P2RF框架根節(jié)點功能實現(xiàn)

框架包括2個部分:根節(jié)點的實現(xiàn)和計算節(jié)點的實現(xiàn),根節(jié)點和計算節(jié)點間的通信采用MPI通信庫實現(xiàn)。圖2給出了根節(jié)點的功能實現(xiàn),系統(tǒng)初始化后,根節(jié)點處于等待狀態(tài),等待計算節(jié)點發(fā)送的請求,如果計算節(jié)點計算完成當前需要處理的密鑰,則向根節(jié)點發(fā)出請求,如果根節(jié)點發(fā)現(xiàn)字典已經(jīng)處理完成,則說明當前字典沒有找到正確的密鑰,那么就向計算節(jié)點發(fā)送計算完成的指令,計算節(jié)點收到該指令后即退出;如果仍然有沒有處理完成的密鑰,則繼續(xù)發(fā)送密鑰給計算節(jié)點,計算節(jié)點收到密鑰后,解密這批密鑰的正確性;如果一個計算節(jié)點找到了正確的密鑰,則發(fā)通知給根節(jié)點,根節(jié)點收到通知后,會等待沒有完成的計算節(jié)點,當計算節(jié)點發(fā)送下一階段的請求后,則通知它計算已經(jīng)完成,找到了正確的密鑰。

1.3 任務調(diào)度模塊

在并行程序執(zhí)行過程中,任務調(diào)度的作用是控制循環(huán)并行結構的執(zhí)行。P2RF框架專門設計了調(diào)度模塊,可以通過調(diào)度去控制解密任務的調(diào)度和分配,從而適應不同的使用情況,提高性能。P2RF框架的調(diào)度模塊支持3種工作模式:靜態(tài)調(diào)度、動態(tài)調(diào)度和用戶指導的調(diào)度。

1)靜態(tài)調(diào)度。

系統(tǒng)默認采用的是靜態(tài)調(diào)度方式。靜態(tài)調(diào)度的關鍵輸入?yún)?shù)為chunk,表示一個線程執(zhí)行的默認子任務數(shù)目(需要解密的密碼空間),當需要執(zhí)行的子任務數(shù)目為 N,執(zhí)行計算的線程數(shù)為 M時,[0,chunk-1]的chunk次的迭代是在第1個線程上運行,[chunk,2*chunk-1]是在第2個線程上運行,依次類推。該任務分配過程是靜態(tài)確定的,不會因為運行的情況改變。如果chunk沒有指定,只是指定采用靜態(tài)類型,那么系統(tǒng)使用子任務數(shù)/線程數(shù)作為chunk的值,這樣每個線程執(zhí)行的子任務數(shù)目就是一樣的。

2)動態(tài)調(diào)度。

動態(tài)調(diào)度的子任務分配是依賴于運行狀態(tài)動態(tài)確定的,所以哪個線程上將會運行哪些子任務是無法像靜態(tài)調(diào)度一樣事先預料的。對于動態(tài)調(diào)度,沒有chunk參數(shù)的情況下,每個線程按先執(zhí)行完先分配的方式執(zhí)行Iter個子任務,比如,剛開始,線程1先啟動,那么會為線程1分配Iter個子任務開始去執(zhí)行,然后,可能線程2啟動了,那么為線程2分配Iter個子任務,假設這時候線程0和線程3沒有執(zhí)行完,而線程1的子任務已經(jīng)執(zhí)行完,可能會繼續(xù)為線程1分配Iter個子任務。所以,動態(tài)分配的結果是無法事先知道的,這些都是取決于系統(tǒng)的資源、線程的調(diào)度等。

3)用戶指導的調(diào)度。

用戶指導的調(diào)度類似于動態(tài)調(diào)度,但每次分配的子任務數(shù)目不同,開始分配的數(shù)目比較大,以后逐漸減小。chunk表示每次分配的子任務數(shù)目的最小值,由于每次分配的子任務數(shù)目會逐漸減少,當減少到chunk時,分配的子任務數(shù)目將不再減少。

運行過程中,程序員可以通過設置 P2RF_SCHED_TYPE環(huán)境變量,來配置任務調(diào)度策略,其語法是 export P2RF_SCHED_TYPE=“type,chunk”。其中,type 可以是 static、dynamic、guided,chunk 可以選擇設置為正整數(shù)。

2 實驗結果和分析

為了驗證P2RF框架的有效性,在表1所示平臺上測試了P2RF框架的性能,測試用例采用大小為16 kB的加密Word文檔。該平臺的每個計算節(jié)點有2個CPU,每個CPU有6個計算核心,每個計算節(jié)點有12個核。

表1 實驗平臺介紹

實驗結果如圖3所示,本實驗的調(diào)度策略是static,chunk=2048。從圖3可知,系統(tǒng)平均每秒的解密次數(shù)隨著計算節(jié)點數(shù)目的增加近似線性增長(根節(jié)點不參與計算過程),例如2個節(jié)點的時候,框架的解密能力是11850次/s,32個節(jié)點的時候,系統(tǒng)解密能力是365000次/s。可見系統(tǒng)的擴展性是線性可擴展的。

為了分析解密數(shù)據(jù)大小對解密速率的影響,在32節(jié)點的平臺上,使用不同大小的解密數(shù)據(jù)測試了P2RF的解密速率。實驗結果如圖4所示,當解密數(shù)據(jù)規(guī)模為128 kB時,解密速率可達68萬次,基本上為數(shù)據(jù)規(guī)模為256 kB時的2倍,這說明2點:首先,P2RF框架的并行效率較好,通信不會引入冗余的開銷;其次,P2RF選擇的串行解密算法的計算復雜度是O(N)量級的,其運算時間和被解密數(shù)據(jù)的大小正相關。但是,當數(shù)據(jù)規(guī)模逐漸變大時,例如在4096 kB時,解密速率只有2萬6千次,這是因為最后一級共享Cache不能容納所有線程的訪存工作集合,出現(xiàn)了一定的Cache失效,導致了系統(tǒng)性能的下降。

圖4 P2RF框架解密速率分析圖

3 結束語

本文設計了一個基于MPI的并行密碼恢復框架P2RF,該框架把需要解密的數(shù)據(jù)和候選密鑰在任務級分布到不同的計算節(jié)點上,計算節(jié)點再根據(jù)節(jié)點計算資源配置的不同把計算分布到計算資源上。實驗結果表明:P2RF的擴展性隨著節(jié)點的增多而線性擴展。

[1] Grama A,Karypis G,Kumar V,et al Introduction to Parallel Computing[M].2nd Edition.Addison Wesley,2003.

[2] Weir M,Aggarwal S,de Medeiros B,et al.Password cracking using probabilistic context-free grammars[C]//Proceedings of the 30th IEEE Symposium on Security and Privacy.2009:391-405.

[3] Dell’Amico M,Michiardi P,Roudier Y.Password strength:An empirical analysis[C]//Proceedings of the 29th IEEE Conference on Computer Communications.2010:1-9.

[4] Bernaschi M,Bisson M,Gabrielli E,et al.An architecture for distributed dictionary attacks to cryptosystems[J].Journal of Computers,2009,4(5):378-386.

[5] Peslyak A.John the Ripper[DB/OL].http://www.openwall.com/john/,2013-05-30.

[6] Marechal S.Advances in password cracking[J].Journal in Computer Virology,2008,4(1):73-81.

[7] 張華杰.基于MPI的并行算法的研究[D].金華:浙江師范大學,2010.

[8] Wilkinson B,Allen M.并行程序設計[M].陸鑫達,等譯.北京:機械工業(yè)出版社,2005.

[9] Li Kuan-Ching,Chang Hsun-Chang,Yang Chao-Tung,et al.On construction of a visualization toolkit for MPI parallel programs in cluster environments[C]//Proceedings of the 9th International Conference on Advanced Information Networking and Applications.2005,2:211-214.

[10] Panda D K,Ni L M.Special issue on workstation clusters and network-based computing[J].Journal of Parallel and Distributed Computing,1997,40(1):1-3.

[11] Desai N,Bradshaw R,Lusk A,et al.MPI cluster system software[C]//Proceedings of the 11th European PVM/MPI Users’Group Meeting.2004:277-286.

[12] 都志輝.高性能計算并行編程技術:MPI并行程序設計[M].北京:清華大學出版社,2001.

[13] Chong Yong-Kim,Hwang Kai.Performance analysis for four memory consistency models for multithreaded multiprocessors[J].IEEE Transactions on Parallel and Distributed Systems,1995,6(10):1085-1099.

[14] Hockney R W.The Science of Computer Benchmarking[Z].The Society for Industrial and Applied Mathematics,Philadelphia,1996.

[15] 李繼民,馬力,王風先.PC機群系統(tǒng)的關鍵技術[J].河北大學學報(自然科學版),2002,22(1):55-58.

[16] Foster I,Karonis N T.A grid-enabled MPI:Message passing in heterogeneous distributed computing systems[C]//Proceedings of the 1998 ACM/IEEE Conference on Supercomputing.1998.

[17] Pellicer S,Pan Yi,Guo Minyi.Distributed MD4 password hashing with grid computing package BOINC[C]//Proceedings of the 3rd International Conference on Grid and Cooperative Computing.2004:679-686.

猜你喜歡
解密線程字典
開心字典
家教世界(2023年28期)2023-11-14 10:13:50
解密“熱脹冷縮”
開心字典
家教世界(2023年25期)2023-10-09 02:11:56
解密“一包三改”
少先隊活動(2020年9期)2020-12-17 06:17:31
炫詞解密
淺談linux多線程協(xié)作
我是小字典
正版字典
讀者(2016年14期)2016-06-29 17:25:50
解密“大調(diào)解”
Linux線程實現(xiàn)技術研究
榆中县| 江津市| 河东区| 长沙县| 沛县| 金秀| 平舆县| 邢台县| 湾仔区| 颍上县| 吉木萨尔县| 开阳县| 牡丹江市| 应城市| 镇雄县| 耿马| 五寨县| 章丘市| 南乐县| 濮阳市| 曲靖市| 阜康市| 读书| 筠连县| 泰宁县| 九台市| 塔河县| 华宁县| 余干县| 招远市| 成安县| 嘉黎县| 海丰县| 宁国市| 水城县| 铜鼓县| 威信县| 大洼县| 化州市| 喜德县| 南丹县|