• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      裝備軟件狀態(tài)標(biāo)識的消息認(rèn)證碼*

      2015-11-28 05:08:44陳策姜曉輝胡勇
      火力與指揮控制 2015年8期
      關(guān)鍵詞:字節(jié)消息軟件

      陳策,姜曉輝,胡勇

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

      裝備軟件狀態(tài)標(biāo)識的消息認(rèn)證碼*

      陳策,姜曉輝,胡勇

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

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

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

      0 引言

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

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

      1 消息認(rèn)證技術(shù)

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

      1.1散列函數(shù)

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

      hash函數(shù)應(yīng)滿足如下6個特性[4-6]:①輸入消息的長度應(yīng)沒有限制,hash函數(shù)應(yīng)能作用于任何大小的數(shù)據(jù)分組;②hash函數(shù)作用于任意長度的消息后得到固定長度的輸出;③對任意給定的消息m,計算y=h(m)比較容易,適合用軟硬件快速實現(xiàn);④對任意給定的消息m,消息摘要y與m的每一比特信息高度相關(guān),只要改變消息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)過程

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

      1.3算法的實現(xiàn)

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

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

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

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

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

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

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

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

      圖3 MD5算法消息認(rèn)證碼的驗證程序

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

      2.2抗碰撞性實驗

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

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

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

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

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

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

      3 結(jié)束語

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

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

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

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

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

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

      [6]張裔智,趙毅,湯小斌.MD5算法研究[J].計算機(jī)科學(xué),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é)消息軟件
      禪宗軟件
      英語文摘(2021年10期)2021-11-22 08:02:26
      No.8 字節(jié)跳動將推出獨立出口電商APP
      一張圖看5G消息
      No.10 “字節(jié)跳動手機(jī)”要來了?
      軟件對對碰
      簡談MC7字節(jié)碼
      談軟件的破解與保護(hù)
      精品(2015年9期)2015-01-23 01:36:01
      消息
      消息
      消息
      棋牌| 峡江县| 东乌| 宁城县| 古丈县| 镇赉县| 柳河县| 西畴县| 抚顺市| 资源县| 上饶县| 仲巴县| 乐山市| 体育| 昌图县| 兰西县| 曲松县| 精河县| 乌拉特中旗| 日土县| 泌阳县| 吐鲁番市| 锦屏县| 永嘉县| 卢氏县| 香格里拉县| 鲁山县| 彭山县| 青河县| 墨竹工卡县| 和田县| 安福县| 桦南县| 临颍县| 江口县| 邛崃市| 峨眉山市| 赤壁市| 兴国县| 咸阳市| 武冈市|