嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

農(nóng)產(chǎn)品追溯是促進(jìn)生產(chǎn)信息透明化,提高農(nóng)產(chǎn)品質(zhì)量安全,增加農(nóng)產(chǎn)品市場(chǎng)競(jìng)爭(zhēng)力的重要措施。利用便攜式、移動(dòng)式設(shè)備進(jìn)行農(nóng)產(chǎn)品追溯給消費(fèi)者和監(jiān)管部門提供了便利,而基于嵌入式平臺(tái)的農(nóng)產(chǎn)品追溯碼編碼加密,是實(shí)現(xiàn)利用終端設(shè)備進(jìn)行農(nóng)產(chǎn)品可靠追溯的基礎(chǔ)。

綜合分析目前已有的農(nóng)產(chǎn)品追溯碼編碼實(shí)現(xiàn)和應(yīng)用,都是基于hitel處理器和微軟操作系統(tǒng)的桌面平臺(tái)來(lái)實(shí)施的,而且存在以下2個(gè)方面的不足:

第一,加密較弱甚至就沒有任何加密,很容易私自被篡改、偽造以及無(wú)法做到每個(gè)包裝追溯碼的唯一性;第二,利用這種方式,追溯碼標(biāo)識(shí)生成與貼標(biāo)是分離的2個(gè)階段,需要不同的工序來(lái)完成,效率低下、信息完整度不高。本文正是針對(duì)上述問(wèn)題,采用基于地理坐標(biāo)的農(nóng)產(chǎn)品追溯碼編碼,以AES(Advanced Encryption Standard)算法為基礎(chǔ)設(shè)計(jì)并實(shí)現(xiàn)嵌入式平臺(tái)下農(nóng)產(chǎn)品追溯碼加密算法,并將該算法應(yīng)用于便攜式溯源設(shè)備中。

一、追溯碼編碼設(shè)計(jì)

追溯碼是可追溯系統(tǒng)構(gòu)建的基礎(chǔ),追溯碼編碼除遵循商品條目編碼的基本原則之外,還要考慮追溯信息的全面性,也要盡量縮短追溯碼的長(zhǎng)度,這樣既是為了條碼打印的方便,也是為了在使用短信方式追溯查詢時(shí)盡量占用較少的字符空間,方便用戶輸入。

本研究中的農(nóng)產(chǎn)品追溯碼編碼采用課題組前期的研究成果一“基于地理坐標(biāo)和多重加密的農(nóng)產(chǎn)品追溯碼編碼”,該編碼由產(chǎn)地位置碼、產(chǎn)品碼、生產(chǎn)日期碼、認(rèn)證類型碼等26位數(shù)組成。其中產(chǎn)
地位置采用經(jīng)緯度地理坐標(biāo),并根據(jù)中國(guó)經(jīng)緯度坐標(biāo)的跨度特點(diǎn)將中國(guó)劃分為6大區(qū)域,通過(guò)編碼換算將13位的經(jīng)緯度地理坐標(biāo)位置碼轉(zhuǎn)換為10位的相對(duì)產(chǎn)地位置碼和1位位置標(biāo)識(shí)碼;分別對(duì)生產(chǎn)日期碼、產(chǎn)品碼進(jìn)行轉(zhuǎn)換,將6位的生產(chǎn)日期碼轉(zhuǎn)換為3位相對(duì)日期和1位時(shí)間標(biāo)識(shí)碼,變換后的產(chǎn)品碼為5位;將位置標(biāo)識(shí)碼、時(shí)間標(biāo)識(shí)碼和認(rèn)證類型碼三者進(jìn)行排列組合,根據(jù)不同數(shù)值得到2位的驗(yàn)證碼;這樣轉(zhuǎn)換后的26位編碼轉(zhuǎn)換為20位編碼,如圖1所示。

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

二、加密算法設(shè)計(jì)與嵌入式實(shí)現(xiàn)

采用上述基于地理坐標(biāo)的農(nóng)產(chǎn)品追溯碼編碼,通過(guò)壓縮轉(zhuǎn)換在一定程度上具有了加密功能,但不是真正意義上的加密,容易被探測(cè)到其中的編碼規(guī)則;而且該編碼是以批次作為追溯單元,即同一責(zé)任主體同一時(shí)間內(nèi)(同一天)的同一品種所有單元的追溯碼是相同的,沒有做到一個(gè)單元一個(gè)碼,即“一包(箱)一碼”。本文的加密算法不僅實(shí)現(xiàn)了“一包(箱)一碼”,而且對(duì)農(nóng)產(chǎn)品追溯碼進(jìn)行了基于AES加密算法的十進(jìn)制數(shù)字等長(zhǎng)加密,達(dá)到了防偽的目的。

