當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]由于加密給軟件開(kāi)發(fā)者和用戶帶來(lái)了許多不便和麻煩,因此,全球軟件業(yè)的趨勢(shì)是開(kāi)發(fā)不加密軟件,依靠版權(quán)法來(lái)保護(hù)軟件開(kāi)發(fā)者的權(quán)益。但對(duì)于一些大型的工程應(yīng)用軟件系統(tǒng)如:AutoCAD、Xilinx FPGA開(kāi)發(fā)系統(tǒng)等,由于銷量小、

由于加密給軟件開(kāi)發(fā)者和用戶帶來(lái)了許多不便和麻煩,因此,全球軟件業(yè)的趨勢(shì)是開(kāi)發(fā)不加密軟件,依靠版權(quán)法來(lái)保護(hù)軟件開(kāi)發(fā)者的權(quán)益。但對(duì)于一些大型的工程應(yīng)用軟件系統(tǒng)如:AutoCAD、Xilinx FPGA開(kāi)發(fā)系統(tǒng)等,由于銷量小、成本高,不得已仍然需要使用軟件加密技術(shù)。另外,對(duì)于某些敏感行業(yè)的應(yīng)用軟件也必須實(shí)行軟件加密,對(duì)程序代碼進(jìn)行保護(hù)。

  早期的軟件加密方法有:軟盤(pán)或硬盤(pán)加密、加密卡等,由于加密性能、兼容性能或使用不方便等方面的原因而被淘汰。目前廣為流行的是軟件狗硬件電路加密法,其中又以使用單片機(jī)的加密技術(shù)最為可靠。其硬件通常都帶有智能抗分析技術(shù),不可復(fù)制,且加密方式靈活、工作可靠、運(yùn)行速度快、使用方便,不失為軟件加密的一種優(yōu)選方法。

  SmartLock軟件狗加密系統(tǒng)的硬件部分外形類似火柴盒,兩頭分別帶有一個(gè)IEEE-1284并行口的公頭和母頭,串接在并行口和打印機(jī)之間。軟件狗使用的是Atmel公司的89C2051單片機(jī),芯片從微機(jī)并行口取電,通過(guò)并口與加密軟件進(jìn)行通信,系統(tǒng)主要使用代碼移植技術(shù)實(shí)現(xiàn)軟件加密。

1 Smart Lock系統(tǒng)的硬件設(shè)計(jì)

  通過(guò)研究微機(jī)打印口接口電路、IEEE-1284并口通信標(biāo)準(zhǔn)和89C2051型單片機(jī)特性,設(shè)計(jì)出SmartLock加密系統(tǒng)的硬件電路如圖1所示。有89C2051單片機(jī)、3個(gè)鍺二極管、1個(gè)12MHz晶振、2個(gè)30pF瓷片電容和1個(gè)電阻共8個(gè)元件。系統(tǒng)從并行口中共引出了11根端口線,其中有8根數(shù)據(jù)線D0~D7、1根狀態(tài)線(低電平有效 ,當(dāng)打印機(jī)接收完一字節(jié)數(shù)據(jù)允許微機(jī)發(fā)送下一字節(jié)數(shù)據(jù)時(shí),發(fā)給微機(jī)信號(hào))、1根控制線(低電平有效,打印機(jī)自動(dòng)換行信號(hào))和地線GND。

微機(jī)的標(biāo)準(zhǔn)并口并不提供+5V電源,所以只有從驅(qū)動(dòng)能力較強(qiáng)的數(shù)據(jù)口“借電”。依據(jù)IBM PC AT/XT設(shè)計(jì)標(biāo)準(zhǔn),并行口數(shù)據(jù)位的高電平(4.5V)輸出電流為2.5mA(舊式的TTL型)或15mA(CMOS型),而89C2051單片機(jī)的典型工作電流為5.5mA/3V,工作頻率為12MHz。所以使用D4~D6三根數(shù)據(jù)線經(jīng)鍺二極管并在一起作為單片機(jī)電源(采用鍺管的原因是因?yàn)樗膲航递^小,只有0.4V)。同時(shí)為減少軟件狗硬件的功耗,電路設(shè)計(jì)得極其簡(jiǎn)潔,除了單片機(jī),沒(méi)有其它有源器件。

  單片機(jī)復(fù)位使用的是上電自動(dòng)復(fù)位電路。因此微機(jī)對(duì)并行口供電幾百毫秒之后,單片機(jī)才進(jìn)入正常工作狀態(tài)。

