滕廣超,郎建軍,杜奇才,林嘉宇
(1.國防科學(xué)技術(shù)大學(xué)電子科學(xué)與工程學(xué)院,長沙 410073;2.武警黃金一總隊(duì)通信科,哈爾濱 150086;3.特種作戰(zhàn)學(xué)院偵查系,廣州 510500)
隨著人們對軟件的依賴性越來越高,黨、政、軍的各機(jī)要部門借助軟件管理信息、調(diào)度、自動化、仿真等應(yīng)用也越來越廣泛。同時(shí),軟件系統(tǒng)的安全操作等方面存在著巨大隱患。為了防止失泄密事故的發(fā)生,保證需要被保護(hù)的軟件操作和訪問的合法性,要在技術(shù)防范方面提高水平,加強(qiáng)拒絕非法訪問的手段和防范措施,以技術(shù)為手段的保護(hù)成為保護(hù)軟件的最重要方法[1]。
對軟件的常用保護(hù)技術(shù)通常有軟保護(hù)和硬保護(hù)兩種。軟保護(hù)是通過在程序中使用一些獨(dú)特手段來實(shí)現(xiàn)加密變換,驗(yàn)證使用者的合法性,重點(diǎn)在如何反拷貝、防靜態(tài)分析、防動態(tài)跟蹤等方面[2]。硬保護(hù)是一種需要外插額外硬件的加密手段,軟件必須通過訪問指定的硬件,并與其進(jìn)行數(shù)據(jù)交換才能執(zhí)行。由于硬保護(hù)依賴硬件,相比于軟保護(hù)來說具有不易復(fù)制性,所以硬保護(hù)更加可靠。現(xiàn)有最常見的硬保護(hù)設(shè)備主要是硬件狗(加密鎖),它可以有效地保護(hù)軟件不被非法復(fù)制和非授權(quán)訪問或使用,從而達(dá)到保護(hù)軟件的目的。
目前市場上在售的硬件狗,都是采用商業(yè)密級加密技術(shù)研發(fā)的產(chǎn)品,加密的手段及深度有限,因此選用第四代硬件狗的設(shè)計(jì)方案,采用STM32系列芯片,如STM32F103ZET6,這款芯片最重要的特點(diǎn)是內(nèi)含唯一序列號,在作為硬件狗的應(yīng)用方面具有極大優(yōu)勢。
通過硬件狗來保護(hù)涉密軟件的基本原理就是在程序執(zhí)行過程中使程序?qū)τ布愤M(jìn)行訪問或讀寫等操作,使被保護(hù)程序?qū)τ布酚蟹浅?qiáng)的依賴性。通過硬件狗芯片具有的不可復(fù)制性和不可替代性,來實(shí)現(xiàn)保護(hù)涉密軟件不被非授權(quán)訪問的目的。
硬件狗的硬件采用成熟的高性能國際化標(biāo)準(zhǔn)智能芯片,主要部件有:USB接口、微處理器以及存儲器。其中,USB端口通訊實(shí)現(xiàn)了硬件狗和PC軟件的通信,同時(shí)可以有效防止通過分析通訊數(shù)據(jù)來對硬件狗進(jìn)行破解;微處理器不僅可以實(shí)現(xiàn)對硬件狗的芯片進(jìn)行基本操作、讀寫存儲器的數(shù)據(jù)等功能,還可以實(shí)現(xiàn)AES算法、橢圓曲線算法的運(yùn)算和被移植程序段的運(yùn)行以及使硬件狗和被保護(hù)軟件不定時(shí)的通信和認(rèn)證;存儲器可劃分成數(shù)據(jù)存儲區(qū)和密鑰存儲區(qū)。
設(shè)計(jì)時(shí)主要體現(xiàn)了硬件狗芯片中的唯一序列號、芯片主頻和看門狗單元。對硬件狗內(nèi)含芯片的唯一序列號的操作及使用可以有效防止硬件狗被復(fù)制??撮T狗的使用可以保證PC軟件和硬件狗及時(shí)的通信交互,提高了程序?qū)τ布囊蕾囆浴?/p>
(1)被保護(hù)軟件開始運(yùn)行時(shí),先訪問硬件狗,通過訪問來確認(rèn)硬件狗是否存在。被保護(hù)軟件要識別出硬件狗的存在,才能開始運(yùn)行,如果硬件狗沒有與計(jì)算機(jī)相連,或是相應(yīng)驅(qū)動程序沒有加載,打開設(shè)備的操作將失敗。
(2)如若硬件狗存在,則將其與軟件匹配。軟件首先向硬件狗發(fā)送一個(gè)被公鑰加密后的隨機(jī)數(shù),硬件狗收到后,用自身的私鑰對密文進(jìn)行解密,并將解密后的明文,也就是軟件產(chǎn)生的隨機(jī)數(shù)返還給軟件,軟件即可將收到的隨機(jī)數(shù)與軟件產(chǎn)生的隨機(jī)數(shù)比較,以確認(rèn)軟件與硬件狗的配對。由于產(chǎn)生的是隨機(jī)數(shù),使破解者很難找到規(guī)律,并且破解者不知道公私密鑰對,也不能解出返還的隨機(jī)數(shù)。通過這個(gè)步驟,可保證軟件與加密鎖硬件的一一對應(yīng)。這樣就使破解者不能輕易通過軟件引導(dǎo)區(qū)進(jìn)入核心程序段。需要強(qiáng)調(diào)的是有些軟件和硬件狗的配套產(chǎn)品中,直接將硬件狗的唯一序列號寫在軟件中來進(jìn)行匹配操作,這樣就降低了唯一序列號的保密性,會使破解者能通過分析軟件來獲得唯一序列號,利用獲得的序列號來仿制硬件狗。
(3)在找到合法的硬件狗后,驗(yàn)證用戶口令,也就是授權(quán)密碼,只有授權(quán)密碼正確,軟件才能正確向下執(zhí)行,如密碼不正確則請求再次輸入,如果輸入的口令連續(xù)若干次錯(cuò)誤,則硬件狗會自鎖,在一定時(shí)間內(nèi)使硬件狗失效或不可操作。通過這種手段可以防止破解者通過暴力破解手段侵入被保護(hù)的軟件系統(tǒng)。
(4)當(dāng)通過授權(quán)密碼驗(yàn)證后,此時(shí)被保護(hù)軟件已經(jīng)完成了引導(dǎo)區(qū)的工作。下一步則是軟件核心區(qū)的程序。在軟件編制完成后,將軟件的核心程序模塊加密,在軟件執(zhí)行到核心區(qū)時(shí),先向硬件狗請求解密,由硬件狗向軟件發(fā)送解密密碼,解密后方可正確運(yùn)行。采用這種手段來保護(hù)軟件,可以很好的實(shí)現(xiàn)防范代碼的反跟蹤。
(5)加密算法選用橢圓曲線密碼算法,這是一種公鑰密碼體系,用兩對密鑰:一個(gè)公共密鑰和一個(gè)私有密鑰,能夠很容易地實(shí)現(xiàn)數(shù)字簽名。加密算法的目的就是要確保竊聽者在沒有密鑰的情況,即使得到密文,也無法得到明文。硬件狗的私鑰產(chǎn)生于其唯一序列號,可以是部分字段或經(jīng)由一定變化得來,強(qiáng)化了硬件狗的不可復(fù)制性。
(6)在被保護(hù)軟件中設(shè)置多個(gè)加密點(diǎn),并且使加密點(diǎn)盡量分散,每個(gè)加密點(diǎn)都是一次對硬件狗的訪問和校驗(yàn)過程,這樣可以增加破解者分析加密點(diǎn)的難度。在加密點(diǎn)的驗(yàn)證過程中要利用隨機(jī)數(shù)來保證加密鎖輸入輸出數(shù)據(jù)的隨機(jī)性,可以防止解密者通過統(tǒng)計(jì)硬件狗的輸入輸出數(shù)據(jù),利用軟件仿真的方式來破解硬件狗。
加密點(diǎn)的作用有幾點(diǎn),首先可以驗(yàn)證、檢測硬件狗的存在性和合法性,該類加密點(diǎn)可以在應(yīng)用程序源代碼的任何地方進(jìn)行設(shè)置。其次利用硬件狗私密鑰對軟件的某一段代碼進(jìn)行動態(tài)加解密。首先將軟件的某一段代碼按特定算法加密[3],使其在目標(biāo)計(jì)算機(jī)中以密文的方式存放,無法以別的方式打開。該段代碼使用完,則自動產(chǎn)生新的隨機(jī)密鑰,再次加密這段代碼,并把密鑰寫入到硬件狗中,以備下一次使用。這樣就保證了該段代碼始終以密文的形式存放,而且每次都不相同,它可以有效阻止對程序進(jìn)行靜態(tài)的反匯編分析。
(7)核心程序段移植是保護(hù)軟件最有力的方法??梢园炎钪匾暮诵某绦虼a移植到硬件狗內(nèi)部,通常被保護(hù)的軟件都比較龐大,具有許多模塊和線程,若移植幾個(gè)程序段將占據(jù)硬件狗很大的儲存空間,降低硬件狗的資源利用率,所以只能選擇最核心的程序段。無論是否正被執(zhí)行,被移植的程序段都不會在計(jì)算機(jī)中留有痕跡,破解者無法獲得這些代碼的副本,因?yàn)橛布返挠布糠趾茈y被復(fù)制,所以破解被硬件狗保護(hù)的軟件是難以實(shí)行的。
(8)充分利用硬件狗的看門狗功能??撮T狗可以防止程序跑飛,此外,也可以強(qiáng)化軟件對硬件狗的依賴性,被保護(hù)軟件在設(shè)計(jì)時(shí),內(nèi)部包含一個(gè)定時(shí)器,定時(shí)器的溢出值需要與硬件狗的看門狗窗口匹配。軟件運(yùn)行過程中,硬件狗會不定時(shí)的產(chǎn)生一個(gè)隨機(jī)數(shù),兩個(gè)隨機(jī)數(shù)之間的時(shí)間間隔必須小于看門狗的窗口值,并且隨機(jī)數(shù)的數(shù)值也必須小于窗口值。每次產(chǎn)生隨機(jī)數(shù)后,用隨機(jī)數(shù)作為硬件狗內(nèi)部定時(shí)器的溢出值開始計(jì)數(shù)。在硬件狗定時(shí)器溢出時(shí),需要計(jì)算機(jī)與硬件狗對隨機(jī)數(shù)進(jìn)行加密交互以確定軟件運(yùn)行的合法性。成功驗(yàn)證后,軟件和硬件狗的定時(shí)器都要?dú)w零,方便下一次計(jì)時(shí)。如果在軟件定時(shí)器溢出時(shí)仍沒有發(fā)生過一次合法認(rèn)證,則軟件退出。這種對硬件狗的認(rèn)證是不定時(shí)的,加強(qiáng)了被保護(hù)軟件對硬件狗的依賴性。
課題包括三個(gè)部分:硬件狗系統(tǒng)方案設(shè)計(jì)、數(shù)據(jù)加密及密鑰管理、ARM平臺的開發(fā)及系統(tǒng)實(shí)現(xiàn)。具體實(shí)現(xiàn)內(nèi)容為:用AES算法或流密碼算法對數(shù)據(jù)加密;利用ARM芯片內(nèi)置的芯片間各不相同的唯一序列號,用橢圓曲線公鑰算法進(jìn)行密鑰管理;仔細(xì)設(shè)計(jì)硬件狗的系統(tǒng)方案,使得軟件系統(tǒng)和硬件加密設(shè)備在線、動態(tài)進(jìn)行數(shù)據(jù)交換;最終實(shí)現(xiàn)利用硬件狗對PC軟件系統(tǒng)的加密和保護(hù)。
AES算法是高級加密標(biāo)準(zhǔn)算法的簡稱,屬于對稱密碼算法中的分組密碼算法,是一個(gè)迭代的、對稱密鑰分組的密碼[4]。AES算法每一輪都需要一個(gè)和輸入分組具有同樣長度(128比特)的擴(kuò)展密鑰Ke的參與[5]。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數(shù)據(jù),通過分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。
公鑰密鑰密碼體系有基于整數(shù)因式分解、基于離散對數(shù)和基于橢圓曲線這三大類別。橢圓曲線密碼的安全性是建立在橢圓曲線的離散對數(shù)問題之上的,是目前已知的公鑰體制中,對每一比特所提供加密強(qiáng)度最高的一種體制[6]。它具有安全性高、密鑰量小、靈活性好的特點(diǎn),沒有亞指數(shù)攻擊,是利用有限域上橢圓曲線的有限點(diǎn)群代替基于離散對數(shù)問題密碼體制中的有限循環(huán)群所得到的一類密碼體制。橢圓曲線密碼算法在技術(shù)上具有安全性高、生成公私鑰方便、處理速度快和存儲空間小等方面的優(yōu)勢,這些優(yōu)點(diǎn)使它成為保證智能密鑰安全機(jī)制的主要算法[7]。
在提取芯片唯一序列號方面,STM32F10x的唯一序列號長度為96位。通過有3個(gè)元素?zé)o符號長整形的數(shù)組來記錄唯一序列號。通過對唯一序列號的存儲位置取地址指針,將序列號分3段輸入到數(shù)組中,后兩個(gè)數(shù)組元素注意加地址偏移量,32位是4個(gè)字節(jié),所以每次偏移量加0x04。這樣,唯一序列號就被保存到長整形數(shù)組中了。
硬件加密狗采用USB接口與PC相連,是因?yàn)閁SB接口具有即插即用和熱插拔特性,而且USB系統(tǒng)使用簡單,性能可靠,可以解決總線的資源沖突問題,同時(shí),USB接口可以提供很高的數(shù)據(jù)傳輸速率。STM32F10x自帶USB模塊,其USB模塊為PC主機(jī)和微控制器所實(shí)現(xiàn)的功能之間提供了符合USB規(guī)范的通信連接,能夠?qū)崿F(xiàn)標(biāo)準(zhǔn)USB接口的所有特性。STM32F10x中,USB模塊的使用是非常簡單的,有大量的代碼可供參考,在硬件狗的設(shè)計(jì)中主要完成兩個(gè)部分:一是要初始化USB模塊;二是實(shí)現(xiàn)STM32F10x芯片與PC軟件的數(shù)據(jù)傳輸。
通過硬件狗提供的加密辦法對軟件進(jìn)行保護(hù),能夠達(dá)到極高的加密強(qiáng)度。尤其是利用密鑰加密算法可以在沒有程序源代碼或不對程序源代碼作任何改動的情況下快捷地完成加密工作。同時(shí),通過采用部分程序代碼移植的方式,可以進(jìn)一步提高被保護(hù)軟件對硬件狗的依賴性。
作者創(chuàng)新點(diǎn):選用目前市場上非常新的一種芯片STM32F103ZET6來作為加密硬件,經(jīng)過闡述目前各種硬件狗的加密方法,提出一種全新的加密算法和綜合加密辦法,顯著提高其加密強(qiáng)度,保證了軟件的安全。
[1]謝海光,劉功申,李翔.一種保護(hù)商業(yè)化軟件的解決方案[J].上海管理科學(xué),2005(6)35-37.
[2]張竹青,白新江.軟件的機(jī)密保護(hù)技術(shù)探討[J].內(nèi)蒙古石油化工,2005(12):67-68.
[3]劉長軍,林嘉宇.為DSP程序的構(gòu)造的加密體制[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(11)5-7.
[4]何明星,范平志.新一代私鑰加密標(biāo)準(zhǔn)AES進(jìn)展與評述[J].計(jì)算機(jī)應(yīng)用研究,2001(10)4-6.
[5]NIST.Advanced Encryption Standard(AES)[M].Federal Infor- mation Processing Standards Publication,2001.
[6]孫躍剛.橢圓曲線密碼體制中若干問題的研究[D].吉林:吉林大學(xué),2009.
[7]于彬.橢圓曲線密碼算法的研究與實(shí)現(xiàn)[D].沈陽:沈陽工業(yè)大學(xué),2004.