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

水产品追溯码加密算法设计与应用

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


本文简介:为解决当前农产品追溯码安全性不高,难以保证一品一码等问题,以水产品为研究对象,提出了一种水产品追溯码加密算法。在深入分析各种追溯码编码方案和AES加密算法的基础上,对水产品监管码进行编码、压缩和十进制等长加密生成水产品追溯码。一、AES加密算法1、AES加密算法原理AES加密算法是美国的数据加密国家标准,是由比利时学者Vincent Rijmen和Joan Daemen设计的Rijndael算法,

水产品追溯码加密算法设计与应用

为解决当前农产品追溯码安全性不高,难以保证一品一码等问题,以水产品为研究对象,提出了一种水产品追溯码加密算法。在深入分析各种追溯码编码方案和AES加密算法的基础上,对水产品监管码进行编码、压缩和十进制等长加密生成水产品追溯码。

一、AES加密算法

1、AES加密算法原理

AES加密算法是美国的数据加密国家标准,是由比利时学者Vincent Rijmen和Joan Daemen设计的Rijndael算法,是对称加密算法中加密性能和速度等各项性能指标最好的加密算法。它的原形是Square算法,设计策略采用的是宽轨迹策略,从而可以提高算法抗击差分密码分析及线性密码分析的能力。

AES加密算法的数据分组长度定为128位,密钥长度可为128、1 92或256位,并由密钥长度决定加密轮变换次数ⅣN,为10、12或14。加密算法中的128比特的分组信息被分成16个字节,按顺序排列成一个4x4的矩阵,称为状态(state)。AES的所有变换都是基于状态的变换,数据处理最小单元是字节。

AES加密算法对数据的加密是通过把输入的明文和密钥由轮函数经Nr+1轮迭代来实现的,初始轮和结尾轮与中间的Nr-1轮不同。初始轮只对明文和密钥进行异或操作;中间的Nr-1轮依次进行字节代换、行移位变换、列混合变换和轮密钥加;结尾轮与中间轮相比去掉了列}昆合变换,以使加密和解密算法在结构上更加接近。

2、加密算法加密与解密

AES加密算法核心思想是经过多轮置换迭代操作,使数字信息尽可能地散列和混淆。为方便起见,用C代表轮密钥控制,B代表S盒置换,S代表行移位变换,M代表列混合变换,加密过程如图1所示。

水产品追溯码加密算法设计与应用

由于该加密运算中采用的每一种运算都是可逆的,所以对于上面的加密过程只需要对每一种运算求逆即可解密。解密过程如图2所示。

水产品追溯码加密算法设计与应用

图2中,C-1为轮密钥控制的逆运算,S-1为行移位逆运算,B-1为S盒逆置换,M-1为列混合逆运算。

然而计算机适宜处理十六进制数(即二进制),AES加密算法是针对十六进制数进行加密。而目前研究的农产品追溯码编码大部分都是由0—9之间的十进制数字构成,而且要求追溯码位数和加密后密文位数相对应,即没有密文扩展,基于十六进制的AES加密算法就不能满足上述要求。

二、水产品追溯码加密方案

1、基于监管模式的水产品追溯编码

水产品监管追溯编码从政府监管的角度出发,以批次作为追溯单元,以同一养殖主体、同一池塘内、同一时间出池、同一品种的产品作为编码单元。水产养殖品追溯监管码由行政区划代码、企业顺序号、产品分类代码、源实体参考代码、生产日期代码和校验码构成,具体结构如表1所示。

水产品追溯码加密算法设计与应用

厂商识别代码10位数字:行政区划代码可具体到县级,具体可参考GB/T2260-2007的编码,企业顺序号由1位企业类型识别代码和3位企业顺序流水号组成。产品批号代码16位数字,由6位产品分类代码、4位源实体参考代码和6位生产日期代码组成。产品分类代码按照层次码的设计,详见SC3001-1989水产品名称分类。

2、水产品追溯码加密算法

采用上述按水产品、按辖区生成的水产品追溯码编码,对于消费者来说,存在着易于被仿制、安全性低的问题,以及长度过长,不利于产品追溯等缺点。同时为了防止追溯码被私自修改,在设计追溯码时还要采取专用加密算法对水产品追溯码进行压缩、加密。

(1)水产品追溯码压缩

