00引言
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的設(shè)備和應(yīng)用接入互聯(lián)網(wǎng),特別是5G技術(shù)的日漸成熟,使萬物互聯(lián)[1]時代近在咫尺?;ヂ?lián)網(wǎng)使信息傳遞更為便捷,為了解決隨之而來的信息安全風(fēng)險,密碼學(xué)技術(shù)也得到了空前的發(fā)展和運用。
密碼學(xué)技術(shù)與我們的生活息息相關(guān),比如設(shè)置個人電腦登錄密碼能夠保護我們的電腦數(shù)據(jù)安全;設(shè)置網(wǎng)站登錄口令能夠保護我們的網(wǎng)站數(shù)據(jù)安全;設(shè)置數(shù)據(jù)庫訪問密碼能夠保護數(shù)據(jù)庫的數(shù)據(jù)安全等。同時,在現(xiàn)實生活中許多不法分子也利用密碼學(xué)技術(shù),傳遞犯罪信息并隱藏犯罪證據(jù),從事違法犯罪勾當,給國家安全和社會穩(wěn)定帶來很大的威脅。
二戰(zhàn)時期德軍的Enigma密碼機與其破解過程,已成為密碼學(xué)中密碼技術(shù)與密碼破解技術(shù)相互較量的經(jīng)典案例。密碼學(xué)技術(shù)與密碼破譯技術(shù)就像一對攣生兄弟一樣,在相互較量中伴隨成長?,F(xiàn)代密碼技術(shù)建立在求解數(shù)學(xué)難題基礎(chǔ)上,密碼算法公開,經(jīng)過了充分的驗證,已很難從算法自身的漏洞出發(fā)進行破解。利用高性能計算對密文進行暴力破解⑵已成為密碼破解的常規(guī)手段。
暴力破解需要強大的計算能力。通用計算機大致經(jīng)歷了以下發(fā)展過程:
(1)從單核到多核,再到眾核
從1971年第一塊微處理器4004在Intel公司誕生CPU的集成晶體管數(shù)和時鐘頻率逐年上升。隨著時鐘頻率超過3GHz,單核處理器開始消耗過多的功率,單核處理器的發(fā)展遇到瓶頸。2005年AMD、Intel相繼推出雙核CPU,CPU的發(fā)展步入多核心時代。2018年10月,Intel發(fā)布的最新消費級處理器——第九代酷睿i9-9900K——已有8個核心,時鐘頻率最高可達5GHzo
不同于CPU作為通用處理器存在,GPU(Graphics Processing Unit,圖形處理器)從一誕生起就專注于解決圖形渲染問題,而圖形處理所特有的并行化處理特性,使得GPU具備并行計算的潛質(zhì)。本世紀初,可編程特性被引入GPU,GPGPU(GPU通用計算)時代到來,其中以NVIDIA公司推出的CUDA(Compute Unified Device Architecture,統(tǒng)一計算設(shè)備架構(gòu))為代表。由于一張GPGPU±往往集成了成百上千個計算核心,因此被稱為眾核處理器。比如NVIDIA公司最新發(fā)布的消費級顯卡Geforce RTX 2080集成了2944個CUDA Cores。
(2)從同構(gòu)到異構(gòu)
CPU和GPU各有所長:CPU適合做通用計算,如邏輯性強的算法、業(yè)務(wù)管理、任務(wù)調(diào)度、人機交互等任務(wù);GPU適合做并行計算,如圖像處理、科學(xué)計算等大并發(fā)任務(wù)。大型的復(fù)雜計算往往需要同時使用CPU和GPU,在這種情況下CPU+GPU的異構(gòu)計算機得到廣泛應(yīng)用。
(3)從單機到集群
單機受限于整機設(shè)計,計算能力到達一定水平后就很難提升,且后期難以升級。計算機集群區(qū)能夠通過局域網(wǎng)或互聯(lián)網(wǎng)將單機能力較差的計算節(jié)點組成一個系統(tǒng),具有很強的可擴展性,能夠較方便地獲得較低成本的綜合算力。
密碼破解系統(tǒng)需要強大的算力,而異構(gòu)集群系統(tǒng)能夠提供性價比高、易擴展的算力。因此,基于異構(gòu)集群系統(tǒng)構(gòu)建密碼破解系統(tǒng)便成了很自然的選擇。當前密碼破解系統(tǒng)多為單機版,硬件系統(tǒng)、軟件系統(tǒng)的安裝和使用都較為復(fù)雜,通過B/S架構(gòu)向用戶提供在線密碼破解服務(wù),可讓用戶省去機房建設(shè)和維護的成本以及軟件的部署和安裝成本?;谝陨弦蛩氐目紤],研究并實現(xiàn)了一種基于異構(gòu)集群的在線密碼破解系統(tǒng)。
01、系統(tǒng)需求分析
與一般的高性能計算集群相比,在線密碼破解系統(tǒng)有其自身的特點,例如:
(1)破解算法屬于計算密集型任務(wù)。
(2)每個破解算法具備多種破解模式。
(3)以Web方式提供在線破解能力。
為了滿足以上需求,該系茹頰以下組成部分:
(1)GPGPU異構(gòu)集群。
(2)并行計算編程框架。
(3)集群作業(yè)管理系統(tǒng)。
(4)Web管理服務(wù)。
(5)計算節(jié)點的任務(wù)執(zhí)行程序。
線密碼破解系統(tǒng)的系統(tǒng)組成見圖lo
圖1在線密碼破解系統(tǒng)組成圖
1.1 GPGPU異構(gòu)集群
GPGPU異構(gòu)集群為滿足密碼破解系統(tǒng)的需求,應(yīng)具有以下特點:
(1)1個管理節(jié)點+N個計算節(jié)點
管理節(jié)點負責集群狀態(tài)監(jiān)控和作業(yè)管理。計算節(jié)點負責執(zhí)行來自管理節(jié)點的任務(wù)分片。管理節(jié)點將任務(wù)分解為任務(wù)分片隊列,以實現(xiàn)多個計算節(jié)點的并行計算。
(2)計算資源可擴展、可替換
通過增加計算節(jié)點上的GPU卡,或在集群系統(tǒng)中增加計算節(jié)點,快速增加計算資源。當發(fā)現(xiàn)計算節(jié)點異常后,也可通過快速更換計算節(jié)點保障破解任務(wù)的正常運行。
圖2是計算機集群系統(tǒng)的網(wǎng)絡(luò)拓撲圖。
圖2計算機集群系統(tǒng)網(wǎng)絡(luò)拓撲圖
1.2并行計算編程框架
為使用GPGPU進行高性能計算,應(yīng)使用相應(yīng)的并行計算編程框架囹。包括NVIDIA提出的CUDA編程框架,AMD提出的Brook++編程環(huán)境,OpenCL聯(lián)盟提出的OpenCL并行編程模型。其中CUDA和OpenCL使用更為廣泛。
CUDA是NVIDIA公司推出的一種并行計算架構(gòu),它是一種高級編程語言,開發(fā)者能夠很快上手,所編寫出的程序可以在NVIDIA GPU上高速運行。
CUDA架構(gòu)只支持NVIDIA公司的產(chǎn)品,而OpenCL并行編程框架則支持多核CPU、GPU、FPGA、多核DSP系統(tǒng)等多種并行計算架構(gòu)。
由于本系統(tǒng)GPU全部為NVIDIA系列,考慮到CUDA編程語言更容易,且在NVIDIA顯卡上運行效率更高,本系統(tǒng)采用CUDA并行編程框架。
1.3集群作業(yè)管理系統(tǒng)
為了使計算機集群的計算資源得到充分利用,需根據(jù)計算機節(jié)點情況和任務(wù)的資源需求情況對任務(wù)進行合理調(diào)度。目前有十幾種不同的作業(yè)管理系統(tǒng)叫其中LSF、LOADLEVELER,PBS、CONDOR是當今最具代表性和影響力的幾種集群作業(yè)管理系統(tǒng)。其中PBS、CONDOR是研究性質(zhì)的軟件,LSF、LOADLEVELER是商用軟件,它們的主要功能為集群系統(tǒng)監(jiān)控和作業(yè)調(diào)度等。表1是幾種作業(yè)管理系統(tǒng)的比較。
表1作業(yè)系統(tǒng)比較
其中PBS和LSF綜合比分最高。LSF被公認為是市場上最成功的集群作業(yè)管理系統(tǒng),在功能和可用性上有較強的優(yōu)勢;PBS為開源項目,可根據(jù)項目自身特點對其進行定制化開發(fā),其成本和可定制化更有優(yōu)勢。綜合考慮,本系統(tǒng)使用PBS進行密碼破解集群作業(yè)管理。
1.4 WEB管理服務(wù)
WEB管理服務(wù)是集群作業(yè)管理系統(tǒng)與用戶間的人機交互接口,主要提供集群任務(wù)管理、資源管理、日志報表、集群監(jiān)控、系統(tǒng)設(shè)置等功能。
(1)任務(wù)管理
任務(wù)管理提供任務(wù)管理、任務(wù)查詢功能。其中,任務(wù)管理功能包含新建任務(wù)、任務(wù)狀態(tài)管理等;任務(wù)查詢可對歷史任務(wù)進行多條件聯(lián)合檢索。
(2)資源管理
資源管理是為任務(wù)提交提供基礎(chǔ)數(shù)據(jù)的功能模塊。包括彩虹表管理,字典管理,算法管理等功能。
(3)日志報表
日志報表功能包括報表管理,操作日志,訪問日志等功能。
(4)集群監(jiān)控功能
集群監(jiān)控功能包括硬件資源監(jiān)控、警報系統(tǒng)等功能。硬件資源監(jiān)控可查看系統(tǒng)中CPU、GPU、內(nèi)存、存儲以及網(wǎng)絡(luò)的使用情況;警報系統(tǒng)提供了當系統(tǒng)資源使用過高時告警功能。
(5)系統(tǒng)設(shè)置功能
系統(tǒng)設(shè)置功能包括系統(tǒng)設(shè)置以及用戶設(shè)置功能。系統(tǒng)設(shè)置提供了為集群配置、在線升級等功能;用戶設(shè)置提供了用戶管理和權(quán)限管理的功能。
1.5任務(wù)執(zhí)行程序
密碼破解任務(wù)最終會下發(fā)到各個計算節(jié)點,由計算節(jié)點的任務(wù)執(zhí)行程序執(zhí)行。任務(wù)執(zhí)行程序包含代理程序和密碼破解程序兩個部分。以下是任務(wù)執(zhí)行程序具有的功能:
(1)因為PBS未能提供對GPU的狀態(tài)監(jiān)控能力,可通過代理程序?qū)PU狀態(tài)信息實時傳送給WEB管理服務(wù)。
(2)因為PBS可將任務(wù)分片調(diào)度到計算節(jié)點,而不能直接調(diào)度到計算節(jié)點上的GPU計算單元(_般有多個GPU計算單元),可通過代理程序?qū)⑷蝿?wù)分片進一步獅,交給多個GPU計算單元并行處理。
(3)為了實現(xiàn)破解算法的可擴展性,可將破解算法設(shè)計成單個可執(zhí)行程序的形式,交由代理程序調(diào)用。
02、系統(tǒng)設(shè)計
2.1搭建基礎(chǔ)設(shè)施
基于第1節(jié)的需求分析,搭建了一套GPU集群,其配置如表2所示。
表2集群系統(tǒng)配置
計算節(jié)點和管理節(jié)點通過交換機連接,形成一個高速局域網(wǎng)。利用NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))將管理節(jié)點上的字典文件、彩虹表文件、計算節(jié)點可執(zhí)行程序(計算節(jié)點代理程序、密碼破解程序)共享給8個計算節(jié)點使用。
2.2 PBS系統(tǒng)的使用
PBS系統(tǒng)由Server(服務(wù)進程)、Scheduler(調(diào)度進程)和Mom(執(zhí)行進程)組成,Server和
Scheduler位于管理節(jié)點用于任務(wù)調(diào)度控制,Mom位于計算節(jié)點用于任務(wù)執(zhí)行。PBS系統(tǒng)的工作流程如下:
(1)由用戶發(fā)起破解任務(wù)分片執(zhí)行事件,Server開始一個調(diào)度周期。
(2)Server向Scheduler發(fā)送一個調(diào)度命令。
(3)Scheduler向Mom請求可用資源信息。
(4)Mom返回給Scheduler一個資源信息。
(5)Scheduler得到資源信息后,向Server請求作業(yè)信息。
(6)Server收到請求后,將作業(yè)信息發(fā)給Scheduler,Scheduler根據(jù)作業(yè)信息和調(diào)度策略產(chǎn)生執(zhí)行作業(yè)的策略。
(7)Scheduler發(fā)送執(zhí)行作業(yè)請求至Servero
(8)Server接收請求后,發(fā)送作業(yè)至Mom執(zhí)行作業(yè)。
(9)Mom收到執(zhí)行命令后將任務(wù)交給計算節(jié)點執(zhí)行程序執(zhí)行。
(10)計算節(jié)點執(zhí)行程序?qū)⒔Y(jié)果反饋給Mom。
(11)Mom將執(zhí)行結(jié)果反饋給Server,完成一個調(diào)度周期。
2.3 WEB管理服務(wù)
WEB管理服務(wù)提供作業(yè)調(diào)度功能,其工作流程如下:
(1)用戶通過Web界面創(chuàng)建密碼破解任務(wù),提交后存入任務(wù)數(shù)據(jù)庫中。
(2)對任務(wù)進行分割,分割后的任務(wù)分片放入任務(wù)分片隊列中。
(3)任務(wù)分片隊列周期性讀取任務(wù)分片并將任務(wù)分片提交給計算節(jié)點執(zhí)行,直到任務(wù)分片隊列執(zhí)行完成。
在破解任務(wù)執(zhí)行過程中,計算節(jié)點將執(zhí)行進度、破解速度、執(zhí)行結(jié)果等數(shù)據(jù)及時反饋給管理節(jié)點,管理節(jié)點及時更新任務(wù)分片隊列。
在計算節(jié)點執(zhí)行任務(wù)分片的同時,管理節(jié)點會實時監(jiān)控任務(wù)分片的執(zhí)行情況和計算節(jié)點的工作狀態(tài),如發(fā)現(xiàn)異常,將修改任務(wù)分片狀態(tài),在下一次任務(wù)分片輪詢過程中重新執(zhí)行。
2.4任務(wù)執(zhí)行程序設(shè)計
位于計算節(jié)點上的密碼破解任務(wù)執(zhí)行程序由計算節(jié)點代理程序和密碼破解程序組成。其中代理程序?qū)芾砉?jié)點的任務(wù)調(diào)度指令進行監(jiān)聽和解析,調(diào)用相應(yīng)密碼破解算法,在密碼破解過程中將任務(wù)信息以及GPU硬件的狀態(tài)信息及時反饋給管理節(jié)點。
03、系統(tǒng)實例
3.1任務(wù)提交
用戶通過瀏覽器登錄密碼破解Web管理服務(wù)后,打開新建任務(wù)窗口,按照提示設(shè)置密碼破解任務(wù)所需的屬性、計算資源、破解任務(wù)所需文件、破解模式、任務(wù)空間等,點擊提交后完成密碼破解任務(wù)的創(chuàng)建,如圖3所示。
圖4密碼破解任務(wù)提交界面
3.2任務(wù)隊列
密碼破解任務(wù)創(chuàng)建成功后,將在任務(wù)列表中顯7K任務(wù)信息,包括任務(wù)當前狀態(tài)、任務(wù)屬性、速度、進度等,如圖4所示。
圖4密碼破解任務(wù)列表界面
3.3密碼破解任務(wù)加速比
以2.1節(jié)集群為例,分別使用其中的純CPU作為計算集群和GPU作為計算集群,對幾個常用密碼破解算法的性能做出比較,見表3。
04、結(jié)語
針對密碼破解系統(tǒng)的現(xiàn)狀和需求,提出了基于異構(gòu)集群系統(tǒng)的在線密碼破解系統(tǒng)的解決方案。該方案通過B/S架構(gòu)向用戶提供在線密碼破解能力,讓用戶省去機房建設(shè)和維護成本以及軟件的部署和安裝成本;通過構(gòu)建異構(gòu)集群系統(tǒng),以及異構(gòu)集群系統(tǒng)上的軟件系統(tǒng)——集群作業(yè)管理系統(tǒng)和計算節(jié)點執(zhí)行程序——實現(xiàn)了對異構(gòu)集群系統(tǒng)計算資源(特別是GPU計算資源)的高效利用,實現(xiàn)了密碼破解任務(wù)150倍提速。后期還可通過擴大集群系統(tǒng)規(guī)模,通過進一步挖掘計算節(jié)點CPU的計算資源等手段為密碼破解任務(wù)提速。