安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

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

更新时间:2022-10-28 15:45:24


本文简介:农产品追溯是促进生产信息透明化,提高农产品质量安全,增加农产品市场竞争力的重要措施。利用便携式、移动式设备进行农产品追溯给消费者和监管部门提供了便利,而基于嵌入式平台的农产品追溯码编码加密,是实现利用终端设备进行农产品可靠追溯的基础。综合分析目前已有的农产品追溯码编码实现和应用,都是基于hitel处理器和微软操作系统的桌面平台来实施的,而且存在以下2个方面的不足:第一,加密较弱甚至就没有任何加密,

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

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

综合分析目前已有的农产品追溯码编码实现和应用,都是基于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,已经被多方分析且广为全世界所使用。

立即下载试用

椭圆曲线加密系统之OpenSSL嵌入式

针对嵌入式系统中信息安全的特点,选择椭圆曲线公钥加密体制ECC( Eniptic Curves Cryptosystem)作为加解密系统体制,应用开源安全软件开发包OpenSSL作为密码库开发了加密和解密系统。

一、椭圆曲线加密体制

椭圆曲线加密体制ECC是基于椭圆曲线离散对数问题( ECDLP)的一种公钥加密体制,我们采用大素数有限域GF(p)上的方程y2=x3+ax+6(modp),这里p是大素数,a和b为两个小于p的非负整数,它们满足:4a3+27b2 (mod p)≠0。椭圆曲线离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,可以证明由k和P计算Q比较容易,而由Q和P计算尾则比较困难。由于椭圆曲线密码体制ECC所具有的特点,ECC可以用较小的开销(软硬件规模、存储要求、带宽)实现较高的安全性,是一种能够提供高比特强度的公钥加密体制。

二、OpenSSL简介

OpenSSL是一个用来开发网络安全软件的开源软件包,不仅实现了SSL协议,而且拥有功能强大的密码库。OpenSSL采用C语言作为开发语言,有优秀的跨平台性能。OpenSSL包括三个部分:SSL协议库,加密算法库,应用程序。其中加密算法库实现了大部分主流的加密算法和标准,包括对称加密算法,公开加密算法,散列函数算法,数字证书标准等。任何人都可以免费使用OpenSSL来实现消息摘要、文件加密和解密、数字证书、数字签名和随机数字产生等功能,以及解决信息的安全传输问题。使用OpenSSL可以缩短软件开发周期,提高软件的运行效率和稳定性。本系统中使用的OpenSSL-1.0.O版本有椭圆曲线加密体制的支持,可以基于OpenSSL软件包提供的椭圆曲线相关函数构建完整的椭圆曲线密码体系方案。由于其良好的跨平台及程序可移植性,可以方便地移植椭圆曲线密码系统到arm-linux平台或其他种类嵌入式平台系统。

三、椭圆曲线加密体制及其实现

椭圆曲线加密体制的两种常用算法是EC -ELGamal与Men-ezes-Vanstone。其中,EC-ELGamal算法是基于椭圆曲线的ELGamal型加密体制,其基本思想是将椭圆曲线的点加和点乘运算类比为有限素域上的运算,加密实施中要求将明文编码为椭圆曲线上的点。Menezes-Vanstone算法利用屏蔽明文的方法避开了明文嵌入的问题。本系统利用OpenSSL-1.0.0提供的椭圆曲线进行密码系统的设计与实现。下面对两种椭圆曲线加密体制的算法进行介绍并附上用C语言设计的程序主要实现代码。

1、EC—ELGamal加密算法及其实现

(1)EC-ELGamal算法加解密及通信的过程

EC-ELGamal算法:

①选定椭圆曲线Ep(a,b),并取椭圆曲线上点G作为基点。

②用户B选择一个私有密钥k,并生成公开密钥K=kG。

③用户B将Ep(a,b)和点K,G传给用户A。

④用户A接到信息后,将待传输的明文编码到Ep(a,b)上一点M1,并产生一个随机整数r。本程序设计中随意选择G作为待加密的信息M1为例,也可以选择椭圆曲线上的其他点。

