基于区块链的商品真伪验证方法和系统与流程

文档序号:24558336发布日期:2021-04-06 12:08阅读:81来源:国知局
基于区块链的商品真伪验证方法和系统与流程
本发明属于产品防伪
技术领域
,具体涉及一种基于区块链的商品真伪验证方法和系统。
背景技术
:每个商品都对应有代表其身份标识的唯一序列号,该序列号通常以条形码或二维码的方式标识于商品上,以给消费者提供该商品的真伪验证信息。但是,由于序列号容易被仿造,这样,即使商品提供了用于真伪验证的序列号,但还是会给消费者带来难以辨别真伪的问题,或者对序列号的信赖度降低的问题。技术实现要素:为了解决现有技术中存在的上述问题,本发明提供了一种基于区块链的商品真伪验证方法及系统。本发明要解决的技术问题通过以下技术方案实现:第一方面,本发明实施例提供了一种基于区块链的商品真伪验证方法,包括:发送节点基于有限域的grs码生成公钥和私钥;所述发送节点采用所述私钥对商品信息进行数字签名,并将所述数字签名、商品信息以及所述公钥广播于所述区块链中;且所述区块链存储各个商品的商品信息以及所述商品信息与购买状态之间关系的商品列表清单;接收节点接收所述发送节点发出的商品验证请求,所述商品验证请求包括所述商品信息和所述数字签名;基于所述商品信息采用所述公钥对所述数字签名进行验证;当所述数字签名验证通过时,所述接收节点在所述商品列表清单中,将与所述商品名称对应的购买状态设置为已购买状态,更新所述商品列表清单,并将更新后的商品列表清单打包成区块数据;所述接收节点向共识节点发送所述区块数据,以使所述共识节点验证所述区块数据。在本发明的一个实施例中,基于有限域的grs码生成公钥和私钥,包括:构造一基于有限域的grs码;根据所述grs码生成公钥以及私钥。在本发明的一个实施例中,所述采用所述私钥对商品信息进行数字签名,包括:对所述商品信息做哈希运算,得到摘要值;使用所述私钥对所述摘要值进行加密,得到数字签名。在本发明的一个实施例中,还包括:当所述数字签名验证失败时,维持所述商品列表清单的原有状态。在本发明的一个实施例中,还包括:接收所述发送节点发出的退货请求,所述退货请求包括退货商品的商品信息;根据所述退货请求,获取更新后的商品列表清单;从所述更新后的商品列表清单中遍历出退货商品的所述商品信息,并将与所述退货商品所对应的购买状态更改为未购买状态。第二方面,本发明实施例提供了一种基于区块链的商品真伪验证系统,包括发送节点和接收节点,其中:所述发送节点基于有限域的grs码生成公钥和私钥;所述发送节点采用所述私钥对商品信息进行数字签名,并将所述数字签名、商品信息以及所述公钥广播于所述区块链中;且所述区块链存储各个商品的商品信息以及所述商品信息与购买状态之间关系的商品列表清单;接收节点接收所述发送节点发出的商品验证请求,所述商品验证请求包括所述商品信息和所述数字签名;基于所述商品信息采用所述公钥对所述数字签名进行验证;当所述数字签名验证通过时,所述接收节点在所述商品列表清单中,将与所述商品名称对应的购买状态设置为已购买状态,更新所述商品列表清单,并将更新后的商品列表清单打包成区块数据;所述接收节点向共识节点发送所述区块数据,以使所述共识节点验证所述区块数据。在本发明的一个实施例中,基于有限域的grs码生成公钥和私钥,包括:构造一基于有限域的grs码;根据所述grs码生成公钥以及私钥。在本发明的一个实施例中,所述采用所述私钥对商品信息进行数字签名,包括:对所述商品信息做哈希运算,得到摘要值;使用所述私钥对所述摘要值进行加密,得到数字签名。在本发明的一个实施例中,还包括:当所述数字签名验证失败时,维持所述商品列表清单的原有状态。在本发明的一个实施例中,还包括:接收所述发送节点发出的退货请求,所述退货请求包括退货商品的商品信息;根据所述退货请求,获取更新后的商品列表清单;从所述更新后的商品列表清单中遍历出退货商品的所述商品信息,并将与所述退货商品所对应的购买状态更改为未购买状态。本发明实施例提供的基于区块链的商品真伪验证方法和系统,通过发送节点采用有限域的grs码生成公钥和私钥,并采用该私钥对商品信息进行数字签名,接收节点采用该公钥对该数字签名进行验证,能够对商品的真伪进行有效验证,可信度非常高;且通过是否通过验证的状态更新区块中的商品列表清单,可以做到区块链中商品信息的有效管理。以下将结合附图及实施例对本发明做进一步详细说明。附图说明图1是本发明实施例提供的一种基于区块链的商品真伪验证方法的流程图;图2是本发明实施例提供的一种基于区块链的商品真伪验证系统的结构示意图。具体实施方式下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。为了保证用于真伪验证的商品信息真实有效,本发明的实施例提供了一种基于区块链的商品真伪验证方法及系统。第一方面,本发明实施例提供了一种基于区块链的商品真伪验证方法。请参见图1,图1是本发明实施例提供的一种基于区块链的商品真伪验证方法的流程图,本发明实施例的基于区块链的商品真伪验证方法,包括s11~s15:s11、发送节点基于有限域的grs码生成公钥和私钥。本发明实施例的方案中,发送节点可以是生产厂家,接收节点可以是消费者的客户端;生产厂家构建自己的公钥和私钥,且该公钥和私钥与一般公钥和私钥不同的是,其是基于有限域的grs码构建生成的。生产厂家基于该私钥对商品信息进行数字签名,接收节点采用该公钥对该数字签名进行验证,以证明该商品信息的真伪。可选的,该步骤可以包括s111~s112:s111、构造一基于有限域的grs码;s112、根据grs码生成公钥以及私钥。s12、发送节点采用私钥对商品信息进行数字签名,并将数字签名、商品信息以及公钥广播于区块链中;且区块链存储各个商品的商品信息以及商品信息与购买状态之间关系的商品列表清单。可选的,采用私钥对商品信息进行数字签名,包括s121~s122:s121、对商品信息做哈希运算,得到摘要值;s122、使用私钥对摘要值进行加密,得到数字签名。s13、接收节点接收发送节点发出的商品验证请求,商品验证请求包括商品信息和数字签名;基于商品信息采用公钥对数字签名进行验证。采用公钥对数字签名进行验证的过程可以包括s131~s133:s131、采用公钥对该数字签名进行解签,得到待验证摘要值;s132、对商品信息做哈希运算,得到摘要值;s133、将待验证摘要值和摘要值进行比较,若验证摘要值和摘要值相同,说明验证通过;否则说明验证失败。s14、当数字签名验证通过时,接收节点在商品列表清单中,将与商品名称对应的购买状态设置为已购买状态,更新商品列表清单,并将更新后的商品列表清单打包成区块数据。每个区块链节点皆预存有商品列表清单,并且,该商品列表清单已被共识验证。商品列表清单记录有各个商品的商品信息,该商品信息包括商品名称、编号及购买状态之间关系。一般的,每个商品皆有着唯一对应的编号,该编号可以为条形码或者其它字符串。当用户购买了某个商品后,该商品的唯一编号已“被消费掉”,若后续市面上还存在相同编号的商品时,该商品应该被伪造的。因此,通过预先构建一个商品列表清单,借助区块链技术,能够打造一个各个商家共同使用的防伪系统。可选的,本发明的方法还可以包括:当数字签名验证失败时,维持商品列表清单的原有状态。可选的,本发明的方法还可以包括:接收发送节点发出的退货请求,退货请求包括退货商品的商品信息;根据退货请求,获取更新后的商品列表清单;从更新后的商品列表清单中遍历出退货商品的商品信息,并将与退货商品所对应的购买状态更改为未购买状态。s15、接收节点向共识节点发送区块数据,以使共识节点验证区块数据。可选的,共识节点验证区块数据,可以包括s151~s153:s151、在检测到共识验证失败的次数大于预设阈值时,确定恶意区块链节点,恶意区块链节点为未签署验证区块数据并导致共识验证失败次数最多的节点;s152、禁止恶意区块链节点参与共识验证,并在剩余的共识节点重新分配股份并共识验证区块数据;s153、在检测到共识验证失败的次数小于预设阈值时,继续共识验证区块数据。本发明实施例提供的基于区块链的商品真伪验证方法,通过发送节点采用有限域的grs码生成公钥和私钥,并采用该私钥对商品信息进行数字签名,接收节点采用该公钥对该数字签名进行验证,能够对商品的真伪进行有效验证,可信度非常高;且通过是否通过验证的状态更新区块中的商品列表清单,可以做到区块链中商品信息的有效管理。第二方面,本发明实施例提供了一种基于区块链的商品真伪验证系统。请参见图2,图2是本发明实施例提供的一种基于区块链的商品真伪验证系统结构示意图,本发明实施例的基于区块链的商品真伪验证系统,包括发送节点21和接收节点22,其中:发送节点21基于有限域的grs码生成公钥和私钥;发送节点21采用私钥对商品信息进行数字签名,并将数字签名、商品信息以及公钥广播于区块链中;且区块链存储各个商品的商品信息以及商品信息与购买状态之间关系的商品列表清单;接收节点22接收发送节点21发出的商品验证请求,商品验证请求包括商品信息和数字签名;基于商品信息采用公钥对数字签名进行验证;当数字签名验证通过时,接收节点22在商品列表清单中,将与商品名称对应的购买状态设置为已购买状态,更新商品列表清单,并将更新后的商品列表清单打包成区块数据;接收节点22向共识节点发送区块数据,以使共识节点验证区块数据。本发明实施例提供的一种基于区块链的商品真伪验证系统,对应于上述第一方面的基于区块链的商品真伪验证方法,因此关于各步骤的详细过程以及具体效果不再赘述。本发明实施例提供的基于区块链的商品真伪验证系统,通过发送节点采用有限域的grs码生成公钥和私钥,并采用该私钥对商品信息进行数字签名,接收节点采用该公钥对该数字签名进行验证,能够对商品的真伪进行有效验证,可信度非常高;且通过是否通过验证的状态更新区块中的商品列表清单,可以做到区块链中商品信息的有效管理。由于本发明的基于区块链的商品真伪验证方法和系统均采用了基于有限域的grs码的数字签名方法及验证方法,下面,在上述第一方面的方法和第二方面的系统的方案的基础上,作为更优先的方案,对所涉及的基于有限域的grs码的数字签名方法及验证方法进行详细说明。示例的,基于有限域的grs码的数字签名方法,包括s341~s344:s341、构造一基于有限域的grs码。示例的,本步骤可以包括:构造一有限域,并根据有限域构造一个码长为n、维数为k且纠错能力为t的grs码(广义reed-solomon码),其中,n、k和t均为任意正整数,且满足其中,有限域可以选择包括q个元素的有限域fq,且选取一正整数m,使q满足q=2m。需要说明的是,本发明实施例之所以选择基于有限域fq而不是选择基于通常的二进制,是因为在面对isd译码攻击时,对于安全级别相同的码(比如:goppa码),基于有限域fq的goppa码相比基于二进制goppa码具有更小的公钥量。举例来说,具有128的安全级别的基于有限域的goppa码,公钥量为725740bits;而具有128的安全级别的基于二进制goppa码,公钥量为1537536bits。相比来说,基于有限域fq的goppa码的公钥量要比基于二进制goppa码的公钥量小近一个数量级。此外,本发明之所以选择grs码而不是别的码(比如goppa码),是因为grs码是极大距离可分(mds)码,码的性能好;且grs码现有编译码器在各领域应用多,实用性好;此外,grs码比goppa码更灵活;以及grs码具有可发展性更强的优势。s342、根据grs码生成公钥以及私钥。基于有限域的grs码生成公钥以及私钥,可以保证公钥以及私钥具有的安全性能更高且占空间更小,且针对不同的物流信息生成不同的公钥以及私钥。一个公钥只能对一个加密标签进行解密。可选的一种实施方式中,s342可以包括步骤s3421~s3424。s3421、在有限域内选取(n-k)×(n-k)的非奇异矩阵、n×n的稠密矩阵以及n×n的稀疏矩阵,且稠密矩阵的秩为z,稀疏矩阵的平均行重和列重为x,其中,z为自然数,且z小于n,x小于n。作为本发明的一种实施方式,可以采用稠密矩阵的秩z远小于n,且稀疏矩阵的平均行重和列重x远小于n。具体的,稠密矩阵可以用矩阵的转置矩阵与矩阵的乘积表示,即其中为有限域fq上定义的两个z×n的矩阵,且矩阵的秩为z。可选的,本发明的方案,对参数m、n、k、t以及x的选取有以下几种选择可供参考,参见表1,有且不限于这几种,但考虑到方案的正确性、可行性与安全性,以及公钥量和签名长度,本发明的方案优选采用表1列出的三组参数值。表1参数选取mnktx1240944074101~1.116655346551691~1.11010221002101~1.1s3422、将稠密矩阵以及稀疏矩阵进行矩阵的加法运算,得到变换矩阵。具体的,加法运算采用公式(1):其中,表示变换矩阵,表示稠密矩阵,表示稀疏矩阵。s3423、将非奇异矩阵的逆矩阵、校验矩阵以及变换矩阵的转置矩阵进行矩阵的乘法运算得到公钥;其中,校验矩阵为grs码的(n-k)×n矩阵。具体的,乘法运算采用公式(2):其中,表示公钥,表示非奇异矩阵的逆矩阵,表示校验矩阵,表示变换矩阵的转置矩阵。s3424、将非奇异矩阵校验矩阵变换矩阵与译码算法作为私钥。可以理解的是,公钥用于对外公开,私钥用于存储。公钥和私钥是一个算法中不同的两个参数集合,但内在又相关联的参数集合,公钥和私钥是同时生成,但可以独立使用的。s343、对商品信息做哈希运算,得到摘要值。哈希运算指的是可将任意长度的消息映射成固定长度消息的算法,本发明实施的哈希运算可以采用md4、md5或者sha256中的任意一种。其中,商品信息作为未经过加密的明文,明文即人可直观地理解其意思的字符,通过哈希算法进行第一加密将任意长度的明文映射成一串固定长度的密文,密文即经过加密后的字符串,人无法直观地理解其意思,这串密文即为数字摘要。本步骤通过哈希运算,由商品信息明文生成摘要值,该摘要值用于商品信息的下一步加密。可选的一种实施方式中,s343可以包括s3431~s3432。s3431、对需要进行数字签名的商品信息进行初次哈希运算。若用m表示商品信息明文,对商品信息进行初次哈希运算得到h(m)。s3432、对初次哈希运算得到的结果再次进行哈希运算,得到摘要值。本步骤中,对初次哈希运算得到的结果h(m)再次进行哈希运算,得到摘要值sx,即计算sx=h(h(m)|i),其中,i=0,1,2……。本发明实施例中取i=0,使摘要值sx为一个长度为n-k的向量。在其他实施例中,也可以使用一次或多次哈希运算得到摘要值,满足固定长度的输出即可。s344、使用私钥对摘要值进行加密,得到数字签名。示例的,该步骤可以包括s3441~s3442:s3441、将非奇异矩阵与摘要值进行乘法运算,得到待译校正子。具体的,乘法运算采用公式(3):其中,s'x表示待译校正子,表示非奇异矩阵,sx表示摘要值。s3442、对待译校正子进行译码并将得到的错误向量作为数字签名。示例的,该步骤又可以包括s34421~s34423:s34421、结合私钥的变换矩阵使用译码算法对待译校正子进行译码,得到第一错误向量。译码算法可以选用现有的任一译码算法,本实施例中,译码算法优选为时域上的迭代译码算法,即:bm迭代译码算法(berlekamp-massey)、钱式搜索算法(chien)以及forney算法的组合。该译码算法速度快,实现简单,易于用计算机实现,因此是一种快速译码算法。可选的,译码算法可以包括以下几个步骤:步骤一:计算校正子;步骤二:确定错误位置多项式;步骤三:确定错误估值函数;步骤四:求解错误位置数和错误数值,并进行纠错。完成上述四步即可完成一次译码,若译码成功,则直接译出错误向量;否则,将视为译码失败。结合本发明实施例的方案,若译码失败,则使i'=i+1,从s133重新开始哈希运算重新译码,直到译码成功,得到第一错误向量。s34422、将第一错误向量与私钥的变换矩阵的逆矩阵进行矩阵的乘法运算,得到第二错误向量,第二错误向量的权重小于等于grs码的纠错能力值。具体的,本步骤的乘法运算采用公式(4):其中,表示第二错误向量,表示第一错误向量,表示私钥的变换矩阵的逆矩阵。s34423、将第二错误向量作为数字签名。至此,已经得到基于错误向量纠错码的数字签名,但该错误向量中由于存在多个0元素,占用较多的比特位。为减小比特位数,本发明提供的方案在上述实施例的基础上,可以进一步优化。优选的,在得到第二错误向量之后,还包括以下步骤:对第二错误向量构建索引对,得到第二错误向量的索引对。具体的,第二错误向量的索引对可以根据公式(5)得到。其中,ie表示索引对。即提取第二错误向量中的非零元素标记为错误值,用错误位置α以及错误位置c构建第二错误向量的索引对ie。相应的,将索引对作为数字签名。在优选的方案里,通过进一步对生成的第二错误向量建立索引对,并将索引作为数字签名,可以减少比特位数,从而减小签名长度。上述签名方法基于有限域fq的grs码生成公钥以及私钥,对明文做两次哈希运算得到摘要值,并使用私钥对该摘要值进行加密,得到数字签名。该数字签名方案具有较高的可行性,并且能够减小公钥量,提高数字签名效率,进一步提高安全性。示例的,上述数字签名的验证方法,可以包括s441~s443:s441、利用公钥对数字签名解密,得到待验证摘要值。对应于上述签名方法中将得到的第二错误向量作为数字签名的方案,本步骤是利用公钥直接对第二错误向量进行解密,得到待验证摘要值。对应于上述签名方法中将得到的索引对作为数字签名的方案,本步骤需要先根据索引对恢复出第二错误向量,然后再利用公钥对第二错误向量进行解密,得到待验证摘要值。具体的,需要根据索引对恢复出第二错误向量,即在索引对ie中αj索引的位置用cj填充,在αj索引之外的位置用0填充,直到向量的长度达到(n-k)。利用公钥对第二错误向量进行解密,即根据公式(6)得到待验证摘要值:其中,y表示待验证摘要值。计算公钥中的每一列根据αj索引的对应行的值与cj的乘积,并将该乘积作为待验证摘要值。s442、对商品信息进行哈希运算,得到摘要值。同样的,需要对商品信息进行两次哈希运算,具体步骤与s343相同,在此不再赘述。通过两次哈希运算,得到摘要值y'=h(h(m)|i)。s443、将待验证摘要值与摘要值进行比较,若待验证摘要值与摘要值相等,则验证成功。比较待验证摘要值y与摘要值y',若y=y',即待验证摘要值与摘要值相等,验证签名成功,说明商品信息没有被篡改,该商品信息真实有效;否则,验证签名失败,说明商品信息被篡改,该商品信息的真实性存疑。上述的基于有限域的grs码的数字签名方法和验证方法,具有更高的安全性,且在提升安全级别系数的前提下,能够降低参数对的选择,减少公钥量以及签名长度,安全性更好,签名效率更高,因此能够使得本发明的基于区块链的商品真伪验证方法和系统的具有更高的安全级别和操作效率,为消费者提供更加可靠的商品真伪验证。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域
的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1