資源描述:
《word加密算法詳解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、作者:MSWord加密算法弱點利用MSWord是微軟公司出品的一款常用的文字編輯軟件,是該公司OFFICE系列軟件的一種。該軟件提供加密被編輯文檔內(nèi)容的功能。當前,Word97(包括Word97)以后的各個版本的Word為了保持向下兼容,默認情況下均使用97/2000兼容的加密算法。但是該加密算法在實現(xiàn)時存在一些弱點,加密強度在最好的情況下也僅相當于40位密鑰的加密強度,存在安全隱患。本文通過閱讀開源軟件wvWare的源代碼,分析了Word97/2000加密算法的細節(jié),最后利用wvWare
2、軟件中提供的一些公用庫,編寫了一個對使用Word97/2000加密算法進行攻擊并理論上可以保證100%破解率的程序。試驗環(huán)境:本文所涉及的所有運行環(huán)境是:一臺安裝Redhat9.0的VMware虛擬機。當前wvWare的最高版本為1.2.1。但因為在Redhat9.0中安裝該版本的wvWare時要升級gObject在內(nèi)的多個組件,所以試驗中我取了較低版本的wvWare。具體是wvWare0.7.2(源碼包可以從網(wǎng)上自由下載,或從本文附帶的光盤中獲得)wvWare簡介及安裝過程:wvWare是一款可以轉(zhuǎn)換MSWord中內(nèi)容為其他格式的軟件,該軟件的主頁地
3、址為:http://wvware.sourceforge.net/index.html從sourceforge.net網(wǎng)站的CVS中下載wvWare0.7.2。執(zhí)行tarzfxvwv-0.7.2.tar.tar解包,之后cdwv-0.7.2進入wvWare的目錄,依次執(zhí)行./configure、make、makeinstall三條命令安裝wvWare。安裝完畢后就可以使用wvWare了。wvWare可以通過用戶輸入的口令來讀取并轉(zhuǎn)換加密的Word的內(nèi)容??诹畹膮?shù)是:--password=xxxx(其中xxxx代表真正的口令)。如我們可以用光盤中的12
4、3.doc來做測試。(光盤中的123.doc文件的加密口令是123,文檔的內(nèi)容是1234,是使用Word2003創(chuàng)建的)鍵入命令wvWare–password=123123.doc我們得到123.doc轉(zhuǎn)換成html格式后的結(jié)果。有關(guān)wvWare對Word文檔進行解密的代碼大部分在源碼包中的decrypt97.c文件中,另外wvWare.c中有少部分預(yù)處理代碼。所以我主要對decrypt97.c進行了注釋。詳見附件光盤。Word文件二進制結(jié)構(gòu)office系列軟件所產(chǎn)生的文檔是MicrosoftCompoundDocument(微軟復(fù)合文檔)的一種,其文
5、檔格式與微軟復(fù)合文檔的文檔格式一致。(注:微軟復(fù)合文檔在WINDOWS操作系統(tǒng)中有著廣泛的應(yīng)用,比如WIN_XP操作系統(tǒng)中的Thumbs.db文件也是一種微軟復(fù)合文檔)。而微軟復(fù)合文檔則是一種結(jié)構(gòu)化的儲存文件,這種文件由微軟的OLEStructuredStorageAPI來創(chuàng)建和管理。下面這張圖就是復(fù)合文件的一個例子:每個文件都有且只有一個根目錄,根目錄下可以有若干個stream和storage,stream中存放數(shù)據(jù),而storage中存放其他stream和storage。下面這張圖是一個典型的帶圖片的word文檔的結(jié)構(gòu),用的是鏈表
6、式的數(shù)據(jù)結(jié)構(gòu)。(使用VC自帶的DocFileViewer)datastream中(在一個Word文檔中只有帶了圖片才會有該stream)是圖片數(shù)據(jù),WordDocumentstream中是文本數(shù)據(jù),SummaryInformation和DocumentSummaryInformationstream中是摘要信息,等等。詳見《OpenOffice.org'sDocumentationoftheMicrosoftCompoundDocumentFileFormat》(下載地址:http://sc.openoffice.org/compdocfileform
7、at.pdf)wvWare中通過wvInit()和wvInitParser()兩個函數(shù)來初始化一個word文檔并提取其中有關(guān)stream。其中1Tablestream0的首地址被放在ps->tablefd中;(ps是一個wvParseStruct的指針)WordDocumentstream的首地址被放在ps->mainfd中。Word加密機制當一個word文檔被加密后,并不是文檔中所有的數(shù)據(jù)都會被加密,只有1Table、WordDocument等帶有文本、圖片等數(shù)據(jù)的stream才會被加密。(仔細分析附帶光盤中帶有注釋的decrypt97.c的172~
8、244行代碼,你會發(fā)現(xiàn)Word加密各個stream時使用的是同一個密鑰,這一做法也是違反密碼學