如何策略使用加密狗進(jìn)行加密
現(xiàn)在的解密技術(shù)排除法律和道德因素,就從學(xué)術(shù)角度來說是門科學(xué)。它與加密技術(shù)一樣是相輔相成不斷提高。下面學(xué)習(xí)啦小編收集針對(duì)加密狗加密的相關(guān)資料。
針對(duì)于使用加密狗的解密有什么方法?
1、硬件復(fù)制
復(fù)制硬件,即解密者復(fù)制Sentinel Superpro相同的加密鎖。由于加密鎖采用了彩虹公司專用的ASIC芯片技術(shù),因此復(fù)制該加密鎖非常困難,且代價(jià)太大。
2、監(jiān)聽
解密者利用并口監(jiān)聽程序,進(jìn)行解密,其工作機(jī)制是:
監(jiān)聽程序,記錄應(yīng)用程序?qū)Σ⒖诎l(fā)的查詢串和加密鎖發(fā)回的響應(yīng)串。當(dāng)移去加密鎖時(shí),如果程序再對(duì)并口發(fā)查詢串確認(rèn)身份時(shí),監(jiān)聽程序返回所記錄的響應(yīng)串。程序認(rèn)為加密鎖仍然在并口上,是合法用戶繼續(xù)運(yùn)行,應(yīng)用程序也就被解密了。
3、打印機(jī)共享器
將加密鎖插在打印機(jī)共享器上,多臺(tái)計(jì)算機(jī)共同使用打印機(jī)共享器上的一把加密鎖。(后面簡(jiǎn)述對(duì)抗策略)
4、DEBUG
解密者DEBUG等反編譯程序,修改程序源代碼或跳過查詢比較。應(yīng)用程序也就被解密了。
對(duì)于以上的幾種解密方法加密者可以考慮使用以下幾種加密策略:
1、針對(duì)上述監(jiān)聽和DEBUG問題解密方法,本人推薦充分利用加密狗開發(fā)商的API函數(shù)調(diào)用的加密策略:
a、針對(duì)并口監(jiān)聽程序
1)對(duì)加密鎖進(jìn)行算法查詢
?正確的查詢響應(yīng)驗(yàn)證
用戶生成大量查詢響應(yīng)對(duì),如200對(duì)。在程序運(yùn)行過程中對(duì)激活的加密算法單元隨機(jī)的發(fā)送在200對(duì)之中的一對(duì)“345AB56E”―――“63749128”。查詢串“345AB56E”,哪么算法單元返回的下確的響應(yīng)串應(yīng)該是“63749128”,若是,則程序認(rèn)為加密鎖在并口上,是合法用戶,繼續(xù)運(yùn)行,反之終止程序。
?隨機(jī)非激活算法驗(yàn)證
我們對(duì)非激活的加密鎖算法單元發(fā)隨機(jī)生成的查詢串,如:“7AB2341”,非激活算法單元只要是有查詢就會(huì)有響應(yīng)串。因此返回響應(yīng)串“7AB2341”,在程序中判斷響應(yīng)串與查詢串是否相同,如果相同,則證明我們的加密鎖仍然在口上。繼續(xù)運(yùn)行程序。
?隨機(jī)激活算法驗(yàn)證
假設(shè)監(jiān)聽程序了解了上面的機(jī)制。即對(duì)非激活的加密算法我們發(fā)什么查詢串則返回相同的響應(yīng)串。哪么我也有對(duì)策。對(duì)激活的加密算法單元發(fā)隨機(jī)生成的查詢串,如:“345AB56E”由于是激活算法響應(yīng)串肯定與查詢串肯定不等。所以假如返回響應(yīng)串“7253ABCD”,在程序中判斷響應(yīng)串與查詢串是否不同,如果不同,則證明我們的加密鎖仍然在并口上,繼續(xù)運(yùn)行程序。
上面三種加密策略在程序同時(shí)使用,相符相承,相互補(bǔ)充。即使監(jiān)聽程序記錄下來我們的部分查詢響應(yīng)。
2)分時(shí)查詢
用戶把查詢響應(yīng)對(duì)分組,如120對(duì)分為4組。每30對(duì)一組。頭三個(gè)月使用第一組,第二個(gè)月三個(gè)月使用第二組以此類推,監(jiān)聽程序就算記錄了頭三個(gè)月。第二個(gè)月三個(gè)月以后程序仍然無法使用。
也可以再生成100對(duì)“臨時(shí)委員”,每次運(yùn)行隨意抽出1對(duì)與以上分組結(jié)合使用。使記錄程序在三個(gè)月內(nèi)也無法記錄完全。程序也無法使用。
3)隨機(jī)讀寫存儲(chǔ)單元
為了防監(jiān)聽程序。我們的策略是:程序在啟動(dòng)時(shí),我們利用隨機(jī)函數(shù)隨機(jī)生成的一個(gè)數(shù),假設(shè)是“98768964”。我們?cè)谥付ǖ?8#單元寫入這個(gè)數(shù)。哪么我們?cè)诔绦蜻\(yùn)行中,每調(diào)用一個(gè)功能程序前讀取18#單元,數(shù)判定是否是我們寫入的數(shù)“98768964”。因?yàn)槊看螌懭氲臄?shù)是隨機(jī)生成的,所以監(jiān)聽程序記錄不到當(dāng)次啟動(dòng)時(shí)寫入的隨機(jī)數(shù),它返回的數(shù)肯定是一個(gè)不匹配的數(shù)。我們就可以就此判定是否是合法用戶。Sentinel Superpro加密鎖可以重復(fù)寫10萬次以上。也就是說每天寫三次也可以使用一百年。
2、針對(duì)打印共享器的加密策略
為了防打印共享器。我們的策略是:程序在啟動(dòng)時(shí),我們利用隨機(jī)函數(shù)隨要生成的一個(gè)數(shù),假設(shè)是“7762523A”。我們?cè)谥付ǖ?4#單元寫入這個(gè)數(shù)。哪么在程序運(yùn)行中,每調(diào)用一個(gè)功能程序前讀取34#單元,以判定是否是我們寫入的數(shù)“7762523A”。以此判定是否是合法用戶。因?yàn)槊看螌懭氲臄?shù)隨機(jī)生成的,同時(shí)使用打印共享器的其他非法用戶的程序一進(jìn)入也會(huì)寫入一個(gè)不同的隨機(jī)數(shù)。那么第一個(gè)用戶的程序在校驗(yàn)是否是第一個(gè)用戶寫入的數(shù)時(shí),就會(huì)被認(rèn)為是非法的用戶。所以在一個(gè)階段也只是一個(gè)程序使用。(例如RAINBOW公司開的Sentinel Superpro加密鎖可以重復(fù)10萬次以上。也就是說每天寫三次也就可以使用一百年。)
3、針對(duì)DEBUG跟蹤的加密鎖的安全策略
1)分散法
針對(duì)DEBUG跟蹤。在調(diào)用每個(gè)重要功能模塊前,我們建議要對(duì)加密鎖進(jìn)行查詢,校驗(yàn)身份。如果只在程序開始部分校驗(yàn)身份,DEBUG跟蹤程序部分可以輕易的跳過校驗(yàn)部分,而一些不良用戶可以在驗(yàn)證后可以將加密鎖拔下用在其它計(jì)算機(jī)。
2)延時(shí)法
針對(duì)某一具體查詢校驗(yàn),都有三步驟:
?查詢得到響應(yīng)串
?比較響應(yīng)串和查詢串是否匹配
?執(zhí)行相應(yīng)的步驟
我們建議以上三個(gè)步驟要延時(shí)執(zhí)行。最好鼗三步驟相互遠(yuǎn)離些,甚至放到不同的子程序或函數(shù)中。例如:我們執(zhí)行“查詢得到響應(yīng)串” 后,相隔50執(zhí)行“比較響應(yīng)串和查詢串是否匹配”。假如程序需要調(diào)用一個(gè)函數(shù)。哪么我們就在這個(gè)函數(shù)里執(zhí)行“執(zhí)行相應(yīng)的步驟”。這樣程序更難于被。
3)整體法
將響應(yīng)串作為程序中數(shù)據(jù)使用。
例如:我們有返回值“87611123”,而我們程序需要“123”這個(gè)數(shù)。我們可以讓“87611123”減去“8761000”得到“123”。這樣以來任何對(duì)加密程序的修改都會(huì)使程序紊亂。
4)迷惑法
一般情況下我們的程序執(zhí)行相應(yīng)的驗(yàn)證步驟。驗(yàn)證是非法用戶就會(huì)退出。這樣很容易被發(fā)現(xiàn)代碼特征。我們知道是非法用戶后繼續(xù)執(zhí)行一些無用的操作使程序紊亂。以迷惑解密者。