史國(guó)振,李鳳華,謝絨娜,唐志濤
(1.北京電子科技學(xué)院 電子信息工程系,北京100070;2.北京電子科技學(xué)院 信息安全系,北京100070;3.西安電子科技大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710071)
為了保證密碼算法的可用性,針對(duì)密碼算法的各類測(cè)評(píng)軟件和工具的研究成為國(guó)內(nèi)外研究的熱點(diǎn)[1-2]。許多國(guó)家先后啟動(dòng)密碼算法標(biāo)準(zhǔn)化工作,大量國(guó)內(nèi)外專家致力于密碼算法及測(cè)評(píng)標(biāo)準(zhǔn)的研究與開發(fā)[3-8]。文獻(xiàn) [9]設(shè)計(jì)并實(shí)現(xiàn)了一種分組密碼算法的測(cè)試平臺(tái),將分組密碼各個(gè)組成部件包括S盒、輪函數(shù)、密鑰擴(kuò)展等設(shè)計(jì)方法歸類總結(jié),同時(shí)也給出了一些比較實(shí)用的方法;文獻(xiàn) [10-12]設(shè)計(jì)并實(shí)現(xiàn)了一種密碼算法測(cè)試平臺(tái),分別從算法、軟件和硬件等方面給予說明及實(shí)現(xiàn)。但上述密碼算法和測(cè)試方法在使用上缺乏靈活性。文獻(xiàn) [13-14]提出了動(dòng)態(tài)可重組的軟件設(shè)計(jì)框架,為用戶提供一種動(dòng)態(tài)、可擴(kuò)展和可定制的密碼算法測(cè)試環(huán)境,但并沒有給出各組件間靈活的數(shù)據(jù)交換規(guī)范,使得在設(shè)計(jì)過程中軟件的靈活性和實(shí)用性受到了一定的限制。
本文針對(duì)密碼算法測(cè)評(píng)及其動(dòng)態(tài)框架的設(shè)計(jì)需求,在動(dòng)態(tài)可重構(gòu)軟件框架的基礎(chǔ)上研究了可擴(kuò)展和可定制的各組件之間數(shù)據(jù)交互規(guī)范。
動(dòng)態(tài)可重組系統(tǒng)框架如圖1所示。基本框架由集成調(diào)度平臺(tái)、組件管理模塊、公共組件以及組件信息數(shù)據(jù)庫和配置文件構(gòu)成。組件信息數(shù)據(jù)庫記錄、管理和維護(hù)系統(tǒng)中的組件信息及其運(yùn)行狀態(tài);組件管理模塊根據(jù)組件信息數(shù)據(jù)庫、配置文件管理系統(tǒng)中的組件;集成調(diào)度平臺(tái)是系統(tǒng)的主控程序,實(shí)現(xiàn)當(dāng)前系統(tǒng)所加載的組件,將其功能以直觀的形式顯現(xiàn)給用戶,根據(jù)用戶的選擇調(diào)用組件中的具體功能;公共組件為系統(tǒng)提供輸入輸出功能。
密碼組件和測(cè)評(píng)組件在系統(tǒng)中統(tǒng)稱為私有組件,可以由用戶根據(jù)個(gè)體需要進(jìn)行訂制、添加和刪除,形成不同的使用環(huán)境。測(cè)評(píng)組件在系統(tǒng)中體現(xiàn)為測(cè)評(píng)的具體功能,密碼組件在系統(tǒng)中體現(xiàn)為具體的密碼算法資源。系統(tǒng)中各個(gè)部分的交互關(guān)系如圖2所示。
圖1 系統(tǒng)框架
圖2 集成框架各部分關(guān)系
該動(dòng)態(tài)可重組的軟件集成框架由數(shù)據(jù)庫、集成調(diào)用平臺(tái)、組件管理模塊和組件組成。其中,集成調(diào)用平臺(tái)負(fù)責(zé)界面的顯示、對(duì)組件功能的調(diào)用以及系統(tǒng)的調(diào)配;組件模塊包含了公共組件、私有組件、管理組件3個(gè)子模塊,其主要是作為最小的系統(tǒng)加載在最初的集成調(diào)用平臺(tái)上。公共組件主要對(duì)系統(tǒng)內(nèi)部信息進(jìn)行初始化;私有組件通過與公共組件進(jìn)行數(shù)據(jù)交互,對(duì)公共組件接收到的外部數(shù)據(jù)進(jìn)行處理;管理組件主要是負(fù)責(zé)對(duì)組件的加載、卸載以及子功能和菜單的管理。當(dāng)組件做加載操作時(shí)組件的相關(guān)信息被記錄到數(shù)據(jù)庫中,集成調(diào)用平臺(tái)則通過讀取數(shù)據(jù)庫中的相關(guān)表格相關(guān)字段獲取信息,實(shí)現(xiàn)內(nèi)部的操作。各個(gè)部分的交互關(guān)系如圖3所示。
測(cè)評(píng)系統(tǒng)中各個(gè)組件交互的具體流程如下:
步驟1 運(yùn)行測(cè)評(píng)系統(tǒng),輸入測(cè)評(píng)配置文件。如果用戶選擇手動(dòng)配置XML文件則彈出對(duì)話框,要求用戶輸入測(cè)評(píng)所需的信息和數(shù)據(jù),由測(cè)評(píng)系統(tǒng)生成XML文件;如果用戶選擇自動(dòng)配置XML文件則執(zhí)行步驟2。
步驟2 動(dòng)態(tài)框架解析XML文件獲取用戶選擇的測(cè)評(píng)方法的信息。
步驟3 動(dòng)態(tài)框架獲取一個(gè)測(cè)評(píng)方法,調(diào)用測(cè)評(píng)組件,將該測(cè)評(píng)方法的信息傳給測(cè)評(píng)組件,進(jìn)行一個(gè)測(cè)評(píng)方法的測(cè)評(píng)。
(1)測(cè)評(píng)組件調(diào)用公共庫組件獲取該測(cè)評(píng)方法對(duì)應(yīng)的密碼算法的信息和數(shù)據(jù)。
(2)測(cè)評(píng)組件解析公共庫組件傳過來的數(shù)據(jù),統(tǒng)計(jì)測(cè)評(píng)所需的密碼算法組件數(shù)目。
(3)測(cè)評(píng)組件調(diào)用密碼算法組件進(jìn)行密碼算法測(cè)評(píng)。
1)密碼算法組件對(duì)數(shù)據(jù)進(jìn)行加密/解密操作。
2)測(cè)評(píng)組件利用測(cè)評(píng)方法對(duì)密碼算法組件處理過的數(shù)據(jù)進(jìn)行測(cè)評(píng)。
3)測(cè)評(píng)組件調(diào)用公共庫組件輸出測(cè)評(píng)結(jié)果。
(4)判斷所有的密碼算法組件是否已全部調(diào)用,如果沒有則返回(3)處執(zhí)行。
步驟4 判斷所有的測(cè)評(píng)方法是否已完成測(cè)評(píng),如果沒有則返回步驟3處執(zhí)行。
步驟5 綜合處理測(cè)評(píng)結(jié)果,測(cè)評(píng)結(jié)束。
為了為系統(tǒng)各組件之間進(jìn)行數(shù)據(jù)傳遞提供一種統(tǒng)一的數(shù)據(jù)交互規(guī)范,各組件間數(shù)據(jù)交互采用n層次的數(shù)據(jù)格式,以n=3為例,數(shù)據(jù)格式如圖3所示。
圖3 版本號(hào)為1.0即FunID為數(shù)字形式時(shí)緩沖區(qū)中數(shù)據(jù)結(jié)構(gòu)定義
第一層次為主結(jié)構(gòu)體,該層次主要包括:數(shù)據(jù)交互的版本號(hào),用于區(qū)別數(shù)據(jù)傳遞的基本類型;結(jié)構(gòu)體層數(shù),用于解析數(shù)據(jù)的程序進(jìn)行數(shù)據(jù)的結(jié)構(gòu)化分類;算法個(gè)數(shù),用于對(duì)屬于本次測(cè)試的不同算法所需要的數(shù)據(jù)進(jìn)行分割;具體結(jié)構(gòu)體,填寫相應(yīng)算法的基本信息以及進(jìn)行相應(yīng)測(cè)試時(shí)所需要的所有數(shù)據(jù)。
第二層次算法結(jié)構(gòu)體,該層次具體描述在某個(gè)算法范疇內(nèi)進(jìn)行測(cè)試所需要的數(shù)據(jù)信息,主要包括:算法的功能號(hào)FunID,用于唯一標(biāo)識(shí)系統(tǒng)中的算法;該類測(cè)試中測(cè)試類型數(shù)目(子結(jié)構(gòu)體數(shù)目):用于解析數(shù)據(jù)的程序進(jìn)行數(shù)據(jù)的結(jié)構(gòu)化分類;子結(jié)構(gòu)體指針,用于標(biāo)示本項(xiàng)目中數(shù)據(jù)存放的起始位置;子結(jié)構(gòu)體,用于存放本類算法測(cè)試所需要的相關(guān)數(shù)據(jù)。
第三層次測(cè)試數(shù)據(jù)結(jié)構(gòu)體,具體描述算法測(cè)試所需要的各種數(shù)據(jù)。主要包括:子命令字,表示數(shù)據(jù)類型;數(shù)據(jù)標(biāo)示,用于標(biāo)示數(shù)據(jù)的輸入格式和來源;數(shù)據(jù)長(zhǎng)度,用于表明數(shù)據(jù)的具體長(zhǎng)度。
結(jié)構(gòu)體的具體定義如下,每個(gè)結(jié)構(gòu)體只列出了部分成員變量。
⑴ 主結(jié)構(gòu)體
Version標(biāo)識(shí)了現(xiàn)在所用數(shù)據(jù)交互規(guī)范的版本,每個(gè)數(shù)據(jù)交互的規(guī)范都對(duì)應(yīng)著一個(gè)版本號(hào)。LayerNum表示數(shù)據(jù)交互規(guī)范中使用的結(jié)構(gòu)體層數(shù),結(jié)構(gòu)體層數(shù)可以根據(jù)用戶開發(fā)的系統(tǒng)的具體需求定義,本系統(tǒng)中根據(jù)密碼算法測(cè)試的具體需求定義了三層結(jié)構(gòu)體的具體數(shù)據(jù)交互形式,該值固定為3。
⑵ 算法結(jié)構(gòu)體
為了方便用戶對(duì)系統(tǒng)的擴(kuò)展,密碼算法FunID提供了數(shù)字和字符串兩種形式,對(duì)應(yīng)的算法結(jié)構(gòu)體就分為了Alg-InfoHdr和AlgInfoHdr2。若主結(jié)構(gòu)體中的版本號(hào)為1.0,則表示密碼算法的FunID使用數(shù)字形式表示,調(diào)用算法信息結(jié)構(gòu)體AlgInfoHdr,MainCmdCode用于表示密碼算法對(duì)應(yīng)的FunID或者0;若主結(jié)構(gòu)體的版本號(hào)為2.0,則表示密碼算法的FunID使用字符串形式表示,調(diào)用算法信息結(jié)構(gòu)體AlgInfoHdr2,MainCmdStrBytes表示密碼算法對(duì)應(yīng)的FunID所占的字節(jié)數(shù)。SubStructNum用于標(biāo)識(shí)命令參數(shù)結(jié)構(gòu)體的數(shù)據(jù),包括密碼算法組件的DLL名、密碼算法組件的接口函數(shù)名、測(cè)試次數(shù)、密鑰、初始向量和明文數(shù)據(jù)。
(3)數(shù)據(jù)子結(jié)構(gòu)體
SubCmdCode用于標(biāo)識(shí)測(cè)評(píng)所需的數(shù)據(jù),包括密碼算法組件的DLL名、密碼算法組件的接口函數(shù)名、測(cè)評(píng)類型、測(cè)試次數(shù)、密鑰、初始向量和明文。DataLength用于表示測(cè)評(píng)所需數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
數(shù)據(jù)交互過程中,測(cè)評(píng)系統(tǒng)根據(jù)數(shù)據(jù)交互規(guī)范的版本號(hào)調(diào)用不同的算法信息結(jié)構(gòu)體,根據(jù)定義好的數(shù)據(jù)結(jié)構(gòu)向測(cè)評(píng)組件與公共庫組件交互的緩沖區(qū)和測(cè)評(píng)組件與密碼算法組件交互的緩沖區(qū)中填充數(shù)據(jù),具體交互格式分為版本1.0和版本2.0。版本號(hào)1.0其中FunID使用第二層算法信息結(jié)構(gòu)體成員變量即可表示;版本號(hào)2.0FunID需要第二層算法結(jié)構(gòu)體中額外的空間用于存放其對(duì)應(yīng)的字符串形式。
測(cè)評(píng)系統(tǒng)通過命令碼來獲取測(cè)評(píng)所需的信息從而調(diào)用不同的數(shù)據(jù)處理函數(shù)。測(cè)評(píng)系統(tǒng)組件間數(shù)據(jù)交互規(guī)范是為了方便組件間正確的獲取數(shù)據(jù)、解析數(shù)據(jù)和傳遞數(shù)據(jù)而制定的。測(cè)評(píng)所需的信息需要在命令碼中標(biāo)識(shí)出來。因此測(cè)評(píng)系統(tǒng)組件間的數(shù)據(jù)交互的規(guī)范需要給主命令碼和次命令碼的每一位都賦予含義,確保該命令碼包含所有測(cè)評(píng)所需的信息。每個(gè)組件獲取主命令碼和次命令碼并對(duì)其解析從而調(diào)用不同的數(shù)據(jù)處理函數(shù)來處理數(shù)據(jù),最終將測(cè)評(píng)所需的信息和數(shù)據(jù)傳給下一個(gè)組件。主命令碼和次命令碼的定義分別如圖4、圖5所示。
基于上述通用可擴(kuò)展數(shù)據(jù)交互規(guī)范,本文設(shè)計(jì)并實(shí)現(xiàn)了動(dòng)態(tài)可重組的自動(dòng)化測(cè)評(píng)系統(tǒng)。測(cè)評(píng)系統(tǒng)各組件都按照統(tǒng)一的數(shù)據(jù)交互規(guī)范獲取數(shù)據(jù)、解析數(shù)據(jù)和傳遞數(shù)據(jù),從而實(shí)現(xiàn)對(duì)密碼算法或樣本數(shù)據(jù)的測(cè)評(píng)。下面以密碼算法多次測(cè)評(píng)所需的數(shù)據(jù)部分相同來描述通用可擴(kuò)展數(shù)據(jù)交互規(guī)范的實(shí)現(xiàn)過程。
公共庫組件解析XML文件獲取測(cè)評(píng)所需的數(shù)據(jù)總長(zhǎng)度小于緩沖區(qū)所申請(qǐng)的內(nèi)存空間,因此測(cè)評(píng)組件解析緩沖區(qū)中數(shù)據(jù)傳給密碼算法組件。該測(cè)試的主要目的是檢驗(yàn)測(cè)評(píng)系統(tǒng)是否嚴(yán)格按著數(shù)據(jù)交互的規(guī)范正確的組織數(shù)據(jù),測(cè)試結(jié)果如圖6所示。
圖6 測(cè)試結(jié)果
本文通過對(duì)密碼算法測(cè)評(píng)系統(tǒng)動(dòng)態(tài)可重構(gòu)軟件框架的組件間數(shù)據(jù)傳遞規(guī)范進(jìn)行了研究,詳細(xì)分析了各個(gè)組件間的相互關(guān)系和工作流程,定義了一種可進(jìn)行動(dòng)態(tài)擴(kuò)展并能夠適應(yīng)各種密碼算法測(cè)試的數(shù)據(jù)交互規(guī)范。通過對(duì)AES、Grain128等18種密碼算法的單比特頻率、矩陣秩檢驗(yàn)等國(guó)際通用的16種算法測(cè)試標(biāo)準(zhǔn)[15]進(jìn)行了相關(guān)的測(cè)試應(yīng)用,該規(guī)范可以滿足所用的相關(guān)算法、相關(guān)測(cè)試項(xiàng)目的測(cè)試需求。該數(shù)據(jù)交互規(guī)范統(tǒng)一了組件間數(shù)據(jù)交互的格式,方便了用戶自定義組件的編寫,滿足了多種密碼算法、多種數(shù)據(jù)、多種測(cè)試需求的密碼算法測(cè)試過程中的數(shù)據(jù)傳遞,有利于系統(tǒng)可重構(gòu)性和動(dòng)態(tài)性的體現(xiàn)。
本文中的提出的數(shù)據(jù)交互規(guī)范及動(dòng)態(tài)框架已經(jīng)在863計(jì)劃 “密碼算法和安全協(xié)議自動(dòng)化檢測(cè)工具開發(fā)及測(cè)評(píng)系統(tǒng)”中得到了應(yīng)用,并獲得了相關(guān)施用單位的肯定。
[1]Stinsond D R.Cryptography:Theory and practice [M].Boca Raton:Chapman & Hall/CRC Press,2005.
[2]Junod P.Statistical cryptanalysis of block ciphers [D].Switzerland:Federal Polytechnic School of Lausanne,2004.
[3]WU Wenling,HE Yeping,F(xiàn)ENG Dengguo,et al.Brief commentary on the 21st century european data encryption stand and candidate algorithms [J].Journal of Software,2001,12(1):49-55(in Chinese).[吳文玲,賀也平,馮登國(guó),等.歐洲21世紀(jì)數(shù)據(jù)加密標(biāo)準(zhǔn)候選算法簡(jiǎn)評(píng) [J].軟件學(xué)報(bào),2001,12(1):49-55.]
[4]LI Fenghua,YAN Junzhi,XIE Rongna,et al.Research on the programming language for symmetric cryptographic algorithms[J].Chinese Journal of Electronics,2010,19(2):303-306.
[5]FAN Limin,F(xiàn)ENG Dengguo,ZHOU Yongbin.Parameter selection of autocorrelation test for block ciphers [J].Journal on Communications,2009,30(7):86-90(in Chinese).[范麗敏,馮登國(guó),周永彬.分組密碼算法的自相關(guān)檢測(cè)參數(shù)選擇 [J].通信學(xué)報(bào),2009,30(7):86-90.]
[6]FAN Limin,F(xiàn)ENG Dengguo,ZHOU Yongbin.A fuzzy-based randomness evaluation model for block cipher [J].Journal of Computer Research and Development,2008,45(12):2095-2101(in Chinese).[范麗敏,馮登國(guó),周永彬.基于模糊評(píng)價(jià)的分組密碼隨機(jī)性評(píng)估模型 [J].計(jì)算機(jī)研究與發(fā)展,2008,45(12):2095-2101.]
[7]MO Xi,ZHAO Fang.Data-model-driven software automation test framework [J].Computer Engineering,2009,35(21):78-81(in Chinese).[莫熹,趙方.一種數(shù)據(jù)模型驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試框架 [J].計(jì)算機(jī)工程,2009,35(21):78-81.]
[8]CHEN Hua,F(xiàn)ENG Dengguo,F(xiàn)AN Limin.A new statistical test on block cipher [J].Journal of Computers,2009,32(4):595-601(in Chinese).[陳華,馮登國(guó),范麗敏.一種關(guān)于分組密碼的新的統(tǒng)計(jì)檢測(cè)方法 [J].計(jì)算機(jī)學(xué)報(bào),2009,32(4):595-601.]
[9]PENG Wei,ZHOU Liang.Testing platform with block cipher[J].Journal of Chendu University of Information Technology,2005,20(5):530-534(in Chinese).[彭巍,周亮.分組密碼算法測(cè)試平臺(tái)設(shè)計(jì) [J].成都信息工程學(xué)院學(xué)報(bào),2005,20(5):530-534.]
[10]JIN Lina.The testing platform of cryptographic algorithm-research of the implementation of the algorithm [D].Xi’an:Xidian University,2007(in Chinese).[金麗娜.密碼算法測(cè)試平臺(tái)-算法實(shí)現(xiàn)技術(shù)研究 [D].西安:西安電子科技大學(xué),2007.]
[11]YANG Ning.The testing platform of cryptographic algorithmthe study of system software design [D].Xi’an:Xidian University,2007(in Chinese).[楊寧.密碼算法測(cè)試平臺(tái)—系統(tǒng)軟件設(shè)計(jì)研究 [D].西安:西安電子科技大學(xué),2007.]
[12]JIA Qun.The testing platform of cryptographic algorithm-the study of hardware design [D].Xi’an:Xidian University,2007(in Chinese).[賈群.密碼算法測(cè)試平臺(tái)-硬件設(shè)計(jì)研究[D].西安:西安電子科技大學(xué),2007.]
[13]LIANG Xiaoyan,LI Fenghua,SHI Guozhen,et al.Dynamic reusable component integration framework [J].Control and Automation Publication Group,2009,25(27):189 -191(in Chinese).[梁曉艷,李鳳華,史國(guó)振,等.動(dòng)態(tài)可重組的組件集成框架研究 [J].微計(jì)算機(jī)信息,2009,25(27):189-191.]
[14]LI Fenghua,SU Haoxin,SHI Guozhen,et al.Research on the framework integrated by scalable components [C].Xiamen:Proceedings of the World Congress on Software Engineering IEEE Computer Society,2009:442-446.
[15]Rukhin A,Soto J,Nechvatal J,et al.A statistical test suite for random and pseudorandom number generators for cryptographic applications[S].NIST Special Publication,2001.