
【軟件狗解密】軟件狗[Dongles] 1、認識軟件狗 。[首先我對軟件狗作一簡單介紹,在后面我們將對各種軟件狗的加密和解密做詳細的講解 。] 軟件狗是插在微機并行口上的一個軟件保護裝置,它包括主機檢查程序和密鑰(也稱加密盒)兩部分 。主機檢查程序就是前面說的加密代碼的一部分,加密盒是用來存放密碼的 。一般來說,軟件狗插在并行口上,不會影響打印機的正常工作 。常見的軟件狗加密盒外形,如兩個一公一母的D行25針連接器倒接在一起,公頭(DB25/M)插在并行口上,母頭(DB25/F)可接打印機,相當于原來的并行口 。整個軟件狗的硬件電路板就在這約5厘米見方的加密盒子里 。電路板上的公頭(DB25/F)之間的管腳是一一對應、直接相聯結的,以保證并行口的作用不變 。存儲密碼或起信號加密變換作用的器件及其它輔助元件就跨接在這25根線上面,應用程序以特定的方式跟他們溝通、核對 。除了某些設計不良的情況之外,一般不會影響打印機的正常工作,打印機工作時也不會影響它們 。為了防止程序被非法復制,所做的加密保護措施一般都包括兩部分 。首先是要有保存密碼數據的載體,即密鑰;其次是夾雜在應用程序中的主機檢查程序,即加密代碼 。密鑰應該能保證不易被解密、復制;如一般用磁盤做加密時,加密部分無法用一般的工具復制 。另外,當檢查程序用特殊方法去讀密碼時,密碼應該能很容易地被讀出,而不致影響應用程序的正常執行 。當發現密碼不對或密鑰不存在時,就讓主機掛起、重新起動或采用被的措施 。軟件狗經歷的“時代” 軟件狗的發展經歷了好幾代,至2001年初就已發展到了第四代 。第一代是存儲器型的加密鎖 。這是最有歷史的加密鎖,內部只有存儲體,廠商只能對鎖進行讀、寫 。軟件狗起信號加密變換作用的器件,最多只簡單采用一些電阻、二極管等,檢查方法也比較簡單,很容易被人解密.常見的有原金天地的“軟件狗”、深思洛克的Keypro型、Rainbow的Cplus等 。這種鎖的主要特點是廠商可以預先把自己的保密數據設置到鎖內,然后在軟件運行時隨機讀取,這樣防止了解密者通過簡單重復并口數據來解密,但解密者進一步分析一下數據規律就可以解決了,這就是常說的“端口”層的數據分析 。這種加密鎖原理非常簡單,是種正在被逐步淘汰的產品,但是其原料成本極低,即使在很低的價位也有很好的利潤,加密廠商一般都不愿放棄這種鎖;而很多廠商由于成本原因又不得不采用,因此這種鎖仍有一定的市場份額; 第二代是算法不公開的加密鎖 。硬件內部增加了單片機,即所謂內置CPU,廠商主要是利用算法功能進行加密 。加密鎖通常還增加了一些輔助功能,比如倒計數器、遠程升級等 。軟件狗采用了低功耗TTL,COMS等邏輯元件,在電路上做了一些加密工作,檢查時也要比第一代軟件狗多一道手續,解密的難度自然也增加了 。常見的有深思洛克的“深思Ⅰ”型,彩虹天地的SuperPro、微狗,ALADDIN的MemoHASP等 。利用單片機,軟件與鎖之間的數據通訊建立了一個保密協議,數據都是經過加密的,解密者就難以分析出數據內容和規律了,因此對于這種鎖的數據分析就不是停留在“端口”層了,解密者轉向了“功能”層,就是對軟件中的函數調用進行分析 。為了抵擋功能層的數據分析,這種鎖來了個“軟硬”兼施的策略 ?!败洝钡氖侵蛤寗映绦騼确锤?、外殼加密等等軟件工作,讓解密者難以在功能層上仿真,誰都靠的是對操作系統、微機系統的精確理解 。誰都無法決勝,結果是加密驅動程序在不斷更新、膨脹 ?!坝病钡木褪羌用苕i內的算法功能,這大大增加了解密難度,這是掌握在加密者手中的武器 。但是,加密者只能設置算法的參數,即所謂內含多少種算法可選,而算法內容并不知道 。這樣就限制了廠商對算法的使用,要么預先記錄算法結果然后在軟件運行時核對(使用碼表);要么在軟件中至少變換兩次然后比較結果是否一致 。如果解密者截獲這些數據,通過統計、分析就有可達到解密目的; 第三代加密鎖,即所謂“可編程”的加密鎖 。1999年初,以北京深思洛克為代表推出了第三代加密鎖,“可編程”加密鎖概念的推出是軟件加密技術的一次進步 ?!翱删幊獭奔用苕i設計初衷是希望用戶能夠將軟件中重要的代碼或模塊“移植”到加密保護設備中運行,使軟件與加密鎖實現真正無縫鏈接 。但由于成本限制,早期推出的幾款“可編程”加密鎖采用的低檔單片機給 “可編程”性造成了很大的局限,主要表現在:1、算法變換的復雜度不夠高,2、指令編碼空間較小,3、程序區的空間較小 。這些局限性使得用戶根本不可能利用“可編程”加密鎖實現理想的高強度加密方案 。軟件狗采用了PAL(Programmable Array Logic)、PEEL(Programmable Electrically Erasable Logic Device)、GAL(Generic Array Logic)等可編程器件,但目前流行的期間大概要算串行讀寫的EEPROM(Serial Electrically Erasable PROM)了 。這些器件由于密碼編制的靈活性和制成密鑰后在程序中插入檢查的方便性,極大地增加了解密的難度 。從使用的角度來看PAL、PEEL、GAL 等邏輯器件只能讀取數據,不能隨時寫入數據,密碼的重新設置比較麻煩;而EEPROM芯片可隨意讀寫,用在軟件狗上靈活性相當大,譬如可以為每一個軟件狗單獨設一個密碼,以增加解密的難度;另外,從EEPROM器件的電器性能上來說也非常適合做軟件狗;因此這種器件在軟件狗的設計中獲得了廣泛的應用,是當時軟件狗制作者的首選芯片 。它象一般RAM存儲器一樣可讀寫(只不過讀寫是串行的),即使斷電后也能保存數據不變 。常用的EEPROM型號是93C46,它是64×16bit的結構,也就是說一個93C46具有64個16位bit單元的容量,每次處理數據也都是16位 。有的93C46,如 Microchip、ATMEL、CSi等品牌的93C46可以通過切換,變為128×8bit或64×16bit兩種模式,這對軟件狗制作來說就更靈活了,其加密效果也更好 。當然也有人采用更大容量的93C56、93C66或容量小一點的93C06、93C26等EEPROM芯片 。因為軟件狗是插在微機的并行口上,所以檢查程序是通過并行口的I/O地址去讀寫EEPROM 。具體的讀寫方式跟硬件線路以及EEPROM的時序有關,因此,一般的檢查程序針對某一種硬件線路;但是這些程序大同小異,大體上是差不多的 。第四代軟件夠在第三代軟件狗基礎上,加入一個單片機芯片,如PIC16C5X 。此芯片中存有特定的算法程序,可將讀出的密鑰數據進行加密變換,以對抗邏輯分析儀 。可以說,軟件狗發展到第四代,已經非常成熟了 。在此技術上,各軟件狗研制公司又加入自己的電路設計,形成了各自的產品特色 。平時常見的狗主要有“洋狗”(國外狗)和“土狗”(國產狗) 。這里“洋狗”主要指美國的彩虹和以色列的HASP,“土狗”主要有金天地(現在與美國彩虹合資,叫彩虹天地)、深思、堅石 。總的來說,“洋狗”在軟件接口、加殼、防跟蹤等“軟”方面做得沒有“土狗”好,但在硬件上絕對“無法” pj(應當說pj難度非常大):而“土狗”在“軟”的方面做得絕對稱得上世界第一,許多技術,如噪音、自檢測、算法可變、碼表變換等等,可以說都很先進,而在硬件上不及國外,只要稍有單片機功力的人,都可復制 ?,F在狗的技術發展很快,針對不同的應用場合有不同的類型,如: 強勁狗:自由定義算法的高強度加密方案 微狗: 面向單片機環境的高強度加密方案 USB狗: USB接口的微狗全兼容產品 軟件狗:面向單機環境的低成本加密方案 網絡狗:面向網絡環境的加密方案 卡式狗:面向網絡環境的加密方案 軟件狗采取了各種的加密技術,目前較先進的加密技術有以下幾種: AS技術:API函數調用與SHELL外殼加密結合,即使外殼被破壞,加密程序依然不能正常運行 。反跟蹤: a.數據交換隨機噪音技術:有效地對抗邏輯分析儀分析及各種調試工具的攻擊 。b.迷宮技術:在程序入口和出口之間包含大量判斷跳轉干擾,動態改變執行次序,提升狗的抗跟蹤能力 ??构蚕恚嚎蓮挠布共⒖诠蚕砥?,由開發商選擇是否共享狗 ??诹睿?可由軟件開發商設置32位口令,口令錯誤將不能對存儲區進行讀寫 。時間閘:某些狗內部設有時間閘,各種操作必須在規定的時間內完成 。狗正常操作用時很短,但跟蹤時用時較長,超過規定時間狗將返回錯誤結果 。單片機:硬件內置單片機,固化的單片機軟件保證外部不可讀,從而保證狗不可仿制 。存儲器:提供20字節掉電保持存儲器供開發商存放關鍵數據、配置參數等信息 。市場上常見幾種軟件狗的簡單介紹 彩虹天地:在中國應該算是老大了,從第一代到第四代的產品都有,但它的主要產品還是第三代的微狗(TD-MH),該代產品中有干擾芯片,能隨時產生無用的干擾信號,更加有效的對抗邏輯分析儀;雖然有第四代的強勁狗(CS-QA),但好象有不少問題,所以推出的USB接口的加密鎖還是兼容微狗的 。彩虹天地的加密強度不高,最簡單的pj方法就是隨便買一個狗,然后復制成要解的狗 。深思洛克:也是一個比較有名的,至2001年初最主要的產品就是第四代的深思Ⅲ型加密狗,特點就是用戶可在狗中定義自己的算法,這大大加強了其保護能力,但它的CPU功能還不夠強,算法上有漏洞,而且只提供一種加密方式,所以也是可以擊破的,并且也能硬件復制原狗 。此類狗加密的產品有Pkpm 結構計算軟件、分析家股票軟件、圓方cad軟件等等 。深思 Ⅲ 的n階黑箱模型法: 深思 Ⅲ 的n階黑箱模型法并不是簡單的記憶,而是通過深思 Ⅲ 獨特的完全可編程使得深思 Ⅲ 鎖對于輸入和輸出呈現高階黑箱控制模型的特征 。每次調用代碼運行時使用鎖內存儲作為運算變量和參數,改變鎖的狀態影響后續的調用 。用戶自定義的代碼沒有任何的說明書和特征,甚至兩次相同的調用會返回不同的有用的結果 。這是深思 Ⅲ 獨特之處 。以上加密范例并不要求加密者尋找復雜并難以預料的函數關系加以移植 。如果是采用0階黑箱模型那么輸入與輸出具有直接的對應關系 y=f(x1,x2),其中x1,x2為本次輸入,y為本次輸出 。這時如果函數關系簡單就很容易被解密者破譯,比如用迭代法、插值法和列表法等方法逼近;這就迫使加密者尋求復雜函數來防止解密者的破譯和仿真 。但由于鎖內資源的限制使得軟件移植幾乎不可能 ?,F在采用n階黑箱模型,就使得輸入與輸出的對應關系復雜化: yn=f(yn-1,yn-2,yn-3,...,y1,xn1,xn2),其中,y1,y2,...,yn-1為以前n-1次調用輸出或隱藏的結果,xn1,xn2為本次(第n次)調用的輸入參數 。面對這樣的復雜關系,解密者簡單地取消中間的任何一次調用都可能使后邊的結果發生錯誤,既使是簡單的函數關系也可以被這高階黑箱過程隱藏得難以推測 。這樣,借助于高階黑箱模型法很容易找到應用軟件中可以利用的公式或函數作為加密的對象 。n階黑箱模型法使用過程中一樣可以使用碼表法,例如,范例中的第一次調用 。但是,這樣的碼表法不同的加密點互相關聯,必須進行整體解密,這就大大地提高了加密強度 。使用傳統的0階黑箱模型時,不同的加密點之間互不關聯只需各個擊破分別解密即可,其復雜度無法與n階黑箱模型相比 。對于比較復雜的函數,盡管鎖內沒有足夠的資源,還是可以通過n階模型法進行加密處理我們可以將復雜函數化為簡單函數的運算組合,例如:y=(a-b)*(a+b)+c可以先計算(a-b)和(a+b)然后將結果相乘再加c 。n階模型嚴格說是不可解的(只是目前理論上,也請深思公司記住這一點),因為第n次輸出依賴于前n-1次輸入和輸出,而前n-1次輸出可能已部分或全部被隱藏,所以第n次輸出無法推測,至少推測n-1次輸入產生的輸出要比一次輸入產生的輸出復雜度有質的飛躍 。深思 Ⅲ 具有完備的指令系統,可以通過編程實現n階或任意階黑箱模型,每次調用互相關聯,并且可以絕對隱藏中間結果,只要使用得當,理論上是不可解的( 我的理論是沒有不可解的:)
猜你喜歡
- 一個月的狗狗的喂養注意事項
- 狗狗可以吃的食物有哪些
- 狗狗防止走丟最有效的方法 狗狗防止走丟最有效的方法有什么
- 雜技團里的小狗為什么會做算術 雜技團里的小狗會做算術的原因
- UZI狂小狗卡莎玩法分享
- 影樓修片用什么軟件
- 電子狗怎么升級 看完你就明白了
- 男人夢到狗是什么征兆 是好事還是壞事
- 好用的手機清理軟件 手機清理步驟
- 狗狗腳毛變紅怎么回事
