文福江,鄧琳
(齊齊哈爾大學(xué) 建筑與土木工程學(xué)院,黑龍江 齊齊哈爾 161006)
嵌入式系統(tǒng)產(chǎn)品的授權(quán)時(shí)間問題(即試用期時(shí)限),是嵌入式系統(tǒng)產(chǎn)品開發(fā)者面對(duì)的一個(gè)普遍問題.從理論的角度講,嵌入式系統(tǒng)的授權(quán)時(shí)間,可分為工廠模式授權(quán)和應(yīng)用現(xiàn)場(chǎng)授權(quán)2種.工廠模式授權(quán),在工廠批量生產(chǎn)時(shí)授權(quán)很容易實(shí)現(xiàn),但應(yīng)用現(xiàn)場(chǎng)授權(quán)往往受很多因素的制約和影響.概括起來,有幾種實(shí)現(xiàn)方式:(1)利用撥碼開關(guān)在出廠時(shí)或者現(xiàn)場(chǎng)進(jìn)行設(shè)置;(2)重新下載 MCU程序,直接寫入授權(quán)時(shí)間;(3)利用嵌入式系統(tǒng)終端的鍵盤現(xiàn)場(chǎng)修改授權(quán)時(shí)間;(4)采用聯(lián)網(wǎng)方式批量進(jìn)行授權(quán)的修改.前3種可以看作是單機(jī)修改授權(quán)時(shí)間模式,最后1種是聯(lián)網(wǎng)修改授權(quán)時(shí)間模式.在單機(jī)授權(quán)模式中,方式1采用的是地址編碼方法,由于是機(jī)械開關(guān)編碼,編碼方式固定,對(duì)一臺(tái)機(jī)器授權(quán)時(shí)間的修改操作尚可,對(duì)多個(gè)機(jī)器采用相同的操作,分別進(jìn)行修改授權(quán)時(shí)間時(shí),密匙編碼容易被識(shí)破.方式2由于直接寫入MCU授權(quán)時(shí)間,后期重新改變授權(quán)時(shí)間,只能繼續(xù)采用這種方式,靈活性與便捷性都很差[1-2].基于此,以STC單片機(jī)為例,重點(diǎn)討論方式3的設(shè)計(jì)與實(shí)現(xiàn).
嵌入式系統(tǒng)結(jié)構(gòu)見圖1.從圖1可以看出,整個(gè)系統(tǒng)由主機(jī)(上位機(jī))和若干終端(下位機(jī))構(gòu)成.授權(quán)密匙的修改,實(shí)質(zhì)就是現(xiàn)場(chǎng)修改使用授權(quán)的狀態(tài),或關(guān)閉使用授權(quán),或開放使用授權(quán).根據(jù)圖1,授權(quán)密匙的修改可以采用 2種方式:(1)上位機(jī)根據(jù)終端地址 ID批量修改;(2)在單個(gè)終端上進(jìn)行修改.2種方式的授權(quán)密匙從使用便利性的角度講,各有優(yōu)勢(shì)和缺點(diǎn).從成本構(gòu)成權(quán)衡,如果終端傳感器數(shù)量較少,或者數(shù)據(jù)處理與控制較簡(jiǎn)單,可以選擇單片機(jī)方式[3-4].
圖1 嵌入式系統(tǒng)結(jié)構(gòu)
授權(quán)密匙修改狀態(tài)進(jìn)入是指嵌入式系統(tǒng)終端在時(shí)鐘設(shè)置狀態(tài),進(jìn)入授權(quán)密匙修改的狀態(tài).假定進(jìn)入授權(quán)密匙修改狀態(tài)的前提是時(shí)鐘設(shè)置狀態(tài),則與授權(quán)密匙有關(guān)的組數(shù)據(jù)變量格式為:YY-MM-DD(年-月-日),hh-mm-ss(時(shí)-分-秒).
1.2.1 正常顯示狀態(tài) 即設(shè)備運(yùn)行時(shí)的狀態(tài),包括時(shí)間與傳感器采集的即時(shí)數(shù)據(jù).傳感器數(shù)據(jù)的顯示這里暫不討論,只討論與授權(quán)時(shí)間有關(guān)的內(nèi)容.正常狀態(tài)下,終端顯示的日期、時(shí)間格式見圖2.
1.2.2 日期時(shí)間修改狀態(tài) 在正常顯示狀態(tài),按設(shè)置鍵進(jìn)入日期時(shí)間修改狀態(tài),相應(yīng)的日期或時(shí)間調(diào)整位會(huì)閃動(dòng),如調(diào)整年時(shí)的狀態(tài)見圖3.
1.2.3 授權(quán)時(shí)間修改狀態(tài) 在時(shí)間修改狀態(tài)下,可進(jìn)入授權(quán)時(shí)間修改狀態(tài).為防止設(shè)置時(shí)間時(shí)錯(cuò)誤地進(jìn)入授權(quán)時(shí)間修改狀態(tài),系統(tǒng)進(jìn)入該狀態(tài)必須滿足2個(gè)條件:(1)日期與時(shí)間的數(shù)據(jù)必須滿足密匙算法;(2)滿足條件后,光標(biāo)必須移動(dòng)到秒位置時(shí),才能進(jìn)入授權(quán)時(shí)間修改狀態(tài)(見圖4).
圖2 終端顯示的日期、時(shí)間格式
圖3 調(diào)整年時(shí)的狀態(tài)
圖4 授權(quán)時(shí)間修改狀態(tài)
授權(quán)時(shí)間的長(zhǎng)度是與設(shè)置時(shí)的當(dāng)前時(shí)間為基準(zhǔn)計(jì)算的.授權(quán)時(shí)間的時(shí)間單位為 T,可以為月、周、日中的一種,討論以周為單位.授權(quán)時(shí)間的長(zhǎng)度Lt=n×t,通常Lt是一個(gè)數(shù)組,例如:Lt={00,02,04,12,27,54,99},n為時(shí)間單位的倍數(shù),即數(shù)組中的某一個(gè)元素的值.設(shè)置時(shí)通過鍵盤選擇數(shù)組元素.?dāng)?shù)值00代表無授權(quán),99代表開放授權(quán),其它值Lt等于數(shù)值n與T(周)的乘積.
調(diào)整過程流程見圖5.
圖5 授權(quán)時(shí)間修改流程
密匙生成的方法繁多,這里采用實(shí)用性好的對(duì)稱密匙生成方法[5-7].
設(shè)正常顯示的時(shí)間格式見表1.
逐位運(yùn)算法就是將日期與時(shí)間數(shù)據(jù),以一一對(duì)應(yīng)的關(guān)系逐位進(jìn)行算術(shù)或邏輯運(yùn)算,獲得的結(jié)果作為密匙.假設(shè)密匙為345678,則將日期格式的(年-月-日)Y1Y0-M1M0-D1D0與時(shí)間格式的(時(shí)-分-秒)h1h0-m1m0-s1s0對(duì)應(yīng)位求和,和值為S5S4S3S2S1S0=345678,光標(biāo)位于秒位置就進(jìn)入授權(quán)時(shí)間設(shè)置狀態(tài).密匙生成方法見表2.
表1 日期時(shí)間格式
表2 逐位運(yùn)算法生成密匙
正常顯示的時(shí)間格式見表3,其中年數(shù)據(jù)取最低2位.設(shè)密匙為MhMl=5678.
在設(shè)置時(shí),只要將日期(年(低 2位)+月+日)數(shù)據(jù)的算術(shù)和設(shè)置等于56,時(shí)間數(shù)據(jù)(時(shí)+分+秒)的算術(shù)和設(shè)置等于78,光標(biāo)停留在秒位置上,就進(jìn)入授權(quán)時(shí)間設(shè)置圖4的狀態(tài).
逐位運(yùn)算法與求和法,在實(shí)際應(yīng)用中效果都不錯(cuò).比較而言,求和法操作的靈活性更強(qiáng),更具有隱蔽性,現(xiàn)場(chǎng)修改授權(quán)時(shí)間密匙不容易被識(shí)破[8-11].
表3 求和法生成密匙
2.3.1 密匙數(shù)據(jù)保存 密匙數(shù)據(jù)的存儲(chǔ)一般有2種,一種是保存在獨(dú)立的EEPROM芯片中,另一種是保存在MCU片內(nèi)的EEPROM中.保存在獨(dú)立EEPROM芯片中有很多不足之處,該研究保存在片內(nèi)EEPROM中.以STC15W408AS單片機(jī)為例,片內(nèi)有5 K容量的EEPROM,以扇區(qū)為單位存儲(chǔ)數(shù)據(jù),每個(gè)扇區(qū)512 B[12-13].以求和法生成的5678密匙為例,保存在EEPROM的最后一個(gè)扇區(qū)的最后2個(gè)字節(jié).片內(nèi)EEPROM的數(shù)據(jù)與獨(dú)立芯片的EEPROM一樣,可以讀出.如果密匙數(shù)據(jù)不加密直接保存,數(shù)據(jù)讀出就直接破解,也無法稱作密匙了,破譯的危險(xiǎn)性比較高.因此,保存在EEPROM中的數(shù)據(jù)要進(jìn)行加密處理.
2.3.2 密匙數(shù)據(jù)加密解密過程 設(shè)密匙為0x5678,加密采用移位倍加方式.加密過程見圖6,解密過程見圖7.
圖6 密匙加密過程
圖7 密匙解密過程
現(xiàn)場(chǎng)修改授權(quán)時(shí)間是嵌入式系統(tǒng)設(shè)計(jì)經(jīng)常面對(duì)的問題.限于對(duì)已量化產(chǎn)品的保護(hù),沒有把實(shí)物的2款產(chǎn)品圖片貼出.盡管實(shí)現(xiàn)的方式方法千差萬別,但對(duì)于單機(jī)而言,本文討論的方法具有很強(qiáng)的靈活性和保密性,具有一定的推廣價(jià)值.