基于加密技術(shù)的克隆

對(duì)于軟件來說,用戶體驗(yàn)始終是重中之重,然而盜版,對(duì)大多數(shù)軟件開發(fā)者來說也是一個(gè)令人擔(dān)心的問題。在采用了加密鎖加密后的軟件會(huì)不會(huì)被黑客破解呢?理論上說沒有不能破解的軟件,即使是純數(shù)學(xué)的密碼加密也有被破解的可能,只不過破解的時(shí)間可能是個(gè)天文數(shù)字。

那么到底如何才能阻擋加密技術(shù)被攻擊、被破壞呢?因?yàn)楝F(xiàn)在基本上加密鎖大致分為兩種類型:帶CPU加密鎖,不帶CPU的加密鎖。前者擁有計(jì)算能力,對(duì)加密數(shù)據(jù)、過程數(shù)據(jù)、通訊接口等可以實(shí)施動(dòng)態(tài)密文處理,因此帶CPU的加密鎖也被演化出了多種多樣的加密形式:密文校驗(yàn)、自定義算法、程序移植等等。而不帶CPU加密鎖相對(duì)簡(jiǎn)單,加密強(qiáng)度較低,成本低廉!

加密鎖的克隆不帶CPU加密鎖實(shí)際上是一個(gè)外接的存儲(chǔ)單元,用戶在使用了正確的方法后可以與內(nèi)部存儲(chǔ)交換數(shù)據(jù),以達(dá)到加密的目的。這種加密鎖,不論其軟件加密強(qiáng)度高低,從硬件的角度來說屬于低端產(chǎn)品,一般加密公司的低端產(chǎn)品皆屬此類。如果破解者找到辦法可以把加密鎖中的數(shù)據(jù)讀出來(前提是這個(gè)硬件高手可以找到辦法),那么這個(gè)加密狗也就被破掉了,制作出一個(gè)完全相同的加密鎖,這種方法我們熟稱為加密鎖的“克隆”。

加密鎖客隆技術(shù)的產(chǎn)生使加密鎖技術(shù)發(fā)展進(jìn)入了一個(gè)新的時(shí)代,新類型的軟件加密鎖大多都有密碼或硬ID號(hào)的保護(hù),只要黑客買不到相同密碼的加密鎖,也就無法進(jìn)行加密鎖的“克隆”了。加密鎖的仿真、模擬那么,加密鎖的廠家是否可以安枕無憂了呢?不是的,解密者又找到了新的突破口。因?yàn)檐浖用苕i進(jìn)行通訊,必須要通過通訊口來進(jìn)行,黑客利用這一弱點(diǎn)編制出了加密鎖仿真程序,它的工作原理是首先插上保護(hù)軟件原有的軟件鎖運(yùn)行一遍,而后臺(tái)的程序會(huì)記錄下所有的寫入/讀出的數(shù)據(jù)。然后取下加密鎖,啟動(dòng)仿真程序,讓仿真程序來模擬加密鎖提供所有的數(shù)據(jù)。為此,采用了源程序級(jí)加密,此方法不是去判斷某個(gè)值、某個(gè)字符串或數(shù)據(jù)是否正確,而是時(shí)時(shí)變化輸入?yún)?shù),在任何時(shí)刻沒有兩個(gè)相同的數(shù)據(jù)出現(xiàn)。

自定義算法加密鎖 現(xiàn)在市場(chǎng)上還提供一種開發(fā)者可自定義算法的加密鎖。開發(fā)者可以把自己的算法寫入到加密鎖中,在軟件中調(diào)用這些算法來實(shí)現(xiàn)特有的計(jì)算工作。這種加密鎖的實(shí)際原理是將一組數(shù)據(jù)(開發(fā)者的算法編譯碼)下載到加密鎖的特定外部存儲(chǔ)器,這種方法有它的局限性,因?yàn)橥獠看鎯?chǔ)器用專門的設(shè)備總是可以被讀出來的,安全強(qiáng)度的高低仍然依仗在硬件讀取方法的尋找上??梢詾橛刑厥庑枰挠脩艟帉憣iT的加密函數(shù),更安全地將用戶要求融入加密鎖中,用戶使用加密鎖不是去判斷加密鎖是否正確,而是由加密鎖實(shí)現(xiàn)用戶軟件的特定功能。 實(shí)際上加密鎖的好壞僅僅是一個(gè)方面,不論加密鎖提供的功能有多豐富,加密性有多好,更主要的是使用者,因?yàn)檐浖吘故且蝗擞玫摹OM械募用苕i使用者能夠更好的使用他的加密鎖來完成對(duì)自己軟件的保護(hù)。

加密技術(shù)