2 并口通信協(xié)議

  軟件狗使用數(shù)據(jù)口的D0~D3及D7作為微機(jī)向單片機(jī)傳送數(shù)據(jù)的前向數(shù)據(jù)通道(一次送半字節(jié)數(shù)據(jù),用D7位標(biāo)志高/低半字節(jié));并口控制/狀態(tài)信號(hào)中的和平時(shí)不常用,所以這里用來(lái)作為微機(jī)向單片機(jī)傳送數(shù)據(jù)時(shí)的握手信號(hào)。信號(hào)為高電平,則表示微機(jī)已準(zhǔn)備好待傳送數(shù)據(jù),此協(xié)議中稱為DR(data ready)信號(hào);信號(hào)為低電平,表示單片機(jī)已準(zhǔn)備好接收數(shù)據(jù),此協(xié)議中稱為PR(peripheral ready)信號(hào)。

  軟件狗從微機(jī)接收數(shù)據(jù)的時(shí)序如圖2所示。具體步驟是:

  (1)微機(jī)中的加密程序?qū)R()控制線設(shè)置為0,然后在并口的D4~D6數(shù)據(jù)線上給一個(gè)負(fù)脈沖后再置恒1,使軟件狗復(fù)位啟動(dòng);

  (2)加密程序延時(shí)300ms后,設(shè)置D7為0,表示傳送的是數(shù)據(jù)的低半字節(jié);

  (3)加密程序?qū)⑿枰獋魉偷臄?shù)據(jù)放到并口的D0~D3;

  (4)加密程序在DR控制線上給出一個(gè)正脈沖,通知軟件狗數(shù)據(jù)已準(zhǔn)備好;

  (5)軟件狗收到DR信號(hào)后從D0~D3線上讀取數(shù)據(jù),同時(shí),從D7位可以了解這半字節(jié)數(shù)據(jù)是低位還是高位。讀完數(shù)據(jù)后在PR()狀態(tài)線上給出負(fù)脈沖,通知微機(jī)數(shù)據(jù)已讀完,可以進(jìn)行下一次傳送;

  (6)加密程序收到PR信號(hào)后,即進(jìn)行下一輪的數(shù)據(jù)傳送,直到最后所有數(shù)據(jù)傳送完畢或一定時(shí)間后仍沒(méi)有收到PR信號(hào),則出錯(cuò)退出。

 

SmartLock系統(tǒng)使用了狀態(tài)線作為單片機(jī)向微機(jī)發(fā)送“串行”數(shù)據(jù)時(shí)的數(shù)據(jù)線。同時(shí),通過(guò)使用獨(dú)特的脈寬調(diào)制數(shù)據(jù)傳送方式,實(shí)現(xiàn)了單端口線的數(shù)據(jù)傳輸。這是由于:

  (1)微機(jī)并行口的用途是由微機(jī)向外設(shè)進(jìn)行單向的數(shù)據(jù)傳輸,同時(shí)沒(méi)有多余的備用端口線;

  (2)并口中只有狀態(tài)線才能向微機(jī)傳送信息,其中狀態(tài)線一般不用。

  軟件狗向微機(jī)發(fā)送數(shù)據(jù)的時(shí)序比較特殊,如圖3所示。具體步驟是:

  (1)微機(jī)中的加密程序?qū)⒖刂茙l(fā)送完畢后開(kāi)始等待軟件狗的返回?cái)?shù)據(jù)。

  (2)軟件狗計(jì)算出返回?cái)?shù)據(jù)后,首先發(fā)送一個(gè)固定長(zhǎng)度的標(biāo)準(zhǔn)負(fù)脈沖,然后再依據(jù)數(shù)據(jù)值發(fā)送一個(gè)數(shù)據(jù)脈沖,兩個(gè)脈沖代表一個(gè)數(shù)據(jù)值;直到所有數(shù)據(jù)發(fā)送完畢為止。

  (3)加密程序通過(guò)計(jì)算數(shù)據(jù)脈沖與標(biāo)準(zhǔn)脈沖的寬度比得到數(shù)據(jù)值。

  以上說(shuō)明的是微機(jī)與軟件狗之間數(shù)據(jù)通信的底層協(xié)議。雙方通信時(shí)數(shù)據(jù)幀的具體格式則可以由用戶根據(jù)需要自行定義。

3 加密軟件系統(tǒng)

  軟件部分目前只采用內(nèi)含式加密法。分為以下五個(gè)模塊:底層I/O操作模塊、用戶接口模塊、反跟蹤模塊、異常處理模塊和全自動(dòng)操作模塊。它們之間的結(jié)構(gòu)層次關(guān)系見(jiàn)圖4。

