文福江,鄧琳
(齊齊哈爾大學 建筑與土木工程學院,黑龍江 齊齊哈爾 161006)
嵌入式系統產品的授權時間問題(即試用期時限),是嵌入式系統產品開發者面對的一個普遍問題.從理論的角度講,嵌入式系統的授權時間,可分為工廠模式授權和應用現場授權2種.工廠模式授權,在工廠批量生產時授權很容易實現,但應用現場授權往往受很多因素的制約和影響.概括起來,有幾種實現方式:(1)利用撥碼開關在出廠時或者現場進行設置;(2)重新下載 MCU程序,直接寫入授權時間;(3)利用嵌入式系統終端的鍵盤現場修改授權時間;(4)采用聯網方式批量進行授權的修改.前3種可以看作是單機修改授權時間模式,最后1種是聯網修改授權時間模式.在單機授權模式中,方式1采用的是地址編碼方法,由于是機械開關編碼,編碼方式固定,對一臺機器授權時間的修改操作尚可,對多個機器采用相同的操作,分別進行修改授權時間時,密匙編碼容易被識破.方式2由于直接寫入MCU授權時間,后期重新改變授權時間,只能繼續采用這種方式,靈活性與便捷性都很差[1-2].基于此,以STC單片機為例,重點討論方式3的設計與實現.
嵌入式系統結構見圖1.從圖1可以看出,整個系統由主機(上位機)和若干終端(下位機)構成.授權密匙的修改,實質就是現場修改使用授權的狀態,或關閉使用授權,或開放使用授權.根據圖1,授權密匙的修改可以采用 2種方式:(1)上位機根據終端地址 ID批量修改;(2)在單個終端上進行修改.2種方式的授權密匙從使用便利性的角度講,各有優勢和缺點.從成本構成權衡,如果終端傳感器數量較少,或者數據處理與控制較簡單,可以選擇單片機方式[3-4].

圖1 嵌入式系統結構
授權密匙修改狀態進入是指嵌入式系統終端在時鐘設置狀態,進入授權密匙修改的狀態.假定進入授權密匙修改狀態的前提是時鐘設置狀態,則與授權密匙有關的組數據變量格式為:YY-MM-DD(年-月-日),hh-mm-ss(時-分-秒).
1.2.1 正常顯示狀態 即設備運行時的狀態,包括時間與傳感器采集的即時數據.傳感器數據的顯示這里暫不討論,只討論與授權時間有關的內容.正常狀態下,終端顯示的日期、時間格式見圖2.
1.2.2 日期時間修改狀態 在正常顯示狀態,按設置鍵進入日期時間修改狀態,相應的日期或時間調整位會閃動,如調整年時的狀態見圖3.
1.2.3 授權時間修改狀態 在時間修改狀態下,可進入授權時間修改狀態.為防止設置時間時錯誤地進入授權時間修改狀態,系統進入該狀態必須滿足2個條件:(1)日期與時間的數據必須滿足密匙算法;(2)滿足條件后,光標必須移動到秒位置時,才能進入授權時間修改狀態(見圖4).

圖2 終端顯示的日期、時間格式

圖3 調整年時的狀態

圖4 授權時間修改狀態
授權時間的長度是與設置時的當前時間為基準計算的.授權時間的時間單位為 T,可以為月、周、日中的一種,討論以周為單位.授權時間的長度Lt=n×t,通常Lt是一個數組,例如:Lt={00,02,04,12,27,54,99},n為時間單位的倍數,即數組中的某一個元素的值.設置時通過鍵盤選擇數組元素.數值00代表無授權,99代表開放授權,其它值Lt等于數值n與T(周)的乘積.
調整過程流程見圖5.

圖5 授權時間修改流程
密匙生成的方法繁多,這里采用實用性好的對稱密匙生成方法[5-7].
設正常顯示的時間格式見表1.
逐位運算法就是將日期與時間數據,以一一對應的關系逐位進行算術或邏輯運算,獲得的結果作為密匙.假設密匙為345678,則將日期格式的(年-月-日)Y1Y0-M1M0-D1D0與時間格式的(時-分-秒)h1h0-m1m0-s1s0對應位求和,和值為S5S4S3S2S1S0=345678,光標位于秒位置就進入授權時間設置狀態.密匙生成方法見表2.

表1 日期時間格式

表2 逐位運算法生成密匙
正常顯示的時間格式見表3,其中年數據取最低2位.設密匙為MhMl=5678.
在設置時,只要將日期(年(低 2位)+月+日)數據的算術和設置等于56,時間數據(時+分+秒)的算術和設置等于78,光標停留在秒位置上,就進入授權時間設置圖4的狀態.
逐位運算法與求和法,在實際應用中效果都不錯.比較而言,求和法操作的靈活性更強,更具有隱蔽性,現場修改授權時間密匙不容易被識破[8-11].

表3 求和法生成密匙
2.3.1 密匙數據保存 密匙數據的存儲一般有2種,一種是保存在獨立的EEPROM芯片中,另一種是保存在MCU片內的EEPROM中.保存在獨立EEPROM芯片中有很多不足之處,該研究保存在片內EEPROM中.以STC15W408AS單片機為例,片內有5 K容量的EEPROM,以扇區為單位存儲數據,每個扇區512 B[12-13].以求和法生成的5678密匙為例,保存在EEPROM的最后一個扇區的最后2個字節.片內EEPROM的數據與獨立芯片的EEPROM一樣,可以讀出.如果密匙數據不加密直接保存,數據讀出就直接破解,也無法稱作密匙了,破譯的危險性比較高.因此,保存在EEPROM中的數據要進行加密處理.
2.3.2 密匙數據加密解密過程 設密匙為0x5678,加密采用移位倍加方式.加密過程見圖6,解密過程見圖7.

圖6 密匙加密過程

圖7 密匙解密過程
現場修改授權時間是嵌入式系統設計經常面對的問題.限于對已量化產品的保護,沒有把實物的2款產品圖片貼出.盡管實現的方式方法千差萬別,但對于單機而言,本文討論的方法具有很強的靈活性和保密性,具有一定的推廣價值.