深思洛克加密狗驅動
⑴ 關於PKPM軟體的加密狗的問題/!!!!
軟體狗[Dongles]
1、認識軟體狗。[首先我對軟體狗作一簡單介紹,在後面我們將對各種軟體狗的加密和解密做詳細的講解。]
軟體狗是插在微機並行口上的一個軟體保護裝置,它包括主機檢查程序和密鑰(也稱加密盒)兩部分。主機檢查程序就是前面說的加密代碼的一部分,加密盒是用來存放密碼的。一般來說,軟體狗插在並行口上,不會影響列印機的正常工作。常見的軟體狗加密盒外形,如兩個一公一母的D行25針連接器倒接在一起,公頭(DB25/M)插在並行口上,母頭(DB25/F)可接列印機,相當於原來的並行口。整個軟體狗的硬體電路板就在這約5厘米見方的加密盒子里。
電路板上的公頭(DB25/F)之間的管腳是一一對應、直接相聯結的,以保證並行口的作用不變。存儲密碼或起信號加密變換作用的器件及其它輔助元件就跨接在這25根線上面,應用程序以特定的方式跟他們溝通、核對。除了某些設計不良的情況之外,一般不會影響列印機的正常工作,列印機工作時也不會影響它們。
為了防止程序被非法復制,所做的加密保護措施一般都包括兩部分。首先是要有保存密碼數據的載體,即密鑰;其次是夾雜在應用程序中的主機檢查程序,即加密代碼。密鑰應該能保證不易被解密、復制;如一般用磁碟做加密時,加密部分無法用一般的工具復制。另外,當檢查程序用特殊方法去讀密碼時,密碼應該能很容易地被讀出,而不致影響應用程序的正常執行。當發現密碼不對或密鑰不存在時,就讓主機掛起、重新起動或採用被的措施。
軟體狗經歷的「時代」
軟體狗的發展經歷了好幾代,至2001年初就已發展到了第四代。
第一代是存儲器型的加密鎖。這是最有歷史的加密鎖,內部只有存儲體,廠商只能對鎖進行讀、寫。軟體狗起信號加密變換作用的器件,最多隻簡單採用一些電阻、二極體等,檢查方法也比較簡單,很容易被人解密.常見的有原金天地的「軟體狗」、深思洛克的Keypro型、Rainbow的Cplus等。這種鎖的主要特點是廠商可以預先把自己的保密數據設置到鎖內,然後在軟體運行時隨機讀取,這樣防止了解密者通過簡單重復並口數據來解密,但解密者進一步分析一下數據規律就可以解決了,這就是常說的「埠」層的數據分析。這種加密鎖原理非常簡單,是種正在被逐步淘汰的產品,但是其原料成本極低,即使在很低的價位也有很好的利潤,加密廠商一般都不願放棄這種鎖;而很多廠商由於成本原因又不得不採用,因此這種鎖仍有一定的市場份額;
第二代是演算法不公開的加密鎖。硬體內部增加了單片機,即所謂內置CPU,廠商主要是利用演算法功能進行加密。加密鎖通常還增加了一些輔助功能,比如倒計數器、遠程升級等。軟體狗採用了低功耗TTL,COMS等邏輯元件,在電路上做了一些加密工作,檢查時也要比第一代軟體狗多一道手續,解密的難度自然也增加了。常見的有深思洛克的「深思Ⅰ」型,彩虹天地的SuperPro、微狗,ALADDIN的MemoHASP等。利用單片機,軟體與鎖之間的數據通訊建立了一個保密協議,數據都是經過加密的,解密者就難以分析出數據內容和規律了,因此對於這種鎖的數據分析就不是停留在「埠」層了,解密者轉向了「功能」層,就是對軟體中的函數調用進行分析。為了抵擋功能層的數據分析,這種鎖來了個「軟硬」兼施的策略。
「軟」的是指驅動程序內反跟蹤、外殼加密等等軟體工作,讓解密者難以在功能層上模擬,誰都靠的是對操作系統、微機系統的精確理解。誰都無法決勝,結果是加密驅動程序在不斷更新、膨脹。
「硬」的就是加密鎖內的演算法功能,這大大增加了解密難度,這是掌握在加密者手中的武器。但是,加密者只能設置演算法的參數,即所謂內含多少種演算法可選,而演算法內容並不知道。這樣就限制了廠商對演算法的使用,要麼預先記錄演算法結果然後在軟體運行時核對(使用碼表);要麼在軟體中至少變換兩次然後比較結果是否一致。如果解密者截獲這些數據,通過統計、分析就有可達到解密目的;
第三代加密鎖,即所謂「可編程」的加密鎖。1999年初,以北京深思洛克為代表推出了第三代加密鎖,「可編程」加密鎖概念的推出是軟體加密技術的一次進步。「可編程」加密鎖設計初衷是希望用戶能夠將軟體中重要的代碼或模塊「移植」到加密保護設備中運行,使軟體與加密鎖實現真正無縫鏈接。但由於成本限制,早期推出的幾款「可編程」加密鎖採用的低檔單片機給 「可編程」性造成了很大的局限,主要表現在: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難度非常大):而「土狗」在「軟」的方面做得絕對稱得上世界第一,許多技術,如噪音、自檢測、演算法可變、碼表變換等等,可以說都很先進,而在硬體上不及國外,只要稍有單片機功力的人,都可復制。
現在狗的技術發展很快,針對不同的應用場合有不同的類型,如:
強勁狗:自由定義演算法的高強度加密方案
微狗: 面向單片機環境的高強度加密方案
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為本次輸出。這時如果函數關系簡單就很容易被解密者破譯,比如用迭代法、插值法和列表法等方法逼近;這就迫使加密者尋求復雜函數來防止解密者的破譯和模擬。但由於鎖內資源的限制使得軟體移植幾乎不可能。現在採用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階或任意階黑箱模型,每次調用互相關聯,並且可以絕對隱藏中間結果,只要使用得當,理論上是不可解的( 我的理論是沒有不可解的:)
⑵ 我的電腦是win764系統的,為什麼我安裝了宇龍數控機床加工模擬系統後,點擊那個加密鎖管理程序沒有反應
我記得宇龍數控是使用的ROCKEY4的加密狗(現在的最新版我不確定了),而這種加密狗是有驅的,並且沒有64位下的對應驅動,那麼在64位下無法識別加密狗的話那個管理程序是沒有反應的。
你可以先確定一下設備管理器里有沒有加密狗存在,有一種辦法就是將加密狗換一個USB口插一下,看看系統有沒有提示發現新的設備並安裝好設備的驅動
補丁一下,我剛去下載了最新版2012-07-05的4.9版,這個版本使用的是深思洛克的SENSE IV智能加密狗,並且採用的是無驅的方式,那麼,在X64下應該是可以正常使用的。建議還是先檢查一下加密狗是否被正常識別了
⑶ C#做了一款網路版系統,現在要求加加密狗(深思洛克),如何操作,最好貼代碼,好用追加!!
:)
這是個不小的難題,因為深思洛克有幾種型號,而目前主推的當然是精銳IV和精銳E,都是智能狗,除了上位機代碼外,你還需要完成對應的下位機代碼(晶元內演算法,即Keil C51來寫狗內演算法)
這需要比較長的篇幅。
首先,因為C#只能寫託管類代碼,那麼對於加密狗只能使用調用介面的方式,這一點可以通過下載對應的SDK來看到。
[DllImport(@"c:Sense4.dll")]
privatestaticexternuintS4Enum([MarshalAs(UnmanagedType.LPArray),Out]SENSE4_CONTEXT[]s4_context,refuintsize);
[DllImport(@"c:Sense4.dll")]
privatestaticexternuintS4Open(refSENSE4_CONTEXTs4_context);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4_context);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,uintctlCode,byte[]inBuff,uintinBuffLen,byte[]outBuff,uintoutBuffLen,refuintBytesReturned);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,stringDirID,uintDirSize,uintFlags);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,stringPath);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,stringDirID);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,byte[]Pin,uintPinLen,uintPinType);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,byte[]OldPin,uintOldPinLen,byte[]NewPin,uintNewPinLen,uintPinType);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,stringFileID,uintOffset,byte[]Buffer,uintBufferSize,uintFileSize,refuintBytesWritten,uintFlags,uintFileType);
[DllImport(@"c:Sense4.dll")]
(refSENSE4_CONTEXTs4Ctx,stringFileID,byte[]InBuffer,uintInbufferSize,byte[]OutBuffer,uintOutBufferSize,refuintBytesReturned);
通常我們只關心S4Enum,S4Open,S4Close,S4Control,S4ChangeDir,S4VerifyPin,S4Execute這幾個函數。
重頭線在KeilC51(也就是狗內演算法)上,三言二語說不完…………
⑷ 如何對我自己寫的C# 的 C/S程序用加密狗進行加密
C#不是源生態語言,大多數加密狗只能提供動態連接庫與C#的程序進行數據通信。
使用動態調用的方式來載入加密狗廠家提供的DLL文件即可。
[DllImport("XXX.DLL")]
更詳細的可參考各加密狗公司的SDK(北京賽孚耐,飛天誠信,堅石誠信,深思洛克等)。
如需代碼級回復,請加懸賞分並留下聯系方式。呵呵
⑸ 加密狗插在電腦上沒反應怎麼辦,也不提示讓裝驅動
加密狗插在電腦上沒反應,原因及解決辦法如下:
1、先檢查加密狗在其它電腦上是否正常,如果沒有問題繼續進行。如果有問題繼續嘗試其他電腦。
2、可以先關閉電腦上的殺毒、監控安全軟體。殺毒軟體對軟體進行殺毒,如果有問題可以進行處理。
3、需要驅動程序的可以直接安裝驅動程序,找到合適電腦型號的驅動,然後進行更新嘗試。
4、在設備管理器中檢查加密狗是否正常工作,有錯誤(出現「!」)刪除後重新安裝驅動,搜索合適電腦型號的驅動,然後進行更新嘗試。
5、反復拔插加密狗,看看電腦有什麼反應。如果是因為電腦的原因,可以先修理電腦後再次嘗試。
拓展資料:
加密鎖是一種插在計算機並行口上的軟硬體結合的加密產品(新型加密鎖也有usb口的)。一般都有幾十或幾百位元組的非易失性存儲空間可供讀寫,現較新的狗(加密鎖)內部還包含了單片機。軟體開發者可以通過介面函數和加密鎖進行數據交換(即對加密鎖進行讀寫),來檢查加密鎖是否插在介面上;或者直接用加密鎖附帶的工具加密自己EXE文件(俗稱"包殼")