SmartLock并口單片機軟件狗加密技術
由于加密給軟件開發(fā)者和用戶帶來了許多不便和麻煩,因此,全球軟件業(yè)的趨勢是開發(fā)不加密軟件,依靠版權法來保護軟件開發(fā)者的權益。但對于一些大型的工程應用軟件系統(tǒng)如:AutoCAD、Xilinx FPGA開發(fā)系統(tǒng)等,由于銷量小、成本高,不得已仍然需要使用軟件加密技術。另外,對于某些敏感行業(yè)的應用軟件也必須實行軟件加密,對程序代碼進行保護。
本文引用地址:http://www.ex-cimer.com/article/173792.htm早期的軟件加密方法有:軟盤或硬盤加密、加密卡等,由于加密性能、兼容性能或使用不方便等方面的原因而被淘汰。目前廣為流行的是軟件狗硬件電路加密法,其中又以使用單片機的加密技術最為可靠。其硬件通常都帶有智能抗分析技術,不可復制,且加密方式靈活、工作可靠、運行速度快、使用方便,不失為軟件加密的一種優(yōu)選方法。
SmartLock軟件狗加密系統(tǒng)的硬件部分外形類似火柴盒,兩頭分別帶有一個IEEE-1284并行口的公頭和母頭,串接在并行口和打印機之間。軟件狗使用的是Atmel公司的89C2051單片機,芯片從微機并行口取電,通過并口與加密軟件進行通信,系統(tǒng)主要使用代碼移植技術實現(xiàn)軟件加密。
1 Smart Lock系統(tǒng)的硬件設計
通過研究微機打印口接口電路、IEEE-1284并口通信標準和89C2051型單片機特性,設計出SmartLock加密系統(tǒng)的硬件電路如圖1所示。有89C2051單片機、3個鍺二極管、1個12MHz晶振、2個30pF瓷片電容和1個電阻共8個元件。系統(tǒng)從并行口中共引出了11根端口線,其中有8根數(shù)據(jù)線D0~D7、1根狀態(tài)線(低電平有效 ,當打印機接收完一字節(jié)數(shù)據(jù)允許微機發(fā)送下一字節(jié)數(shù)據(jù)時,發(fā)給微機信號)、1根控制線(低電平有效,打印機自動換行信號)和地線GND。
微機的標準并口并不提供+5V電源,所以只有從驅動能力較強的數(shù)據(jù)口“借電”。依據(jù)IBM PC AT/XT設計標準,并行口數(shù)據(jù)位的高電平(4.5V)輸出電流為2.5mA(舊式的TTL型)或15mA(CMOS型),而89C2051單片機的典型工作電流為5.5mA/3V,工作頻率為12MHz。所以使用D4~D6三根數(shù)據(jù)線經(jīng)鍺二極管并在一起作為單片機電源(采用鍺管的原因是因為它的壓降較小,只有0.4V)。同時為減少軟件狗硬件的功耗,電路設計得極其簡潔,除了單片機,沒有其它有源器件。
單片機復位使用的是上電自動復位電路。因此微機對并行口供電幾百毫秒之后,單片機才進入正常工作狀態(tài)。
2 并口通信協(xié)議
軟件狗使用數(shù)據(jù)口的D0~D3及D7作為微機向單片機傳送數(shù)據(jù)的前向數(shù)據(jù)通道(一次送半字節(jié)數(shù)據(jù),用D7位標志高/低半字節(jié));并口控制/狀態(tài)信號中的和平時不常用,所以這里用來作為微機向單片機傳送數(shù)據(jù)時的握手信號。信號為高電平,則表示微機已準備好待傳送數(shù)據(jù),此協(xié)議中稱為DR(data ready)信號;信號為低電平,表示單片機已準備好接收數(shù)據(jù),此協(xié)議中稱為PR(peripheral ready)信號。
軟件狗從微機接收數(shù)據(jù)的時序如圖2所示。具體步驟是:
(1)微機中的加密程序將DR()控制線設置為0,然后在并口的D4~D6數(shù)據(jù)線上給一個負脈沖后再置恒1,使軟件狗復位啟動;
(2)加密程序延時300ms后,設置D7為0,表示傳送的是數(shù)據(jù)的低半字節(jié);
(3)加密程序將需要傳送的數(shù)據(jù)放到并口的D0~D3;
(4)加密程序在DR控制線上給出一個正脈沖,通知軟件狗數(shù)據(jù)已準備好;
(5)軟件狗收到DR信號后從D0~D3線上讀取數(shù)據(jù),同時,從D7位可以了解這半字節(jié)數(shù)據(jù)是低位還是高位。讀完數(shù)據(jù)后在PR()狀態(tài)線上給出負脈沖,通知微機數(shù)據(jù)已讀完,可以進行下一次傳送;
(6)加密程序收到PR信號后,即進行下一輪的數(shù)據(jù)傳送,直到最后所有數(shù)據(jù)傳送完畢或一定時間后仍沒有收到PR信號,則出錯退出。
評論