[摘要] 結(jié)合軟件加殼、脫殼技術(shù),提出了一種基于橢圓曲線數(shù)字簽名算法的軟件保護方案,該方案利用加殼技術(shù)將密碼信息和驗證部分嵌入到軟件中,用戶輸入的密鑰經(jīng)過驗證正確后才能安裝該軟件。
[關(guān)鍵詞] 數(shù)字簽名算法 加殼保護 橢圓曲線密碼體制
為了保護自己軟件的技術(shù)內(nèi)核不被他人輕易盜用,軟件開發(fā)人員使用了各種保護技術(shù)來保障軟件版權(quán)不被侵犯。目前,軟件保護方案可以分成兩類:一類是依靠硬件加密的保護方案,另一類是軟加密方案。由于前者成本高,所以大部分價格相對較低的商業(yè)軟件和共享軟件采取軟加密方案。
軟加密方案常利用系統(tǒng)的一些特征碼來生成注冊碼,并以此來驗證用戶的合法性。為了克服在軟加密方案中,破解者用調(diào)試軟件跟蹤到比較和跳轉(zhuǎn)的位置,然后強行將跳轉(zhuǎn)地址改為程序繼續(xù)執(zhí)行的地址,從而實施破解這些缺點,加殼軟件應(yīng)運而生。
一、殼技術(shù)和相關(guān)原理
在一些計算機軟件里有一段專門負(fù)責(zé)保護軟件不被非法修改或反編譯的代碼被稱為“殼”。加殼就是把一段外殼程序附加到應(yīng)用程序中,并把程序的執(zhí)行入口指向外殼程序中。加殼后的文件執(zhí)行時,外殼程序先于程序運行拿到控制權(quán),首先執(zhí)行;脫殼的基本思想是驗證密碼。
二、基于橢圓曲線數(shù)字簽名算法
橢圓曲線數(shù)字簽名算法(ECDSA)是利用了由美國NIST和NSA設(shè)計的一種安全Hash算法,并提出的一種新的數(shù)字簽名技術(shù),其數(shù)學(xué)原理是基于橢圓曲線離散對數(shù)問題的難解性。
1.系統(tǒng)的建立和密鑰生成
(1)系統(tǒng)的建立:選取一個基域上選取橢圓曲線E及E上階為素數(shù)n的基點是橢圓曲線E的參數(shù)。則我們已經(jīng)建立了橢圓曲線公鑰密碼系統(tǒng),系統(tǒng)參數(shù)為。
(2)密鑰的生成:系統(tǒng)建成后,每個用戶各自產(chǎn)生自己的密鑰:①用戶A隨機選取一個整數(shù)d,其中;②然后計算:Q=dG,如果Q 是無窮遠(yuǎn)點或G,則需重新選擇d;③將d、Q保存。
2.數(shù)字簽名的加密過程
假設(shè)B要把簽名信息m發(fā)送給A,則B首先將信息原文用哈希算法求得數(shù)字摘要e=h(m),然后進行如下操作:(1)用戶B找出A的公鑰Q,然后隨機選取一個整數(shù)k,其中,計算;(2)計算:;(3)計算:;(4)把生成的數(shù)字簽名(P,c)發(fā)送給A。
2.3數(shù)字簽名的解密過程
當(dāng)A 收到B 發(fā)送來的數(shù)字簽名(P,c)后,用自己的私鑰d進行如下解密操作:
(1)A計算:,因為;(2)然后計算:;從而恢復(fù)出數(shù)字簽名信息e。
三、基于橢圓曲線的軟件加殼保護方案
在本方案中通過設(shè)計一個加“殼”程序,將用戶密碼信息和驗證模塊加入到應(yīng)用軟件安裝程序中,在安裝文件執(zhí)行時首先執(zhí)行該用戶密碼信息和驗證模塊。
1.密碼的生成過程
生成過程如下:(1)在有限域Fq上的一條安全的橢圓曲線E選取一個基點;(2)隨機選取一個整數(shù)d,其中,計算Q=dG,如果Q是無窮遠(yuǎn)點或G,則需重新選擇d,否則Q為公鑰,d為私鑰;(3)保存d和Q。
2.數(shù)字簽名的加密過程
在本方案中,密碼m為生成的固定比特長的隨機整數(shù)。將m用哈希算法求得數(shù)字摘要e,e=h(m),然后進行如下操作:(1)隨機選取一個整數(shù)k,其中,計算;(2)計算:;(3)計算:;(4)最后生成數(shù)字簽名信息為(P,c)。
3.數(shù)字簽名的驗證過程
(1)用戶計算:,因為;(2)然后計算:;從而恢復(fù)出數(shù)字簽名信息;(3)如果則接受簽名,否則拒絕簽名。
四、安全性分析
本方案是基于橢圓曲線數(shù)字簽名算法通過對軟件進行加殼保護的一種方法,其安全性建立在橢圓曲線密碼體制的安全性之上,比基于有限域上的離散對數(shù)問題的公鑰密碼體制更安全,即在有限域上,已知P、Q 在橢圓曲線E上的有理點,要尋找一個,使得Q=dP,這是很難解的。從上面算法可知,在解密過程中,要求出,必須知道,而要知道,必須知道dP,或者必須知道kQ,而知道G、Q、P,要求出用戶A的私鑰d或隨機整數(shù)k,這相當(dāng)于求解橢圓曲線離散對數(shù)問題,就現(xiàn)有的計算技術(shù)和能力來說,如果橢圓曲線公鑰密碼系統(tǒng)中的橢圓曲線是隨機選取的,而且它的階包含有大素數(shù)因子,那么這是一個很難求解的問題。也就是必須求逆運算,這是一個很費時和復(fù)雜的過程。
五、結(jié)束語
正如柯克霍夫原則所說,密碼系統(tǒng)的安全性不應(yīng)取決于不易改變的算法,而應(yīng)只取決于可隨時改變的密鑰。在本方案中,密碼生成算法在計算上是安全的,這一點已經(jīng)有理論證明并經(jīng)受了實踐的檢驗,所以其安全性是滿足要求的。當(dāng)然,該技術(shù)只是殼的一部分,還要和其他技術(shù)如:反跟蹤、反匯編相結(jié)合才能達(dá)到真正的保護軟件的目的。
參考文獻:
[1]Anon. Standards for Efficient Cryptography Group, SEC 1: Elliptic Curve Cryptography: Version 1.5[EB /OL]. http: / /www.secg. org/download / aid - 401 / sec1. pdf
[2]張林趙勇劉吉強韓臻:基于橢圓曲線數(shù)字簽名算法的序列號軟件保護方案[J].中國電子科學(xué)研究院學(xué)報:2006,1(1):54~57
[3]夏紹春易波劉威:軟件加殼與脫殼技術(shù)的實現(xiàn)[J].現(xiàn)代計算機:2004(183):78~81
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。