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

?

裝備軟件狀態(tài)標識的消息認證碼*

2015-11-28 05:08陳策姜曉輝胡勇
火力與指揮控制 2015年8期
關鍵詞:字節(jié)消息函數(shù)

陳策,姜曉輝,胡勇

(解放軍63961部隊,北京100012)

裝備軟件狀態(tài)標識的消息認證碼*

陳策,姜曉輝,胡勇

(解放軍63961部隊,北京100012)

消息認證技術中的散列函數(shù)可以產(chǎn)生與消息內(nèi)容緊密相關的消息認證碼,可以據(jù)此對裝備中的軟件進行狀態(tài)標識。通過Visual C++與C#混合編程,建立了基于MD5算法的消息認證的實驗系統(tǒng),并進行了內(nèi)容相關性、抗碰撞與軟件狀態(tài)標識實驗。結(jié)果表明,與當前普遍采用的軟件版本號實現(xiàn)軟件版本狀態(tài)管理相比,消息認證碼可以避免人為疏忽所造成的裝備軟件狀態(tài)管理的失效,是一種有效的裝備軟件狀態(tài)標識的技術手段。

軟件版本標識,消息認證,散列函數(shù),軟件狀態(tài)管理

0 引言

在當前軟件版本管理中,通常采用<major>.<minor>.<build>.<revision>4部分的方式對軟件版本進行標識,如某指控系統(tǒng)中空情處理軟件構(gòu)件用0.2.0.0標識。通過版本標識,軟件開發(fā)者、管理者以及最終的產(chǎn)品用戶可以從標識中獲知軟件的狀態(tài)變化信息,實現(xiàn)對軟件的有序維護和升級[1-3]。軟件的版本標識與管理確保了軟件發(fā)布過程的可重復性、可控制性和可跟蹤性,但以上述形式所標識的軟件版本信息有其固有的缺陷,由于版本標識同軟件本身的內(nèi)容無關,當軟件內(nèi)容發(fā)生變化后,由于配置管理員的疏忽,可能會忘記或者沒有按照預定的規(guī)則更新軟件版本標識,從而造成軟件配置管理的失效,在現(xiàn)實中存在著大量的由于版本控制疏忽所導致的軟件失效。

在網(wǎng)絡安全中,為防止信息在傳輸和存儲過程中可能遭受的攻擊和破壞,會采用消息認證技術來驗證信息的真實性和完整性,消息認證技術所采用的消息認證碼與信息內(nèi)容緊密相關,信息內(nèi)容一個字節(jié)的變化都會引起消息認證碼的變化,這很好地契合了軟件版本標識需要與軟件內(nèi)容相關的要求。本文采用消息認證的方法對軟件進行版本標識,使軟件的版本標識與軟件內(nèi)容緊密相關,軟件中任何一個字節(jié)內(nèi)容的變化都必將引起軟件版本標識的變更,為軟件配置管理的有效實施提供了技術上的保障?;谙⒄J證技術的軟件狀態(tài)標識方法為裝備軟件的狀態(tài)管理提供了一種有效的技術手段,可以確保軟件狀態(tài)管理的有序?qū)嵤?/p>

1 消息認證技術

消息認證技術可以防止攻擊者對系統(tǒng)的主動攻擊,消息認證主要達到兩個目標:一是驗證消息的真實性,二是驗證消息的完整性。實現(xiàn)消息認證需要用認證函數(shù)對消息生成某種形式的認證標志,可以使用消息加密、消息認證碼和hash函數(shù)3種方法來產(chǎn)生認證函數(shù),消息加密和消息認證碼采用共享密鑰加密算法產(chǎn)生消息的認證標志,hash函數(shù)是不使用加密的認證方法。由于加密算法軟件運算速度慢、硬件費用高、算法專利保護和出口限制等因素,人們更傾向于使用hash函數(shù)實現(xiàn)消息的認證。

1.1散列函數(shù)

hash函數(shù)又稱哈希函數(shù)或散列函數(shù),其功能是將一個任意長度的消息變換為一個較短的固定長度的輸出串,該固定長度的輸出串與消息的所有比特相關,常稱為消息的hash值、散列值或消息摘要。對于特定的數(shù)據(jù)而言,其hash值是唯一的,一旦數(shù)據(jù)發(fā)生變化,則對應的“數(shù)字指紋”也會發(fā)生變化。設M是所有可能消息m的集合,Y是由所有可能的消息摘要y形成的有限集,則把從無限集M到有限集Y的映射稱為一個hash函數(shù)。