→ 在很少使用的代碼中調(diào)用加密鎖。那么看似已破譯的程序就會(huì)經(jīng)常發(fā)生異?,F(xiàn)象。

→根據(jù)時(shí)間調(diào)用加密鎖。上午調(diào)用的數(shù)據(jù)下午(或隔日)使用。破譯者為了分析這種數(shù)據(jù)就要花一天或幾天的時(shí)間。這就可以拖垮破譯者。

→ 加密鎖校驗(yàn)函數(shù)不宜定義成一個(gè)單獨(dú)函數(shù),而宜定義成若干個(gè)小函數(shù)分散使用。

→ 檢查程序代碼的校驗(yàn)和,以防非法修改。

→ 以各種不同的隨機(jī)訪問掩護(hù)真實(shí)的加密鎖訪問。對(duì)隨機(jī)詢問的答復(fù)進(jìn)行處理,但不真正使用它。

→ 可在加密鎖里的多個(gè)地址預(yù)先寫入不同數(shù)據(jù),校驗(yàn)鎖時(shí)可以隨機(jī)地對(duì)其中的某個(gè)地址進(jìn)行校驗(yàn)。(如可隨機(jī)產(chǎn)生一個(gè)數(shù),再根據(jù)該數(shù)來決定對(duì)鎖里哪個(gè)地址的值進(jìn)行校驗(yàn)。)

→ 在程序中不同的地方對(duì)加密鎖進(jìn)行檢測(cè),即多點(diǎn)加密。這個(gè)方法可配合方法一使用。

→ 在您程序的運(yùn)行過程中,您可以定時(shí)、不定時(shí)地對(duì)加密鎖進(jìn)行隨機(jī)檢測(cè)。

→ 您從加密鎖取得返回?cái)?shù)據(jù)后,并不立即判定,而是在后來才去判定是否正確;在判定加密鎖錯(cuò)誤時(shí),并不立即提示或退出,而是在以后提示或退出或程序照常運(yùn)行但出現(xiàn)偏差或溢出等等錯(cuò)誤。

→ 可以將加密鎖返回值作為數(shù)組的索引、常量、計(jì)算單元和校驗(yàn)碼;可以將加密鎖返回值作為指針來控制程序執(zhí)行或作為在不同表中跳轉(zhuǎn)的索引;也可以使用加密鎖返回值來加密或解密部分代碼或數(shù)據(jù)。加密鎖返回值使用后立即刪除。

加密鎖原理

加密鎖把用戶定制(根據(jù)密碼系數(shù)變換密碼算法)密碼算法寫入加密鎖中,并以程序的形式對(duì)調(diào)用者進(jìn)行身份驗(yàn)證。

加密方式

內(nèi)嵌式 這種加密方法要求具有源程序,在被加密程序中訪問加密鎖。加密鎖的驅(qū)動(dòng)光盤中提供VC\VB\VFP\Delph\PB\CB等各種言的編程接口及詳細(xì)的示例供客戶參考。如果您有什么特殊要求可與我們聯(lián)系。

外殼式 外殼加密是一種直接對(duì)可執(zhí)行文件(.exe\.com\.dll)加密的加密方法。這種方法不需要源程序,加密過程簡(jiǎn)單方便。

文件加密

在加密鎖動(dòng)態(tài)連接庫中提供了文件加密和解密函數(shù)。函數(shù)中隱去了 HASH和RSA密碼算法的實(shí)現(xiàn)細(xì)節(jié),安全性極高且使用方便。用戶只需輸入文件名和口令即可。

反破譯---文件完整性檢測(cè)

用程序的完整性檢測(cè)碼防止文件被非法篡改

定義1:運(yùn)行檢測(cè)碼--程序運(yùn)行時(shí)的完整性檢測(cè)碼。 定義2:發(fā)行檢測(cè)碼--程序發(fā)行時(shí)的完整性檢測(cè)碼。 檢測(cè)原理:根據(jù)程序完整性檢測(cè)程序是否被修改--在程序發(fā)行前計(jì)算程序的“發(fā)行檢測(cè)碼”,在程序發(fā)行后運(yùn)行時(shí)自動(dòng)計(jì)算程序的“運(yùn)行檢測(cè)碼”。 如果 “運(yùn)行檢測(cè)碼” 等于 “發(fā)行檢測(cè)碼” 則程序完整性檢測(cè)正確,程序沒有被修改。 如果 “運(yùn)行檢測(cè)碼” 不等于“發(fā)行檢測(cè)碼” 則程序完整性檢測(cè)錯(cuò)誤,程序被修改。

對(duì)于加密技術(shù)我們目前了解的還不夠多,關(guān)于如何防止被破解或者被攻擊我們又都是知之甚少,希望軟件的使用者和開發(fā)者都能積極主動(dòng)。