国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件保護中的兩種常用“戰(zhàn)術(shù)”

2014-11-03 13:41:48郁諾
科技創(chuàng)新與應(yīng)用 2014年32期
關(guān)鍵詞:破解戰(zhàn)術(shù)算法

摘 要:軟件安全是信息安全領(lǐng)域的重要內(nèi)容,其中軟件保護是關(guān)乎知識產(chǎn)權(quán)的一項重要工作,市場上雖然有大量現(xiàn)成的方案可選用,如基于軟件的加密殼保護和基于硬件的加密鎖保護,但這些優(yōu)秀的保護方案由于太流行,造成大家對其研究太透徹,反而容易被破解。所以有必要實現(xiàn)相關(guān)的保護方法。

關(guān)鍵詞:軟件保護;注冊碼生成器;破解;算法

軟件保護的目的是向正式注冊用戶提供完整的功能,所以軟件保護必然要包括驗證用戶合法性的環(huán)節(jié),而這一環(huán)節(jié)通常采用注冊碼驗證的方式實現(xiàn)。

(1)使用者向軟件開發(fā)方發(fā)送用戶碼U,要求注冊。

(2)由軟件開發(fā)方發(fā)出經(jīng)過運算得到注冊碼R=f(U)。

(3)用戶在軟件注冊界面輸入U和R。

(4)軟件通過檢驗函數(shù)F(U,R)來檢測用戶的合法性。

其中一些常用術(shù)語說明如下:

用戶碼U:用戶身份ID。

注冊碼R:用于驗證用戶是否合法。

注冊碼生成器:把R=f(u)中的f稱為注冊碼生成器算法,注冊生成器算法可以針對任何用戶碼計算出一一對應(yīng)的注冊碼。

檢驗函數(shù):把F(U,R)稱為檢驗函數(shù),軟件使用檢驗函數(shù)檢驗注冊碼是否合法,也就是只有R=f(u)成立時,F(xiàn)(U,R)才是合法的。

算法求逆:把破解者通過檢驗函數(shù)F推導(dǎo)注冊碼生成器算法的過程稱為算法求逆。

1 堡壘戰(zhàn)術(shù)

人們早就在各個領(lǐng)域開始研究身份檢驗的問題了,并研究開發(fā)出了散列加密和非對稱加密等早已被人們認(rèn)可的密碼學(xué)算法,但真正適用于軟件注冊這一場合的算法恐怕只有MD5和RSA算法了。

MD5算法通常不能直接用來對消息進行加密,因為這種算法沒有逆向算法,所以加密之后不能解密,這種加密是沒有實用意義的,MD5算法的用途在于數(shù)字簽名。例如張和李進行通信,張只將明文A加密為B傳送給李是不夠安全的,因為即使密文B的加密強度再高也只能防止在傳輸過程中被解密而泄露內(nèi)容,卻不能防止破壞者直接篡改密文B。李收到B后解密得到A,也無法判斷A中內(nèi)容的可靠性與安全性。所以張在發(fā)送B的同時通常會在A之后簽名,然后計算一個校驗碼C=MD5(A),將B、C一起發(fā)送給李,李收到B、C后,首先解密B得到A,然后同樣計算校驗碼C=MD5(A),若計算出的校驗碼與收到的校驗碼相同,則可判定A真實可靠。

同樣的原因?qū)е虏荒馨袽D5算法直接用做注冊碼生成器,假如使用R=MD5(U)做注冊碼生成器,因為MD5本身沒有反函數(shù),檢驗函數(shù)就必須包含注冊碼生成器。但是用以下辦法間接使用MD5算法就可以:

(1)設(shè)注冊碼生成器為R=f(U)。

(2)設(shè)MD5(a)=b。

(3)令檢驗函數(shù)F為:F(U,R)=MD5[f-1(R)-U+a]

顯然F的合法值應(yīng)為b,只要U,R滿足R=f(U),F(xiàn)一定等于b。因為MD5沒有逆操作,破解者不能經(jīng)由b知道f-1(R)-U+a應(yīng)該等于a,也就不可能得到f-1的明確定義,更不會得到注冊碼生成器f。至于f-1(R)-U+a表達式中雖然含有a,但解密者無法判斷a和f-1的關(guān)系。

實際上利用MD5算法構(gòu)造F可以有很多方法,讓企圖破解者根本看不出F和f、f-1的關(guān)系,就更不用說去找逆運算了。但MD5算法的弱點是,由于MD5沒有逆操作,所以a必須為常數(shù),一旦破解者知道了一對可用的U、R,它們就可能追蹤到可用的a、b值,從而知道f-1,并由此推測出注冊碼生成器f。

相比于MD5,RSA算法在軟件保護中應(yīng)用就要簡單的多了:

(1)軟件作者使用:R=Ud mod n作為注冊碼生成器。

(2)軟件使用:U=Re mod n作為檢驗函數(shù)。

由于算法的復(fù)雜性,破解者是不可能知道d,也就無法破解注冊碼生成器??梢哉f利用RSA算法保護軟件就是建造了一座堅固的堡壘,但是由于RSA算法是一種公開算法,所以利用RSA算法來進行軟件保護也存在著一些問題。