hash函數(shù)應滿足如下6個特性[4-6]:①輸入消息的長度應沒有限制,hash函數(shù)應能作用于任何大小的數(shù)據(jù)分組;②hash函數(shù)作用于任意長度的消息后得到固定長度的輸出;③對任意給定的消息m,計算y=h(m)比較容易,適合用軟硬件快速實現(xiàn);④對任意給定的消息m,消息摘要y與m的每一比特信息高度相關,只要改變消息m的任意一位或多位,摘要值就會發(fā)生顯著改變,此性質(zhì)被稱為hash函數(shù)的雪崩性;⑤對任意給定的消息m,找到滿足y=h(m)的消息m是困難的,即hash求逆在計算上是不可行的,這是hash函數(shù)的單向性;⑥對任意給定的消息m,找到另一個不同的消息m',使得h(m)=h(m')在計算上是不可行的,這是hash函數(shù)的抗碰撞性。

1.2MD5算法

hash函數(shù)中比較有名的是MD5算法,該算法以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列處理后,算法的輸出由4個32位分組組成,將這4個32位分組級聯(lián)后將生成一個128位共16個字節(jié)的摘要值。圖1給出了MD5算法的總體實現(xiàn)過程。

圖1 MD5算法的總體實現(xiàn)過程

算法首先需要對信息進行填充,使其位長度對512求余的結(jié)果等于448。因此,信息的位長度將被擴展至N×512+448,即N×64+56個字節(jié),N為一個非負整數(shù)。填充的方法如下,在信息的后面填充一個1和無數(shù)個0,直到滿足上面的條件時才停止用0對信息的填充。然后,再在這個結(jié)果后面附加一個以64位共8個字節(jié)的二進制表示的填充前信息長度。信息填充后被分解為長度為512位的N+1個信息分組,每個信息分組為64個字節(jié),將4個字節(jié)表示為一個整數(shù),則每個信息分組包含16個整數(shù)。算法開始時,設置4個被稱作鏈接變量的整數(shù)參數(shù),分別為:A、B、C、D,為這4個鏈接變量設置初始值后,就開始進入算法的循環(huán)運算,循環(huán)的次數(shù)是信息中信息分組的數(shù)目,每次循環(huán)針對信息分組mi進行,循環(huán)前先將上面4個鏈接變量復制到另外4個變量中:A到a,B到b,C到c,D到d,然后對信息分組mi所包含的16個整數(shù)Xj(j=0~15)執(zhí)行經(jīng)壓縮函數(shù)f的壓縮處理。壓縮函數(shù)f由4輪,每輪16步組成,具體算法可參見文獻[6]。

1.3算法的實現(xiàn)

利用MD5算法建立消息認證的實驗系統(tǒng),驗證MD5算法在生成消息認證碼中的有效性,實驗系統(tǒng)MD5算法模塊采用Visual C++編寫,人機交互界面采用Visual Studio 2010 C#.net實現(xiàn),之所以要編寫MD5算法模塊與人機交互界面分開不同語言實現(xiàn)的實驗系統(tǒng),是因為Visual C++編寫算法模塊更為容易,C#.net編寫人機交互界面更為容易,另外,也是為了驗證.net中不同語言間集成的方便性[7]。

由于需要消息認證的文件會很大,可能無法一次性地把文件內(nèi)容全部讀到緩存區(qū)中,在實現(xiàn)文件的消息認證時,采取每次讀取最多1 024個字節(jié)的方法進行摘要值更新。打開文件后,每次讀取1 024個字節(jié)進行壓縮,當讀完文件后,關閉文件指針,進行信息內(nèi)容的填充,在所填充信息的第56個字節(jié)處附加8個字節(jié)表示的位長度信息,更新最后填充的64個字節(jié),最后產(chǎn)生16個字節(jié)的消息認證碼。在消息認證算法中,核心是更新壓縮update的算法模塊,在該模塊中要不斷取出一個分組64個字節(jié)進行壓縮,update輸入需要壓縮的數(shù)據(jù)包和數(shù)據(jù)包長度,方法內(nèi)部實現(xiàn)對輸入數(shù)據(jù)包的壓縮,當數(shù)據(jù)包不是64個字節(jié)的整數(shù)倍時,對于最后一個不足64個字節(jié)的包,需要留到下一次再使用update壓縮時用補齊64個字節(jié)再進行壓縮。該算法的流程如圖2所示。

圖2 更新壓縮update的算法流程

