农产品追溯是促进生产信息透明化,提高农产品质量安全,增加农产品市场竞争力的重要措施。利用便携式、移动式设备进行农产品追溯给消费者和监管部门提供了便利,而基于嵌入式平台的农产品追溯码编码加密,是实现利用终端设备进行农产品可靠追溯的基础。

综合分析目前已有的农产品追溯码编码实现和应用,都是基于hitel处理器和微软操作系统的桌面平台来实施的,而且存在以下2个方面的不足:

第一,加密较弱甚至就没有任何加密,很容易私自被篡改、伪造以及无法做到每个包装追溯码的唯一性;第二,利用这种方式,追溯码标识生成与贴标是分离的2个阶段,需要不同的工序来完成,效率低下、信息完整度不高。本文正是针对上述问题,采用基于地理坐标的农产品追溯码编码,以AES(Advanced Encryption Standard)算法为基础设计并实现嵌入式平台下农产品追溯码加密算法,并将该算法应用于便携式溯源设备中。

一、追溯码编码设计

追溯码是可追溯系统构建的基础,追溯码编码除遵循商品条目编码的基本原则之外,还要考虑追溯信息的全面性,也要尽量缩短追溯码的长度,这样既是为了条码打印的方便,也是为了在使用短信方式追溯查询时尽量占用较少的字符空间,方便用户输入。

本研究中的农产品追溯码编码采用课题组前期的研究成果一“基于地理坐标和多重加密的农产品追溯码编码”,该编码由产地位置码、产品码、生产日期码、认证类型码等26位数组成。其中产
地位置采用经纬度地理坐标,并根据中国经纬度坐标的跨度特点将中国划分为6大区域,通过编码换算将13位的经纬度地理坐标位置码转换为10位的相对产地位置码和1位位置标识码;分别对生产日期码、产品码进行转换,将6位的生产日期码转换为3位相对日期和1位时间标识码,变换后的产品码为5位;将位置标识码、时间标识码和认证类型码三者进行排列组合,根据不同数值得到2位的验证码;这样转换后的26位编码转换为20位编码,如图1所示。

嵌入式农产品追溯码加密算法设计与实现

二、加密算法设计与嵌入式实现

采用上述基于地理坐标的农产品追溯码编码,通过压缩转换在一定程度上具有了加密功能,但不是真正意义上的加密,容易被探测到其中的编码规则;而且该编码是以批次作为追溯单元,即同一责任主体同一时间内(同一天)的同一品种所有单元的追溯码是相同的,没有做到一个单元一个码,即“一包(箱)一码”。本文的加密算法不仅实现了“一包(箱)一码”,而且对农产品追溯码进行了基于AES加密算法的十进制数字等长加密,达到了防伪的目的。

1、加密算法设计

通过对AES加密算法分析可知,AES加密算法是针对二进制数据设计的,无法满足对十进制数据加密的要求,而本研究中的追溯码是由20位十进制数字组成。在参考刘连浩等设计方法基础上,对AES加密算法进行改进,将其中的加密轮变换的4个步骤:S盒替换、行移位、列混合和轮密钥加,设计为追溯码状态位替换、状态矩阵行移位、状态矩阵列混合和轮密钥运算控制4个步骤,以适应十进制数直接加密的要求。同时为增强加密强度,保证生成追溯码的唯一性,使同一明文生成无规律的密文,实现“一次一密”防伪效果,采用动态密钥对追溯码进行混沌随机加密。具体的加密流程,如图2所示,其中Nr为变换轮数。加密算法如下:

嵌入式农产品追溯码加密算法设计与实现

(1)追溯码动态密钥生成

根据装置初始密钥Key、装置设备号DeviceID、追溯码加密次数Time 3个因数,动态产生每次加密的32位十进制数动态密钥Dkey,动态密钥生成流程见图3所示,其中Box[.]为步骤(2)中的追溯码状态位替换操作。动态密钥的引入使得加密强度更高,每次追溯码生成用不同的动态密钥进行加密。动态密钥随机算法由Time控制,Time在二进制数值上lbit的差别,其生成的动态密钥完全不同。