3.1 底層I/O模塊

  底層I/O模塊是最底層的功能函數(shù),也是整個(gè)加密軟件系統(tǒng)的核心。主要用于與軟件狗進(jìn)行數(shù)據(jù)通信,向軟件狗發(fā)送數(shù)據(jù),接收軟件狗的返回值(包括對(duì)返回值的數(shù)字化轉(zhuǎn)換和求精)及向上層模塊報(bào)告通信過(guò)程中出現(xiàn)的錯(cuò)誤。實(shí)際上是前面密鑰模塊在微機(jī)內(nèi)運(yùn)行的接口部分。另外,各種反跟蹤技術(shù)主要也融入到此模塊中。

3.2 用戶接口模塊

  用戶接口模塊有多個(gè),分別與軟件狗的各個(gè)功能一一對(duì)應(yīng),用于對(duì)通信中數(shù)據(jù)格式的轉(zhuǎn)換及對(duì)通信過(guò)程的管理。它們將上層軟件傳來(lái)的指令翻譯為軟件狗能識(shí)別的格式后再傳給底層模塊,然后將底層模塊的返回值整理后上傳。

  用戶接口函數(shù)可由待加密軟件直接調(diào)用。它們自行檢測(cè)并處理軟件被跟蹤調(diào)試時(shí)的情況,同時(shí)顯式或是隱式地向用戶軟件提供軟件狗是否合法的信息,用戶軟件可依據(jù)該信息來(lái)自行定義對(duì)軟件系統(tǒng)處于非法運(yùn)行狀態(tài)時(shí)的處理措施(本軟件系統(tǒng)提供了與各種反擊方法對(duì)應(yīng)的函數(shù))。這種使用模式十分有利于加密模塊與軟件系統(tǒng)的融合,能大大提高軟件系統(tǒng)的抗解密性能。

3.3 全自動(dòng)操作模塊

  若用戶要求軟件加密系統(tǒng)自動(dòng)完成對(duì)軟件狗的檢測(cè)及對(duì)檢測(cè)結(jié)果的處理,則可使用該函數(shù)。它自行使用隨機(jī)命令調(diào)用用戶接口模塊以檢測(cè)軟件狗的合法性,然后自動(dòng)對(duì)檢測(cè)結(jié)果進(jìn)行判斷并處理。當(dāng)然,集成度高必然導(dǎo)致抗解密性能下降。

3.4 反跟蹤模塊

  各類反跟蹤措施(函數(shù)或程序段)用于檢測(cè)軟件系統(tǒng)目前是否處于被跟蹤的狀態(tài),或人為地制造一些障礙,阻止解密者對(duì)本加密軟件的分析。它們?nèi)诤嫌诘讓覫/O模塊、用戶接口函數(shù)及自動(dòng)操作模塊中,隱蔽地檢測(cè)軟件系統(tǒng)是否運(yùn)行于調(diào)試環(huán)境下并自動(dòng)作出相應(yīng)處理。

3.5 異常情況處理模塊

  當(dāng)加密軟件檢測(cè)到軟件系統(tǒng)運(yùn)行在調(diào)試環(huán)境下或軟件狗非法時(shí),就調(diào)用這一模塊正?;蚍钦5刂兄钩绦虻倪\(yùn)行。一般情況下由于程序已處于被調(diào)試的狀態(tài),中止程序運(yùn)行的標(biāo)準(zhǔn)方法通常會(huì)被解密者覺(jué)察出來(lái)而達(dá)不到目的。因此,只有那些違反常規(guī)的操作代碼才能有效地中止程序的運(yùn)行。

4 加密軟件的使用方法

  用戶軟件只需以函數(shù)調(diào)用的方式調(diào)用SmartLock加密系統(tǒng)中的用戶接口模塊,完成對(duì)軟件的加密。這樣便在用戶軟件和加密軟件之間建立了數(shù)據(jù)聯(lián)系,隱式地檢查合法軟件狗的存在。加密軟件將自動(dòng)對(duì)調(diào)試軟件檢測(cè)和處理,用戶不需管理。

  另一個(gè)更為可靠的使用方式是用戶定制加密軟件。SmartLock系統(tǒng)將用戶待加密軟件中的某些算法完全移植到單片機(jī)軟件狗中去,再提供相應(yīng)的用戶接口模塊。這一方式下用戶軟件將受到最大限度的保護(hù)。