1、加密算法設(shè)計(jì)

通過(guò)對(duì)AES加密算法分析可知,AES加密算法是針對(duì)二進(jìn)制數(shù)據(jù)設(shè)計(jì)的,無(wú)法滿足對(duì)十進(jìn)制數(shù)據(jù)加密的要求,而本研究中的追溯碼是由20位十進(jìn)制數(shù)字組成。在參考劉連浩等設(shè)計(jì)方法基礎(chǔ)上,對(duì)AES加密算法進(jìn)行改進(jìn),將其中的加密輪變換的4個(gè)步驟:S盒替換、行移位、列混合和輪密鑰加,設(shè)計(jì)為追溯碼狀態(tài)位替換、狀態(tài)矩陣行移位、狀態(tài)矩陣列混合和輪密鑰運(yùn)算控制4個(gè)步驟,以適應(yīng)十進(jìn)制數(shù)直接加密的要求。同時(shí)為增強(qiáng)加密強(qiáng)度,保證生成追溯碼的唯一性,使同一明文生成無(wú)規(guī)律的密文,實(shí)現(xiàn)“一次一密”防偽效果,采用動(dòng)態(tài)密鑰對(duì)追溯碼進(jìn)行混沌隨機(jī)加密。具體的加密流程,如圖2所示,其中Nr為變換輪數(shù)。加密算法如下:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

(1)追溯碼動(dòng)態(tài)密鑰生成

根據(jù)裝置初始密鑰Key、裝置設(shè)備號(hào)DeviceID、追溯碼加密次數(shù)Time 3個(gè)因數(shù),動(dòng)態(tài)產(chǎn)生每次加密的32位十進(jìn)制數(shù)動(dòng)態(tài)密鑰Dkey,動(dòng)態(tài)密鑰生成流程見圖3所示,其中Box[.]為步驟(2)中的追溯碼狀態(tài)位替換操作。動(dòng)態(tài)密鑰的引入使得加密強(qiáng)度更高,每次追溯碼生成用不同的動(dòng)態(tài)密鑰進(jìn)行加密。動(dòng)態(tài)密鑰隨機(jī)算法由Time控制,Time在二進(jìn)制數(shù)值上lbit的差別,其生成的動(dòng)態(tài)密鑰完全不同。

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

(2)追溯碼狀態(tài)位替換

追溯碼狀態(tài)位替換,是通過(guò)狀態(tài)位替換表,將原始追溯碼狀態(tài)矩陣,替換為一個(gè)新的狀態(tài)矩陣,如20位追溯碼:22881001632000100323的替換過(guò)程如圖4所示。每一輪的數(shù)字位置換中,能夠達(dá)到一半的十進(jìn)制位發(fā)生變化。

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

(3)追溯碼狀態(tài)矩陣行移位

這里追溯碼狀態(tài)矩陣是指經(jīng)過(guò)上一步驟替換后的狀態(tài)矩陣,其狀態(tài)位行移位規(guī)則:第一行不移動(dòng),第二行循環(huán)左移1位,第三行循環(huán)左移2位,第四行循環(huán)左移3位。追溯碼狀態(tài)矩陣行移位過(guò)程如圖5所示。

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

(4)追溯碼狀態(tài)矩陣列混合

追溯碼狀態(tài)矩陣列混合操作,是用一個(gè)可逆正整數(shù)矩陣左乘追溯碼狀態(tài)位矩陣,然后對(duì)10進(jìn)行取模運(yùn)算,將得到的結(jié)果放回原來(lái)的矩陣中。這里的可逆正整數(shù)矩陣采用的是劉連浩等設(shè)計(jì)的矩
陣M。式(1)為列混合操作的矩陣表示,式(2)為列混合逆操作矩陣表示。

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

 

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

 

(5)輪密鑰運(yùn)算控制

在AES加密算法中,輪密鑰加利用密鑰與狀態(tài)對(duì)應(yīng)的字節(jié)做異或運(yùn)算。但是對(duì)于十進(jìn)制數(shù)來(lái)說(shuō)異或運(yùn)算沒有可逆性。為了使追溯碼狀態(tài)位與輪密鑰混淆,并且具有可逆性,將AES加密算法中的二進(jìn)制異或,改成基于十進(jìn)制數(shù)字的輪密鑰運(yùn)算控制,根據(jù)每一輪的密鑰不同,分別進(jìn)行4種運(yùn)算中的一種。

入口條件由每一輪加密所有使用的密鑰各位之和對(duì)4取模來(lái)確定。每一輪運(yùn)算步驟簡(jiǎn)述如下:

1) 32位動(dòng)態(tài)密鑰求和,記為Sum;