嵌入式农产品追溯码加密算法设计与实现

(2)追溯码状态位替换

追溯码状态位替换,是通过状态位替换表,将原始追溯码状态矩阵,替换为一个新的状态矩阵,如20位追溯码:22881001632000100323的替换过程如图4所示。每一轮的数字位置换中,能够达到一半的十进制位发生变化。

嵌入式农产品追溯码加密算法设计与实现

(3)追溯码状态矩阵行移位

这里追溯码状态矩阵是指经过上一步骤替换后的状态矩阵,其状态位行移位规则:第一行不移动,第二行循环左移1位,第三行循环左移2位,第四行循环左移3位。追溯码状态矩阵行移位过程如图5所示。

嵌入式农产品追溯码加密算法设计与实现

(4)追溯码状态矩阵列混合

追溯码状态矩阵列混合操作,是用一个可逆正整数矩阵左乘追溯码状态位矩阵,然后对10进行取模运算,将得到的结果放回原来的矩阵中。这里的可逆正整数矩阵采用的是刘连浩等设计的矩
阵M。式(1)为列混合操作的矩阵表示,式(2)为列混合逆操作矩阵表示。

嵌入式农产品追溯码加密算法设计与实现

 

嵌入式农产品追溯码加密算法设计与实现

 

(5)轮密钥运算控制

在AES加密算法中,轮密钥加利用密钥与状态对应的字节做异或运算。但是对于十进制数来说异或运算没有可逆性。为了使追溯码状态位与轮密钥混淆,并且具有可逆性,将AES加密算法中的二进制异或,改成基于十进制数字的轮密钥运算控制,根据每一轮的密钥不同,分别进行4种运算中的一种。

入口条件由每一轮加密所有使用的密钥各位之和对4取模来确定。每一轮运算步骤简述如下:

1) 32位动态密钥求和,记为Sum;

2)入口参数Enter=Sum mod 4;

3)根据步骤(2)得到的结果,进入不同的状态位和轮密钥加减运算。

2、算法嵌入式优化设计

当将算法移植到嵌入式平台上时,需考虑两方面的问题:处理器存储空间大小和算法运行速度,在硬件资源满足条件的情况下,对算法进行优化设计提高算法的运算速度。

(1)追溯码状态位替换、行移位和列混合优化设计

在追溯码加密算法的实现过程中,状态位替换和状态矩阵行移位占用了大部分的运算时间。通过对算法分析,可以将这2个步骤合并成一组T表进行查询来完成。具体过程如下:设轮变换的输入用a表示,经过状态位替换的输出用b表示,则:

嵌入式农产品追溯码加密算法设计与实现

其中Nb为状态矩阵的列数,本研究中Nb=5。

又设状态矩阵行移位的输出用c表示,列混合的输出用d表示,则:

嵌入式农产品追溯码加密算法设计与实现

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

嵌入式农产品追溯码加密算法设计与实现

上述的矩阵乘法可以转化成4个列向量的线性组合

嵌入式农产品追溯码加密算法设计与实现

由式(7)可以看出,4个列向量可以分别定义成To、T1、T2和T3共4个T表格

嵌入式农产品追溯码加密算法设计与实现

这样式(7)就可以改写成为:

嵌入式农产品追溯码加密算法设计与实现

每4个状态,经过4次查表和4次异或,就可以完成4个状态位替换与列混合操作,且每个T表都只有1O个数字条目。另外,根据算法设计中知最后一轮的轮函数没有列混合操作,定义一个T4表

嵌入式农产品追溯码加密算法设计与实现

T4表同样只有10个数字条目。则式(8)可改写为式(9):

嵌入式农产品追溯码加密算法设计与实现

在解密时定义5个T-1表(T0-1、T1-1、T2-1、T3-1和T4-1),用等效解密算法,其实现方式与加密过程类似,是加密过程的逆过程。

(2)轮密钥扩展优化设计

密钥扩展分为一次性密钥扩展和即时密钥扩展。一次性钥扩展是在加密解密开始之前生成所有轮密钥,并将其存在内存中;即时密钥扩展只保留一轮的密钥一当前轮密钥,下一轮密钥由当前轮密钥计算生成。与一次性密钥扩展相比,即时密钥扩展占用更少的存储单元。在本设计中采用即时密钥扩展。