⑤用户A计算密文C1=G+rK;C2=rG。

⑥用户A将密文CI、C2传给用户B。

⑦用户B接到信息后计算M2=C1-kC2,M2即为解密的数据。

(2)OpenSSL实现EC-ELGamal算法主要代码

//加密操作,对点M1(此处以G为例)加密,C2=rG,C1=G+rK,

//其中K为B的公钥。

//OpenSSL里的函数功能:EC_POINT_mul是点乘,EC—POINT_

//add是点加。

EC_POINT_mul( group, C2, NULL,G,r,ctx);

EC_POINT_mul(group,B,NULL,K,r,ctx);

EC_POINT_add( group, C1,G,B,ctx);

//解密操作,对得到的(C1,C2)解密得到M2=Cl-kC2

EC_POINT_mul(group,R,NULL, C2,k,ctx);

EC_POINT_invert( group,R,ctx);

EC_POINT_add( group, M2, Cl,R,ctx);

M2即为经过解密得到的椭圆曲线上的点,与被加密的明文点M1进行比较,证明解密所得的点的坐标与被加密的数据点的坐标完全相同。此处实际应用中要涉及到用各种编码算法将明文编码到椭圆曲线上的明文点M1,最后再对解密所得的数据M2解码得到原明文。

2、Menezes-Vanstone密码算法及其实现

(1)Menezes-Vanstone算法加密解密及通信的过程

Menezes-Vanstone算法:

①选定椭圆曲线Ep(a,b),并取椭圆曲线上点G作为基点。

②用户B选择一个私有密钥k,并生成公开密钥K=kG。

③用户A将明文M变换成为有限域Zp中的二元组M=(m1,m2)。

④用户A产生随机数r并计算:

RO=rG

(c1,c2)=rK

R1=clml( mod p)

R2=c2m2( mod p)

⑤用户A将(RO,R1,R2)作为密文发送给用户B。

⑥用户B接收到密文后计算:

(dl,d2) =kR。

(mll,m22)=(Rldl_1(mod p), R2d2_1(mod p))即为解密所得数据,与原加密数据(ml,m2)相同。

(2)OpenSSL实现Menezes-Vanstone算法主要代码

//加密操作,对( ml,m2)在有限域zp内赋随意值如下