根据上述编码规则,采用分组的方法对每一码段进行重新编码压缩。编码压缩的基本思想是采用穷举法对每一码段按照最大取值范围进行重新编码设计。其中,校验码由厂商识别代码、产品批号代码计算得到,在压缩时可忽略;县级行政区划数量有2 800个左右,因此,采用4个十进制位表示;企业顺序号保持不变;水产品分类代码采用3个十进制位表示1000个主流养殖品种完全可满足水产品应用需求;源实体代码即企业池塘编号保持不变;根据《中华人民共和国农产品质量安全法》规定,农产品记录保存时间一般为2年,这里生产日期代码时间跨度按100年计算,足以满足对农产品质量追溯的要求,以2000年1月1日为基准,采用5位十进制数即可表示当前生产日期与基准日期相差的天数。具体编码转换如图3所示。

水产品追溯码加密算法设计与应用

(2)追溯码加密算法过程

经压缩的水产品追溯编码采用分组压缩方法,实现了编码长度的减少,但其安全性和防伪性能较差。需要对其进行加密,而且加密前、后需要保持长度不变。通过对AES算法分析可知,AES加密算法无法满足对十进制数据的加密,在参考刘连浩等设计方法基础上,对AES算法进行改进,重新设计AES加密算法中的4种加密运算,以适应十进制数直接加密的要求。同时为增强加密强度,保证生成追溯码的唯一性,使同一明文生成无规律的密文,实现一次一密防伪效果,采用动态密钥对水产品追溯码进行混沌随机加密。具体的加密、解密流程,如图4、5所示。

水产品追溯码加密算法设计与应用

 

水产品追溯码加密算法设计与应用

该加密算法对数据进行分组迭代操作,分组长度和密钥长度可独立指定,密钥轮数可任意,轮数越多,加密程度越高,运算时间越长。本方案采用1 2轮加密策略。每一轮变换由3层组成:

(1)线性混合层:

包含追溯码状态位行移位和列}昆合,目的是为了确保多轮迭代运算的高度扩散。

(2)非线性层:

由一个1 0进制S盒组成,起到追溯码数字位置换混淆的作用。

(3)轮密钥控制层:

根据不同的条件,对轮密钥和追溯码状态各个对应的数字进行取模运算,实现密钥和追溯码字的混合。

加密算法主要包括以下几个关键步骤:

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

动态密钥是根据初始密钥、编码生成次数、企业顺序号生成32位十进制数密钥口生成过程如图6所示。其中Sbox运算为S盒置换操作。

水产品追溯码加密算法设计与应用

(2)追溯码数字位置换盒

追溯码十进制数字位置换盒,如图7所示。反置换盒如图8所示。每一轮的数字位置换中,能够达到一半的十进制位发生变化。

水产品追溯码加密算法设计与应用

 

水产品追溯码加密算法设计与应用

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

追溯码状态位是指需要加密的追溯码每位数字,比如20位追溯码:26347411750000131203,其状态表如图9所示。

水产品追溯码加密算法设计与应用

状态位行移位规则:第1行不移动,第2行循环左移1位,第3行循环左移2位,第4行循环左移3位口图9行移位后的结果如图10所示。

水产品追溯码加密算法设计与应用

(4)追溯码状态位列混合

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

水产品追溯码加密算法设计与应用

式(1)为列混合操作的矩阵表示,式(2)为列混合逆操作矩阵表示。

水产品追溯码加密算法设计与应用

(5)追溯码状态位与轮密钥取模运算

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

每一轮运算步骤简述如下:

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

(2)入口参数Enter=Sum mod 4。

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

(3)追溯码加密算法实现

在上述的加、解密算法中,动态密钥是根据初始密钥、编码生成次数、企业顺序号生成的32位十进制数密钥,编码生成次数每生成一次加1,利用密钥对生成次数敏感的特点,产生新的动态密钥和密文,从而实现以编码生成次数为混沌参数的混沌加密。使用C#语言,在Visual Studi0 2005开发环境下编程实现,初始密钥为长度小于32位的0—9数字组成,由用户自由设置,以广东省茂名市某企业为例,27位的追溯码为44090210010101220001101 1200。压缩、加解密结果如图11、12所示。

水产品追溯码加密算法设计与应用

从图11可以看出,在初始密钥和追溯编码一样的情况下,随着加密次数的不同,密钥也随着变化,得到的追溯码也不同,实现了一次一密和追溯码的唯一性。从图12可以看出,实现了在知道初始密钥的情况下,对压缩后的加密追溯码成功解密,得到追溯编码明文。

三、应用示例

将本文的加密、解密算法移植到自主开发的混合条码水产品追溯监管标签打印和追溯系统中,实现了加密标签的打印和追溯码解密追溯。以系统在广东省水产品追溯中的应用为例,广东省茂名市广东绿卡实业有限公司2010年11月20日生产的某一批次绿卡牌中华鳖的信息为:企业的行政区划代码:440902;企业类型:养殖企业(1);企业顺序流水号:001;水产品大类:鲜、活品类;水产品种类:淡水鱼;水产品名称:绿卡牌中华鳖;出池日期:2010年11月20日。

