在某些特殊設(shè)備中,如智能電表等產(chǎn)品,由于使用方并非產(chǎn)品設(shè)計(jì)方,而使用方又擔(dān)心設(shè)計(jì)方將程序外泄,帶來(lái)使用的安全問(wèn)題,便要求設(shè)計(jì)方在單片機(jī)存儲(chǔ)程序時(shí)可自動(dòng)形成帶有一定特征和加密特性的軟件標(biāo)識(shí),以達(dá)到使用方可以溯源程序的目的。采用對(duì)軟件代碼計(jì)算,并形成校驗(yàn)碼的方式,是單片機(jī)程序存儲(chǔ)中的軟件標(biāo)識(shí)的一種良好設(shè)計(jì)方式。
1 引言
目前,電子設(shè)備、智能儀表等器件實(shí)現(xiàn)一些功能通常需要安裝對(duì)應(yīng)的應(yīng)用軟件。為了便于管理,需要對(duì)應(yīng)用軟件進(jìn)行軟件標(biāo)識(shí),特別是像電能表這類(lèi)儀表需要執(zhí)行法制計(jì)量機(jī)構(gòu)頒布的相關(guān)標(biāo)準(zhǔn),更加需要對(duì)安裝于其中的軟件進(jìn)行軟件標(biāo)識(shí),以實(shí)現(xiàn)有效管理[1,2]。
現(xiàn)有技術(shù)中,軟件標(biāo)識(shí)一般是由微處理器軟件生成的,用戶(hù)可更改軟件標(biāo)識(shí),也存在軟件更改或更新而未更改軟件標(biāo)識(shí)的情形,不利于器件的管理,存在數(shù)據(jù)泄露的風(fēng)險(xiǎn)[3,4]。
2 設(shè)計(jì)思路
在單片機(jī)生成方法為存儲(chǔ)在存儲(chǔ)介質(zhì)中的軟件代碼生成軟件標(biāo)識(shí),這需要一個(gè)前提,即存儲(chǔ)介質(zhì)包括至少一個(gè)第一存儲(chǔ)單元、至少一個(gè)第二存儲(chǔ)單元、第三存儲(chǔ)單元。第一存儲(chǔ)單元用于存儲(chǔ)軟件代碼,第二存儲(chǔ)單元用于存儲(chǔ)多項(xiàng)式。其中,每個(gè)第二存儲(chǔ)單元中存儲(chǔ)的多項(xiàng)式是不同的。
2.1 實(shí)施方法一
如圖 1 所示軟件標(biāo)識(shí)生成方法,包括以下步驟。
步驟一,設(shè)置第二存儲(chǔ)單元與第一存儲(chǔ)單元的對(duì)應(yīng)關(guān)系。
步驟二,對(duì)軟件代碼進(jìn)行計(jì)算以生成校驗(yàn)碼。其中,不同的軟件代碼生成不同的校驗(yàn)碼本實(shí)施例中,步驟二還包括:(1)從第一存儲(chǔ)單元中獲取軟件代碼,從對(duì)應(yīng)的第二存儲(chǔ)單元中獲取多項(xiàng)式。(2)根據(jù)多項(xiàng)式對(duì)軟件代碼進(jìn)行計(jì)算,生成校驗(yàn)碼。
具體,當(dāng)下載軟件代碼時(shí),將軟件代碼依次寫(xiě)入第一存儲(chǔ)單元中,每將一個(gè)第一存儲(chǔ)單元寫(xiě)滿(mǎn)則從該第一存儲(chǔ)單元中獲取軟件代碼,從對(duì)應(yīng)的第二存儲(chǔ)單元中獲取多項(xiàng)式,根據(jù)多項(xiàng)式對(duì)軟件代碼進(jìn)行計(jì)算。
以下通過(guò)一個(gè)具體實(shí)例說(shuō)明根據(jù)多項(xiàng)式對(duì)軟件代碼進(jìn)行計(jì)算的過(guò)程:例如,一個(gè)第一存儲(chǔ)單元中存儲(chǔ)的軟件代碼為 1010。與該第一存儲(chǔ)單元對(duì)應(yīng)的第二存儲(chǔ)單元中存儲(chǔ)的多項(xiàng)式為:H(x)=x3+x+1。
首先,根據(jù)變量的指數(shù),將H(x)=x3+x+1轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制數(shù) 1011;由于多項(xiàng)式有4位,則把軟件代碼左移 3(4-1)位,得到 1010000。
其次,用多項(xiàng)式的二進(jìn)制數(shù)對(duì)左移 3 位后的軟件代碼進(jìn)行模2除,得到余位 011,即為校驗(yàn)碼。
由于每個(gè)第一存儲(chǔ)單元均會(huì)生成一個(gè)校驗(yàn)碼,軟件代碼存儲(chǔ)于幾個(gè)第一存儲(chǔ)單元中,即可得到幾個(gè)校驗(yàn)碼。需要說(shuō)明的是,校驗(yàn)碼的位數(shù)可根據(jù)實(shí)際需要自行設(shè)置,也即通過(guò)設(shè)置多項(xiàng)式的最高次冪實(shí)現(xiàn)。
步驟三,根據(jù)校驗(yàn)碼生成軟件標(biāo)識(shí)。若一段軟件代碼共有 i 個(gè) 16 Bit 的校驗(yàn)碼,生成軟件標(biāo)識(shí)具體可以是:將 i 個(gè)校驗(yàn)碼進(jìn)行分組后先進(jìn)行同或運(yùn)算,產(chǎn)生 64 Bit 數(shù)據(jù),將這 64 Bit 數(shù)據(jù)與 Flash 的 Key 進(jìn)行異或運(yùn)算生成軟件標(biāo)識(shí)。
步驟四,將校驗(yàn)碼存儲(chǔ)于第三存儲(chǔ)單元中。本實(shí)例中,根據(jù)不同的軟件代碼生成不同的校驗(yàn)碼,進(jìn)而生成不同的軟件標(biāo)識(shí),也即只要軟件代碼不同,軟件標(biāo)識(shí)必不相同。當(dāng)器件中的應(yīng)用軟件被更改、更新,相應(yīng)的軟件標(biāo)識(shí)也會(huì)更改,從而能快速識(shí)別器件的應(yīng)用軟件是否符合用戶(hù)要求,實(shí)現(xiàn)器件的安全管理。
2.2 實(shí)施方法二
在這種實(shí)施方法中,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)實(shí)施例一所提供的軟件標(biāo)識(shí)生成方法。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)為 Flash 存儲(chǔ)器。
Flash 存儲(chǔ)器的程序存儲(chǔ)區(qū)一般由 M 個(gè)存儲(chǔ)塊(也即第一存儲(chǔ)單元)組成,每一存儲(chǔ)塊分若干個(gè)頁(yè)。程序存儲(chǔ)區(qū)只支持片擦除,不支持塊擦除和頁(yè)擦除。Flash 存儲(chǔ)器的 NVR 區(qū)的 NVR1(也即第二存儲(chǔ)單元)存有一定的長(zhǎng)度的數(shù)據(jù)碼 K(多項(xiàng)式的二進(jìn)制數(shù)),數(shù)據(jù)碼 K 中的第 n 個(gè) 16 Bit 數(shù)據(jù) Kn 與 M個(gè)數(shù)據(jù)塊中的第 n 個(gè)塊 Mn 對(duì)應(yīng),在寫(xiě) Flash 每個(gè)存儲(chǔ)塊時(shí),F(xiàn)lash 控制器根據(jù)對(duì)應(yīng)關(guān)系選擇相應(yīng)的多項(xiàng)式計(jì)算校驗(yàn)碼。
其中,NVR1 對(duì)用戶(hù)不支持讀寫(xiě)功能。寫(xiě)完一個(gè)存儲(chǔ)塊,則計(jì)算出一個(gè) 16 Bit 的校驗(yàn)碼 Cn,并將此校驗(yàn)碼 Cn 存儲(chǔ)在 NVR 區(qū)的 NVR2(也即第三存儲(chǔ)單元)中。NVR2 對(duì)用戶(hù)有只讀功能。
下載程序時(shí)所需要的存儲(chǔ)塊都寫(xiě)完后,共有 M 個(gè)16 Bit 的校驗(yàn)碼。再將這些校驗(yàn)碼進(jìn)行分組后先進(jìn)行同或運(yùn)算,產(chǎn)生 64 Bit 數(shù)據(jù),將這 64 Bit 數(shù)據(jù)與Flash 的 Key 進(jìn)行異或運(yùn)算生成軟件標(biāo)識(shí)。并將此軟件標(biāo)識(shí)的 64 Bit 數(shù)據(jù)存儲(chǔ)到 NVR2 中的固定位置。
使用這種方法的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)應(yīng)用程式,只要 Flash 存儲(chǔ)器中的應(yīng)用軟件被更改、更新,相應(yīng)的軟件標(biāo)識(shí)也會(huì)更改,從而能快速識(shí)別 Flash 存儲(chǔ)器的應(yīng)用軟件是否符合用戶(hù)要求,實(shí)現(xiàn)器件的安全管理
2.3 實(shí)施方法三
在這種實(shí)施方法中,提供一種單片機(jī),如圖 2 所示,單片機(jī)包括:計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、控制單元和 TR 接口。其中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)為實(shí)施例 2 所提供的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
控制單元分別與計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和 TR 接口電連接??刂茊卧糜谠诮邮盏阶x取指令時(shí)從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中獲取軟件標(biāo)識(shí),并通過(guò) TR 接口向外輸出軟件標(biāo)識(shí)。其中讀取指令由外設(shè)設(shè)備生成并發(fā)送至單片機(jī)。本實(shí)施例中,不需要單片機(jī)干預(yù),外設(shè)設(shè)備即可讀取軟件標(biāo)識(shí),避免單片機(jī)對(duì)軟件標(biāo)識(shí)進(jìn)行處理的可能性,便于法律監(jiān)督機(jī)構(gòu)管理。
在這種實(shí)施方法中,可根據(jù)實(shí)際需求,還可在單片機(jī)中設(shè)置并串轉(zhuǎn)換電路??刂茊卧ㄟ^(guò)并串轉(zhuǎn)換電路與 TR 接口電連接。并串轉(zhuǎn)換電路用于將軟件標(biāo)識(shí)轉(zhuǎn)換成串行的 Bit 數(shù)據(jù)流。從而,經(jīng)過(guò)并串轉(zhuǎn)換的軟件標(biāo)識(shí)可有紅外或 RS485 通信接口輸出至外設(shè)設(shè)備。
3 結(jié)語(yǔ)
根據(jù)不同的軟件代碼生成不同的校驗(yàn)碼,進(jìn)而生成不同的軟件標(biāo)識(shí),也即只要軟件代碼不同,軟件標(biāo)識(shí)必不相同。當(dāng)器件中的應(yīng)用軟件被更改、更新,相應(yīng)的軟件標(biāo)識(shí)也會(huì)更改,從而能快速識(shí)別器件的應(yīng)用軟件是否符合用戶(hù)要求,實(shí)現(xiàn)器件的安全管理。
-
單片機(jī)
+關(guān)注
關(guān)注
6026文章
44458瀏覽量
631092 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4180瀏覽量
85493
原文標(biāo)題:?jiǎn)纹瑱C(jī)程序存儲(chǔ)中的軟件標(biāo)識(shí)研究
文章出處:【微信號(hào):appic-cn,微信公眾號(hào):集成電路應(yīng)用雜志】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論