本发明属于食品区块链技术领域,具体涉及一种食品区块链的加密通信方法。
背景技术:
在食品生产过程中需要对各个环节的食品信息进行存储,而一条食品供应链通常会涉及不同的多个参与方,但由于区块链系统上的数据大多都是共享的,因此区块链系统上任一用户都可以获取区块链系统上用户的通信内容,无法保证区块链系统上用户通信的安全性,本发明提供一种食品区块链的加密通信方法,能够保证食品区块链上点对点通信的安全,进而提高食品信息的安全性。
技术实现要素:
本发明的目的在于提供一种能够保证食品区块链上点对点通信的安全,提高食品信息安全性的食品区块链的加密通信方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种食品区块链的加密通信方法,包括食品信息处理节点、消费者管理节点和供应商管理节点,所述该方法包括以下步骤:
s1、首先通过消费者管理节点或供应商管理节点向食品信息处理节点发送加密信息;
s2、然后食品信息处理节点接收加密信息,而后根据本地存储空间中存储的创世区块包含的节点身份和公钥进行确定节点身份和公钥,并对该节点发送的加密信息进行解密,解密后获得随机数a;
s3、然后食品信息处理节点再向确定节点身份和公钥后的消费者管理节点或供应商管理节点发送加密信息;
s4、然后消费者管理节点或供应商管理节点接收信息并进行解密,解密后获得随机数b;
s5、最后食品信息处理节点以及消费者管理节点和供应商管理节点根据获得的随机数a和随机数b执行密钥生成算法,获取密钥和初始化变量,而后根据获取的密钥和初始化变量采用sm4算法的cbc模式进行加密通信。
优选的,所述食品信息处理节点根据本地存储空间中存储的创世区块包含的节点身份和公钥对周期时间内从所述区块链上接收到的加密信息进行身份验证,并获得所述加密信息的节点身份验证结果。
优选的,所述食品信息处理节点、消费者管理节点以及供应商管理节点根据彼此之间的公钥,生成与公钥相对应的私钥,使食品信息处理节点、消费者管理节点以及供应商管理节点在区块链上形成点对点的加密通信。
优选的,所述消费者管理节点或供应商管理节点向食品信息处理节点发送加密信息,包括:
消费者管理节点或供应商管理节点从食品信息处理节点的用户证书中获取公钥;
消费者管理节点或供应商管理节点生成随机数a,采用所述获取的公钥加密所述随机数a,并获取所述加密信息;
消费者管理节点或供应商管理节点通过区块链系统向食品信息处理节点发送所述加密信息。
优选的,所述食品信息处理节点向消费者管理节点或供应商管理节点发送加密信息,包括:
食品信息处理节点从消费者管理节点或供应商管理节点的用户证书中获取公钥;
食品信息处理节点生成随机数b,采用所述获取的公钥加密所述随机数b,获取所述加密信息;
食品信息处理节点通过区块链系统向消费者管理节点或供应商管理节点发生所述加密信息。
优选的,所述食品信息处理节点接收所述加密信息,并进行解密,解密后获得随机数a,包括:
食品信息处理节点通过区块链系统接收消费者管理节点或供应商管理节点发生的所述加密信息;
食品信息处理节点采用与所述公钥相对应的私钥解密所述加密信息,获取所述随机数a。
优选的,所述消费者管理节点或供应商管理节点接收信息并进行解密,解密后获得随机数b,包括:
消费者管理节点或供应商管理节点通过区块链系统接收食品信息处理节点发生的所述加密信息;
消费者管理节点或供应商管理节点采用与所述公钥相对应的私钥解密所述加密信息,获取所述随机数b。
优选的,所述食品信息处理节点、消费者管理节点以及供应商管理节点定期更新各自的公钥,并根据更新后的公钥生成新的私钥,形成新的加密密钥。
与现有技术相比,本发明的有益效果是:
(1)本发明采用sm4算法的cbc模式进行加密通信,能够保证食品区块链上点对点通信的安全,避免了区块链系统上任一用户都可以获取区块链系统上用户的通信内容,无法保证区块链系统上用户通信安全性的问题,进而有助于提高食品信息的安全性。
(2)本发明提供的方法利用食品区块链具有信息不可篡改的特性,进一步提高食品信息的安全性,以保证区块链上各节点信息的可靠性。
附图说明
图1为本发明的整体流程图;
图2为本发明节点身份验证的具体流程图;
图3为本发明节点加密密钥更新的具体流程图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-图3所示,本发明提供一种技术方案:一种食品区块链的加密通信方法,包括食品信息处理节点、消费者管理节点和供应商管理节点,该方法包括以下步骤:
s1、首先通过消费者管理节点或供应商管理节点向食品信息处理节点发送加密信息;
s2、然后食品信息处理节点接收加密信息,而后根据本地存储空间中存储的创世区块包含的节点身份和公钥进行确定节点身份和公钥,并对该节点发送的加密信息进行解密,解密后获得随机数a;
s3、然后食品信息处理节点再向确定节点身份和公钥后的消费者管理节点或供应商管理节点发送加密信息;
s4、然后消费者管理节点或供应商管理节点接收信息并进行解密,解密后获得随机数b;
s5、最后食品信息处理节点以及消费者管理节点和供应商管理节点根据获得的随机数a和随机数b执行密钥生成算法,获取密钥和初始化变量,而后根据获取的密钥和初始化变量采用sm4算法的cbc模式进行加密通信。
其中,s5中密钥生成算法为:
c(0)=hash(random1)
c(n)=hmacc(n-1)(hash(random2))
key=hmachash(random1||random2)(c0+c1)
iv=hmachash(random1||random2)(c0+c2)
其中,random1表示随机数a,random2表示随机数b,n为大于0的正整数,hash表示哈希函数,算法采用sm3算法,hmac是指与密钥相关的哈希运算,算法采用sm3算法,||表示连接操作。
进一步的,食品信息处理节点根据本地存储空间中存储的创世区块包含的节点身份和公钥对周期时间内从所述区块链上接收到的加密信息进行身份验证,并获得所述加密信息的节点身份验证结果。
具体地,食品信息处理节点、消费者管理节点以及供应商管理节点根据彼此之间的公钥,生成与公钥相对应的私钥,使食品信息处理节点、消费者管理节点以及供应商管理节点在区块链上形成点对点的加密通信。
进一步的,消费者管理节点或供应商管理节点向食品信息处理节点发送加密信息,包括:
消费者管理节点或供应商管理节点从食品信息处理节点的用户证书中获取公钥;
消费者管理节点或供应商管理节点生成随机数a,采用所述获取的公钥加密所述随机数a,并获取所述加密信息;
消费者管理节点或供应商管理节点通过区块链系统向食品信息处理节点发送所述加密信息。
具体地,食品信息处理节点向消费者管理节点或供应商管理节点发送加密信息,包括:
食品信息处理节点从消费者管理节点或供应商管理节点的用户证书中获取公钥;
食品信息处理节点生成随机数b,采用所述获取的公钥加密所述随机数b,获取所述加密信息;
食品信息处理节点通过区块链系统向消费者管理节点或供应商管理节点发生所述加密信息。
值得说明的是,食品信息处理节点接收所述加密信息,并进行解密,解密后获得随机数a,包括:
食品信息处理节点通过区块链系统接收消费者管理节点或供应商管理节点发生的所述加密信息;
食品信息处理节点采用与所述公钥相对应的私钥解密所述加密信息,获取所述随机数a。
进一步的,消费者管理节点或供应商管理节点接收信息并进行解密,解密后获得随机数b,包括:
消费者管理节点或供应商管理节点通过区块链系统接收食品信息处理节点发生的所述加密信息;
消费者管理节点或供应商管理节点采用与所述公钥相对应的私钥解密所述加密信息,获取所述随机数b。
具体地,食品信息处理节点、消费者管理节点以及供应商管理节点定期更新各自的公钥,并根据更新后的公钥生成新的私钥,形成新的加密密钥。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。