根据水产养殖品追溯监管码编码规则,计算得到6位行政区划代码为440902;4位企业顺序号为1OO1;6位产品分类代码为0101 22;4位源实体参考代码,即水产养殖企业产品出池的池塘编号,由企业内部编码,这里假如池塘编号位O001;6位生成日期代码为101120;校验码为0,综合以上信息,该企业该批次产品的27位追溯编码为:440902100101012200011011200。当出池日期为2010年11月21日时,该批次产品的27位追溯码为:440902100101012200011011211。

广东绿卡实业有限公司养殖生产管理系统打印出具有一维条码和二维条码组成的混合标签。其中,一维条码采用EAN- 128码制,由水产品追溯监管码经本文的加密算法生成,如图13所示。例如2010年11月20日出池的中华鳖的27位追溯监管码为:440902100101012200011011200,经压缩后为:22231001221000103976,加密后为:7788842734712323156202010年11月21日出池的中华鳖的27位追溯监管码为:440902100101012200011011211,经压缩后为:22231001221000103977,加密后为:09404382050494370518。

水产品追溯码加密算法设计与应用

经过压缩后,在保证实用和扩展的条件下缩短了码长,满足了编码导则的要求之一;每个产品上的标签,具有不同的追溯码,满足了编码导则的唯一性要求,杜绝了仿制标签的现象。从追溯码数字表面看不出它所包含的任何含义,而且即使在得知追溯码的编码规则后,也无法获取里面的信息,安全性得到了很大的提高。

图14a为广东绿卡实业有限公司生产管理软件打印出来加载于中华鳖包装上的追溯标签;图14b为广东省省级水产品监管平台,将追溯标签上的追溯码输入该系统,就可以进行产品追溯;图14c为经过对追溯码解密后,消费者进行网络追溯的结果,消费者可以追溯出责任主体信息、养殖过程信息等。

水产品追溯码加密算法设计与应用

四、结论

(1)针对目前农产品追溯编码设计以及农业部追溯码编码导则存在的不足和问题,以水产品为研究对象,详述了水产品追溯监管码的设计与压缩方法。

(2)以AES加密算法为基础,对压缩后的追溯编码进行了加、解密算法设计与实现,达到了一次一密的防伪效果。

(3)加密生成的追溯码具有一次一码的特点,即每加密一次,生成的追溯码是不同的,做到了追溯码的唯一性,杜绝了仿制同一标签的现象。一方面,当市场上出现大量同一标签时,可以断定是假冒伪劣产品;另一方面,追溯结果会显示追溯码被追溯过的次数和时间,顾客若发现追溯码已被追溯过,就有可能是假货的嫌疑,可以进行举报。

(4)给出了加密算法在水产品追溯系统中的应用,验证了该算法的可行性与安全性。加密算法的应用增强了追溯系统的安全性,为农产品的可靠追溯提供了保障。

(5)本文加密算法的实现和应用都是在基于Intel处理器和微软操作系统的PC机上完成的。随着嵌入式系统的发展,利用手持等便携式设备进行水产品追溯监管也有广泛的应用需要,因此在下一步的工作中,将对水产品追溯码加密算法在嵌入式手持设备上的移植进行研究。

小知识之S-box

S-box, 即“substitution box”, 是密码学领域的一个基本组件,其功能是实现数据的非线性置换。
S-box主要应用于对称加密算法中,如DES (Data Encryption Standard)、AES (Advanced Encryption Standard)。

立即下载试用

如何防止企业内部开发代码被泄密?

       据统计报告,企业在遭遇数据泄露事件时,有百分之八十的概率是出现在内部人员身上。这表明,内部数据安全问题远远比网络攻击更加可怕。尤其是在研发型企业里,代码这种重要又值钱的数据,是最容易让别有用心之人动歪心思的。

 

       代码数据的泄露,对企业造成的打击和影响是不可估量的,对于研发部门来说,重要的数据可不仅仅是代码,还有很多核心数据需要保护。下面我们就从不同角度看看,有哪些技术手段可以保护代码不泄露。

  