BN.hex2bn(&ml,”3A2794482D6410697 C85 FA4643BAI DAEA76 FFAE6EC26A2C8");

BN_hex2bn( &m2,"AF7DF34CDA2DF2ACC65 C31BE95 A3888FC5DCC7 04461308EC");

//取参数p,a,b,其中p后面要用到

EC_GROUP_get_curve_GFp( group,p,a,b,ctx);

//r为取的随机数,计算RO=rQ

EC_POINT_mul( group, RO, NULL, Q,r, cLx);

//计算C=( cl,c2)=rK

EC_POIN'r_mul( group, C, NULL, K,r, ctx);

EC_POINT_get_affine_coordinates_GFp( group,C,cl,c2, ctx);

//计算Rl=clml( mod p),R2=c2m2( mod p)

BN_mod_mul( R1, cl ,ml,p,ctx);

BN_mod_mul( R2, c2 ,m2 ,p, ctx);

//解密操作,首先计算D=(dl,d2)=kRO,BN_mod_mul函数是

//进行模乘运算

EC_POINT_mul(group, D, NULL, RO,k,ctx);

EC—POINT—get一affine-coordinates_GFp( group,D,dl, d2,ctx);

//分别取dl与d2对p的模逆此处分别记为dll与d22

BN_mod_inverse( dll ,dl ,p, ctx);

BN_mod_inverse( d22, d2,p,ctx);

//解密(rull ,m22)=(Rldl -1( mod p),R2d2 -1( mod p))

BN_mod_mul( mll, R1 ,dll ,p,ctx);

BN_mod_mul( m22, R2, d22 ,p, ctx);

此处( mll,m22)经数据转换输出十六进制数据为:

mll: 3A2794482D6410697C85 FA4643BAIDAEA76FFAE6EC26A2C8

m22: AF7 DF34CDA2DF2 ACC65 C31BE95 A3888 FC5 DCC704461308EC

结果证明(mll,m22)与(m1,m2)相同,加密解密成功。

四、安全密码系统结构及分析

本系统基于arm9开发板搭建arm-linux系统,用OpenSSL软件包开发了完整的加解密程序,验证OpenSSL在arm-linux平台上实现的可行性及易用性和安全性。实验结果在主机的Linux操作系统中的rmmcom串口终端中显示。现对该安全加密系统的系统结构、搭建步骤、实验分析进行介绍。

1、安全密码系统结构

本嵌入式平台安全密码系统的结构如图1所示。

椭圆曲线加密系统之OpenSSL嵌入式

图l中各部分的功能简介如下:

(1)嵌入式硬件平台是安全加密系统的硬件基础,本系统采用ann9核心开发板,并可根据功能需求进行扩展。

(2)嵌入式操作系统是安全加密系统的系统平台,本系统采用了标准的Linux操作系统。

(3) OpenSSL层实现了SSL安全套接字层协议及其相关加密解密的支持。

(4)安全系统应用层提供基于安全加密的应用服务。

2、软硬件平台介绍

本系统平台采用以arm9为核心并移植Linux操作系统的嵌入式开发平台,基本的软硬件参数如下:

(1) CPU处理器

Samsung S3C2440A,主频400MHz,最高频率达到533MHz。

(2) SDRAM内存

64M SDRAM,32位数据总线。

(3) FLASH存储器

64M Nand Flash存储器;2M Nor Flash存储器。

(4)接口和资源

1个10M以太网RJ-45接口(采用DM9000网卡芯片);3个串行通信接口;1个USB Host接口;1个USB Slave B接口。

(5)移植Linux版本2.6.31

3、实验步骤

(1)主机搭建arm-linux-gcc交叉编译环境,用于对软件库及应用程序进行交叉编译。

(2)向ann9开发板上移植经过裁剪的Linux操作系统,构成基本的arm-linux软硬件开发平台。

(3)下载OpenSSL-I.0.0并用交叉编译器arm-linux-gcc交叉编译并生成静态函数库,并向开发平台移植静态函数库。

(4)将两种加密系统的完整代码分别用arm-linux-gcc交叉编泽,将生成的可执行程序移植到arm-linux平台上运行。

4、实验分析

通过对椭圆曲线的两种算法的程序进行测试分析表明:

(1)两种椭圆曲线密码体制的程序都能准确进行加密解密,程序运行正常。同时,两种密码体制的安全性都是基于椭圆曲线离散对数问题(ECDLP)。

(2) EC-ELGamal密码体制要求将明文编码为椭圆曲线上的点,还要考虑明文嵌入算法增加程序代码量及运行总时间的因素,在实用性上存在缺点。同时,EC-ELGamal密码体制存在密文相关问题(当如果攻击者已知部分明文mx,攻击者可以通过椭圆曲线方程推得my)。

(3) Menezes-Vanstone利用屏蔽明文的方法避免了明文嵌入的问题,但同时此算法也存在两种缺点:信息扩展问题(明文ml、m2被扩展成密文RO、Rl、R2,增加了存储空间和传输带宽需求)、密文相关问题(如果攻击者已知部分明文ml及其对应的密文,则他可以通过计算得到m2)。

(4)加解密速度比较。在素数域内选择密钥长度依次为192位、224位、256位、384位、521位。不考虑明文嵌入问题,统计EC-ELC amal加解密程序对基点Q进行加解密的程序运行时间,同时统计Menezes-Vanstone加解密程序对同样的Q点进行加解密的程序运行时间,表1为统计所得时间对比表。

椭圆曲线加密系统之OpenSSL嵌入式

对表1分析得出:①即使不考虑明文嵌入问题,Menezes-Vanstone在各种密钥长度的加解密速度上已经高于EC -ELGamal;②随着密钥长度逐渐增大两种算法加解密时间的增加幅度上区别不大。

小知识之OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16404.html