1,懂軟件狗。【首先我簡單介紹壹下軟件狗,然後我們再詳細講解各種軟件狗的加密和解密。]
加密狗是插在微機並口上的軟件保護裝置,包括主機校驗程序和密鑰(也叫加密盒)兩部分。主機檢查器是上面提到的加密代碼的壹部分,加密盒用來存儲密碼。壹般來說,插在並口的軟件狗不會影響打印機的正常工作。常見的加密狗加密盒的外觀,比如兩個D排25針接頭,壹公壹母,反接,公接頭(DB25/M)插入並口,母接頭(DB25/F)可以連接打印機,相當於原來的並口。整個軟件狗的硬件電路板就在這個5厘米見方左右的加密盒裏。
電路板上公端子(DB25/F)之間的引腳壹壹對應,直接連接,保證並口功能不變。存儲密碼或起信號加密和轉換作用的設備和其他輔助部件通過這25條線路連接,應用程序以特定的方式與它們進行通信和檢查。除了壹些設計不好的情況,不會影響打印機的正常工作,打印機工作的時候也不會影響到他們。
為了防止程序被非法復制,加密保護措施壹般包括兩部分。首先,要有存儲密碼數據的載體,也就是密鑰;其次,在應用程序中混入了主機校驗器,也就是加密代碼。密鑰應能保證不容易被解密和復制;比如加密壹般是用磁盤做的時候,加密的部分是不能用常用工具復制的。此外,當檢查程序以特殊方式讀取密碼時,應在不影響應用程序正常執行的情況下輕松讀取密碼。當發現密碼不正確或密鑰不存在時,主機被暫停、重啟或采取被動措施。
軟件狗的“時間”
軟件狗的發展經歷了幾代,2001年初發展到第四代。
第壹代是基於內存的加密鎖。這是最古老的加密鎖,裏面只有內存,廠家只能讀寫鎖。軟件狗只使用壹些電阻、二極管等。最多,而且檢查方法比較簡單,容易被人解密。常見的有金天地的“軟件狗”、深思洛克的Keypro模型、彩虹的Cplus等。這種鎖的主要特點是,廠商可以提前將自己的機密數據設置到鎖中,然後在軟件運行時隨機讀取,這就使得解密器無法通過簡單重復並口數據進行解密,但解密器可以通過進壹步分析數據規律來解決,也就是常說的“口”層數據分析。這種加密鎖的原理很簡單,是壹種正在被淘汰的產品,但是它的原材料成本極低,即使是很低的價格,也有很好的利潤,加密廠商壹般都不願意放棄這種鎖;但很多廠家出於成本考慮不得不采用,所以這款鎖還是有壹定市場份額的;
第二代是算法不公開的加密鎖。硬件上加了壹個單片機,也就是所謂的內置CPU,廠家主要是利用算法功能來加密。加密鎖通常會增加壹些輔助功能,比如倒計時,遠程升級等等。加密狗使用低功耗TTL、COMS和其他邏輯元件,並在電路上做壹些加密工作。它在檢查的時候也比第壹代加密狗多了壹道程序,解密的難度自然也就增加了。常見的有深思考洛克的《深思考I》,彩虹世界的SuperPro和Micro Dog,阿拉丁的MemoHASP等。利用單片機,軟件與鎖之間的數據通信建立了保密協議,數據被加密,解密器很難分析數據內容和規律。所以這個鎖的數據分析並沒有停留在“端口”層,而是解密器轉向了“函數”層,即分析軟件中的函數調用。為了抵禦功能層的數據分析,這個鎖有“軟硬兼施”的策略。
“軟”是指驅動中的反追蹤、外殼加密等軟件工作,使解密器難以在功能層模擬。每個人都依賴於對操作系統和微機系統的準確理解。誰也贏不了,結果就是加密驅動不斷更新和擴展。
“硬”的是加密鎖中的算法功能,大大增加了解密的難度,是加密器手中的利器。而加密器只能設置算法的參數,即包含多少算法,算法的內容是未知的。這就限制了廠商對算法的使用,或者預先記錄算法結果,然後在軟件運行時進行檢查(使用碼表);要麽在軟件中至少變換兩次,比較結果。如果解密器截獲了這些數據,可以通過統計分析達到解密的目的;
第三代加密鎖,即所謂的“可編程”加密鎖。1999年初,以北京申思洛克為代表推出了第三代加密鎖,而“可編程”加密鎖概念的推出,是軟件加密技術的壹次進步。“可編程”加密鎖設計的初衷是希望用戶可以將軟件中的重要代碼或模塊“移植”到加密保護設備上運行,讓軟件和加密鎖真正做到無縫鏈接。但由於成本的限制,早期的幾種“可編程”加密鎖使用的低檔單片機對可編程性造成了很大的限制,主要表現在:1,算法轉換的復雜度不夠高,2,指令編碼空間小,3,程序區空間小。這些限制使得用戶無法通過使用“可編程”加密鎖來實現理想的高強度加密方案。軟件狗使用的是PAL(可編程陣列邏輯)、PEEL(可編程電可擦邏輯器件)、GAL(通用陣列邏輯)等可編程器件,但目前流行的時期大概是串行電可擦prom。這些設備由於密碼編譯的靈活性和制作密鑰後在程序中插入和檢入的方便性,大大增加了解密的難度。從使用角度來說,PAL、PEEL、GAL等邏輯設備只能讀取數據,不能隨時寫入數據,重置密碼比較麻煩。EEPROM芯片可以隨意讀寫,所以用在軟件狗中有很大的靈活性。比如可以給每個軟件狗設置密碼,增加解密難度。另外,從EEPROM器件的電氣性能來看,也非常適合做軟件狗;所以這個器件在軟件狗的設計中得到了廣泛的應用,是當時軟件狗廠商的首選芯片。可以像普通RAM內存壹樣讀寫(只不過讀寫是串行的),即使斷電也能保持數據不變。常用的EEPROM型號為93C46,其結構為64× 16位,也就是說壹個93C46的容量為64個16位單位,每次處理的數據為16位。有些93C46,如Microchip、ATMEL、CSi等品牌的93C46,可以切換成128×8bit或64×16bit兩種模式,制作軟件狗更靈活,加密效果更好。當然也有人用容量更大的93C56、93C66等EEPROM芯片或者容量更小的93C06、93C26。因為加密狗是插在微機並口的,所以校驗程序通過並口的I/O地址讀寫EEPROM。具體的讀寫方式與硬件電路和EEPROM的時序有關,所以壹般的檢查程序都是針對某個硬件電路的;但是這些程序大體上是相同的。
第四代軟件在第三代軟件狗的基礎上加壹個單片機芯片就夠了,比如PIC16C5X。該芯片中有專門的算法程序,可以對讀取的密鑰數據進行加密和轉換,以對抗邏輯分析儀。可以說軟件狗已經發展到第四代,非常成熟了。在這項技術中,軟件狗開發公司加入了自己的電路設計,形成了自己的產品特色。
平時常見的狗主要是“洋狗”(外國狗)和“土狗”(家犬)。這裏的“洋狗”主要指美國彩虹和以色列HASP,“土狗”主要包括金天地(現與美國彩虹合資,名為彩虹天地)、神思、建世。總的來說,“洋狗”在軟件界面、外殼、防跟蹤方面不如“土狗”,但在硬件方面絕對不可能“pj”(應該說pj很難):而“土狗”在軟件方面絕對是世界第壹,很多技術,比如噪音、自檢、土狗,
如今,狗的技術發展迅速,針對不同的應用有不同的類型,例如:
強狗:壹種具有自由定義算法的高強度加密方案
微狗:單片機環境下的高強度加密方案
USB狗:帶USB接口的Micro-dog全兼容產品。
軟件狗:壹種用於單機環境的低成本加密方案
網絡狗:壹種網絡環境的加密方案
卡狗:壹種網絡環境下的加密方案
軟件狗采用了各種加密技術。目前,比較先進的加密技術如下:
AS技術:API函數調用與SHELL shell加密相結合,即使外殼被破壞,加密程序仍然無法正常運行。
反跟蹤:
A.數據交換隨機噪聲技術:有效抵禦邏輯分析儀分析和各種調試工具的攻擊。
b迷宮技術:在程序入口和出口之間包含大量的判斷跳轉幹擾,動態改變執行順序,提高狗的反跟蹤能力。
反* *享受:並行* *享受裝置可以硬件抵制,開發者可以選擇是否享受狗。
密碼:軟件開發人員可以設置32位密碼。如果密碼錯誤,則無法讀取或寫入存儲區域。
時間門:有些狗內部有時間門,各種操作必須在規定時間內完成。狗狗正常操作需要很短的時間,但是追蹤需要很長的時間。如果超過規定時間,狗會返回錯誤的結果。
單片機:硬件內置單片機,固化的單片機軟件保證外部不可讀,從而保證狗不可復制。
內存:為開發者提供20字節斷電保持內存,用於存儲關鍵數據、配置參數等信息。
市場上幾種常見的軟件狗簡介
彩虹天地:在國內應該算是老大,從第壹代到第四代都有產品,但其主打產品是第三代微狗(TD-MH),有幹擾芯片,可以隨時產生無用的幹擾信號,更有效的對抗邏輯分析儀;雖然有第四代強狗(CS-QA),但是好像問題很多,所以USB接口加密鎖還是兼容微狗的。彩虹天地的加密強度不高,最簡單的pj方法就是隨便買壹條狗,然後復制到狗裏面就可以解決了。
深思洛克:也是著名的壹個。到2001年初,主要產品是第四代深思考ⅲ加密狗。它的特點是用戶可以在狗中定義自己的算法,大大增強了它的防護能力。但是它的CPU功能不夠強,算法有漏洞,而且只提供壹種加密方式,所以也可以破解,也可以通過硬件復制原狗。這類狗加密產品有Pkpm結構計算軟件、分析師股票軟件、square cad軟件等。
對ⅲ的N階黑箱模型方法的思考:
神思ⅲ的N階黑盒模型方法不是簡單的存儲器,而是通過神思ⅲ獨特的完全可編程性,使神思ⅲ鎖對於輸入輸出表現出高階黑盒控制模型的特點。每次調用代碼運行時,鎖中的存儲都作為操作變量和參數,改變鎖的狀態影響後續調用。用戶自定義代碼沒有規範和特性,甚至同壹個代碼的兩次調用都會返回不同的有用結果。這就是《深度思考III》的獨特之處。
上面的加密例子不需要加密器找到復雜的不可預測的函數關系來移植。
如果采用零階黑箱模型,輸入和輸出有直接對應關系y=f(x1,x2),其中x1,x2為當前輸入,y為當前輸出。這時候如果函數關系比較簡單,就會很容易被解密器破譯,比如叠代法、插值法、列表法等。這迫使加密器尋找復雜的功能,以防止解密器解密和模擬。但由於鎖內資源有限,軟件移植幾乎不可能。現在采用了N階黑箱模型,使得輸入輸出的對應關系變得復雜:yn = f (yn-1,yn-2,yn-3,...,y1,xn1,xn2),其中y1,y2,...
面對如此復雜的關系,解密器只是簡單的取消中間的任何調用,就可能導致後面的結果出現錯誤。即使是簡單的函數關系,也能被這種高階的黑箱過程所隱藏,難以推測。這樣,借助高階黑盒模型方法,很容易找到可以在應用軟件中作為加密對象的公式或函數。
在使用n階黑盒模型方法的過程中也可以使用碼表方法,例如示例中的第壹次調用。
但這種碼表法的不同加密點是相互關聯的,必須整體解密,大大提高了加密強度。在使用傳統的零階黑盒模型時,不同的加密點互不關聯,只需逐個解密,其復雜度無法與n階黑盒模型相比。對於復雜的函數,雖然鎖中沒有足夠的資源,但是可以用N階模型的方法加密。我們可以把復雜的函數變成簡單函數的運算組合,比如y=(a-b)*(a+b)+c,我們可以先計算(a-b)和(a+b),然後把結果相乘,再加上c。
嚴格來說,N階模型是不可解的(目前只是理論上的,請記住這壹點),因為第N個輸出依賴於之前的n-1個輸入和輸出,而之前的n-1個輸出可能已經被部分或完全隱藏,所以第N個輸出無法推測,至少推測n-1個輸入產生的輸出多於第壹個輸入產生的輸出。
神四ⅲ有完整的指令系統,可以通過編程實現N階或任意階的黑盒模型,每個調用都是相互關聯的,中間結果可以絕對隱藏。只要使用得當,理論上是不可解的(我的理論不是不可解:)