首先計算上次使用update壓縮時有無留下的未被壓縮處理的數(shù)據(jù)包內(nèi)容,未被壓縮處理的數(shù)據(jù)內(nèi)容必定為小于64個字節(jié)的數(shù)據(jù)包;計算留下的未被壓縮處理的數(shù)據(jù)包長度index及需要補充的長度partLen=64-index;判斷輸入數(shù)據(jù)包的長度是否大于需要補充的長度,如果大于需要補齊的長度則補齊后進行transform壓縮運算,然后將輸入數(shù)據(jù)包剩余的數(shù)據(jù)包取64個字節(jié)的整數(shù)倍的數(shù)據(jù)進行每64個字節(jié)一個循環(huán)的transform壓縮運算,最后將余下不足64個字節(jié)的數(shù)據(jù)包作為預留,等到下次再進入update方法時處理。

2 裝備軟件狀態(tài)標識的實驗

為了對MD5消息認證算法進行驗證,至少需要驗證兩個方面的內(nèi)容,一是需驗證所產(chǎn)生的消息認證碼與信息內(nèi)容緊密相關,二是需驗證所產(chǎn)生的消息認證碼具有超強的抗碰撞性。

2.1內(nèi)容相關性實驗

根據(jù)軟件測試用例設計中等價類劃分和邊界值分析的原則,分別生成具有1個字節(jié)、55個字節(jié)、56個字節(jié)、64個字節(jié)、2 013個字節(jié)、2 014個字節(jié)、2 112個字節(jié)的文件,針對每種長度的文件,將文件中最后一個字節(jié)內(nèi)容由0x00改為0x01,檢查這些文件所產(chǎn)生的消息認證碼。圖3所示為本文所編寫的消息認證實驗程序及實驗結(jié)果。

圖3 MD5算法消息認證碼的驗證程序

實驗結(jié)果表明,這14個長度或內(nèi)容均有所區(qū)別的文件所生成的消息認證碼均不相同,即使文件只有1個字節(jié)的差別,所生成的消息認證碼也會發(fā)生顯著變化,這符合散列函數(shù)的雪崩特性。

2.2抗碰撞性實驗

為進一步驗證算法所具有的抗碰撞性,設計實驗對計算機中各目錄存在的文件進行消息認證碼的生成,檢驗是否有相同的消息認證碼出現(xiàn),理論上MD5算法要產(chǎn)生碰撞至少需要25 616個文件才有可能產(chǎn)生一次碰撞,即使每個文件只占1個字節(jié)的大小,信息量都是非常大的。在實際應用中,操作系統(tǒng)中會安裝多個軟件,利用本人的辦公計算機對MD5算法進行抗碰撞實驗,計算機中的系統(tǒng)盤C盤中已經(jīng)安裝了20余個軟件,共有文件108 487個,文件數(shù)達10萬之多,占用空間33.9 GB。圖4為抗碰撞實驗程序。

圖4 MD5算法的抗碰撞實驗程序

經(jīng)實驗后,所有具有相同認證碼的文件,或者是同一文件但不同目錄,或者是不同文件但內(nèi)容相同,如果將文件的全路徑也作為文件信息的一部分,經(jīng)實驗后,所有文件的消息認證實驗后,所有文件的消息認證碼則均不相同。實驗結(jié)果表明:MD5消息認證算法的抗碰撞實驗表明:將消息認證碼作為文件的版本狀態(tài)控制信息是合適的。

2.3利用消息認證碼實現(xiàn)軟件狀態(tài)標識

表1 BattleBook.exe各版本消息認證碼實驗結(jié)果

選取一實際的軟件,對其主程序BattleBook.exe的不同版本進行消息認證碼生成,表1列出了消息認證碼的實驗結(jié)果。表中的文件版本標識是BattleBook.exe資源區(qū)中所寫的標識,在Visual studio 2010中用資源編輯器的方式打開BattleBook.exe后,可以看到在Block Header中具有FileVersion字段,該字段是一個字符串,在編程時由開發(fā)人員修改,這就會由于開發(fā)人員的疏忽而忘記在修改了程序后修改該字段值,導致主程序BattleBook.exe的文件版本標識即使程序已發(fā)生變化,但文件版本標識卻沒有跟著變化。從文件修訂的日期來看,顯然文件的版本應不同。如果用文件版本標識加版本日期的方法是否就能明確標識一個文件的版本呢?答案也是否定的,因為版本日期是計算機根據(jù)時間所生成的,同樣不會跟內(nèi)容相關。表中不同版本的5個BattleBook.exe,其消息認證碼各不相同,用消息認證碼的方式來標識文件版本就可以避免人為的疏忽所造成的版本狀態(tài)無法管理的混亂。利用Visual studio 2010,可以用資源編輯器的方式打開BattleBook. exe并修改FileVersion的字段值,將該字段值由字符串“1.0.0.1”修改為相應的消息認證碼,這樣就可以標識出不同版本的程序。

