新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SmartLock并口單片機(jī)軟件狗加密技術(shù)

SmartLock并口單片機(jī)軟件狗加密技術(shù)

作者: 時(shí)間:2009-04-09 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://m.butianyuan.cn/article/173792.htm

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

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

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

  通過研究微機(jī)打印口接口電路、IEEE-1284通信標(biāo)準(zhǔn)和89C2051型特性,設(shè)計(jì)出加密系統(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ì)得極其簡潔,除了單片機(jī),沒有其它有源器件。

  單片機(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í)不常用,所以這里用來作為微機(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í)間后仍沒有收到PR信號(hào),則出錯(cuò)退出。


上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