2)入口參數(shù)Enter=Sum mod 4;

3)根據(jù)步驟(2)得到的結(jié)果,進(jìn)入不同的狀態(tài)位和輪密鑰加減運(yùn)算。

2、算法嵌入式優(yōu)化設(shè)計(jì)

當(dāng)將算法移植到嵌入式平臺(tái)上時(shí),需考慮兩方面的問(wèn)題:處理器存儲(chǔ)空間大小和算法運(yùn)行速度,在硬件資源滿足條件的情況下,對(duì)算法進(jìn)行優(yōu)化設(shè)計(jì)提高算法的運(yùn)算速度。

(1)追溯碼狀態(tài)位替換、行移位和列混合優(yōu)化設(shè)計(jì)

在追溯碼加密算法的實(shí)現(xiàn)過(guò)程中,狀態(tài)位替換和狀態(tài)矩陣行移位占用了大部分的運(yùn)算時(shí)間。通過(guò)對(duì)算法分析,可以將這2個(gè)步驟合并成一組T表進(jìn)行查詢來(lái)完成。具體過(guò)程如下:設(shè)輪變換的輸入用a表示,經(jīng)過(guò)狀態(tài)位替換的輸出用b表示,則:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

其中Nb為狀態(tài)矩陣的列數(shù),本研究中Nb=5。

又設(shè)狀態(tài)矩陣行移位的輸出用c表示,列混合的輸出用d表示,則:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

將式(3)代入式(4)中,并且和式(5)合并得到:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

上述的矩陣乘法可以轉(zhuǎn)化成4個(gè)列向量的線性組合

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

由式(7)可以看出,4個(gè)列向量可以分別定義成To、T1、T2和T3共4個(gè)T表格

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

這樣式(7)就可以改寫成為:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

每4個(gè)狀態(tài),經(jīng)過(guò)4次查表和4次異或,就可以完成4個(gè)狀態(tài)位替換與列混合操作,且每個(gè)T表都只有1O個(gè)數(shù)字條目。另外,根據(jù)算法設(shè)計(jì)中知最后一輪的輪函數(shù)沒有列混合操作,定義一個(gè)T4表

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

T4表同樣只有10個(gè)數(shù)字條目。則式(8)可改寫為式(9):

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

在解密時(shí)定義5個(gè)T-1表(T0-1、T1-1、T2-1、T3-1和T4-1),用等效解密算法,其實(shí)現(xiàn)方式與加密過(guò)程類似,是加密過(guò)程的逆過(guò)程。

(2)輪密鑰擴(kuò)展優(yōu)化設(shè)計(jì)

密鑰擴(kuò)展分為一次性密鑰擴(kuò)展和即時(shí)密鑰擴(kuò)展。一次性鑰擴(kuò)展是在加密解密開始之前生成所有輪密鑰,并將其存在內(nèi)存中;即時(shí)密鑰擴(kuò)展只保留一輪的密鑰一當(dāng)前輪密鑰,下一輪密鑰由當(dāng)前輪密鑰計(jì)算生成。與一次性密鑰擴(kuò)展相比,即時(shí)密鑰擴(kuò)展占用更少的存儲(chǔ)單元。在本設(shè)計(jì)中采用即時(shí)密鑰擴(kuò)展。

假如32位初始密鑰為k1k2k3.k30k31k32,將其排列成8x4的初始密鑰矩陣:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

令rko=[k1 k2 k3 k4],rki=[k5 k6 k7 k8],…,rk7= [k29 k30 k31 k32]。優(yōu)化設(shè)計(jì)的輪密鑰擴(kuò)展可由下面的轉(zhuǎn)換過(guò)程實(shí)現(xiàn):

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

其中Box[.]為追溯碼狀態(tài)位替換操作,Rcon為輪常量二維數(shù)組,Rcon[i]=(i+1,O,O,O)T。利用轉(zhuǎn)換公式,根據(jù)初始密鑰rko、rk1、…、rk7推算出第一輪加密密鑰rk01、rk11、…、rk71;第二輪密鑰可由第一輪密鑰按照同樣的方法生成。

3、加密算法實(shí)現(xiàn)

加密算法實(shí)現(xiàn)采用LPC1766處理器作為硬件平臺(tái),該處理器采用的是Cortex-m3內(nèi)核,最高主頻為100 MHz,存儲(chǔ)空間包括64 kB的RAM和256 kB的Flash;利用Keil uVision3軟件開發(fā)平臺(tái)實(shí)現(xiàn)追溯碼加密算法,流程如圖6所示,其中Nr為加密輪數(shù)。具體步驟為:

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