5 代碼移植技術(shù)

  傳統(tǒng)的軟件加密的指導(dǎo)思想是:在軟件系統(tǒng)中加入一種特殊的信息,這種信息既是加密后的軟件系統(tǒng)在正常運(yùn)行時(shí)必須引用的,又是用戶無(wú)法自行復(fù)制的。于是,加密后該軟件系統(tǒng)的運(yùn)行完全依賴于售給用戶的原信息載體。這一載體在加密技術(shù)中又被稱為密鑰。

  本加密系統(tǒng)使用的代碼移植技術(shù)是指將待加密軟件的某些算法、程序段、重要的運(yùn)算過(guò)程改造成單片機(jī)程序放在單片機(jī)中執(zhí)行。由于單片機(jī)的程序ROM是解密者不可讀的,這樣,這段代碼就被完全地保護(hù)起來(lái)了,解密者將無(wú)法接觸到這段代碼和數(shù)據(jù)。通過(guò)接口函數(shù),軟件狗可代替用戶軟件系統(tǒng)執(zhí)行一些簡(jiǎn)單的運(yùn)算功能,以實(shí)現(xiàn)代碼移植。這一技術(shù)實(shí)際上是改造了傳統(tǒng)的加密指導(dǎo)思想,它把原軟件系統(tǒng)中的一部分信息取出來(lái),封裝到解密者不可復(fù)制的軟件狗中。

  按傳統(tǒng)加密思想加密后的軟件系統(tǒng)中,軟件部分實(shí)際上仍然包含有原軟件系統(tǒng)正常運(yùn)行時(shí)所需要的所有信息(指令算法和數(shù)據(jù))。在經(jīng)過(guò)代碼移植技術(shù)加密的軟件系統(tǒng),系統(tǒng)的軟件部分已不完整,解密者即使歷盡千辛萬(wàn)苦把軟件分析透徹了,軟件系統(tǒng)的正常運(yùn)行還是離不開(kāi)軟件狗的支持。

  SmartLock軟件加密系統(tǒng)中使用的新穎技術(shù)主要有以下兩點(diǎn),它們有力地保證了軟件狗的抗分析、反跟蹤性能。

  (1)特殊的并口通信協(xié)議

  脈沖形式的握手信號(hào),可有效對(duì)抗各種跟蹤調(diào)試工具及軟件。由圖2軟件狗的數(shù)據(jù)接收時(shí)序可知,本通信協(xié)議中,微機(jī)向單片機(jī)傳送數(shù)據(jù)時(shí)是使用窄脈沖信號(hào)作為握手信號(hào),這樣微機(jī)的CPU必須不間斷地查詢軟件狗的PR信號(hào)。而解密者在調(diào)試跟蹤本軟件時(shí)必然會(huì)因調(diào)試狀態(tài)下軟件運(yùn)行時(shí)斷時(shí)續(xù)而收不到握手信號(hào),使數(shù)據(jù)傳輸過(guò)程出錯(cuò)。軟件將無(wú)法正常工作。同時(shí),反跟蹤模塊也可由此輕易查知調(diào)試環(huán)境的存在而采取相應(yīng)的對(duì)策。

  通過(guò)脈寬調(diào)制信號(hào)從軟件狗向微機(jī)傳送數(shù)據(jù)是一種全新的微機(jī)打印口數(shù)據(jù)傳輸方法。由于它與通常的數(shù)字信號(hào)相差很大,所以這種形式的數(shù)據(jù)具有很強(qiáng)的反動(dòng)態(tài)跟蹤能力。這樣既解決了標(biāo)準(zhǔn)并行口反向傳輸信道窄的問(wèn)題,又可有效對(duì)抗各種調(diào)試工具軟件及端口信號(hào)分析儀。除非解密者完全了解它的工作機(jī)理,否則根本無(wú)法知道軟件狗在干什么。

  (2)代碼移植技術(shù)

  該技術(shù)將待加密軟件與加密系統(tǒng)緊密配合,將需要保護(hù)的軟件完全封裝在黑盒中。

  實(shí)際使用時(shí),SmartLock軟件狗系統(tǒng)還可以進(jìn)行更靈活的設(shè)計(jì)以達(dá)到更強(qiáng)的加密效果。例如:將并行口的數(shù)據(jù)線與89C2051單片機(jī)的P1口全部對(duì)接,同時(shí)將8根數(shù)據(jù)線全部通過(guò)鍺二極管并接成單片機(jī)電源。通信過(guò)程中,將其中的5根作為數(shù)據(jù)傳輸線,3根作為電源傳輸線;而且每根數(shù)據(jù)端口線的作用可以進(jìn)行動(dòng)態(tài)再分配。這種方法可以讓端口分析儀幾乎失去作用,抗分析性極強(qiáng)。

  SmartLock軟件狗可以輕易設(shè)計(jì)成一系列軟件加密狗,在實(shí)際應(yīng)用中效果良好。



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