假如32位初始密钥为k1k2k3.k30k31k32,将其排列成8x4的初始密钥矩阵:

嵌入式农产品追溯码加密算法设计与实现

令rko=[k1 k2 k3 k4],rki=[k5 k6 k7 k8],…,rk7= [k29 k30 k31 k32]。优化设计的轮密钥扩展可由下面的转换过程实现:

嵌入式农产品追溯码加密算法设计与实现

其中Box[.]为追溯码状态位替换操作,Rcon为轮常量二维数组,Rcon[i]=(i+1,O,O,O)T。利用转换公式,根据初始密钥rko、rk1、…、rk7推算出第一轮加密密钥rk01、rk11、…、rk71;第二轮密钥可由第一轮密钥按照同样的方法生成。

3、加密算法实现

加密算法实现采用LPC1766处理器作为硬件平台,该处理器采用的是Cortex-m3内核,最高主频为100 MHz,存储空间包括64 kB的RAM和256 kB的Flash;利用Keil uVision3软件开发平台实现追溯码加密算法,流程如图6所示,其中Nr为加密轮数。具体步骤为:

嵌入式农产品追溯码加密算法设计与实现

1)利用替换表和列混合可逆矩阵数据构建5个查询表,并将表格数据存储于MX25L6405D数据存储器中;

2)获取初始密钥,结合装置设备号和加密次数,生成动态密钥;

3)根据动态密钥构建第一轮轮密钥并进行存储,后续加密的轮密钥根据前一轮轮密钥实时计算;

4)读取编码产生的20位追溯码,并且将其矩阵化;

5)开始进行Nr-1轮变换,通过查表完成轮变换中的替换、移位和列混合操作,然后将查表结果与轮密钥进行运算;

6)进行最后一轮变换,通过查乃表,完成替换、移位操作,将查表结果与轮密钥进行运算生成一次一密的最终追溯码。

在Keil uVision3开发环境下进行了测试,结果表明算法占用空间情况为:RO-data为248字节,RW-data为272字节,ZI-data为2524字节;在处理器主频为75 MHz的情况下,算法耗时为7.85 ms。

不仅每次生成的追溯码都不同,即追溯码的唯一性,而且优化设计的算法在满足上述存储空间的嵌入式处理器平台上都可以实现。

三、应用示例

将本文的农产品追溯码加密算法移植到自主开发的混合条码追溯监管标签打印溯源设备中,实现了追溯码的加密生成和标签的打印。图7a为混合条码追溯标签打印溯源设备,该设备将称质量利标识2个环节合二为一,同时完成质量感知和贴标2个过程,大大提高了效率,而且从打印出来的标签放大图中可以看出连续打印同一品种(菜心)的2张标识(贴于不同的包装上)的追溯码是不同的,从标识上看不出追溯码代表的任何含义,实现了追溯码的唯一性和防伪性;图7b为广州市农产品质量安全追溯平台,该平台有针对消费者追溯的入口,消费者购买到带有上述生成的产品追溯标签(如图7a中的标签)的农产品,通过在平台上扫描或者输入产品追溯码,点击确定后,系统将显示生产过程、流通过程等详细的追溯属性信息。

嵌入式农产品追溯码加密算法设计与实现

四、结论

1)本文针对嵌入式平台,优化设计并实现了一种追溯码加密生成算法。利用AES加密算法高安全性、高效率和灵活性等特点,对其进行改进以实现十进制数字等长加密,并且针对嵌入式处理器有限的存储空间和运算速度,对算法的关键步骤进行优化设计。

2)利用LPC1766嵌入式处理器和keil uVision3软件开发平台,对算法进行了实现和结果测试。

3)最后给出了加密算法在混合条码打印设备及追溯系统中的应用,验证了该加密算法在嵌入式系统上实现的可行性和安全性,加密算法的应用为利用终端设备进行安全追溯奠定了基础。

小知识之AES加密算法

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。