• 工作总结
  • 工作计划
  • 读后感
  • 发言稿
  • 心得体会
  • 思想汇报
  • 述职报告
  • 作文大全
  • 教学设计
  • 不忘初心
  • 打黑除恶
  • 党课下载
  • 主题教育
  • 谈话记录
  • 申请书
  • 对照材料
  • 自查报告
  • 整改报告
  • 脱贫攻坚
  • 党建材料
  • 观后感
  • 评语
  • 口号
  • 规章制度
  • 事迹材料
  • 策划方案
  • 工作汇报
  • 讲话稿
  • 公文范文
  • 致辞稿
  • 调查报告
  • 学习强国
  • 疫情防控
  • 振兴乡镇
  • 工作要点
  • 治国理政
  • 十九届五中全会
  • 教育整顿
  • 党史学习
  • 建党100周
  • 当前位置: 蜗牛文摘网 > 实用文档 > 公文范文 > 基于区块链的粮食防伪溯源系统的设计与实现

    基于区块链的粮食防伪溯源系统的设计与实现

    时间:2023-04-21 21:15:02 来源:千叶帆 本文已影响

    王莉, 任健荣, 王涛, 牛群峰, 惠延波, 桂冉冉

    (1.河南工业大学电气工程学院,郑州 450001;
    2.北京中电智网科技有限公司,北京 102200;
    3.河南工业大学机电工程学院,郑州 450001)

    目前,粮食安全问题影响着国民的身体健康[1],传统的二维码防伪溯源技术将数据存储在企业或机构的中心数据库进行管理,中心化严重且数据的真实性难以保证。在溯源体系中使用未加密的二维码时获取溯源信息存在数据被篡改的可能。将信息通过加密技术与二维码的制码技术相结合,并结合密码学将认为重要的数字信息作为明文数据进行加密计算达到加密传递信息的目的。区块链最初来源于比特币,是一种基于P2P网络、加密技术和时间戳记录的交易架构。区块链网络建立后,每一区块通过密码学连接在一起,每一块都包含前一区块的加密散列值、时间戳和交易数据[2]。处于同一链上的各参与部门相互关联,并且分布式的网络抵抗攻击性能较强,其中数据经加密算法进行存储,区块链的每笔交易都经过数字签名以确保数据的真实性且不会被篡改。通过区块哈希值达到成链的目的,用于解决传统数据库中心化统一管理的信任问题。

    针对二维码防伪溯源的研究,刘海峰等[3]提出了将AES(advanced encryption standard)和RSA算法结合的二维码加密算法。乔婉妮[4]提出了一种将图像几何处理与二维码(QR码)信息加密相结合的新思路。方文和等[5]面向Android使用RSA算法设计了二维码防伪系统,将RSA应用在APP以实现防伪功能。黄曦[6]将NFC和国密算法结合提出了一种防伪系统。Kumar等[7]引入第三个素数证明了三素数在RSA算法中的可行性。针对区块链溯源系统的研究,应毅等[8]结合农产品供应链构建了联盟链的农产品溯源系统。张志雷[9]通过将追溯码直接生成二维码的方式进行区块链溯源并添加了协同验证模块。于合龙等[10]采用CBC(Ciper block chaining)对数据加密,只有授权节点才能查看隐私数据。洪坤明等[11]构建了基于联盟链的水产品质量追溯系统。王楠等[12]提出了一种基于以太坊的智能电网数据共享系统。唐豪等[13]使用了布隆过滤器提高区块链上数据检测的效率。

    为此,针对粮食溯源系统安全问题,构建一种基于区块链的粮食供应链溯源模型,针对粮食产业供应链的流程,在Hyperledger Fabric平台基础上设计系统方案,包括系统整体架构、双存储架构、溯源码防伪架构以及智能合约等。通过Web端将数据进行上链存储并在本地MySQL数据库备份,为小程序预留API接口。应用改进RSA算法生成密钥对并将私钥存储在区块链上,使用公钥对溯源ID进行加密成密文并生成二维码,消费者使用小程序对密文进行解密时从区块链获取私钥在后台解密获取溯源ID实现溯源查询。用区块链与本地存储的数据库进行哈希校验以确保粮食数据的正确性。基于区块链的粮食防伪溯源系统,能够提高粮食追溯信息的透明度和安全性,同时能够保障粮食质量安全。

    产品流通会经过不同厂商,参与方对产品的状态流通都会生成任务编号,将农户作物种植过程中添加的作物编码作为全局ID,各组织节点构成分布式服务,在整个系统供应链流程的各个环节中。将各过程环节的ID作为流通编码。ID由雪花算法按时间进行递增的,所以分布式系统中不会有重复的ID,当零售商对产品签收后才会生成唯一的溯源ID。使用改进的RSA算法生成密钥对,将生成的公钥存储在本地数据库,用于对溯源ID加密,将加密生成的密文置入二维码中,私钥存储在区块链中,消费者扫码时由区块链返回私钥并在本地进行解密获取溯源ID。

    1.1 传统RSA算法及安全性

    RSA算法的安全性在于使用不同的密钥。公钥(e,n)(e为大整数加密值,n素数乘积)和私钥(d,n)(d为大整数解密值),其安全性是基于大数分解进行破解从已知公钥的e、n值得到d的值从而实现得到私钥来实现对密文的破解[14]。

    使用传统RSA算法在加解密的过程中,一般将公钥放在用户端,私钥放在服务端,消息接收方通过从服务端获取私钥的方式进行对密文解密的过程,攻击者可能会通过攻击代码的方式获取到用户端代码将公钥的base64字符串解码为字节,再将字节转换为16进制字符,将字符分解获取公钥的模数及公钥指数,若得到了公钥的模数可以通过因子分解得到(p,q)两个大素数从而得到包含d的私钥。使用传统的RSA算法的模数n还是极有可能被破解的。

    1.2 改进RSA算法密钥安全性能优化

    传统的RSA二素数算法,选取的大素数导致计算量增加,为降低计算量选取多素数小因子,会降低安全性。为兼顾密钥生成速率以及安全性,选择大小大致相同的三素数生成密钥。增加素数因子降低大数运算量并用新的模值N代替n生成密钥,攻击者分解新的模值N,无法获得原始的素数因子,通过隐藏模值的方法提高密钥的安全性。密钥生成算法如图1所示。

    图1 三素数参数替换的密钥生成

    改进RSA算法模值替换步骤如下。

    步骤1选取3个大小大致相同的较小的素数因子p、q、r,使用Rabin-Miller素数检测。计算素数乘积n=pqr,并求φ(n)。其中φ(n)=(p-1)(q-1)(r-1)。

    步骤2由p、q、r通过最大公约数计算新的N值代替n,GCD(N,n)=1,n-max

    步骤3选择整数e,求得GCD[e,φ(n)]=1,且1

    步骤4通过取模运算由demodφ(n)=1求d,可得公钥(e,N)和私钥(d,N)。其中,mod为取模运算符,d可以通过费马小定理减少运算得到。

    步骤5明文M加密,表达式为C=MemodN。

    步骤6密文C解密,表达式为M=CdmodN。

    1.3 蒙哥马利幂模法优化运算效率

    RSA算法的应用是基于大整数的模幂运算,大数幂取模运算是提高算法加解密运算效率的关键。在计算ab(modc)=M(即已知a、b、c求得M,如1.2节中步骤5和步骤6,是用来求明文密文所用,在求明文和密文不同使代表不同,若求密文,则A代表明文c,B代表步骤4取模运算得到的D,C代表新的N值。)时,使用蒙哥马利幂模法通过移位快速幂取模[15],将b表示为二进制br-1,br-2,…,b1b0,即b=b0+2b1+…+2r-1br-1。

    区块链体系结构是利用以太坊的开源基础开发。区块链的每笔交易都经过数字签名以确保数据的真实性且不会被篡改。区块链技术的优势在于去中心化、分布式数据存储、安全、数据公开透明[16-18]。数据的上传不会删除原始数据,而是对数据进行更新,区块链的每个区块都会有一个永久的时间戳来表识身份以及验证。

    考虑到大米供应链流程需要多方共同合作完成,因此区块链采用联盟链结构,使用Hyperledger Fabric框架,各参与方分别为农户、原料厂商、生产厂商、零售商、物流公司以及管理端等。管理端为各部分添加可以登录的角色账号,参与方使用管理端分发的账号登录不同界面添加己方所需上传的信息进行上链并在本地进行存储备份。各节点的信息主要包括种植信息(所施肥料、育苗周期、灌溉周期、施肥周期、除草周期、种植地址),作物生长信息(温度、生长状况、水分含量、光照情况、是否有虫害);
    原料厂商质检(检测结果是否合格、合格证明图片);
    生产加工信息(管理员派发任务、员工工作量、工作内容、操作任务、操作ID、操作时间);
    物流运输(任务派发、运输员接受任务、中途定位、物流追踪)以及零售商等,将这些信息存储在链上,消费者可以更清楚的了解水稻从种植到大米销售的整个流程,可以对产品更加的放心。

    2.1 区块链网络系统设计

    环境部署:虚拟机VMware,Linux系统Ubuntu18.04(64位),内存6 GB,硬盘空间50 G。网络部署环境如表1所示。

    表1 软件环境

    区块链网络主要包括基础层、核心层和应用层。基础层为Fabric网络架构的基本组成部分,实现P2P网络并保证分布式存储的一致性。核心层包括成员服务、账本交易和存储、节点排序、链码运行以及信息上传各方达成的共识。应用层为应用程序提供接口对区块链网络进行调用,实现数据的录入查询以及状态监控。

    配置组织(org)和节点(peer),fabric ca作为证书授权中心在用户进行数据操作时校验证书,orderer负责排序服务,CouchDB作为状态数据存储,支持对链码数据进行富查询,链码和组织节点配置如表2所示。Docker模拟多个服务器,将系统测试和模拟在其中运行。Golang编写智能合约链码在docker容器中运行,通过gRPC与peer进行交互初始化以及实例化,共识机制使用solo用于测试。

    表2 节点和链码配置

    参与方在区块链网络中各为一个组织节点,且只有己方录入信息的权限,通过管理端上传信息经链码判断后上链,参与方的注册信息经区块链网络的ca证书赋予密钥。产品出库后经物流运输到达下一参与方直到完成供应流程。大米供应链溯源模型如图2所示。

    图2 大米供应链溯源模型

    2.2 智能合约设计

    智能合约是是运行在系统中的一段代码,又称链码(chaincode),分为系统链码和用户链码[19]。将链码编译成应用程序运行在docker中,其中系统链码用于实现底层系统功能,用户链码则会根据用户的不同需求实现相应功能,通过gprc与peer节点进行交互。将区块链系统底层部分与业务需求部分进行互通,以实现数据上链的要求以及溯源查询功能。将智能合约部署在每一个组织节点上,使每个节点都保存一个完整的备份数据。智能合约通过go语言编写,其中Init()方法用于将系统初始化,Invoke()方法用于对数组内的元素调用以及数据访问。通过溯源ID查询作物的智能合约如表3所示,根据传入参数类型不同执行不同的方法,调用fabric底层接口实现查询功能。

    表3 部分智能合约

    2.3 溯源ID设计

    雪花算法是Twitter开源的一种ID生成的分布式算法。核心在于使用一个64位的长整型数字作为全局唯一ID,并在ID中引入了时间戳的格式,因此在分布式系统中广泛应用。将农户作物种植过程中添加的ID作为全局ID,在整个系统供应链流程的各个环节中,将各组织节点构成分布式服务生成过程环节的ID,直到供应链流程末端生成溯源ID。

    采用优化后的雪花算法作为ID生成工具。由时间差、workerID以及序列数三部分组成。其中时间差是生成ID的系统时间与基础时间的总时间差。workerID是区分不同的机器以及应用的唯一ID。序列数是在每毫秒下的序列数,由参数SeqBitLength设定。①优化后的雪花算法能够随着时间单调递增(但不必定连续);
    ②速度更快,是传统雪花算法的3~5倍;
    ③支持时间回拨处理,能适应生成临界时间的唯一ID;
    ④不依赖外部缓存和数据库。

    2.4 系统实现流程

    Web端与区块链网络通过Node.js作为中间件连接,参与方可通过录入信息上传,数据信息经智能合约链码确认执行后实现流程交互。Web端使用若依前后端分离版框架作为(B/S)结构,主要技术包括springboot、mybatis、vue、Element UI。底层架构和工具还使用了JavaScript、Java、Mybatis、Maven、FastDFS等。前后端交互使用redis作为数据缓存器,MySQL8作为各级组织权限以及备份数据存储工具。

    管理端为各参与方组织添加用户信息并为其赋予密钥,参与方使用颁发证书后的账户进入相应的信息录入界面,调用后端API接口按照智能合约链码实现数据上链的功能。用户端使用小程序获取溯源ID后通过路由功能实现区块链数据的获取。大米供应链各参与方的信息录入以及信息存储以及查询。大米溯源体系运作流程如图3所示。

    图3 溯源体系运作流程

    消费者在小程序端经区块链网络获取私钥解密获得明文十进制溯源ID。溯源ID逆向查询链上与本地数据库存储的信息时同时向查验节点服务器查询是否预存有该溯源ID,如果有,则读出溯源ID所对应的数据信息,然后查验节点服务器基于该溯源码通过不可逆加密算法计算出的哈希值,将该哈希值发送至区块链节点服务器询问,被询问的区块链节点服务器判断该哈希值与本地存储的哈希值是否相同进行数据校验,若相同,数据未被篡改。将数据返回前端以验证数据内容的正确性。

    粮食防伪溯源系统整体架构如图4所示。可以看出,系统主要包括:数据存储模块、数据处理模块和区块链结构。

    图4 系统结构图

    (1)数据存储模块。主要包括数据存储和数据校验交换机制。联盟链的各组织节点将添加信息上传至区块链和本地数据库中,同时存储数据哈希摘要和RSA私钥。

    (2)数据处理模块。使用改进RSA算法生成的公钥将生成的溯源ID加密为密文后生成二维码。消费者扫描二维码将密文解密后获得溯源ID进行查询,当溯源ID与一个完整供应链区块的溯源ID相对应并进行哈希校验成功后,将链上数据返回在前端,完成正确性验证。

    (3)区块链结构。区块链结构是系统的底层基础,用于各参与方的区块链浏览器中显示区块高度,所参与组织节点,数据哈希以及交易ID、时间戳等,确保区块链数据的准确性。

    3.1 区块链网络

    3.1.1 信息上链

    参与方上传信息经链码校验后将数据在链上公开,各组织和节点对数据形成共识后存入数据区块。以农户为例,前端添加农作物信息通过node中间件将信息上链如图5所示,其中包括作物生长情况,生长环境等信息。

    图5 信息上链详情

    3.1.2 区块链浏览器

    显示当前区块主体如图6所示,区块号为26的数据哈希为880943c5cc531935f3c97cb1fbac432baf 672be6b1d627652026e81f1e16416c,前一区块哈希为7c46b3334826d445d46b45912b3444e80e888ce3a3cbe aaa6c0e08539ffb9af9,其中交易ID为3df8ae998dd63 140d485e3485dfc6e2a4e5c4bfde01ead9ec9df11a3ec05 5ac5,区块所在通道为tracechannel,溯源ID在小程序端获得进行溯源查询。

    图6 区块主体

    将该区块JSON格式的数据展开会得到该区块体业务数据信息,具体样例如图7所示。记录了数据哈希、签名、交易ID、时间戳等。只有具有权限的节点组织能查看相关的数据信息。

    图7 区块体数据信息

    3.2 溯源流程及测试结果

    消费者扫描二维码从系统获取该产品密文,对其解密获取溯源ID,加密后的二维码如图8所示。

    图8 加密后的二维码

    使用微信、QQ等扫码工具会获得bb4c251562621ccb00e0ffdb336c5e3b的随机码,使用具有解密功能的小程序对其进行扫码,对二维码解码得到密文内容及初次扫码时间等,如图9所示。

    图9 密文及基本信息

    将密文解密获取溯源码,使用改进RSA对溯源ID进行加解密,在Python3.8下生成大素数并使用Miller-Rabin算法判定,使生成的模数在不同长度的密钥下基本一致,通过密钥生成算法,通过模数以及指数生成指定长度的密钥对。将其应用在小程序端的防伪模块,使用密钥对对溯源码进行加解密以获取溯源ID,使用蒙哥马利模幂法优化实现快速取模对加解密速率优化。统计传统RSA算法和改进RSA算法在生成密钥时间上的区别,实验结果如表4所示。

    表4 密钥生成平均时间

    由表4可以看出,两种算法生成密钥的时间差别,512bit密钥传统RSA算法是改进三素数RSA算法的1.5倍;
    生成1 024bit为1.66倍;
    生成2 048bit为1.27倍。改进算法使用多素数减少大数运算,能够提高密钥生成效率,但是随着位数的增长时间也会增加。将生成的密钥应用在二维码加密中,对两种算法分别进行测试,分别使用512bit、1 024bit和2 048bit密钥对设计的溯源ID“692308834743484 8256”进行测试,使用3种位数的密钥对该溯源ID进行100次加解密实验并统计,统计时间如表5所示。

    表5 算法加解密平均时间

    由表5可以看出,两种算法加解密所用时间,512bit密钥使用改进RSA的加解密速度是传统RSA的1.58倍,1 024bit时达到1.91倍,2 048bit时达到2.83倍,改进后的RSA算法对小字节的溯源码在加解密过程中效率有着很大的提升。

    消费者扫描二维码后将获取的密文进行解密获取溯源ID如图10所示。

    图10 溯源ID获取

    输入6923088347434848256溯源ID经虚拟机路由IP从区块链网络获取数据,查询链上信息与本地存储的数据库进行哈希比对,数据比对成功则调用每个组织的链码查询数据并返回溯源信息并展示在前端。部分溯源信息展示如下,农户种植信息如图11所示,返回种植作物名称、种植地址、育苗周期、施肥周期等信息。

    图11 农户溯源信息

    原料厂商信息如图12所示,返回产品经过的厂商、何时进行质检,检验结果是否合格等信息。

    图12 厂商溯源信息

    物流流通信息如图13所示,返回物流ID,经过地址以及时间等信息。物流信息的中途定位因是电脑IP模拟定位,所以所经地址没有发生改变,但每次流通的任务编号均不同。

    图13 物流溯源信息

    3.3 性能测试

    Hyperledger Fabric中有设置区块参数的字段,设置可容纳的交易条数为100笔,区块大小为16 Mb,出块时间间隔为2.5 s。使用区块链性能测试工具Caliper对区块链性能进行实时跟踪,Caliper支持的测试指标有事务成功率,事务处理吞吐量(单位:TPS,表示每秒事务处理数),事务延迟及CPU,内存和网络IO的资源消耗等。此处选择事务处理吞吐量、事务延迟作为系统的性能测试指标。

    设计8次性能测试实验,使用Caliper自定义脚本向系统发起交易,每轮交易并发1 000次,共计8 000次,将实验进行的交易笔数和延迟时间等进行记录并计算交易成功率。平均交易时延如图14所示。事务处理吞吐量结果如图15所示。当将测试脚本设定为100~300 TPS时,事务处理吞吐量会伴随交易量的增加而增加,而后会在258笔/s时保持稳定,随后系统因为交易笔数过大,交易时间也会随之增长且该数量内的交易的平均时延在约0.5 s。在8次实验中,部分实验因网络原因导致部分交易无法完成,经计算系统的事物处理成功率平均约为99.97%。多次试验中,区块链网络部署下的链码未出现崩溃现象,性能能够满足溯源系统应用。

    图14 平均交易时延

    图15 交易吞吐量

    (1)区块链的数据公开透明,防篡改以及去中心化等特征在防伪溯源中有着良好的应用前景。本文将大米作为供应链对象,构建了一种基于区块链的粮食供应链溯源模型,搭建了基于Fabric的大米供应链溯源系统,将其从水稻种植到销售整个流程进行模拟应用并进行了系统测试。

    (2)基于雪花算法设计大米流通环节的任务编码以及溯源ID。为实现防伪功能,应用改进RSA加密算法对溯源ID加密生成二维码,并设计了小程序验证了该算法的有效性,对系统进行多次信息录入及查询并进行性能测试,系统表现良好,未出现链码崩溃现象,可以满足消费者溯源查询的基本要求,使用具有数据防篡改功能的区块链网络与小程序结合进行溯源查询,使大米的供应链达到数据可查询,信息真实可靠的目的。

    (3)区块链技术有着天然的数据防篡改优势,但是将区块链应用在溯源系统中,各组织节点共识算法的效率却需要提高,这也是区块链溯源系统后续所需进一步研究的问题。因密钥的生成以及加密二维码生成过程均为小程序实现,所以密钥的分发、存储管理也是需要后续改进的部分。

    猜你喜欢链码密文密钥一种支持动态更新的可排名密文搜索方案黑龙江大学自然科学学报(2022年1期)2022-03-29基于模糊数学的通信网络密文信息差错恢复计算机仿真(2021年10期)2021-11-19密码系统中密钥的状态与保护*北京电子科技学院学报(2020年2期)2020-11-20TPM 2.0密钥迁移协议研究小型微型计算机系统(2018年9期)2018-10-26一种对称密钥的密钥管理方法及系统信息安全研究(2018年1期)2018-02-07一种新压缩顶点链码计算机应用(2017年6期)2017-09-03一种基于密文分析的密码识别技术*信息安全与通信保密(2016年10期)2016-11-11云存储中支持词频和用户喜好的密文模糊检索深圳大学学报(理工版)(2015年5期)2015-02-28无损链码技术的分析与比较计算机工程与设计(2013年6期)2013-09-08边界链码在字母与数字混合识别中的应用郑州大学学报(理学版)(2011年3期)2011-12-02
    相关热词搜索:溯源区块防伪

    • 名人名言
    • 伤感文章
    • 短文摘抄
    • 散文
    • 亲情
    • 感悟
    • 心灵鸡汤