(1)大多數(shù)的使用者對RSA算法的細(xì)節(jié)并不了解,這就為因為錯誤使用RSA埋下了隱患。例如,在不同的軟件作品中,使用同樣的參數(shù)導(dǎo)致莫名的異常攻擊。

(2)有些函數(shù)本身的不完善性也會導(dǎo)致防線的崩潰,例如,在產(chǎn)生隨機數(shù)時,會有當(dāng)初始條件相同時,產(chǎn)生完全相同的隨機數(shù)結(jié)果。破解者如果了解到這一點,就可以依據(jù)n值推斷原始數(shù)據(jù)產(chǎn)生過程,RSA的防線也就岌岌可危了。

(3)函數(shù)庫在產(chǎn)生隨機素數(shù)時,應(yīng)當(dāng)淘汰那些容易被猜到的素數(shù),否則會導(dǎo)致RSA算法中存在若干由各種特殊素數(shù)構(gòu)造成的“弱密鑰”,這樣帶來的后果就是當(dāng)破解者稍有數(shù)論基礎(chǔ),就很容易攻破RSA。

2 游擊戰(zhàn)術(shù)

軟件保護中的游擊戰(zhàn)術(shù)就是將檢驗函數(shù)F拆分成多個相異的Fi,然后將這些Fi的不規(guī)則的隨機分布到程序的各個位置上。

經(jīng)過這樣的處理之后,通過任何一個Fi的驗證都只是合法注冊的必要非充分條件,而只有真正合法的注冊碼才能夠通過所有的Fi的驗證。解密者如果知道只找到Fi其中的一個部分,只要有任何一個Fi沒找到,它就不能了解F的全體細(xì)節(jié),也就不能算法求逆。

可能你會有疑問,如何將F分解成相異的并且是必要非充分的的Fi?這就需要比較扎實的數(shù)學(xué)功底了。

(1)將R切分成多段Ri。

(2)構(gòu)造不同的f算法,使得:Ri=fi(U)。

(3)令Fi=fi-1。

這種看似繁瑣的操作,是很有實際意義的。例如可以讓F1使用X算法,F(xiàn)2使用Y算法,F(xiàn)3使用Z算法,這里的X、Y、Z可以MD5、RSA等成熟算法,也可以是用戶自定義的算法。用戶注冊時程序只選擇其中一個Fi進行驗證,這里還要注意,注冊碼在傳輸過程中一定要使用自定義的文件格式進行封裝,通過F1的驗證即給用戶注冊成功的提示。但這時其實并沒有給用戶完整的軟件使用權(quán)限,因為程序中的F2和F3只有使用者執(zhí)行特定的操作時才被調(diào)用,例如,在用戶使用某些高級功能的時候?qū)⒎庋b的注冊碼再次使用F2和F3驗證。如果發(fā)現(xiàn)任何一個Fi結(jié)果非法,就把軟件恢復(fù)為非法使用狀態(tài)。

對于軟件保護這種新興技術(shù),其實應(yīng)該多站在破解者的角度考慮,這樣才能合理利用已有的知識庫來解決不斷出現(xiàn)的新問題,沒有哪種解決方案是可以一成不變的解決過去與未來的所有問題。

參考文獻

[1]Eldad Eliam. Secret of Reverse Engineering[M].Wiley,2005.

[2]看雪學(xué)院.軟件加密技術(shù)內(nèi)幕[M].北京:電子工業(yè)出版社,2004.

[3]段鋼.加密與解密[M].北京:電子工業(yè)出版社,2013.

[4]譚明金.黑客反匯編揭秘[M].北京:電子工業(yè)出版社,2010.

作者簡介:郁諾(1977-),男,上海崇明人,西安財經(jīng)學(xué)院高職學(xué)院,工程師。

猜你喜歡
破解戰(zhàn)術(shù)算法
基于MapReduce的改進Eclat算法
Travellng thg World Full—time for Rree
中間戰(zhàn)術(shù)
進位加法的兩種算法
中外合資經(jīng)營企業(yè)公司僵局的破解
人間(2016年24期)2016-11-23 15:10:18
如何破解縣域中小型企業(yè)發(fā)展面臨的困難
年輕干部脫穎而出的信任障礙和破解思路
商(2016年27期)2016-10-17 04:19:32
一種改進的整周模糊度去相關(guān)算法
如何對抗毛球!全方位戰(zhàn)術(shù)考察
“破解”八項規(guī)定,民間“智慧”何其多
南方周末(2014-04-24)2014-04-24 22:30:36
定边县| 赤水市| 墨玉县| 聊城市| 郴州市| 云和县| 商河县| 南木林县| 静安区| 库尔勒市| 汝州市| 郁南县| 桑植县| 雅安市| 桃园县| 醴陵市| 长汀县| 汪清县| 江都市| 铁岭县| 甘南县| 乳山市| 博白县| 沭阳县| 齐齐哈尔市| 拉萨市| 射阳县| 乌兰浩特市| 苏州市| 青岛市| 旅游| 广宁县| 开原市| 云南省| 南平市| 澄江县| 安图县| 福清市| 张家界市| 株洲县| 库尔勒市|