一、对代码本身采用的技术手段

 

      1、代码混淆:也称为模糊处理,其技术原理是代码重命名,也就是说原先具有含义的方法名称,重命名为毫无意义的(A,B,C 诸如此类)。缺点:无法隐藏调用的系统的函数。

 

      2、代码隐藏:因为代码混淆改变了方法签名,在很多时候是有问题的,例如程序集要被其他人使用的时候。因为方法名变成了毫无意义的一些字符,将造成使用者极大的麻烦,也可能导致现有引用程序集的失效。

 

      3、非托管代码编:使用非托管代码编写核心代码(例如核心算法),然后使用平台交互的方式进行调用,非托管代码比较难反编译。

 

      4、强名称签名:这种方法,用通俗的话说就是对文件按照Microsoft的算法对文件进行Hash,然后将hash出来的数据(public key token )写入文件。在运行或者对文件进行调用的时候,SDK会检查public key token ,若不符合则抛出异常,退出。

 

      5、代码加密:改变MSIL和JIT的通信,根据底层的需要来解密代码。破解的难度大,较安全,内存无完整代码。但是这种方式可能会导致编程的难度大,若利用专门的加密软件,则会加大系统的开发成本。

 

      6、代码本地化:代码完全编译成本机代码,同win32下的应用程序一样,完全失去了.NET的优越性。

 

      7、代码加水印:简单的说,就是让特定的字符串以图片的形式,绘制在程序的界面上,用来提示软件是否注册,这种保护方法,关键的地方就是对图片绘制条件的判断,如果仅仅是用true 或者false 来判断,就形同虚设了。

 

二、研发部门内部管控手段

 

      8、禁用U口:企业可以通过禁用USB接口,这种方式可以有效防止恶意的数据拷贝,如果需要对外发送的话,需要经过审核后由专人拷贝出来再外发。

 

      9、控制访问权限:网站白名单,只允许访问工作需要的网站,其他一律禁止掉。这个算是比较严格的限制方式了。采用应用过滤,禁止掉所有的文件传输、网盘、邮件等。这个方案相对有效,但是不能排除通过未知的应用协议来传文件,而且会给日常工作带来一些不便。

 

      10、部署DLP数据防泄漏系统:有条件的企业可能会在内外网边界部署DLP数据防泄漏系统,所有内部向外部发出的数据,都要经过DLP系统的内容扫描,在确保不包含敏感信息的情况下才允许发出。这也是比较常见的一种方式,可以有效防止各个渠道的外发泄密。

 

      11、第三方身份验证:现在有许多基于标准且高度安全的身份验证产品可供选择,这样的话,你的员工/客户等等就不需要一个个记住账号密码了,这样就能减少账号泄密的风险了。

 

      12、服务器上备份文件:及时的将重要文件备份,以便丢失后能及时找回,同时可以减少无意的泄密带来损失。

 

      13、特殊部门不允许进行文件外发:比如研发部门或者财务部门这种核心和敏感数据较多,不允许他们直接的对外发送文件,如果需要发送的话,需要经过审批后,由专人进行发送。

 

      14、监控电脑的文件外发动作:这个就需要有带有监控功能的软件了,可以监控到每个人的电脑操作行为,一旦产生外发动作,就会给管理员发出警报。

 

      15、云桌面:云桌面也是一种很流行的方式,很多研发型企业都在使用,它的成本比较低,使用灵活,可以快速响应企业和开发需求,比如企业规模扩大时,可快速实现资源配置和扩展。最重要的是,数据都集中在服务器上,开发人员的终端不再保存数据和存储,实现代码等数据不落地,对于企业来说,不仅仅是便于管理了,而且更能保障信息安全。

 

      16、网络隔离:这个算是目前最流行的方式了。将研发网与办公网、测试网、外网等进行隔离,防止不同部门、不同业务之间的违规数据交换。通过网络隔离的方式,可以有效防止内部核心代码数据泄露。

 

      17、对企业数据信息存储介质做渗透测试:渗透测试是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。

 

      18、内部设备的管理:很多企业会疏于对打印机、传真机等设备的管控,殊不知这些也是泄密渠道之一。必要的时候可以安装一些打印管理软件,实现打印内容监控、打印计数、打印审核等。

 

三、防止外部攻击的方法

 

      19、使用多种抵御手段:安装各种防火墙、入侵检测系统、DDoS防护服务、防病毒等产品来防范黑客的攻击和病毒的入侵。可以有效抵御外部的攻击导致的数据泄露,对企业整个网络安全环境起到一定的保护作用。

 

      20、监视攻击:有很多很好的监控工具,但是需要投入时间和精力来确保随时可以监控到异常。选择监控系统时,得确保知道自己在监控什么以及如何回应。

 

      21、分析各种网络日志:日志的搜集与分析可帮助企业侦测针对性攻击。IT和安全人员可从中发现关于黑客的一些宝贵信息,例如黑客如何进入网络,以及黑客的攻击策略。

 

      22、高防服务器:高防服务器就是能够帮助网站拒绝服务攻击,并且定时扫描现有的网络主节点,查找可能存在的安全漏洞的服务器类型。


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