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