張冬芳 管磊 戴曉苗 楊亞星
摘? ?要:針對當前密碼口令破解功能單一、破解算法種類不足、效率低下等技術問題,從基于GPU的多策略散列算法并行計算技術、基于ASIC的復雜密碼破解技術和基于異構計算集群的多種計算資源調度技術三個方面展開研究,在此基礎上構建多手段密碼口令破解服務平臺,實現(xiàn)密碼破解的大復雜度運算和高速破解。
關鍵詞:密碼破解;異構集群
中圖分類號:TP393.0? ? ? ? ? 文獻標識碼:A
Abstract: Aiming at the technical problems of single password cracking function, insufficient types of cracking algorithms and low efficiency, this paper studies the parallel computing technology of GPU-based multi-strategy hash algorithm, ASIC-based complex password cracking technology and heterogeneous computing cluster-based multi-computing resource scheduling technology. And based on this studies, A design idea is proposed on Constructing a multi-means password cracking service platform to achieve large complexity and high-speed password cracking operation.
Key words: password cracking; heterogeneous cluster
1 引言
互聯(lián)網(wǎng)的飛速發(fā)展帶動了計算機犯罪的發(fā)展,尤其是近幾年網(wǎng)絡的高速發(fā)展,利用計算機和網(wǎng)絡進行計算機犯罪的問題越來越嚴重,在打擊網(wǎng)絡犯罪的過程中,為了獲得偵察線索、提取電子證據(jù),經(jīng)常需要通過技術手段破解重點對象的各種登錄密碼或文件密碼。此外,間諜組織、敵對分子以及國家安全危害分子,在傳遞、存儲信息時一般都會采用各種加密技術,而加密算法的多樣性使信息解密處理變得更為復雜,導致加密信息的破解難度大大增加,進而導致通過網(wǎng)絡攻防手段辛苦獲取的情報信息失去利用價值,功虧一簣。因此,密碼口令破解技術研究成為網(wǎng)絡空間安全的重要研究課題。
密碼口令破解現(xiàn)有技術普遍存在功能單一、破譯密碼種類較少的缺點,并且在算法實現(xiàn)上通常采用暴力破解的方式,效率低下且破解效果不理想,因此密碼口令破解工作迫切需要高性能、大規(guī)模的科學計算,需要異構的多種計算資源共同完成計算問題。基于此,本文以GPU和ASIC為基礎,利用GPU的高靈活性,結合ASIC的高性能,通過異構計算集群調度技術,構建多手段密碼口令破解在線服務系統(tǒng),解決當前密碼破解成功率低、支持破解算法少、破解時間長等難題。
2 國內(nèi)外現(xiàn)狀
目前,國際上可用于常見信息系統(tǒng)口令破解的成熟技術主要分為兩類:基于純軟件的破解技術和基于FPGA技術開發(fā)的硬件破解系統(tǒng)。純軟件系統(tǒng)主要有美國Access Data公司的Password Recovery Tool Kit (PRTK)和Distributed Network Attack (DNA)軟件,俄羅斯Elcom Soft公司的Distributed Password Recovery軟件。這些軟件具有三個共同的弱點:(1)受限于主機性能,運算速度慢;(2)破譯能力較弱,實戰(zhàn)性能較差;(3)無法滿足高復雜度的密碼口令破譯。
基于FPGA技術的硬件破解系統(tǒng)主要有Tableau公司的TACC1441硬件加速器和ICS公司的Cobra硬件加速器。相對于純軟件系統(tǒng),這些產(chǎn)品的性能有較大提高,但考慮到網(wǎng)絡密碼破譯所必需的巨大運算量,以上產(chǎn)品仍然難以達到實戰(zhàn)要求,并且價格昂貴,大規(guī)模集成成本過高,商業(yè)化推廣價值有限。
另外,現(xiàn)有技術普遍存在著功能單一、支持密碼種類較少的缺點,并且在算法實現(xiàn)上通常采用暴力破解的方式,效率低下,造成了密碼破解工作投入較大財力,卻難以取得理想的應用效果。
3 方案設計
口令破解問題的最大困難在于口令的搜索空間非常龐大,對計算的能力要求很高。由于口令破解中每個計算任務之間基本上沒有相關性,通信開銷小,也基本上對I/O沒有太大要求,因此非常適合于GPU和ASIC等大規(guī)模數(shù)據(jù)并行執(zhí)行部件實現(xiàn),為口令破解提供了重要的計算能力保障。
系統(tǒng)以中小規(guī)模GPU破解機集群和ASIC破解機集群為硬件平臺,構建基于B/S架構網(wǎng)站系統(tǒng)、并行計算平臺(DCR)、oclhashcat口令破解軟件為一體的高效口令破解系統(tǒng)。實現(xiàn)對單機口令破解軟件oclhashcat的多機并行化計算,使用基于真實口令集合自動學習的掩碼攻擊和碾壓攻擊等兩種破解策略,實現(xiàn)對多種算法的高效破解。系統(tǒng)的整體架構如圖1所示。
多手段密碼口令在線服務平臺包括硬件設備和軟件系統(tǒng),其中硬件設備包括GPU破解機集群、ASIC破譯機集群;軟件系統(tǒng)包括基于GPU的散列算法并行計算子系統(tǒng)、基于ASIC的復雜密碼破解子系統(tǒng)以及基于異構計算集群的多資源調度子系統(tǒng)。
3.1 基于GPU的散列算法并行計算子系統(tǒng)
在分析研究常見散列算法特點基礎上,開展基于GPU的散列算法開發(fā)流程,設計并實現(xiàn)基于GPU體系結構的模塊化散列算法庫;利用GPU上SM資源動態(tài)劃分、存儲器訪問優(yōu)化、指令流優(yōu)化等優(yōu)化技術,研究典型散列算法并行計算關鍵技術,設計并實現(xiàn)基于GPU的散列算法并行計算平臺模型。
3.2 基于ASIC的復雜密碼破解子系統(tǒng)
針對復雜密碼的計算需求,基于ASIC的高性能實現(xiàn)高復雜度密碼破解算法設計與實現(xiàn),采用網(wǎng)絡化總體架構,應用密碼技術的多項最新研究成果,結合專用密碼庫,設計并實現(xiàn)針對Office、PDF等文檔類、WinZip、7Zip、RAR等壓縮包類密碼口令的密碼破解系統(tǒng)。
3.3 基于異構計算集群的多資源調度子系統(tǒng)
針對GPU和ASIC的異構性,吸收各個并行計算編程模型的優(yōu)點,進行異構計算集群的管理節(jié)點設計、計算節(jié)點架構設計和調度節(jié)點架構設計,最終形成一套適用于特定類型計算作業(yè)的異構計算集群調度系統(tǒng)。
4 技術路線
4.1 基于GPU的散列算法并行計算子系統(tǒng)構建
4.1.1 總體架構設計
基于GPU CUDA技術針對散列算法提出一種軟件處理結構,能夠適應任何散列算法的開發(fā),該軟件總體結構由GPU-CPU數(shù)據(jù)接口、公共接口庫模塊、基礎算法庫模塊、復雜算法庫模塊四部分組成,其中GPU-CPU數(shù)據(jù)接口由CPU提供,其余模塊均在GPU上。
在CPU中,GPU-CPU數(shù)據(jù)接口主要提供對明文、密文、通配符、字典單詞的處理信息以及散列算法所需要的字段信息,并把這些信息傳給GPU的常數(shù)存儲器,這部分主要為GPU散列算法提供必要的常用預處理信息,提高系統(tǒng)的整體性能。而在GPU中,公共接口庫模塊主要提供讀取明文,明文填充通配符,以及返回結果明文。
基礎算法庫模塊主要提供一些基本簡單散列算法的計算內(nèi)核,復雜算法庫模塊主要針對一些特殊復雜的散列算法根據(jù)GPU架構進行重構并提供一些特殊功能模塊,方便開發(fā)后續(xù)的復雜散列算法。
4.1.2 CPU和GPU上算法庫的通用接口設計
為了滿足各種散列算法和系統(tǒng)的兼容性及可操作性,同時考慮CUDA相關優(yōu)化技術,將CPU和GPU的通用接口設計成兩個部分,一個是GPU任務接口,另一個是明文獲取接口。
GPU任務接口主要包含明文的處理信息如填充通配符集、掩碼、明文字長以及密文信息、Salt信息等,由于散列算法的操作流程常常對明文和密文做大量操作,常數(shù)存儲器相對于局部存儲器開銷小,讀取速度快,對GPU的性能有著明顯的優(yōu)化作用,因此在GPU端主要通過常數(shù)存儲器來存儲上述信息。
4.1.3 公共接口庫的設計與實現(xiàn)
公共接口庫實際上是對明文、密文、返回結果進行相應的操作,這部分對于所有散列算法來說是一個共享的外圍操作,為了滿足公共接口庫的實用性、可擴展性同時兼顧系統(tǒng)的性能,所有的公共接口庫均以宏的形式出現(xiàn)。公共接口庫的設計包括五部分內(nèi)容。
(1) 明文的讀取:通過分析常見散列算法的原理研究,發(fā)現(xiàn)許多復雜的散列算法都是基于MD4、MD5這種基本的散列算法開發(fā)的,有些散列算法讀取明文需要在明文后加0x80,因此需設計兩種讀取明文方式,以滿足不同算法置換明文的方式。
(2) 字符的填充:由于明文中有通配符所以要獲取最終的明文需要star字符對明文進行填充操作,其中star字符是1~4個字節(jié),由于star最長為4個字節(jié),所以把每個star存為一個字,但這有可能會引起明文填充跨字的問題,可以通過fill_star(star_index)這個宏來解決。該宏主要負責將star_charset[i]的內(nèi)容填充到block對應的字中。
(3) 基于樹的批量結果匹配:通過分析發(fā)現(xiàn),對于基礎散列算法如MD4、MD5、SHA-1來說,當任務文件中有多條密文需要匹配時,若采用傳統(tǒng)的IF比較方式會嚴重影響系統(tǒng)的性能。因此,擬利用基于比較相似度的思想設計一種樹批量結果匹配的方法來減少開銷提高系統(tǒng)的性能:假設密文是由64個字節(jié)組成,則提取前16個字節(jié)進行比較,如果前16個字節(jié)匹配不成功,后48個字節(jié)就不用匹配,這樣可以極大減少開銷。
(4)單詞的變換:由于復雜散列算法計算強度高,導致其性能低下,對于較大的明文空間計算時間過長,所以需要采取一種基于字典的方式來減少破解的時間,增加破解的可能性。而單詞轉換主要功能是對字典明文進行變換預處理,CPU端先把字典的單詞存儲在Plaintext數(shù)組中,然后從CPU端復制到GPU端的in_data數(shù)組中,此時GPU上獲取的明文即為字典單詞。
(5) 結果返回:對于系統(tǒng)傳進來的明文,散列算法對其運算后得到相應的散列值,將該值與預匹配的密文散列值匹配,如果結果匹配說明已經(jīng)成功得到正確明文,即把匹配結果存放在Result結構中,并把Result結構傳到CPU中輸出。Result結構主要包含匹配標志,匹配的線程號、明文和密文。
4.1.4 基礎算法庫的設計與實現(xiàn)
基礎算法庫主要支持基本散列算法(MD4、MD5、SHA-1)的并行版本,將其封裝在GPU基礎算法庫接口,從而在實現(xiàn)復雜散列算法時,可直接調用這些算法宏庫得到相應復雜散列算法的散列值。
為了提升整個系統(tǒng)的性能,遵照循環(huán)展開、使用宏定義、變量標量化三個優(yōu)化原則進行基礎算法庫的設計。因此,MD4、MD5、SHA-1算法庫的具體實現(xiàn)較為復雜,為控制篇幅這里不做說明。
4.2 基于ASIC的復雜密碼口令破解技術研究
4.2.1 復雜密碼口令破解平臺硬件體系建設
硬件體系采用網(wǎng)絡化總體架構,由服務器和破譯機構成。服務器包括破譯服務器、數(shù)據(jù)庫服務器和任務管理服務器。平臺可配置多臺破譯機,破譯機采用標準高4U、支持8個破解加速卡槽位的機箱。每個機箱內(nèi)配置一塊主控板,最多可部署8塊破解加速卡,采用2個12伏1600W電源供電。
(1) 破譯機硬件設計與實現(xiàn)
破譯機硬件由包括破解加速卡和主控板構成,每塊破解加速卡由ASIC破譯芯片以及各種控制單元組成。
破解加速卡:破解加速卡采用模塊化設計,板上放置32個ASIC破譯芯片、電源管理單元、邏輯控制單元。通過QSPI控制接口與主控板連接,進行數(shù)據(jù)和控制指令的傳輸。
ASIC破譯芯片:ASIC破譯芯片是整個硬件平臺的最小計算單元,采用統(tǒng)一框架結構設計,可以對Rar、WinZip、7Zip、Office、WPA等常用密碼進行高速破譯,并支持對MD4、MD5、SHA-1、SHA-256等常見Hash算法及其各種變形算法的破解。
主控板:每個破譯機配置一個ARM主控板,負責破譯機的地址分配、授權設置等日常管理工作以及任務數(shù)據(jù)的收發(fā)和芯片運行控制。主控板上集成雙核ARM CPU芯片,主頻800MHz,板載1G內(nèi)存和32M Flash,集成SD卡、顯示串口、標準千兆以太網(wǎng)接口和8個QSPI接口。
破譯服務器可以通過網(wǎng)絡訪問破譯機的主控板,實現(xiàn)任務分配、狀態(tài)查詢、破譯結果接收等功能;管理客戶端可對主控板的IP地址、授權信息等參數(shù)進行配置,并允許用戶進行系統(tǒng)升級、板載口令庫更新等操作。
(2) 復雜密碼口令破解平臺模塊功能設計
復雜密碼口令破解平臺由破譯任務管理模塊、破譯服務模塊、破譯數(shù)據(jù)庫和破譯機組成,模塊之間使用高速網(wǎng)絡交換機進行互聯(lián)。
破譯任務管理模塊:部署于任務管理服務器上的Web應用程序,是平臺的人機交換接口,可實現(xiàn)破譯任務管理、破譯數(shù)據(jù)庫維護、平臺配置、平臺用戶管理功能,可監(jiān)控各破譯機狀態(tài)。
破譯服務模塊:部署于破譯服務器上,實現(xiàn)破譯任務分發(fā)、破譯結果接收、破譯結果驗證、獲取破譯機狀態(tài)、破譯機配置等功能。
破譯數(shù)據(jù)庫:部署于數(shù)據(jù)庫服務器,保存破譯使用的口令庫及平臺的配置、用戶、破譯任務等各類數(shù)據(jù)。
破譯機:接收破譯服務模塊發(fā)送的任務數(shù)據(jù),進行密碼高速破譯,并將破譯結果發(fā)送到破譯服務模塊,可根據(jù)破譯服務模塊命令上傳運行狀態(tài)數(shù)據(jù)。
4.2.2 復雜密碼口令破解平臺軟件體系建設
系統(tǒng)軟件包括破譯機操作系統(tǒng)、網(wǎng)絡通信協(xié)議、破譯服務等。
(1) 破譯機操作系統(tǒng)
每臺破譯機的ARM主控板上運行獨立的ASIC芯片操作系統(tǒng),負責主控板的應用程序加載,提供各類外設的驅動,完成系統(tǒng)和破解加速卡的初始化。
ASIC芯片操作系統(tǒng)主要功能有任務管理、時間管理、信號量、消息隊列、內(nèi)存管理、記錄功能、軟件定時器、協(xié)程等。破譯機操作系統(tǒng)對系統(tǒng)任務的數(shù)量沒有限制,既支持優(yōu)先級調度算法也支持輪換調度算法,多個任務可以分配相同的優(yōu)先權,優(yōu)先級可繼承,可滿足破譯機功能和性能的需要。
ASIC芯片操作系統(tǒng)的開發(fā)與實現(xiàn)以委托開發(fā)的形式交由外部人員實現(xiàn)。
(2) 網(wǎng)絡通信協(xié)議優(yōu)化開發(fā)
為了適應從破譯服務器到破譯機的數(shù)據(jù)傳輸、文件收發(fā)、從管理終端到破譯機的管理命令下達、固件上傳等功能要求,基于TCP/IP協(xié)議開發(fā)優(yōu)化的FA-2平臺網(wǎng)絡通信協(xié)議。協(xié)議共包含三類。
破譯資源發(fā)現(xiàn)協(xié)議:基于TCP和UDP協(xié)議,可進行破譯機的廣播查詢、破譯機計算卡等資源獲取、查詢破譯機和計算卡等資源的當前狀態(tài)。
破譯任務協(xié)議:基于TCP協(xié)議,以保證收發(fā)數(shù)據(jù)的完整可靠,可進行破譯任務數(shù)據(jù)的傳輸、當前破譯狀態(tài)獲取、破譯結果和校驗結果的獲取。
破譯機管理協(xié)議:基于TCP協(xié)議,以保證文件傳輸?shù)目煽啃裕蛇M行文件上傳下載、固件刷新、破譯機參數(shù)配置等。
(3) 破譯服務
破譯服務部署于破譯服務器,使用TCP/IP協(xié)議與破譯機進行通信,將各類數(shù)據(jù)集中保存于破譯數(shù)據(jù)庫中。破譯服務主要實現(xiàn)幾項功能。
破譯文件識別:可以自動識別系統(tǒng)支持的待破譯文件格式,并提取待破譯文件的特征數(shù)據(jù)保存于數(shù)據(jù)庫中。
破譯任務分發(fā):讀取破譯數(shù)據(jù)庫中的任務數(shù)據(jù)和破譯機資源數(shù)據(jù),根據(jù)任務優(yōu)先級智能分配破譯資源,通過網(wǎng)絡將破譯任務分發(fā)到這些資源中。
破譯結果接收:接收破譯機運算結果,保存于破譯數(shù)據(jù)庫中。
破譯結果驗證:對可能出現(xiàn)偽口令的破譯任務結果進行驗證。
獲取破譯機狀態(tài):通過UDP廣播發(fā)現(xiàn)本網(wǎng)中的所有破譯機,將其信息保存于數(shù)據(jù)庫;發(fā)送查詢命令獲取破譯機及其破解加速卡的配置情況、當前工作狀態(tài)。
破譯機配置:發(fā)送配置命令配置破譯機的IP地址、授權地址、管理密碼等參數(shù);上傳下載破譯機板載的口令庫。
(4) 管理服務系統(tǒng)
使用Java實現(xiàn),運行于Tomcat服務器,實現(xiàn)了破譯管理系統(tǒng)-應用程序版的功能。
4.2 基于異構計算集群的多種計算資源調度
異構計算集群調度系統(tǒng)主要包括三種節(jié)點:管理節(jié)點、調度節(jié)點和計算節(jié)點。
4.3.1 管理節(jié)點
管理節(jié)點負責對整個系統(tǒng)進行管理和監(jiān)控。管理節(jié)點為用戶提供易用的控制命令,方便用戶在系統(tǒng)中進行作業(yè)維護。它將向調度節(jié)點發(fā)送對應的請求,并將調度節(jié)點處理的結果直觀地展示給用戶。通過管理節(jié)點,用戶可以快速獲取系統(tǒng)中作業(yè)運行狀態(tài)和完成情況等信息。由于管理節(jié)點只是進行簡單地命令發(fā)送及結果的展示等操作,并不需要復雜地計算,故一般使用主流的個人計算機即可。
4.3.2 調度節(jié)點
調度節(jié)點是整個異構計算集群系統(tǒng)的核心。它需要負責處理來自管理節(jié)點的用戶請求,對用戶提交的作業(yè)進行管理,又需要對集群中所有的計算節(jié)點進行管理,并向其發(fā)送節(jié)點任務,處理其回復的結果報文。鑒于調度節(jié)點需要處理大量的節(jié)點任務,維護集群中所有的計算節(jié)點信息,通常使用機架式服務器。
4.3.3 計算節(jié)點
計算節(jié)點是整個異構計算集群的計算資源,主要負責完成調度節(jié)點發(fā)送的節(jié)點任務。計算節(jié)點可以通過高速互聯(lián)網(wǎng)絡或交換機與調度節(jié)點相連,而各個計算節(jié)點間并不了解對方的情況。集群中所有的計算節(jié)點統(tǒng)一由調度節(jié)點進行管理。計算節(jié)點上會配置一個或多個計算設備,這些計算設備既可以是GPU計算卡,也可以是MIC計算卡,甚至是CPU。計算設備的單卡性能及計算節(jié)點所擁有的計算設備數(shù)量將是影響計算節(jié)點的整體性能的主要因素。由于計算節(jié)點需要不間斷計算數(shù)量眾多的節(jié)點任務,擬采用機架式服務器。
4.3.4 調度節(jié)點與計算節(jié)點的網(wǎng)絡接口設計
調度節(jié)點主要使用TCP和UDP協(xié)議與計算節(jié)點進行交互。調度節(jié)點通過向計算節(jié)點發(fā)送網(wǎng)絡數(shù)據(jù)包的方式控制計算節(jié)點進行任務的計算。同樣,計算節(jié)點通過發(fā)送網(wǎng)絡數(shù)據(jù)包告知調度節(jié)點其運行情況和計算結果。
TCP協(xié)議可靠性高,但其占用的網(wǎng)絡帶寬較高,建立連接時的開銷也高,適合用于傳輸可靠性要求高的數(shù)據(jù),可能被重復使用的數(shù)據(jù)。UDP協(xié)議可靠性低,但其相對TCP協(xié)議占用的網(wǎng)絡帶寬較低,沒有建立連接時的開銷,適合用于傳輸可靠性要求較低,一次性使用的數(shù)據(jù)。其可靠性由系統(tǒng)中的其他容錯性設計來保證。
在調度節(jié)點與計算節(jié)點交互的數(shù)據(jù)包中,有些在傳輸過程中不允許出現(xiàn)丟失,數(shù)據(jù)包中的內(nèi)容可能會被重復使用,如計算節(jié)點登錄報文、計算作業(yè)的原始信息等。對于這些數(shù)據(jù)包,系統(tǒng)使用TCP協(xié)議來防止傳輸時數(shù)據(jù)出現(xiàn)丟失。
在調度節(jié)點與計算節(jié)點交互的過程中,有些數(shù)據(jù)包則對傳輸?shù)目煽啃砸笙鄬Σ荒敲锤?,只被使用一次,如?jié)點任務報文、計算結果報文、心跳報文等。對于這類報文,系統(tǒng)使用UDP協(xié)議來進行傳輸,以此來降低系統(tǒng)的網(wǎng)絡開銷。雖然UDP協(xié)議可能會導致節(jié)點任務的丟失,但通常出現(xiàn)丟失的情況較小,且系統(tǒng)的容錯性設計使得系統(tǒng)可以在出現(xiàn)節(jié)點任務丟失情況下對其進行重發(fā)。
5 實驗數(shù)據(jù)
系統(tǒng)破解率測試當前最常見的MD5為測試樣本,破解策略采用暴力破解方式。目前,已測試MD5密文數(shù)約138萬條,其中約1017萬條破解成功,破解率為73.34%;測試Half-MD5密文數(shù)約7.5萬條,其中約6.5萬條破解成功,破解率為86.73%,破解率情況如表1所示。
6 結束語
本文以GPU和ASIC為基礎,開展基于GPU的多策略散列算法并行計算技術研究和基于ASIC的復雜密碼破解技術研究。在此基礎上,通過異構計算集群調度技術,利用GPU的高靈活性,結合ASIC的高性能,構建分布式、多手段密碼破解在線服務平臺,形成高效率、高精準、體系化、規(guī)?;平赓Y源池,同時研發(fā)多手段密碼口令破解在線服務平臺,實現(xiàn)密碼口令、破解的大復雜度運算和高速破解功能,并在公安機關開展應用測試。
參考文獻
[1] Zaharia M, Das T, Li H, et al. Discretized streams: an efficient and fault-tolerant model for stream processing on large clusters[C]. Proceedings of the 4th USENIX conference on Hot Topics in Cloud Ccomputing. USENIX Association, 2012: 10-10.
[2] Zaharia M, Chowdhury M, Das T, et al. Fast and interactive analytics over Hadoop data with Spark[J]. USENIX; login, 2012, 37(4): 45-51.
[3] 李凱.GPU上散列算法庫的研究與實現(xiàn)[D].廣州: 華南理工大學, 2013.
[4] 張娜,明平洲,王加昌,等.多GPU加速在高性能數(shù)值計算中的應用[A].中國核動力研究設計院核反應堆系統(tǒng)設計技術重點實驗室,2014-07.
[5] 申飛. SHA系列算法安全性的統(tǒng)計分析[D]. 鄭州:解放軍信息工程大學,2011.
[6] Netty project. Netty:Home[EB/OL].https://netty.io/,2017-04-01.
[7] Wikipedia. Discrete Fourier transform[EB/OL].https://en.wikipedia.org/wiki/Discret e_Fourier_transform, 2017-03-24.
[8] Wikipedia. K-means Clustering[EB/OL].https://en.wikipedia.org/wiki/K-means_clusteri ng, 2017-04-09.
[9] Toshniwal A, Taneja S, Shukla A, et al. Storm @Twitter[J]. Acm Sigmod International Conference on Manageme, 2014:147-156.