基于区块链的粮油食品全供应链信息安全管理原型系统
2020-03-09许继平孙鹏程王小艺孔建磊赵峙尧
许继平 孙鹏程 张 新 王小艺 孔建磊 赵峙尧
(1.北京工商大学计算机与信息工程学院, 北京 100048;2.北京工商大学北京市食品安全大数据技术重点实验室, 北京 100048)
0 引言
近年来,食品安全问题受到了国家和政府的高度关注[1-2],这些问题暴露了当前食品安全管理体系中存在的诸多漏洞。粮油是对谷类、豆类等粮食和油料及其加工成品和半成品的统称,是人类赖以生存的必需品,其供应链的安全直接影响粮油食品品质的安全,因此粮油食品供应链信息安全监管尤为重要。目前,在对粮油供应链的研究上,各国政府、相关企业构建了供应链信息监管体系,通过将溯源体系纳入法律体系,构建统一的追踪溯源标识码,对供应链上信息进行追踪溯源[3-12]。然而这并不能完全解决供应链信息安全管理中存在的问题。
图1 粮油食品全供应链流程
粮油食品供应链具有全生命周期长、环节复杂、危害物种类多、信息多源异构等特点,其信息安全管理研究中目前尚未完全解决的问题主要有:一是由于粮油食品供应链参与主体多、环节跨地域、循环周期长,有别于其他食品供应链参与主体,粮食食品供应链各环节参与企业或组织不同,供应链信息共享性差,各环节主体相互之间,尤其是非相邻环节主体之间,存在数据信任问题。二是目前的供应链管理系统大多以参与主体为中心的自建、自主管理为主,在现实层面中主要通过一系列的法律法规、各级政策规范、参与人员的职业道德等进行监管,在与现实层面平行的计算机信息层面中,存在信息丢失和易被篡改的问题。三是在粮油食品全供应链中,目前大都是以静态标识追溯基本信息,而全生命周期多维异构信息的动态实时追溯更加重要。
区块链是一种分布式账簿技术[13-14],具有全网记录、低成本、高效率、安全可靠等技术特点,采用区块链技术可实现网络信息一体化,使供应链上各企业地位平等,推动信息在供应链中高效、流畅地传递,促进信息公开透明,减少中心化带来的信任问题,同时区块链使供应链上信息交互数字化,通过智能合约技术实现数据的核查、校验,使用数字签名和加密技术,使数据安全高效地传输,提高工作效率,保障信息安全可信。近年来,一些研究将区块链技术与食品和农产品供应链结合起来[15-19]。利用区块链技术,能够建立粮油食品全供应链上多角色之间的信任问题,建立可靠的互信机制,解决信息不对称问题[20],为信息安全管理提供真实可信的平台。
本文首先对粮油食品全供应链的运作流程进行分析,基于区块链构建粮油食品全供应链信息安全管理模型,提出基于粮油食品供应链的双模存储机制和智能合约设计方案;然后,基于粮油食品全供应链信息安全模型设计粮油食品全供应链信息安全管理原型系统架构,并提出原型系统设计方案;最后,结合实际案例对所设计的系统进行验证和分析。
1 粮油食品全供应链信息安全管理模型
1.1 粮油食品供应链分析
在粮油食品全供应链中,参与活动的主体主要是:原材料供应商、生产企业、加工制造企业、分销商、销售商、消费者。这些主体之间并不都是相互关联的,目前大多以粮油加工企业为供应链的核心,其通过整合上游种植户、下游销售部门,并借助研究机构、物流企业、金融机构等优势对物流、商流、信息流、资金流实施供应链管理。这种模式下供应链参与企业众多,节点企业的信息水平参差不齐,不同的标准和不一致的存储格式也使信息无法顺利传递且需求信息具有可变更性和时效性。供应链节点是独立的利益体,只专注于各自领域的数据和业务处理,由于缺乏相应的接口标准和规范,它们之间没有信息共享和业务集成,形成了“信息孤岛”。供应链中的信息孤岛不仅影响整个供应链的企业信息建设和信息共享,而且严重影响对供应链的信息监管和追溯。
粮油食品全供应链流程如图1所示。粮油食品全供应链上包括种植、仓储、加工、物流和销售等环节。信息安全管理系统需要将供应链所有节点的数据信息都记录在数据库中,其数据信息主要包括作物的基本属性、作物的品质信息、各环节的环境信息、作物加工的流程和操作参数、各环节的管理信息等。为实现粮油食品全供应链信息安全管理系统,需要通过物联网技术采集供应链各环节的数据信息。
1.2 粮油食品全供应链信息安全管理模型
针对粮油食品全供应链的信息安全管理,结合区块链技术,建立与粮油食品全供应链环节对应的区块链节点,采用区块链链式存储和关系型数据库双模存储机制,构建粮油食品全供应链信息安全管理模型,如图2所示。
图2 粮油食品全供应链信息安全管理模型
整个粮油食品全供应链信息安全管理模型分为3部分,包括:粮油食品全供应链信息采集系统、数据管理网络、应用平台。粮油食品供应链上各节点都包含大量的数据,这些数据通过数据采集终端(包括计算机、手机、各类物联网设备等)采集并经过一定的处理后,上传至数据管理网络中。数据管理网络采用的是区块链和关系型数据库构成的双模存储机制,将信息采集系统处理过的数据,通过调用部署在区块链网络上的智能合约校验,在区块链网络中对数据进行广播,使各节点对上传的数据达成共识,然后将信息经过哈希算法转换生成的数据摘要打包成区块保存到区块链网络上的分布式账本中,同时供应链的完整数据信息和智能合约返回的区块和数据间的映射关系,如区块的高度、交易ID等,都将保存到链下关系型数据库中。应用平台是基于粮油食品全供应链信息采集系统和数据管理网络的综合应用,其主要服务于粮油食品供应链各环节的相关企业、监管部门和消费者。这些用户通过使用平台提供的相应功能模块执行相应的功能,比如监管部门对供应链进行实时监控、消费者对产品进行溯源查询、企业对自己的信息进行管理和分享等。
数据信息通过数据采集终端获取,经由智能合约验证后形成数据摘要,同时将完整数据上传到关系型数据库中存储。数据的防篡改机制除了依靠区块链网络自身具有的不可篡改的特点外,还通过智能合约监控区块链网络库和关系型数据库间的映射关系,防止信息发生篡改。粮油食品全供应链信息安全主要面向各相关企业、消费者、监管部门,因此利用区块链赋予各角色不同的权限,通过智能合约依照权限查询或提交相应的信息,既保证了信息的公开透明,又保证了各企业的商业隐私。
1.2.1“链上+链下”双模存储机制
粮油食品供应链具有节点多、供应链长和涉及面广的特点,链上各环节都包含大量的数据,如果一次性上传到区块链网络中,上传速度慢,区块链的负荷大,运行成本高,而且对区块链网络中每个节点的硬件设施要求都会很高,在本文的模型中,提出一种“链上(on-chain)+链下(off-chain)”双模存储机制,通过将粮油食品供应链上各环节的详细数据信息经过智能合约验证,最终与数据所在的区块链位置信息一同存入关系型数据库中。区块链网络中存储的数据为经过哈希计算的数据以及该数据对应的唯一标识码。通过这种方式,既提高了区块链的运行效率,同时保障数据的安全可信。针对粮油食品全供应链各环节的信息安全管理和追溯,构建了粮油食品全供应链数据存储模型,如图3所示。
图3 粮油食品全供应链数据存储模型
1.2.2粮油食品供应链智能合约
智能合约是一种去中心化的、可自行校验、自动执行核心内容的有约束力的数字化协议,通过设置一些可自动触发的执行条件,为区块链网络中的用户提供信息交互、价值转移等功能[21]。以Hyperledger Fabric区块链平台为例,其运作流程如图4所示。当智能合约代码编写完成,通过区块链上的节点将智能合约安装到区块链网络中,然后进行初始化和实例化。当节点上传的信息或者调用的功能满足相应合约的触发条件后,系统将自动调用合约实现相应的功能。通过编写智能合约实现对供应链各个环节产品的智能监控。如果已有现成的物联网系统和接口,可以通过接口连接到区块链网络,一旦数据有异常,就会自动触发报警合约,报警信息会发送到企业或监管部门。这些产品标准可以参考粮油食品行业标准、专家意见等,将相应的标准作为智能合约的一部分,验证相应的合约数据和监控链上的交易信息。如图5所示,根据粮食行业国家标准, 在智能合约中预先设置数据准入条件,如小麦杂质质量分数在1.0%以内、含水率在12.5%以内等。若通过此环节的粮油食品供应链数据满足预置的数据准入条件,粮油食品可进入供应链的下一个环节,否则系统会提示警告,同时追踪报警源头方便企业和监管部门及时排査并处理安全隐患,避免质量安全事件的发生。
图4 智能合约流程
图5 粮油食品供应链智能合约
2 粮油食品全供应链信息安全管理原型系统设计
2.1 系统架构
在本文提出的粮油食品全供应链信息安全管理模型基础上,设计了粮油食品全供应链信息安全管理原型系统。系统架构如图6所示,分为物理层、网络层、数据库层和应用层。其中区块链技术主要应用于数据库层和网络层。
图6 粮油食品全供应链信息安全管理原型系统架构
物理层主要是数据采集的终端,用于对粮油食品全供应链各环节进行数据采集并使用通信协议上传到系统中。
网络层主要包括网络结构和通信协议。网络主要分为两大类,一类是物联网设备在数据传输时常用的蓝牙、ZigBee、RFID等通信机制;另一类是软件在运行中传输常使用的通信机制,如以太网、WiFi、4G等。本系统通信协议应用的是超级账本平台的数据传输协议,包括Grpc协议和Gossip协议,以提高共识速度和网络安全。
数据库层用来存放系统中所有的数据,由两个部分组成。一部分是区块链网络中的分布式账本,记录了原始数据的数据摘要、时间戳、原始数据的标识码、数字签名等,同时网络中的数据设有访问权限,不同权限的节点查看的信息数量不同;另一部分是链下数据库,主要用来存储通过智能合约验证后的完整原始数据以及其与区块链网络间的映射关系信息。通过这种方法,避免了区块链存储能力不足的问题,同时保证了数据信息的安全可信。
应用层是在已有的区块链网络的基础上,通过底层区块链提供的API接口,设计一个完整的信息安全管理平台,面向的对象主要包括消费者、企业、监管部门和可信的服务提供商,用来实现系统的业务需求。
2.2 系统设计方案
通过对粮油食品全供应链特点的分析,结合供应链上下游企业的实际生产过程,确定了系统的架构。系统主要面向供应链的上下游企业、监管部门和消费者提供服务,包含供应链信息管理、用户管理、质检信息管理、产品溯源和监控预警5个模块,如图7所示。其中,供应链信息管理中包括种植管理、仓储管理、加工管理、物流管理和销售管理5个子模块,主要实现的是粮油食品全供应链生产管理和溯源追踪信息的采集。用户管理为粮油食品全供应链上各环节的不同角色分配不同的功能权限,不同类型的用户相互合作,共同完成粮油食品全供应链信息安全管理系统的运行。质检信息管理提供质检部门的检测信息。监控预警和产品溯源分别为监管部门和消费者提供供应链上的信息。监管部门通过监控预警模块对供应链上下游企业上传的数据信息以及相关质检单位出具的检验报告进行检查分析,实施对粮油食品全供应链的信息管理。
图7 粮油食品全供应链信息安全管理系统
2.3 系统实现
2.3.1平台选择
区块链通常被分为公有链、联盟链和私有链。公有链是完全开放的,任何人都可以在公有链上进行交易操作,以比特币、Ethereum(以太坊)等为代表。联盟链是一部分企业或组织组成的,其加入和退出都要经过链上组织的认可,具有部分去中心化的特点,以Hyperledger为代表。私有链一般在公司或组织内部使用,其链上的操作权限都是由一个组织掌握,主要被用来进行内部工作的管理。表1展示了如今两大热门区块链平台的对比分析。通过对比分析,以太坊作为公有链平台,其共识基础为PoW(基于工作量的证明),并不适合应用在供应链这样交易频繁、以信息交互为主的非金融领域。同时Hyperledger作为联盟链平台,在高可用、高性能和隐私保护上优势更明显,其特有的角色权限机制可以使监管部门拥有监管权,也能够对其他角色开放对应的权限,既保护了供应链上的隐私信息,又保证了信息的公开透明。因此本文选择Hyperledger下的Fabric平台来构建粮油食品全供应链信息安全管理系统。
表1 区块链平台对比
2.3.2系统实现过程
软件系统运行于供应链各个环节,功能是记录当前时刻生产流通情况,读写各环节标识信息,向数据库和区块链网络中发送和接收供应链相关数据,提供查询、追溯、监控等功能。整个系统包含的子系统有粮油食品全供应链区块链系统、粮油食品全供应链信息安全数据库、粮油食品全供应链信息安全管理平台等。系统采用浏览器/服务器(B/S)结构,由数据库、服务器端和用户端组成。
软件平台基于TCP/IP协议的网络技术,结合区块链、数据库、软件工程和数据编码等,以Hyperledger Fabric作为区块链平台,MySQL作为云数据库,Go、JavaScript、Html、Css等作为开发语言构建,使用Nodejs、Bootstrap等框架开发,以Json格式统一处理和发送数据。系统采用浏览器/服务器(B/S)结构,运行在广域网和局域网中。
(1)数据库
数据库部分采用区块链和关系型数据库结合的设计方法。区块链部分基于Fabric开发,区块信息以文件的形式存储在文件系统中,历史数据和区块链的索引存储在默认的levelDB数据库中。Fabric当前支持levelDB和couchDB两种非关系型数据库,考虑到粮油食品供应链平台调用智能合约产生的业务数据种类多,对于查询的需求较高,因此采用支持富查询的couchDB数据库作为Fabric的状态数据库。关系型数据库基于MySQL开发,在确定需要追溯的数据信息后,建立粮油食品全供应链信息安全数据库,对粮油食品全供应链各环节的信息及区块链网络中的关键信息进行记录。数据库内容由标识码、文字、数字、图像等构成,并根据供应链流程及各环节内部流程作为区分构建独立又相互联系的数据表和库,并通过中心化的信息安全管理平台去采集和检索供应链各环节的信息。
(2)服务器端
区块链平台Hyperledger Fabric需要运行在Linux环境下。原型系统运行在VMware虚拟PC软件下的Ubuntu操作系统中,Fabric网络的运行、智能合约的安装、测试和实例化都在Ubuntu系统中的Docker容器中进行。Fabric网络采用单机多节点的部署方式,将粮油食品全供应链上的5个典型环节和监管部门作为联盟链中的组织,对应Fabric中6个组织,其中每个组织下包含2个peer节点,用于实现各组织的背书、记账等功能。同时整个网络还包含1个CA节点和1个orderer节点,CA节点用于管理系统证书的分发验证,orderer节点用于对数据进行排序服务以生成区块。后端数据服务器主要包含数据处理模块和区块链网络两个部分。数据处理模块基于nodejs框架开发,负责接收前端门户网站传来的表单数据,并统一数据格式,然后通过调用链码将数据上传到区块链网络中,通过验证的数据详细信息会保存到云数据库中,部分公开数据和完整数据的哈希值会经过共识生成区块保存到区块链账本中。区块链网络能够保证供应链信息的真实可信、不可篡改。
Fabric区块链平台提供了一个强大的角色管理和权限把控机制。通过Fabric CA颁发证书,再通过证书生成Token,最终将Token发送给用户,作为各节点用户在网络中的身份凭证。其中证书遵循X.509标准,客户端使用SHA-256算法对证书进行散列,满足数字签名的参数格式,数字签名采用非对称加密算法ECDSA生成的私钥加密,通过核验数字签名的一致性来进行身份认证。当用户需要使用平台进行功能操作时,系统会验证证书的有效性,然后再调用合约对区块链网络进行操作。区块链上各节点对数据信息进行读写操作时,需要相对应的权限去触发不同的合约,当用户权限不够时,只能看到部分公开的数据,无法查看完整数据。
Fabric区块链平台共识算法采用可插拔设计,目前Fabric 1.1版本支持3种共识机制,分别是Solo、Kafka和PBFT(实用拜占庭算法)。交易的共识包括3个处理阶段:提议阶段、打包阶段和验证阶段。其中Solo共识模式是Fabric用来进行开发测试的共识算法,只有orderer服务节点负责接收交易信息并排序,是最简单的一种排序算法,不适合大规模的实际生产环节;Kafka共识模式是通过Kafka对所有交易信息进行排序,支持对系统中多个channel进行单独排序,是一种支持多通道分区的分布式的流式信息处理平台,具有崩溃容错机制,但并不能提供对网络中恶意攻击的保护; PBFT是基于BFT(拜占庭算法)改进的分布式容错技术,主要用来解决分布式系统中的信任问题,使区块链网络中的各节点形成对网络状态和数据的共识, PBFT降低了拜占庭协议运行的复杂度,提高了系统的运行效率,适合对强一致性有要求的区块链应用场景。为了验证模型可信性,简化系统流程,采用Solo共识模式构建原型系统的区块链网络。
Hyperledger Fabric的智能合约又被称为链码 (Chaincode)。Chaincode用来表示系统流程的业务逻辑,它描述了用户的需求,并将其代码化。链码被部署在Docker中,Docker是Hyperledger Fabric运行的容器,用于运行区块链网络。一旦链码被部署,它将获得用户可以用来交互的唯一地址,然后通过Chaincode客户端可以调用链码,触发它的功能。链码作为一种图灵完备的语言,使用Go语言编写。图8所示的例子给出了链码的一些片段,这些代码实现了系统的主要功能。图8a展示了种植模块数据采集及查询的智能合约代码。首先进行的是智能合约的初始化过程,然后编写实现种植模块功能的接口代码,包括调用信息上传功能和查询功能。图8b实现了种植模块的数据上传功能和种植模块的数据信息查询功能。将通过Web前端提交的表单信息利用合约代码进行验证,符合要求的会输出“Success”,否则系统会提示数据上传失败。
图8 智能合约展示
(3)用户端
Web前端门户网站是基于当前主流的TCP/IP协议,以JavaScript、Html、Css等作为开发语言,基于Bootstrap、jQuery、Ajax等技术栈开发,并使用art-template模板引擎进行渲染的系统对外可视化操作窗口。通过门户网站调用后端服务器提供的API接口,实现系统的各项功能,包括用户注册、信息采集、信息查询、实时监控等功能。用户注册通过调用用户注册文件在区块链网络中注册用户信息,区块链网络会赋予用户一个唯一的密钥。用户通过提供密钥验证权限,将门户网站中填写的供应链数据通过表单发送到后端服务器,服务器会对数据进行预处理,统一数据格式。然后,调用链码上传数据到区块链网络中,编码模块会赋予属于一个唯一的ID,当数据上传成功后,合约会返回数据在区块链网络中的状态信息并存入链下数据库中,完成供应链信息的采集。
3 应用案例分析
通过对山东省某粮食企业下的面粉供应链进行实地调研,该企业下的面粉生产涉及从小麦到面粉销售的完整供应链环节,包含小麦的收购、仓储、加工、运输、销售等流程,收购和仓储环节、加工环节、运输和销售环节分属于不同子工厂,各环节都有比较详细的信息记录,但是各环节之间的信息并不能很好地互联互通,不能形成一条完整的信息链,从而导致信息处理效率低、查询繁琐。经过分析,采用本研究设计的粮油食品供应链信息安全管理原型系统对其信息管理进行优化。
图9 系统工作界面
系统运行界面如图9所示。图9a为整个系统的用户登录界面,其提供供应链各节点的登录服务和产品溯源服务。系统用户登录后会进入系统的监控界面,如图9c所示,从界面中,用户能够监控整个区块链网络的运行区块,包括查看区块信息、链码数量、节点数量等。用户可以通过信息采集功能上传供应链数据信息,系统会自动调用智能合约对数据进行相应的处理,检查数据是否符合条件并赋予其唯一的编码。然后数据信息会保存到区块链网络中,保证数据不可篡改且可追溯。不同环节的信息都会上传到系统中,保存到同一条区块链上,当产品出现问题时,监管部门和企业通过区块链网络和各环节编码能够快速追踪产品信息,及时发现问题源头,并根据产品信息哈希值判断产品真伪和数据信息是否被篡改。图9c下方为最新生成区块信息,点击交易细节能够查看区块中的详细信息,如图9d所示。通过登录界面上的产品追溯系统,消费者能够利用产品追溯码查询到产品在整个供应链中的信息,提高了产品的市场信任度,有利于企业的发展,如图9b所示。
与传统粮油供应链管理系统相比,区块链驱动的粮油食品供应链管理系统具备去中心化的特性,不依赖某个组织和个人,利用共识机制解决了传统粮油供应链管理中的“信任问题”,作为一种不可篡改的分布式记账系统,链上数据具有时间戳且不可篡改。区块链系统中各节点企业信息上传标准统一,保障了供应链上的数据能够快速交互,打破了传统粮油供应链中的“信息孤岛”,建立了全新的供应链信息管理生态,一定程度上实现了粮油供应链上各利益相关者的协作和校验,实现了资源的有效整合和效益的最大化。
4 结束语
基于区块链建立了粮油食品全供应链信息安全管理原型系统。首先,在分析供应链环节的基础上构建了粮油食品全供应链信息安全管理模型,为改善链式冗余存储的效率问题,设计了区块链和关系型数据库相结合的双模数据存储机制,为实现产业链业务数据交互和全供应链危害物信息监管,设计了定制化部署的粮油食品供应链智能合约;然后,以管理模型为基础,提出了原型系统架构和设计方案,并基于Hyperledger Fabric框架,给出原型系统的数据库、服务器端和用户端的具体实现过程;最后,结合具体的应用案例,分析了本原型系统的特点和优势。设计的原型系统能够实现粮油食品全供应链环节信息的共享和互通,并保证信息存储和传输的安全可靠,防止信息孤岛和恶意篡改,为供应链参与主体、消费者、第三方监管部门提供了可信的产业链信息来源,同时为粮油食品供应链危害物风险评估、预测和预警提供了完备的数据基础。