1)利用替換表和列混合可逆矩陣數(shù)據(jù)構(gòu)建5個(gè)查詢表,并將表格數(shù)據(jù)存儲(chǔ)于MX25L6405D數(shù)據(jù)存儲(chǔ)器中;

2)獲取初始密鑰,結(jié)合裝置設(shè)備號(hào)和加密次數(shù),生成動(dòng)態(tài)密鑰;

3)根據(jù)動(dòng)態(tài)密鑰構(gòu)建第一輪輪密鑰并進(jìn)行存儲(chǔ),后續(xù)加密的輪密鑰根據(jù)前一輪輪密鑰實(shí)時(shí)計(jì)算;

4)讀取編碼產(chǎn)生的20位追溯碼,并且將其矩陣化;

5)開始進(jìn)行Nr-1輪變換,通過(guò)查表完成輪變換中的替換、移位和列混合操作,然后將查表結(jié)果與輪密鑰進(jìn)行運(yùn)算;

6)進(jìn)行最后一輪變換,通過(guò)查乃表,完成替換、移位操作,將查表結(jié)果與輪密鑰進(jìn)行運(yùn)算生成一次一密的最終追溯碼。

在Keil uVision3開發(fā)環(huán)境下進(jìn)行了測(cè)試,結(jié)果表明算法占用空間情況為:RO-data為248字節(jié),RW-data為272字節(jié),ZI-data為2524字節(jié);在處理器主頻為75 MHz的情況下,算法耗時(shí)為7.85 ms。

不僅每次生成的追溯碼都不同,即追溯碼的唯一性,而且優(yōu)化設(shè)計(jì)的算法在滿足上述存儲(chǔ)空間的嵌入式處理器平臺(tái)上都可以實(shí)現(xiàn)。

三、應(yīng)用示例

將本文的農(nóng)產(chǎn)品追溯碼加密算法移植到自主開發(fā)的混合條碼追溯監(jiān)管標(biāo)簽打印溯源設(shè)備中,實(shí)現(xiàn)了追溯碼的加密生成和標(biāo)簽的打印。圖7a為混合條碼追溯標(biāo)簽打印溯源設(shè)備,該設(shè)備將稱質(zhì)量利標(biāo)識(shí)2個(gè)環(huán)節(jié)合二為一,同時(shí)完成質(zhì)量感知和貼標(biāo)2個(gè)過(guò)程,大大提高了效率,而且從打印出來(lái)的標(biāo)簽放大圖中可以看出連續(xù)打印同一品種(菜心)的2張標(biāo)識(shí)(貼于不同的包裝上)的追溯碼是不同的,從標(biāo)識(shí)上看不出追溯碼代表的任何含義,實(shí)現(xiàn)了追溯碼的唯一性和防偽性;圖7b為廣州市農(nóng)產(chǎn)品質(zhì)量安全追溯平臺(tái),該平臺(tái)有針對(duì)消費(fèi)者追溯的入口,消費(fèi)者購(gòu)買到帶有上述生成的產(chǎn)品追溯標(biāo)簽(如圖7a中的標(biāo)簽)的農(nóng)產(chǎn)品,通過(guò)在平臺(tái)上掃描或者輸入產(chǎn)品追溯碼,點(diǎn)擊確定后,系統(tǒng)將顯示生產(chǎn)過(guò)程、流通過(guò)程等詳細(xì)的追溯屬性信息。

嵌入式農(nóng)產(chǎn)品追溯碼加密算法設(shè)計(jì)與實(shí)現(xiàn)

四、結(jié)論

1)本文針對(duì)嵌入式平臺(tái),優(yōu)化設(shè)計(jì)并實(shí)現(xiàn)了一種追溯碼加密生成算法。利用AES加密算法高安全性、高效率和靈活性等特點(diǎn),對(duì)其進(jìn)行改進(jìn)以實(shí)現(xiàn)十進(jìn)制數(shù)字等長(zhǎng)加密,并且針對(duì)嵌入式處理器有限的存儲(chǔ)空間和運(yùn)算速度,對(duì)算法的關(guān)鍵步驟進(jìn)行優(yōu)化設(shè)計(jì)。

2)利用LPC1766嵌入式處理器和keil uVision3軟件開發(fā)平臺(tái),對(duì)算法進(jìn)行了實(shí)現(xiàn)和結(jié)果測(cè)試。

3)最后給出了加密算法在混合條碼打印設(shè)備及追溯系統(tǒng)中的應(yīng)用,驗(yàn)證了該加密算法在嵌入式系統(tǒng)上實(shí)現(xiàn)的可行性和安全性,加密算法的應(yīng)用為利用終端設(shè)備進(jìn)行安全追溯奠定了基礎(chǔ)。

小知識(shí)之AES加密算法

密碼學(xué)中的高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。