刘加梦 ,彭绍亮* ,李肯立,蒋洪波,龙承念
1. 湖南大学信息科学与工程学院,湖南 长沙 410082
2. 国家超级计算长沙中心,湖南 长沙 410082
3.上海交通大学电子信息与电气工程学院,上海 200240
随着社会经济水平和思想观念的提高,中医药养生和保健也越来越多的被大家认可。在2020年初新冠肺炎疫情肆虐期间,中医有着更深层次的介入。在我国确诊的8 万多例中,中医治疗的病例超过7万例,占总数的91%。湖北省90%以上的患者接受过不同程度的中医治疗。中医药防治疫情优势凸显,多种有效方药和中成药得到了广泛应用[1]。如今,国家大力发展中医药事业,并把发展中医药摆在更加重要的位置,不断加大政策支持力度,中医药将迎来大好的发展时机,而中医药的春天就是中草药的春天。
中草药作为一种特殊的防病、诊疗商品,关系到群众的切身利益和社会的和谐稳定[2]。然而,在目前的市场环境下,中草药由于存在着一些非法经营、加工、掺假等问题,质量难以得到保证[3]。虽然国家对此高度重视,并且加大了抽查的力度,但是仍然有一些顽固问题难以解决,影响了中草药的发展。中草药的质量对临床治疗的效果有着非常重要的影响[4],为了能够保证中草药的质量,必须了解清楚影响其质量的因素,并提出新的解决方案。
中草药材的道地性是鉴别药材优质与否的专用名词。道地药材又称地道药材,是指历史悠久,产地适宜,品种优良,产量宏丰,炮制考究,疗效突出,带有地域性特点的药材。药材好,药效才会好。只有抓好中药材生产源头,才能促进我国中医药创造性转化和创新性发展[5]。
习近平总书记强调,我们要把区块链作为核心技术自主创新的重要突破口。在政策和市场需求的双驱动下,区块链技术在医药领域的使用迅速扩大。区块链系统的溯源功能,能将生产和流通各个环节记录下来,一旦出现问题能够及时的追踪、处理,防止问题扩大。区块链技术的不可逆、不可篡改等技术特性能保障整个系统按照时间的顺序可靠地进行记录,这样可以对每个流程节点进行定位和回溯,进而锁定责任主体。利用区块链的特性还可以开展一些区块链的存证业务,比如合同的电子签约,双方签订电子合同后,将合同文本的哈希存入区块链,任何一方都可以查询该合同的完整性和真实性。总而言之,区块链技术的特性可以对中草药的上游种植市场、中游流通市场和下游销售市场三个环节发挥巨大的作用。
中本聪(Satoshi Nakamoto)在2008年提出了两个概念。第一个是比特币,这是一种虚拟的加密货币,无需任何中央监管机构或金融实体的支持即可保持其价值。区块链是第二个概念。与比特币相比,区块链的范围要大得多。区块链是一系列包含交易完整列表的区块序列,所有交易将保存在区块链中。如果要篡改一个块,则下一个块中包含的父哈希将与篡改的值不匹配,篡改行为很容易被发现。
区块链是一个分布式的、不变的、透明的、安全的和可审计的分类账,它记录所有执行的交易并在所有参与者之间共享。这是一个分散的解决方案,中间没有任何第三方组织。每笔交易均由参与者达成共识。区块链中每个已完成交易的信息将与所有节点共享。一旦交易记录在分类账中,就无法将其擦除。该系统比第三方的集中交易系统更加透明。在区块链上,任何人都可以尝试通过新记录或修订对区块链分类账进行更新,并使用自己的私钥进行签名。简而言之,区块链是一种网络技术,它可以为用户提供安全共享信息的机会,并且无需中间人或中央管理系统即可实现点对点交易。由于区块链在创世区块之后通过区块数据结构存储所有带有时间戳的历史数据,因此区块链上的任何数据都可以通过区块链结构追溯到其起源。它提高了存储在区块链中的数据的可追溯性和透明度。预计该技术将提供安全、快速、可靠和透明的解决方案,并使全世界的行业和企业发生革命性变化,以推动经济变革[6]。
利用区块链技术可以对中草药的生产、加工、销售等过程全流程跟踪记录,与供应链体系完美契合,增加对中草药产品的把控能力。区块链中每一个块都有加上时间戳,形成一个链,中草药从选种、生产、加工等环节开始,到交易、运输、入库、销售等,可以根据时间顺序上链,形成一个完整的过程记录。记录包括各个环节的关键参数和图像的收集等。利用区块链技术可以更好明确职责,加强信用建档。一旦哪个环节出了问题,事发后很容易定位责任单位和相应的责任人员。假货想要以次充好,难度将大大增加。区块链技术保证上链的数据是有效可靠的,但是不能保证实质物质是正宗真实的,只能帮助锁定造假的责任主体。假如在线下有人对草药进行了替换,一旦被识别了出来,可以根据链上的数据对比追踪到责任人,这就是区块链技术发挥作用的地方。
区块链不可篡改和去中心化的特性可以增加信用背书。由于信息上链的环节较多且节点之间能够互相监督,增加了作假的风险与难度。区块链技术也可以降低供应链成本。区块链打通了供应链中的各个环节,优化中草药产品的供应链,可以减少不必要的重复验证等,提高效率。
在整个中草药质量安全管理模型中,参与的节点包括种植基地、加工厂商、运输公司、经销商以及零售商和消费者等。由于涉及到的主体较多且数据多源异构,因此并不是所有的信息都是可以共享的。系统在保障信息不被篡改的同时也要注意对数据隐私的保护。本文提出了一种信息分段加密的解决方法,对企业的隐私数据进行加密,只有被授权的节点才可以看到该企业的隐私数据,而其他没有权限的节点看到的是该隐私数据的哈希值,从而保证企业的数据隐私。
在信息分段加密模型中利用到的加密算法有对称加密算法AES 和非对称加密算法RSA。对称加密算法是指在加密和解密时使用的是同一个秘钥。而非对称加密算法需要公钥和私钥。如果用公钥对数据进行加密,只能用对应的私钥才能解密。如图1所示,当企业节点 A 发起半公开交易 T(a,b),其中 a 是需要保密的企业生产工艺数据等隐私信息,b 是可以公开的企业信息及草药信息。企业节点 A 使用 AES 对称加密算法生成自己的密钥 A-AES,用密钥A-AES 将本企业的生产工艺数据等隐私数据 a 进行加密成为 A(a),变成半公开交易 T(A(a), b),并发送到区块链网络进行共识。同时用可查看隐私数据的授权节点的公钥K 对本企业的 A-AES 密钥进行RSA非对称加密生成K(A-AES),然后发送给对应的授权节点。
授权节点可以使用自己的私钥k 解密K(AAES),得到企业A 的密钥A-AES,并使用密钥A-AES 解密加密后的半公开交易 T(A(a),b)得到 T(a, b),即可得到自己需要的信息。这里的隐私数据可以被多个节点进行授权并查看,不同授权节点查看只需要调用多次智能合约,数据权限并不会互相影响。
图1 中草药生产供应隐私数据保护Fig.1 Privacy data protection for herbal production and supply
中草药基地种植环节包括种子种苗、灌溉水、土壤、空气等影响中药质量的关键因素[7]。大量的实践经验表明,种子种苗的选育品种越好,其药材的质量也就越好[8]。中药材的生成环境、气候条件不同,生产出来的药材质量也大不相同。将这些生长条件等信息记录在链上,可以对整个中草药的生产过程进行可追溯的记录,方便找到影响该批次中草药质量的原因。由于存在链上的数据是典型的结构化数据,有助于数据分析。如果对这些信息进行研究,更能够从中找出中草药材的生长规律,培育出更好、质量更高的药材。我们利用区块链不可篡改的特性对这些关键因素进行记录,并且使链上的节点可以共享访问这些信息。在这个中草药质量安全管理模型中,主要对中草药的生产记录进行可追溯的监管。图2 是中草药生产信息收集和上链的流程图。如中草药的名字、片区负责人、肥料的品牌等都可录入中草药质量安全监管系统,一些温度、湿度、图像信息和地理位置等信息可以通过传感器被系统自动采集。各传感器具有无线数据发射模块与数据储存模块,可以将采集到的数据进行实时发送。
由于图像等信息占据的存储空间较大,我们采用云存储的方式对这类信息进行处理。当有查询需求的时候通过键值对索引的方式来获得需要的信息。索引值通过哈希函数得到,哈希函数能够将数据打乱混合并且得到一个散列值。这个散列值通常是由一个短的随机字母和数字组成的字符串来表示。
图2 中草药生产信息上链流程Fig.2 The process of uploading Chinese herbal production information to the blockchain
系统中某个时间点的数据在被收集之后,通过SHA256 哈希函数对数据和图像信息进行散列,得到一个信息摘要。这个摘要通常用一个长度为64 的十六进制字符串来表示。图3 展示了中草药生产信息在云存储前生成哈希索引的过程,将图像信息和生产记录的文字信息分别使用SHA256 哈希散列,最终得到一个根哈希,代表该条生产记录的索引值,区块链上的节点可以通过该索引值找到自己想要的信息。
在分布式系统中,分布式算法是必不可少的。必须通过一种制度来保证系统运作的公平,这套制度就是共识机制。
1999年Miguel Castro 和Barbara Liskov 提出的实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)[9]是最常用的BFT 共识机制。该算法将算法复杂度由指数级降低到平方级,大大提高了实际可行性。
图3 生产信息哈希索引Fig.3 Hash index of production information
虽然PBFT 有很多优点,但它有致命的缺点。首先,它在一个完全封闭的环境中工作,其中想要加入或离开的节点必须停止整个系统。其次,PBFT中许多系统成员更希望依靠其他人进行繁琐的工作以降低成本,这对系统安全具有破坏性[10]。
NEO 采用了一种代理拜占庭容错算法——DBFT(Delegated Byzantine Fault Tolerant)。由权益持有者投票选举产生代理记账人,由代理人验证和生成区块,因此共识过程中的节点数量大大降低,解决了BFT 算法的扩容性问题。但是NEO 的DBFT共识机制下只设置了7 个超级节点,这些代理节点由项目方部署并且静态选出,因此被外界质疑为过于中心化。
针对以上几种的典型BFT 算法的分析,本文提出一种新的解决异步分布式系统拜占庭容错问题的算法FPSBFT(Fair Primary Selected for Byzantine Fault Tolerant),可以适用于动态网络,方便节点的加入与退出,同时增加网络的公平性。
本文所讨论的系统中节点类型分为监管节点(Supervision)、主节点(Primary)和从节点(Slave)。该系统中节点总数量为 n,用1,2,3...n 为每个节点编号。节点可以动态地加入或者退出网络,系统中所有节点可以查询得到其他所有节点的证书信息。本文所提出的动态节点协议中新节点加入步骤如下:
首先,新节点需要在NodeCA 处注册。
NodeCA 执行以下三个功能:
(1)NodeCA 根据行业评估和提交的真实身份信息,判断节点是否可以注册并加入系统。
(2)NodeCA 负责系统中副本证书的发行和撤销。
(3)NodeCA 维护一个记录节点身份信息的列表,例如节点ID、IP 地址、公钥和节点状态等。
NodeCA 通过检查节点信息,来过滤掉可能的恶意节点。如果节点通过了检查,NodeCA 将在节点信息列表的末尾添加其身份信息,并为其分配一个数字,例如j。然后,节点j 将向所有副本多播加入请求消息
如果节点j 要离开网络,则它可以在NodeCA处吊销其证书和相关信息。然后,它将退出请求消息
本系统中同时出现的拜占庭错误节点数量最大值为f,f 要满足以下不等式:假设节点总数是n,其中作恶节点有f,那么剩下的正确节点为n - f,意味着只要收到n - f 个消息就能做出决定,但是这n - f 个消息有可能有 f 个是由作恶节点冒充的,那么正确的消息就是n- f - f 个,为了多数一致,正确消息必须占多数,也就是n - f - f > f,但是节点必须是整数个,所以 n 最少是3f+1 个。系统应当尽量使得系统中所有节点的数量不远多于3f+1,因为这些冗余的节点对系统达成共识没有影响,且产生的消息会导致系统性能的下降。
共识过程如图4 所示。
request:客户端向主节点发送请求信息;
prepare:主节点接收到客户端请求后将请求数据里的主要信息提出,并向其余节点发送;
commit:节点们接收到来自主节点的prepare,首先利用主节点的公钥进行签名认证,其次将消息进行散列(消息摘要,以便缩小信息在网络中的传输大小)后签名,向监管节点发送;
distribution:监管节点接收到2f 个commit 信息,并全部签名验证通过,则可以进行到distribution 步骤,向全网其他节点广播;
图4 FPSBFT 共识过程Fig.4 Fair Primary Selected for Byzantine Fault Tolerant
reply:节点接收到监管节点的distribution,并签名验证通过后,则可以把消息存入到本地,并向客户端返回reply 消息。
网络中主节点的选择,关系到系统的公平性和安全性,假如主节点被固定的几个节点担任,则系统会有很大的安全风险。我们的解决办法是为系统中设置一个最近生产队列,如图5 所示,用来存储最近两轮被选中的主节点编号。假如本轮中被选中的主节点的编号与生产队列中的节点编号重复,则重新选举。这种方式解决了部分节点不能被选中为生产节点的不公平问题。在一定程度上增加了系统的安全性。
图5 生产队列Fig.5 The production queue
基于区块链的中草药质量安全管理模型可以实时监测和追踪中草药生产到销售各个环节产生的数据并对其进行相应的处理。本文基于IBM 公司所推出的Fabric 框架进行系统开发。使用Docker 容器和shell 脚本建立配置区块链网络,使用go 语言编写了相关的智能合约和后台服务器,并使用Vue 作为前端框架为使用者提供了相应的前端web 页面以供操作。本系统的架构示意图如图6 所示。
应用层主要以 Web 浏览器的方式供平台参与用户使用,不同的用户权限不同,对数据的操作权限严格划分,从而保证信息的独立性和安全性。
服务层面向业务应用开发人员。基于分布式账本,支持链码、秘钥管理、交易等跟业务相关的功能模块,提供更高一层的应用开发支持。
存储层包括链上存储和链下存储两个部分,几乎所有的区块链系统,尤其是和实体经济、现实世界结合的区块链应用,都需要链上链下协同。企业使用链下数据库可以方便企业对数据进行备份管理等操作,链上数据可以保证企业数据不会被篡改。
物理层通过利用RFID、二维码等方式完成中草药在实际生产流通过程中实际状态的记录,并通过网络上传到系统中。
图6 系统整体架构图Fig.6 Overall architecture of the system
系统管理主要执行对平台节点进行身份审核及验证,对账本和交易进行管理,用户/角色权限管理,平台运维等功能。
基于中草药质量安全管理平台所生产出的产品包装上拥有唯一的溯源条形码或者二维码,当消费者使用手机扫描包装袋上的标识码可以快速查询到产品在区块链网络上存证的信息。图7 为基于区块链的中草药质量安全管理模型的一个示例。消费者通过小程序扫码产品包装上的二维码或者条形码可以得到该产品的生产及溯源信息。图7a、7b 两张图可以看到,中草药生产的详细信息以及链上数据。消费者可以通过小程序查看所购买产品相应的生产、加工,以及运输信息。系统利用区块链网络的不可篡改的特性来保证消费者查看到链上数据的真实性和可靠性。
图7c 是企业级用户使用基于区块链的中草药质量安全管理平台的界面,该企业可以利用此平台向合作的单位发起交易,交易合同及对象信息会被记录在链上,方便监管机构的审查以及减少企业内部的腐败行为。企业只能查看链上的公开信息和已经被授权可以查看的信息,对于未授权的信息不可查看,只能看到未被授权信息的加密哈希值。
图7 系统工作界面Fig.7 System working interface
我们使用Hyperledger Caliper 工具来对中草药质量安全管理平台进行测试。Caliper 是一个区块链性能测试框架,用户可以在定义好测试集的情况下针对自己的区块链网络进行性能测试,获取一系列的测试结果并生成测试报告。图8 为本系统测试的代码,整个测试流程主要包括3 个阶段:
首先在准备阶段,通过脚本文件初始化区块链网络,读取配置文件,接着部署系统的智能合约,启动监控组件等。
在测试阶段,我们通过预定义的benchmark 配置文件,启动客户端子进程进行测试,并返回统计结果。
在最后的报告阶段,Caliper 工具会分析得到的统计结果并生成报告。
图8 性能测试流程Fig.8 Process of performance testing
Caliper 提供了一组接口来供应用程序与后端区块链系统交互。我们进行了七轮测试,分别测试了100 笔交易不同发送速率的吞吐量和时延,从表1 中可以看出,每笔交易的平均时延不超过1s,满足实际供应链的需求。
在本系统中,未被授权的节点想要获取加密的信息可以选择暴力破解AES 算法得到加密的密文,或者选择破解授权节点非对称加密RSA 算法获得对应的私钥k。
混淆性是加密算法安全性测试的一个标准,混淆性越高代表加密算法的加密效果越好,使得对手即使获取了关于密文的一些统计特性,也无法推测其密钥。我们通过密文改变率P 来衡量AES 对称加密算法的混淆性。其中m 为密文的改变位数,n 是密文的总位数。在本次实验中,我们控制明文不变,改变一位密钥位,进行十次实验,引起的变化如图9 所示。经验证,AES 加密算法密文改变率的平均值为0.831,具有高混淆性。
图9 混淆性测试Fig.9 Confusion testing
表1 性能测试结果Table 1 Results of performance testing
获取授权节点的私钥k 需要破解RSA 加密算法,RSA 是使用最广泛的非对称加密算法之一,其安全性依赖于大整数的因数分解的困难性[11-12]。由于RSA 算法在加密和解密过程都是用指数计算,计算工作量巨大,用穷尽搜索法和密码分析法攻击RSA密码系统在现实是不可计算的问题。因此从理论上来讲本模型利用此方法将数据存储在区块链网络上是安全可靠的。
本文利用区块链技术设计了一个中草药质量安全管理模型。本模型相对于其他溯源模型,对中草药源头造假问题做了针对性的处理。从种子种苗阶段开始就利用传感器对土壤、温度等影响中药质量的关键因素进行自动记录。通过利用区块链去中心化、安全、可追溯等特性来提高整个中草药供应链背书可信度,减少造假的风险。本系统通过使用信息分段加密技术对企业的隐私数据和公开数据进行处理,保证在数据不可篡改的同时保护企业的隐私安全;利用共享云存储解决了大文件在本地的存储问题;使用公平主节点选举机制来保证系统的公平性和网络动态平衡。最后我们展示了系统的架构并对系统性能和安全性进行了分析,该系统满足实际中草药质量安全供应的需求,可以实现资源的整合,提高整个供应链的协同效率。本监管模型在西医以及其他监管领域同样适用,但是要针对具体问题做出一定的修改和调整。最后我们想说的的是,区块链只是一种辅助技术,帮助减少制假掺假的行为,并不能完全杜绝这种现象。只有完善法律法规,加大管制力度,才能真正有效的对中草药市场进行规范调整。
利益冲突声明
所有作者声明不存在利益冲突关系。