為DSP程序的構造的加密體制
關(guān)鍵詞:DSP 3DES Geffe發(fā)生器 MD5
目前,DSP以其卓越的性能、獨有的特點(diǎn),已經(jīng)成為通信、計算機、消費類(lèi)電子產(chǎn)品等領(lǐng)域的基礎器件。同時(shí),隨著(zhù)對知識產(chǎn)權的重視,在利用DSP進(jìn)行產(chǎn)品設計時(shí),如何保護自己的成果,防止破譯者竊取,也成為設計者工作在一個(gè)重要方面[1,2]。如果產(chǎn)品大批量生產(chǎn),那么可以利用掩膜技術(shù)等工藝將操作程序及數據寫(xiě)入芯片,使它們不能被讀出,達到保護的效果。對于還沒(méi)有形成規模的產(chǎn)品,使用這樣的方法就會(huì )使成本大大增加。因此,本文提出一種方法,利用3DES、Geffe發(fā)生器和MD5等算法,構造一種加密體制,來(lái)保護DSP程序。
1 加密原理及硬件結構
1.1 加密原理
該體制的加密原理可分為2個(gè)層次。首先是對程序的初始保護,就是把程序寫(xiě)入DSP芯片之前,對源代碼進(jìn)行加密處理,然后將密文寫(xiě)放入芯片。這樣芯片中就不存在明文形式的源代碼。當要運行該程序時(shí),就從微狗中取出密鑰進(jìn)行解密,再繼續運行。第2個(gè)層次就是在DSP程序運行過(guò)程中的連續保護。它的處理對象是一些重要參數或變時(shí),通過(guò)“加鎖”,讓它們一直以密文形式存在于程序中。只有需要使用這些數據時(shí),才從微狗內取出密鑰進(jìn)行解密。使用結束后,仍舊“加鎖”保護,使之仍然是密文形式。
1.2 硬件結構
在這種加密體制中,需要1片微狗實(shí)現密鑰管理。如果原來(lái)的DSP系統中已經(jīng)存在帶有加密位的EPLD、CPLD或單片機,就可以利用以有資源進(jìn)行設計,把它們作為微狗,完全不需要額外的硬件支持。否則,不妨用1片單片機完成微狗功能。這是由其良好的性?xún)r(jià)比決定的。
2 工作過(guò)程和密鑰管理
根據加密原理,該體制的工作過(guò)程同樣分為2個(gè)層次。首先,是初始程序保護,它以程序整體為處理對象。然后,是基于數據的連續保護。保護對象是一些重要參數事變量。它保證了加密貫穿程序運行的整個(gè)過(guò)程。在工作過(guò)程中,密鑰管理非常關(guān)鍵,可以說(shuō),該體制的安全與否就體現在密鑰管理上。
2.1 初始程序保護
初始程序保護使用的加密算法是3DES算法,加密結束后,銷(xiāo)毀密鑰,同時(shí)將密文寫(xiě)入芯片。這樣芯片內就不存在程序的明文形式,可以防止別人通過(guò)簡(jiǎn)單的反匯編得到程序源代碼。開(kāi)始運行DSP程序時(shí),就在DSP監控程序的控制下,從微狗內取出相應的密鑰,解密恢復出源代碼。
微狗主要實(shí)現密鑰管理功能。內部密鑰的生成機制和主程序完全相同。把主程序以密文形式寫(xiě)入DSP芯片時(shí),通過(guò)監控程序告知微狗,微狗內部同時(shí)生成對應密鑰K0;主程序開(kāi)始運行時(shí),再在監控程序控制下,從微狗內取出密鑰K0,解密,得到明文形式源代碼。
可是,由于只有1個(gè)密鑰,破譯者完全可以通過(guò)截取DSP和微狗之間的通信數據,很容易地得到密鑰。一旦得到密鑰,這種保護體制也就形同虛設了。因此,我們又采取了基于數據驅動(dòng)的連續保護。
2.2 基于數據驅動(dòng)的連續保護
所謂基于數據驅動(dòng)的連續保護,即是對程序中重要的參數或變量進(jìn)行加密處理。由于這些參數或變量在程序運行時(shí)需要反復使用。故而通過(guò)對它們的保護,就可以使加密貫空程序的整個(gè)運行過(guò)程。
譬如對濾波器系數ap的保護,將其加密,即“加鎖”,同時(shí)銷(xiāo)毀密鑰。在求ap+1時(shí),需要用到ap,就向監控程序發(fā)出申請,在它的控制下,從微狗中取出對應密鑰,開(kāi)銷(xiāo),恢復ap,進(jìn)行運算。運算結束后,再將ap和ap+1“加鎖",保存,繼續執行DSP主程序。這樣不停地“加鎖”、“開(kāi)鎖”,使得在同一時(shí)刻DSP主程序中都存在密文。
此時(shí)微狗中密鑰的生成必須和DSP主程序中的加密處理“同步”,即主程序的加密密鑰要和微狗內生成的對應密鑰相同。這個(gè)可以由DSP監控程序利用DSP內部的中斷程序協(xié)調實(shí)現。使用密鑰Ki對某參數或變量加密結束后,通過(guò)中斷告訴監控程序加密完成,然后鎖毀該密鑰。繼續執行DSP程序時(shí),若需要使用該參數或變量,就向監控程序發(fā)出要求,在監控程序的控制下,從微狗中取出對應密鑰Ki,解密。其具體過(guò)程如圖1所示。
其中,a、b為主程序和DSP監控程序之間的數據交換,包括彼此呼叫與應答;c為DSP監控程序對微狗的控制,發(fā)出某種命令;d是主程序在DSP監控程序的控制下,從微狗內取出相應的密鑰。
微狗將生成的密鑰依次排列,然后等待主程序取密鑰。不論是初始程序保護還是基于數據的連續保護,都只受監控程序的控制。這樣可以保證主程序獲得正確密鑰。
加入連續保護后,破譯者要想得到源代碼,必須跟蹤程序的整個(gè)運行過(guò)程。這樣,對于破譯者而言,所花費的代價(jià)等于自己獨立寫(xiě)一套程序,顯然也失去了破譯的必要。
2.3 細節處理
除了上述保護措施,還可以使用一些編程技巧,在細節上小心謹慎,寫(xiě)出讓人“眼花繚亂”的程序,否則,破譯者很可能不必完全跟蹤,就能夠獲取源程序。因為目的是要迷惑別人,所以就得盡量破壞程序的可讀性。譬如打亂程序的正常順序,使其顯得雜亂無(wú)章;適時(shí)適地插入無(wú)用代碼,增強干擾;使參數變量的命名晦澀難懂,絕對不能有key、digest等諸如此類(lèi)可以望文生義的名稱(chēng)??傊?,要讓破譯者對獲取的內容不知所云,以增加其還原源程序的難度。
3 相關(guān)算法及密鑰生成機制
該體制的加密算法是3DES,是個(gè)對稱(chēng)算法。其安全性可以說(shuō)完全體現在密鑰上。因此,如何產(chǎn)生一個(gè)“安全”的密鑰至為關(guān)鍵。在密鑰的生成機制中,用到了Geffe發(fā)生器和MD5算法。
3.1 相關(guān)算法[3]
(1)3DES算法
數據加密標準DES(Data Encryption Standard)產(chǎn)生于20世紀70年代。經(jīng)過(guò)20多年的使用,目前仍是一個(gè)世界內的加密標準。這說(shuō)明它的安全性相當高。它是一個(gè)分組加密算法,以64位分組對數據加密。密鑰K的長(cháng)度也是64位,可以是任意數。DES算法是對稱(chēng)的,加密與解密使用相同的算法與密鑰(除了密鑰的編排順序不同)。因而可以說(shuō),DES算法的保密性完全依賴(lài)于密鑰K。
目前對DES的破譯,最有效的是窮舉功擊。之所以說(shuō)DES已經(jīng)不太安全,是因為其密鑰短。以現今的運算技術(shù)來(lái)說(shuō),計算量已經(jīng)不算很大。不過(guò),如果增加密鑰的長(cháng)度,其安全性也可以相應地增強。3DES正是基于這樣的原理。加密時(shí),使用2個(gè)不同的密鑰K1和密鑰K2對1個(gè)分組進(jìn)行3次加密。也就是說(shuō),先用密鑰K1加密,然后用密鑰K2解密,最后用密鑰K1加密;解密時(shí)則先用密鑰K1解密,然后用密鑰K2加密,最后用密鑰K1解密。
計算式如下:
C=E1(D2(E1(P))) (1)
P=D1(E1(D1(C))) (2)
其中,P為明文,C為密文。Ei()為加密函數,Di()為解密函數。
(2)Geffe發(fā)生器
Geffe發(fā)生器是一種密鑰序列發(fā)生器,利用線(xiàn)性反饋移位寄存器LFSR(Linear Feedback Shift Register)產(chǎn)生序列密碼。LFSR的輸出就是m序列,是一個(gè)偽隨機序列。Geffe發(fā)生器使用了3個(gè)LFSR,以非線(xiàn)生方式組合。其中,2個(gè)LFSR作為復合器的輸入,第3個(gè)LFSR控制復合器的輸出。使用相關(guān)攻擊,Geffe發(fā)生器的破譯并不難,故而不能直接將它作為3DES算法的密鑰,因此這里對其作取摘要處理。
(3)MD5算法
MD5(Message Digest)算法是由MIT的密碼專(zhuān)家,RSA算法的發(fā)明人之一Ron Rivest設計發(fā)明的一種認證算法標準。MD5算法完成于1992年,它可以對任意長(cháng)的報文輸入,得到1個(gè)128位的輸出。該算法可以保證2條不同的報文產(chǎn)生相同的摘要的可能性很小,并且由給定的摘要反向求其對應的報文極端困難。因此將摘要作為密鑰既可以保證隨機性,安全性也能提高了不少。
3.2 密鑰的生成機制
無(wú)論從3DES算法本身,還是從該體制的加密原理來(lái)講,密鑰的生成機制都至關(guān)重要。因此,必須保證使用的密鑰是安全的。其安全性體現為兩個(gè)方面:一是密鑰本身是隨機的;一是密鑰的管理機制。
密鑰的生成過(guò)程如下:先由Geffe發(fā)生器得到一隨機序列,然后通過(guò)MD5算法取摘要,得到的128比特數據就是密鑰K1和密鑰K2組合。由Geffe發(fā)生器及MD5算法原理可以看出,這樣產(chǎn)生的密鑰是隨機的。
由該體制的工作過(guò)程可以看出,密鑰的管理是安全的。這是由于在主程序內,加密結束后,隨即將密鑰銷(xiāo)毀,主程序內不保留密鑰;使用密鑰時(shí),通過(guò)監控程序從微狗內獲取。微狗和DSP是物理分開(kāi)的,保證了密鑰存放的安全。
4 結果分析
嚴格地說(shuō),這種方法并不屬于加密,只是一種保護手段――利用幾個(gè)簡(jiǎn)單的,結合DSP和單片機的特點(diǎn),構造一種保護體制。甚至其效果究竟如何,可以從2個(gè)方面分析。
4.1 安全性分析
既然是一種保護方法,那么安全性是最重要的指標。由這種體制的加密原理及工作過(guò)程,可以看出安全性可以保護。3DES算法,無(wú)論從理論上還是實(shí)踐上,都是一種相當好的加密算法。雖然利用窮舉攻擊,該算法最終可以破譯,但需要2 112次窮舉,所花費的代價(jià)實(shí)在太大,可以說(shuō)得不償失。因此,只要保證密鑰的安全,可以認為這種保護體制是完全的。而從密鑰的生成過(guò)程和管理機制來(lái)講,密鑰是安全的。
4.2 性能分析[4~6]
這種保護方法的速度很快,因為3DES算法要是混亂和擴散的組合,只使用了標準的算術(shù)和邏輯運算。Geffe發(fā)生器和MD5算法用到的也主要是邏輯運算,用DSP或者單片機實(shí)現非常方便。譬如對于TMS320VC5402來(lái)說(shuō),Geffe發(fā)生器產(chǎn)生64字的偽隨機序列需要296 544個(gè)周期,MD5處理64個(gè)字長(cháng)的消息需要用3400個(gè)周期,所花費的時(shí)間分別為2 965ms和0.003ms。
因此,我們只是利用了一些簡(jiǎn)單的算法,結合DSP和1片微狗,構造出1個(gè)DSP程序保護體制,以小代價(jià)獲得了好的效果,還是很值得的。
評論