3 結(jié)束語

消息認證技術是網(wǎng)絡安全中的一項重要技術,可以實現(xiàn)對消息的完整性和真實性認證,用消息認證碼對裝備軟件進行版本標識可以更有效地實現(xiàn)軟件的狀態(tài)管理,本文所實現(xiàn)的算法和實驗系統(tǒng)充分證明了這一點,在微軟.Net框架中已經(jīng)用強命名規(guī)則實現(xiàn)了這一理念,在裝備軟件狀態(tài)控制方面,迫切需要將這種技術加以應用。本文所實現(xiàn)的軟件狀態(tài)標識還只能利用Visual studio 2010資源編輯器將所生成的消息認證碼加入軟件的主程序中,后續(xù)的工作是進一步研究軟件信息的組成,尤其是操作系統(tǒng)中可執(zhí)行文件的格式,自動將消息認證碼注入到軟件主執(zhí)行程序中,同時進一步研究利用軟件中的消息認證碼進行裝備軟件狀態(tài)認證的方法和開發(fā)裝備軟件狀態(tài)認證系統(tǒng),確保將陸軍裝備科研訂購部裝備軟件管理規(guī)定所要求的裝備軟件狀態(tài)管理落到實處。

[1]劉燕秋,勉玉靜,趙文耘.軟件配置管理中版本管理技術研究[J].計算機工程與應用,2003,21(7):68-71.

[2]張為.現(xiàn)代軟件開發(fā)的過程管理方法研究[J].計算機工程與科學,2003,25(2):99-103.

[3]倪曉峰,趙文耘,張捷.構(gòu)件軟件配置管理以及其版本控制技術研究[J].計算機工程與應用,2005,23(2):94-96.

[4]鄧元慶,龔晶,石會.密碼學簡明教程[M].北京:清華大學出版社,2011:144-146.

[5]肖皇培,張國基.基于Hash函數(shù)的報文鑒別方法[J].計算機工程,2007,33(6):101-103.

[6]張裔智,趙毅,湯小斌.MD5算法研究[J].計算機科學,2008,35(7):295-297.

[7]Troelsen A.Pro C#and the.Net 4 Platform[M].Ituring Press,2011:86-98.

Message Authentication Code of Equipment Software Status Identification

CHEN Ce,JIANG Xiao-hui,HU Yong
(63961 Troops of PLA,Beijing 100012,China)

Hash function of message authentication technology can produce the message authentication code which closely related to the content of message,by this way,equipment software status can be identified.Through the Visual c++and c#hybrid programming,message authentication experiment system based on MD5 algorithm is established,content correlation,impact resistance and software status identification experiment are executed.The results show that message authentication code can avoid the failure of equipment software status management caused by human negligence compared to software version number generally used to realize software version management and messageauthenticationcodeisakindofeffectivetechnologyofequipmentsoftwarestatus identification.

software version identification,message authentication,hash function,software status management

TP311.52

A

1002-0640(2015)08-0169-04

2014-06-15

2014-07-27

軍隊科研計劃基金資助項目(ZLC12501)

陳策(1975-),男,山西萬榮人,博士、副研究員。研究方向:軟件工程,軟件測試。

猜你喜歡
字節(jié)消息函數(shù)
二次函數(shù)
No.8 字節(jié)跳動將推出獨立出口電商APP
第3講 “函數(shù)”復習精講
二次函數(shù)
函數(shù)備考精講
一張圖看5G消息
No.10 “字節(jié)跳動手機”要來了?
輕量級分組密碼Midori64的積分攻擊
晚步見道旁花開
人類進入“澤它時代”
东城区| 阿拉尔市| 临西县| 云浮市| 建阳市| 普宁市| 塔河县| 承德市| 大厂| 大姚县| 聂拉木县| 德兴市| 柳河县| 班戈县| 潜山县| 柳州市| 宁陕县| 双桥区| 读书| 钟祥市| 紫云| 孟连| 美姑县| 上思县| 红原县| 罗山县| 福清市| 古交市| 湟中县| 葵青区| 萝北县| 五大连池市| 元阳县| 新野县| 绥中县| 西乌珠穆沁旗| 泗洪县| 纳雍县| 游戏| 岳普湖县| 望都县|