史國振,李鳳華,謝絨娜,唐志濤
(1.北京電子科技學院 電子信息工程系,北京100070;2.北京電子科技學院 信息安全系,北京100070;3.西安電子科技大學 計算機學院,陜西 西安710071)
為了保證密碼算法的可用性,針對密碼算法的各類測評軟件和工具的研究成為國內(nèi)外研究的熱點[1-2]。許多國家先后啟動密碼算法標準化工作,大量國內(nèi)外專家致力于密碼算法及測評標準的研究與開發(fā)[3-8]。文獻 [9]設計并實現(xiàn)了一種分組密碼算法的測試平臺,將分組密碼各個組成部件包括S盒、輪函數(shù)、密鑰擴展等設計方法歸類總結(jié),同時也給出了一些比較實用的方法;文獻 [10-12]設計并實現(xiàn)了一種密碼算法測試平臺,分別從算法、軟件和硬件等方面給予說明及實現(xiàn)。但上述密碼算法和測試方法在使用上缺乏靈活性。文獻 [13-14]提出了動態(tài)可重組的軟件設計框架,為用戶提供一種動態(tài)、可擴展和可定制的密碼算法測試環(huán)境,但并沒有給出各組件間靈活的數(shù)據(jù)交換規(guī)范,使得在設計過程中軟件的靈活性和實用性受到了一定的限制。
本文針對密碼算法測評及其動態(tài)框架的設計需求,在動態(tài)可重構(gòu)軟件框架的基礎上研究了可擴展和可定制的各組件之間數(shù)據(jù)交互規(guī)范。
動態(tài)可重組系統(tǒng)框架如圖1所示?;究蚣苡杉烧{(diào)度平臺、組件管理模塊、公共組件以及組件信息數(shù)據(jù)庫和配置文件構(gòu)成。組件信息數(shù)據(jù)庫記錄、管理和維護系統(tǒng)中的組件信息及其運行狀態(tài);組件管理模塊根據(jù)組件信息數(shù)據(jù)庫、配置文件管理系統(tǒng)中的組件;集成調(diào)度平臺是系統(tǒng)的主控程序,實現(xiàn)當前系統(tǒng)所加載的組件,將其功能以直觀的形式顯現(xiàn)給用戶,根據(jù)用戶的選擇調(diào)用組件中的具體功能;公共組件為系統(tǒng)提供輸入輸出功能。
密碼組件和測評組件在系統(tǒng)中統(tǒng)稱為私有組件,可以由用戶根據(jù)個體需要進行訂制、添加和刪除,形成不同的使用環(huán)境。測評組件在系統(tǒng)中體現(xiàn)為測評的具體功能,密碼組件在系統(tǒng)中體現(xiàn)為具體的密碼算法資源。系統(tǒng)中各個部分的交互關(guān)系如圖2所示。
圖1 系統(tǒng)框架
圖2 集成框架各部分關(guān)系
該動態(tài)可重組的軟件集成框架由數(shù)據(jù)庫、集成調(diào)用平臺、組件管理模塊和組件組成。其中,集成調(diào)用平臺負責界面的顯示、對組件功能的調(diào)用以及系統(tǒng)的調(diào)配;組件模塊包含了公共組件、私有組件、管理組件3個子模塊,其主要是作為最小的系統(tǒng)加載在最初的集成調(diào)用平臺上。公共組件主要對系統(tǒng)內(nèi)部信息進行初始化;私有組件通過與公共組件進行數(shù)據(jù)交互,對公共組件接收到的外部數(shù)據(jù)進行處理;管理組件主要是負責對組件的加載、卸載以及子功能和菜單的管理。當組件做加載操作時組件的相關(guān)信息被記錄到數(shù)據(jù)庫中,集成調(diào)用平臺則通過讀取數(shù)據(jù)庫中的相關(guān)表格相關(guān)字段獲取信息,實現(xiàn)內(nèi)部的操作。各個部分的交互關(guān)系如圖3所示。
測評系統(tǒng)中各個組件交互的具體流程如下:
步驟1 運行測評系統(tǒng),輸入測評配置文件。如果用戶選擇手動配置XML文件則彈出對話框,要求用戶輸入測評所需的信息和數(shù)據(jù),由測評系統(tǒng)生成XML文件;如果用戶選擇自動配置XML文件則執(zhí)行步驟2。
步驟2 動態(tài)框架解析XML文件獲取用戶選擇的測評方法的信息。
步驟3 動態(tài)框架獲取一個測評方法,調(diào)用測評組件,將該測評方法的信息傳給測評組件,進行一個測評方法的測評。
(1)測評組件調(diào)用公共庫組件獲取該測評方法對應的密碼算法的信息和數(shù)據(jù)。
(2)測評組件解析公共庫組件傳過來的數(shù)據(jù),統(tǒng)計測評所需的密碼算法組件數(shù)目。
(3)測評組件調(diào)用密碼算法組件進行密碼算法測評。
1)密碼算法組件對數(shù)據(jù)進行加密/解密操作。
2)測評組件利用測評方法對密碼算法組件處理過的數(shù)據(jù)進行測評。
3)測評組件調(diào)用公共庫組件輸出測評結(jié)果。
(4)判斷所有的密碼算法組件是否已全部調(diào)用,如果沒有則返回(3)處執(zhí)行。
步驟4 判斷所有的測評方法是否已完成測評,如果沒有則返回步驟3處執(zhí)行。
步驟5 綜合處理測評結(jié)果,測評結(jié)束。
為了為系統(tǒng)各組件之間進行數(shù)據(jù)傳遞提供一種統(tǒng)一的數(shù)據(jù)交互規(guī)范,各組件間數(shù)據(jù)交互采用n層次的數(shù)據(jù)格式,以n=3為例,數(shù)據(jù)格式如圖3所示。
圖3 版本號為1.0即FunID為數(shù)字形式時緩沖區(qū)中數(shù)據(jù)結(jié)構(gòu)定義
第一層次為主結(jié)構(gòu)體,該層次主要包括:數(shù)據(jù)交互的版本號,用于區(qū)別數(shù)據(jù)傳遞的基本類型;結(jié)構(gòu)體層數(shù),用于解析數(shù)據(jù)的程序進行數(shù)據(jù)的結(jié)構(gòu)化分類;算法個數(shù),用于對屬于本次測試的不同算法所需要的數(shù)據(jù)進行分割;具體結(jié)構(gòu)體,填寫相應算法的基本信息以及進行相應測試時所需要的所有數(shù)據(jù)。
第二層次算法結(jié)構(gòu)體,該層次具體描述在某個算法范疇內(nèi)進行測試所需要的數(shù)據(jù)信息,主要包括:算法的功能號FunID,用于唯一標識系統(tǒng)中的算法;該類測試中測試類型數(shù)目(子結(jié)構(gòu)體數(shù)目):用于解析數(shù)據(jù)的程序進行數(shù)據(jù)的結(jié)構(gòu)化分類;子結(jié)構(gòu)體指針,用于標示本項目中數(shù)據(jù)存放的起始位置;子結(jié)構(gòu)體,用于存放本類算法測試所需要的相關(guān)數(shù)據(jù)。
第三層次測試數(shù)據(jù)結(jié)構(gòu)體,具體描述算法測試所需要的各種數(shù)據(jù)。主要包括:子命令字,表示數(shù)據(jù)類型;數(shù)據(jù)標示,用于標示數(shù)據(jù)的輸入格式和來源;數(shù)據(jù)長度,用于表明數(shù)據(jù)的具體長度。
結(jié)構(gòu)體的具體定義如下,每個結(jié)構(gòu)體只列出了部分成員變量。
⑴ 主結(jié)構(gòu)體
Version標識了現(xiàn)在所用數(shù)據(jù)交互規(guī)范的版本,每個數(shù)據(jù)交互的規(guī)范都對應著一個版本號。LayerNum表示數(shù)據(jù)交互規(guī)范中使用的結(jié)構(gòu)體層數(shù),結(jié)構(gòu)體層數(shù)可以根據(jù)用戶開發(fā)的系統(tǒng)的具體需求定義,本系統(tǒng)中根據(jù)密碼算法測試的具體需求定義了三層結(jié)構(gòu)體的具體數(shù)據(jù)交互形式,該值固定為3。
⑵ 算法結(jié)構(gòu)體
為了方便用戶對系統(tǒng)的擴展,密碼算法FunID提供了數(shù)字和字符串兩種形式,對應的算法結(jié)構(gòu)體就分為了Alg-InfoHdr和AlgInfoHdr2。若主結(jié)構(gòu)體中的版本號為1.0,則表示密碼算法的FunID使用數(shù)字形式表示,調(diào)用算法信息結(jié)構(gòu)體AlgInfoHdr,MainCmdCode用于表示密碼算法對應的FunID或者0;若主結(jié)構(gòu)體的版本號為2.0,則表示密碼算法的FunID使用字符串形式表示,調(diào)用算法信息結(jié)構(gòu)體AlgInfoHdr2,MainCmdStrBytes表示密碼算法對應的FunID所占的字節(jié)數(shù)。SubStructNum用于標識命令參數(shù)結(jié)構(gòu)體的數(shù)據(jù),包括密碼算法組件的DLL名、密碼算法組件的接口函數(shù)名、測試次數(shù)、密鑰、初始向量和明文數(shù)據(jù)。
(3)數(shù)據(jù)子結(jié)構(gòu)體
SubCmdCode用于標識測評所需的數(shù)據(jù),包括密碼算法組件的DLL名、密碼算法組件的接口函數(shù)名、測評類型、測試次數(shù)、密鑰、初始向量和明文。DataLength用于表示測評所需數(shù)據(jù)的數(shù)據(jù)長度。
數(shù)據(jù)交互過程中,測評系統(tǒng)根據(jù)數(shù)據(jù)交互規(guī)范的版本號調(diào)用不同的算法信息結(jié)構(gòu)體,根據(jù)定義好的數(shù)據(jù)結(jié)構(gòu)向測評組件與公共庫組件交互的緩沖區(qū)和測評組件與密碼算法組件交互的緩沖區(qū)中填充數(shù)據(jù),具體交互格式分為版本1.0和版本2.0。版本號1.0其中FunID使用第二層算法信息結(jié)構(gòu)體成員變量即可表示;版本號2.0FunID需要第二層算法結(jié)構(gòu)體中額外的空間用于存放其對應的字符串形式。
測評系統(tǒng)通過命令碼來獲取測評所需的信息從而調(diào)用不同的數(shù)據(jù)處理函數(shù)。測評系統(tǒng)組件間數(shù)據(jù)交互規(guī)范是為了方便組件間正確的獲取數(shù)據(jù)、解析數(shù)據(jù)和傳遞數(shù)據(jù)而制定的。測評所需的信息需要在命令碼中標識出來。因此測評系統(tǒng)組件間的數(shù)據(jù)交互的規(guī)范需要給主命令碼和次命令碼的每一位都賦予含義,確保該命令碼包含所有測評所需的信息。每個組件獲取主命令碼和次命令碼并對其解析從而調(diào)用不同的數(shù)據(jù)處理函數(shù)來處理數(shù)據(jù),最終將測評所需的信息和數(shù)據(jù)傳給下一個組件。主命令碼和次命令碼的定義分別如圖4、圖5所示。
基于上述通用可擴展數(shù)據(jù)交互規(guī)范,本文設計并實現(xiàn)了動態(tài)可重組的自動化測評系統(tǒng)。測評系統(tǒng)各組件都按照統(tǒng)一的數(shù)據(jù)交互規(guī)范獲取數(shù)據(jù)、解析數(shù)據(jù)和傳遞數(shù)據(jù),從而實現(xiàn)對密碼算法或樣本數(shù)據(jù)的測評。下面以密碼算法多次測評所需的數(shù)據(jù)部分相同來描述通用可擴展數(shù)據(jù)交互規(guī)范的實現(xiàn)過程。
公共庫組件解析XML文件獲取測評所需的數(shù)據(jù)總長度小于緩沖區(qū)所申請的內(nèi)存空間,因此測評組件解析緩沖區(qū)中數(shù)據(jù)傳給密碼算法組件。該測試的主要目的是檢驗測評系統(tǒng)是否嚴格按著數(shù)據(jù)交互的規(guī)范正確的組織數(shù)據(jù),測試結(jié)果如圖6所示。
圖6 測試結(jié)果
本文通過對密碼算法測評系統(tǒng)動態(tài)可重構(gòu)軟件框架的組件間數(shù)據(jù)傳遞規(guī)范進行了研究,詳細分析了各個組件間的相互關(guān)系和工作流程,定義了一種可進行動態(tài)擴展并能夠適應各種密碼算法測試的數(shù)據(jù)交互規(guī)范。通過對AES、Grain128等18種密碼算法的單比特頻率、矩陣秩檢驗等國際通用的16種算法測試標準[15]進行了相關(guān)的測試應用,該規(guī)范可以滿足所用的相關(guān)算法、相關(guān)測試項目的測試需求。該數(shù)據(jù)交互規(guī)范統(tǒng)一了組件間數(shù)據(jù)交互的格式,方便了用戶自定義組件的編寫,滿足了多種密碼算法、多種數(shù)據(jù)、多種測試需求的密碼算法測試過程中的數(shù)據(jù)傳遞,有利于系統(tǒng)可重構(gòu)性和動態(tài)性的體現(xiàn)。
本文中的提出的數(shù)據(jù)交互規(guī)范及動態(tài)框架已經(jīng)在863計劃 “密碼算法和安全協(xié)議自動化檢測工具開發(fā)及測評系統(tǒ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).[吳文玲,賀也平,馮登國,等.歐洲21世紀數(shù)據(jù)加密標準候選算法簡評 [J].軟件學報,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ān)檢測參數(shù)選擇 [J].通信學報,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).[范麗敏,馮登國,周永彬.基于模糊評價的分組密碼隨機性評估模型 [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ū)動的軟件自動化測試框架 [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ān)于分組密碼的新的統(tǒng)計檢測方法 [J].計算機學報,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).[彭巍,周亮.分組密碼算法測試平臺設計 [J].成都信息工程學院學報,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).[金麗娜.密碼算法測試平臺-算法實現(xiàn)技術(shù)研究 [D].西安:西安電子科技大學,2007.]
[11]YANG Ning.The testing platform of cryptographic algorithmthe study of system software design [D].Xi’an:Xidian University,2007(in Chinese).[楊寧.密碼算法測試平臺—系統(tǒng)軟件設計研究 [D].西安:西安電子科技大學,2007.]
[12]JIA Qun.The testing platform of cryptographic algorithm-the study of hardware design [D].Xi’an:Xidian University,2007(in Chinese).[賈群.密碼算法測試平臺-硬件設計研究[D].西安:西安電子科技大學,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).[梁曉艷,李鳳華,史國振,等.動態(tài)可重組的組件集成框架研究 [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.