CN103544511A - 一种防伪标识 - Google Patents
一种防伪标识 Download PDFInfo
- Publication number
- CN103544511A CN103544511A CN201310520584.0A CN201310520584A CN103544511A CN 103544511 A CN103544511 A CN 103544511A CN 201310520584 A CN201310520584 A CN 201310520584A CN 103544511 A CN103544511 A CN 103544511A
- Authority
- CN
- China
- Prior art keywords
- counterfeiting mark
- sign
- code
- read
- failure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明专利涉及防伪技术领域,具体的说是一种防伪标识,所述的防伪标识植入于读写器和标签,其特征在于所述的防伪标识包括但不限于以下三段数据:a.每个标签的唯一的不变ID,即标识;b.动态随机码;c.验证码。本发明同现有技术相比,其优点在于:通过生产时在读写器和标签中植入一段特殊字段,防伪系统通过对防伪标识的分析和更新来达到防伪的目的,本发明会在每次进行读取操作之后进行更新,来达到抑制伪造读写器和标签的目的,保证了产品真实性,达到防伪保真防止造价的目的,可应用范围广。
Description
[技术领域]
本发明专利涉及防伪技术领域,具体的说是一种防伪标识。
[背景技术]
防伪技术是一种用于识别真伪并防止假冒、仿造行为的技术手段,是指用防止伪造、假冒或识别真伪的技术措施、产品、材料、技术装备等。随着防伪技术产品防伪保真的特殊作用被社会逐渐认可而广泛的应用于各个领域,尤其是在货币、证件照、印章、软件电脑芯片等出现造假、侵权较多的领域,正日益广泛地采用防伪技术防止被假冒侵权,防伪技术分为多种,包括纸张类、油墨类、印刷技术、数码类、生物类等,现多采用数码类的防伪技术,如防伪标识、防伪证书、数码防伪系统等。
[发明内容]
本发明就是通过采用防伪标识植入读写器和标签,提供一种对防伪标识的分析和更新从而来达到防伪的目的防伪标识。
为实现上述目的,设计一种防伪标识,所述的防伪标识植入于读写器和标签,其特征在于所述的防伪标识包括但不限于以下三段数据:a.每个标签的唯一的不变ID,即标识;b.动态随机码;c.验证码。
所述的标识对每个标签而言必须唯一,标识设定成短于动态随机码,标识长度设定如下:
标识长度=56bits;
标识最大数=256≈7′1016
所述的动态随机码是一段可变数据,这段数据应保证其唯一性,
动态随机码的长度可以定义如下:
动态随机码长度=64bits;
动态随机码最大数=264≈1.8′1019
所述的验证码用于初步验证防伪数据的有效性,验证码的长度定义如下:
验证码长度=8bits
所述的防伪标识写入用户内存区的底部,用户内存区内的防伪标识的起始地址计算如下:
防伪标识起始地址=读写内存区大小–防伪标识长度;
以上的单位都是bit。
一种防伪标识的写入保护方法,其特征在于设定非零访问密码来限定对非保留内存库的锁定权限,同时,初始化后的标签缺省设定应该将读写库锁定以保证只有提供了访问密码才可以解锁并修改其内的数据;从安全的角度,每个标签应该有自身唯一的一个访问密码,这个密码可以和标签固有的标识一一对应,保存于防伪数据中心,而为了确保标识是唯一的,应该加入相对应的商品的唯一序列号,标识库初始化时也必须被锁定而不被修改以保持其不变和唯一,这样,读写器可以通过读取标识然后检索防伪数据中心来获取防伪密码来最终达到修改植入于读写库的防伪标识的目的。
所述的防伪标识的生成算法,其特征在于:
a.标识的生成:
标识可以按照整数顺序生成,每制造一个标签,就按照顺序产生一个56-bit的序列号作为标识;
b.动态随机码的生成:
动态随机码可以采用随机数发生器生成:
随机数发生器应该保证产生的动态随机码唯一;
c.防伪标识核心编码的生成:
通过可逆混合标识和动态随机码得到防伪标识核心编码,
防伪标识核心编码=mix(标识,动态随机码)
其中,mix()是可逆混合运算,混合算法必须可逆以保证可以解码,防伪标识核心编码存储与防伪数据中心作为防伪标签的一个唯一索引;
d.验证码的生成:
对产生的防伪标识核心编码进行固定的散列计算得到验证码保存于最后;
e.防伪标识初始编码的加密编码:
防伪标识的初始编码可以计算如下:
防伪标识初始编码=(防伪标识核心编码<<8)+验证码;
对防伪标识初始编码进行一次可逆的加密运算得到最终的防伪标识,
防伪标识编码=encrypt(防伪标识初始编码,key());
其中,encrypt()是加密计算,key()获取一个密钥。
所述的防伪标识核心编码的生成方法如下:
防伪标识核心编码=mix_b(mix_a(标识,动态随机码))
其中,mix_a()是一组随机混合算法,每次生成防伪标识时,随机选取一种混合算法来计算,mix_b对输入的单一数值进行比特位重排列计算。
所述的防伪标识的生成算法,其特征在于所述的防伪标识核心编码的生成方法如下:预先设计一系列混合算法MIX[i],i={0,…,n-1},每个混合算法有一个唯一的标识,每次生成防伪标识时,随机选取一种混合算法来计算核心编码:
防伪标识核心编码=mix[random(n)](标识,动态随机码)
其中,random(n)是计算0至n-1之间的随机整数,混合算法的标识可以保存于数据中心对应标签的记录中以便下一次验证时解码。
所述的防伪标识的验证方法,其特征在于
a.解密防伪标识:
系统一旦接收到防伪标识,首先进行解密,
传入防伪标识初始编码=decrypt(传入防伪标识编码,key())
其中,decrypt()是解密计算,key()获取一个密钥,如果系统保存了一个密钥序列,可以循环尝试解密直到成功为止,如果所有的密钥都解密失败,则说明此防伪标识无效;
b.匹配验证码:
防伪标识核心编码通过如下计算获得:
传入防伪标识核心编码=传入防伪标识初始编码>>8
传入的验证码为:
传入验证码=传入防伪标识初始编码&0xFF
然后对核心编码进行散列计算得到正确的验证码:
验证码=pick(hash(传入防伪标识核心编码),8)
其中,hash()进行散列运算,pick()对结果取其中的8位,如果验证码和传入防伪标识核心编码不同,则说明此防伪标识无效;
c.检索防伪标识核心编码:
如果系统采用固定的混合算法,则直接使用反混合算法计算出传入标识和传入动态随机码:
[传入标识,传入动态随机码]=rmix(传入防伪标识核心编码)
其中rmix为预先定义的混合算法的逆运算,然后直接利用标识检索数据库,得到标签记录:
标签记录=query(传入标识,"标识")
其中,query()是数据库检索算法,如果系统采用动态的混合算法,则需要用核心编码来查询数据库获取对应标签的混合算法,然后进行反混合得到传入标识和传入动态随机码,
首先获取标签记录:
标签记录=query(传入防伪标识核心编码,"防伪标识核心编码")
然后得到混合算法索引:
混合索引=标签记录.混合索引
反混合计算获取传入标识和传入动态随机码:
[传入标识,传入动态随机码]=rmix[混合索引](传入防伪标识核心编码)
只要下面任何一个条件不满足,就可以判断是无效的防伪标识:
(1)数据库检索无结果
(2)传入标识和标签记录的值不同
(3)传入动态随机码和标签记录的值不同。
所述的防伪标识的验证方法,其特征在于所述的验证具体步骤如下:
a.防伪服务器启动后等待客户端的验证请求。
b.接收到请求读写认证请求,此命令带有一个参数,即读写防伪标识,调用会话管理模块,传入读写防伪标识和当前的请求模式请求读写认证,如返回失败,则直接返回失败给客户端表示验证失败,如返回成功,继续,调用验证读写防伪标识模块,传入读写防伪标识,如返回失败,则直接返回失败给客户端表示验证失败,如返回成功解码后读写防伪标识继续,调用生成读写防伪标识模块来生成一个新防伪标识,而其新的解码后的读写防伪标识将保存在数据库中当前用户的记录里,不覆盖原有的译码后的解码后读写防伪标识,以便以后可能由于系统错误需要还原,返回成功以及新防伪标识。
c.接收到请求标签认证请求:此命令带有两个参数,即读写防伪标识和标签防伪标识,调用会话管理模块,传入读写防伪标识和防伪标识以及当前的请求模式请求标签认证,如返回失败,则直接返回失败给客户端表示验证失败,如返回成功,继续,调用解码后防伪标识模块,传入防伪标识,如成功返回解码后防伪标识,继续下一步,如返回失败,则直接返回失败给客户端表示验证失败,用解码后防伪标识查询数据库(联合高速缓存cache),如果查询成功,说明是有效的标签,调用生成防伪标识模块来生成一个新防伪标识,而其新的解码后的防伪标识将保存在数据库中当前标签的记录里,不覆盖原有的解码后防伪标识,以便以后可能由于系统错误需要还原,返回成功以及新防伪标识,如果无法查询到标签,表示此标签系伪造,返回失败。
d接收到更新读写防伪标识成功请求:调用会话管理模块,传入读写防伪标识以及当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新读写防伪标识覆盖到原先的读写防伪标识,返回成功。
e.接收到更新读写防伪标识失败请求:调用会话管理模块,传入读写防伪标识以及当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新读写防伪标识删除,返回成功。
f.接收到更新防伪标识成功请求:调用会话管理模块,传入读写防伪标识以及防伪标识和当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新防伪标识覆盖到原先的防伪标识,返回成功。
g.接收到更新防伪标识失败请求:调用会话管理模块,传入读写防伪标识以及防伪标识TAG_ANTIC_ID和当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新防伪标识删除,返回成功。
本发明同现有技术相比,其优点在于:通过生产时在读写器和标签中植入一段特殊字段,防伪系统通过对防伪标识的分析和更新来达到防伪的目的,本发明会在每次进行读取操作之后进行更新,来达到抑制伪造读写器和标签的目的,保证了产品真实性,达到防伪保真防止造价的目的,可应用范围广。
[具体实施方式]
防伪标识是植入于读写器和标签的一段特殊字段,这一字段在生产读写器和标签时就写入,防伪系统通过对防伪标识的分析和更新来达到防伪的目的,不同于Reader ID(读写标识)和Tag ID(标识),防伪标识会在每次进行读取操作之后进行更新,来达到抑制伪造读写器和标签的目的。
防伪标识的定义和算法的设计是有效实现防伪的核心,由于读写器和标签的防伪标识的设计是类似的,以下主要以标签防伪标识为对象作进一步叙述。
防伪标识的长度应确保安全性,唯一性,同时不应占用标签太多的空间而限制其他应用。鉴于目前RFID标签内存容量的逐步增加,此处以128bit为例做叙述,下面的算法可以类似地扩展到任意其他长度的防伪标识。
Tag防伪标识的位置:
标签防伪标识可考虑写入用户内存区的底部,以EPCGlobal Gen2为例,就是User Bank的高位区域,这种设计可以不影响其他应用使用标签的用户内存区,为了保证此区域不被其他应用覆盖,标签的规格应说明此区域是不可用,甚至,特制的标签可以建立一个锁定机制来锁定对此区域的读写。
用户内存区内的防伪标识的起始地址计算如下:
ANTIC_ID_START_ADDRESS=USER_BANK_SIZE–ANTIC_ID_LENGTH
防伪标识起始地址=读写内存区大小–防伪标识长度;
其中,ANTIC_ID_START_ADDRESS表示防伪标识的其实地址;USER_BANK_SIZE标识用户内存区的大小;ANTIC_ID_LENGTH表示防伪标识的长度,以上的单位都是bit。
读写器需要获取防伪标识的起始地址来进行读写,由于标签的TID中一般包含规格类型等信息,可以在防伪数据中心建立对应不同TID的标签规格库,其中包含防伪标识的起始地址,这样读写器可以通过检索获取防伪标识的位置。
Tag防伪标识的保护:
防伪标识的写入需要得到保护,否则,这段标识很容易被恶意修改,从而失去防伪的功能,下面的叙述以EPCGlobal Gen2为例,但是其概念和方法可以类似地扩展到其他的RFID的标签的实现。
以EPCGlobal Gen2为例,可以设定非零访问密码来限定对非保留(Non-reserved)Memory Bank(内存库)的锁定权限。同时,初始化后的标签缺省设定应该将User Bank(读写库)锁定以保证只有提供了访问密码才可以解锁并修改其内的数据。从安全的角度,每个Tag应该有自身唯一的一个访问密码,这个密码可以和Tag固有的TID一一对应,保存于防伪数据中心,而为了确保TID是唯一的,应该加入相对应的商品的唯一序列号,这里同时也暗示了TID Bank初始化时也必须被锁定而不被修改以保持其不变和唯一。这样,读写器可以通过读取TID然后检索防伪数据中心来获取防伪密码来最终达到修改植入于User Bank(读写库)的防伪标识的目的。
值得注意的是EPCGlobal Gen2的访问密码虽然唯一,但是无法达到防伪的目的,这只要通过复制标签就可以轻易地实现伪造。动态防伪标识的引入可以有效地识别复制标签的真伪。
Tag防伪标识原理:
防伪标识生成时机:
防伪标识的生成有两种情况:1.标签出厂时应生成初始防伪标识;2.读写器验证标签时,防伪数据中心生成更新后的防伪标识。
防伪标识组成:
防伪标识可以(但不局限于)由以下三段数据组成:
每个标签的唯一的不变ID,即Tag ID,动态随机码,验证码。更加复杂的防伪标识如果允许有足够的长度,可以加入其他自定义的数据比如TID等来增加防伪标识的安全性。
以下仅仅是对上述三段数据的具体说明。
Tag ID(标识):
Tag ID对每个标签而言必须唯一;考虑到标签数量的庞大,Tag ID应足够长。需要说明的是Tag ID虽然不可能做到无限长,但是只要允许在较长的周期内重复,就可以满足要求。尤其是针对消耗性商品,一旦商品已经消费,其对应的Tag ID可以认为已经被回收。
以128bit防伪标识为例,Tag ID可以设定成稍短于动态随机码:
TAG_ID_LENGTH=56bits
标识长度=56bits
TAG_ID_MAX_NUM=256≈7′1016
标识最大数=256≈7′1016
利用一个极端的例子:如果每秒钟生产一百万个标签,那么2284年内的Tag ID可以保证不重复,因此,这个长度理论上是足够的,当然,只要标签内存大小允许,可以很容易地扩展成更长的长度。
动态随机码:
动态随机码是一段可变数据,也是防伪标识可以改变的因素。这段数据也应该足够长以保证其唯一性。
以128bit防伪标识为例,动态随机码的长度可以定义如下:
DYNAMIC_CODE_LENGTH=64bits
动态随机码长度=64bits
DYNAMIC_CODE_MAX_NUM=264≈1.8′1019
动态随机码最大数=264≈1.8′1019
利用一个极端的例子:如果每秒有一百万次访问和变化,则理论上在58万年内可产生唯一随机码。当然,只要标签内存大小允许,可以很容易地扩展成更长的长度。
验证码:
防伪标识还需要包含一定位数的验证码用于初步验证防伪数据的有效性。
以128bit防伪标识为例,验证码的长度可以定义如下:
CHECK_CODE_LENGTH=8bits
验证码长度=8bits
验证码是对前面的120-bit的Tag ID和动态随机码的组合的散列的结果,通常置于最后。
防伪标识生成算法:
Tag ID的产生:
Tag ID可以按照整数顺序生成,每制造一个Tag,就按照顺序产生一个56-bit的序列号作为Tag ID,通常,系统可以保留一些特殊的序列号(比如十进制每个位是相同数字的序列号等等)用于今后可能需要的特殊目的。
动态随机码的产生:
动态随机码可以采用随机数发生器生成:
DYNAMIC_CODE=random(seed)
随机数发生器的选择应该保证产生的动态随机码唯一,如果采用伪随机数发生器,理论上会产生重复的随机码,这时需要结合防伪数据中心对动态随机码的索引查询来确保其唯一性,实际的应用可以结合伪随机数发生器产生的随机数和某些随机因素产生的数字结合得到动态随机码。一个简单的例子是用伪随机数发生器产生的48bit伪随机数和当前以毫秒为单位的系统时间的最低16bit数结合:
DYNAMIC_CODE=(pseudo_random(seed)<<16)+(system_time()&0xFFFF)
防伪标识核心编码:
通过可逆混合Tag ID和动态随机码得到防伪标识核心编码(ANTIC_KERNEL_CODE)
ANTIC_KERNEL_CODE=mix(TAG_ID,DYNAMIC_CODE)
防伪标识核心编码=mix(标识,动态随机码)
混合算法必须可逆以保证可以解码,混合算法的选择取决于系统的能力和对防伪标识安全性层次的需求,一般,混合算法越复杂,被解码的可能性就越低,最简单的混合就是把两者顺序排列,较复杂的方法可以是把两者的比特位按预先定义好的规则重新排列而产生。
此外,也可以把上述几种方法结合使用达到最大程度的混合,比如对混合好的值再次进行混合:
ANTIC_KERNEL_CODE=mix_b(mix_a(TAG_ID,DYNAMIC_CODE))
防伪标识核心编码=mix_b(mix_a(标识,动态随机码))
其中mix_b对输入的单一数值进行比特位重排列计算,实现时,可以预先设计一系列混合算法MIX[i],i={0,…,n-1},每个混合算法有一个唯一的标识(比如索引),每次生成防伪标识时,随机选取一种混合算法来计算核心编码:
ANTIC_KERNEL_CODE=mix[random(n)](TAG_ID,DYNAMIC_CODE)
防伪标识核心编码=mix[random(n)](标识,动态随机码)
其中,random(n)是计算0至n-1之间的随机整数,混合算法的标识可以保存于数据中心对应标签的记录中以便下一次验证时解码。
防伪标识核心编码存储与防伪数据中心作为防伪标签的一个唯一索引。
验证码:
对产生的防伪标识核心编码进行固定的散列计算得到验证码保存于最后,散列的算法有很多的选择,比如MD5或者SHA-1等等。以128bit防伪标识为例,虽然散列的结果会远远多于8bit,可以仅仅取低8位或者高8位或者预先定义好的某8位作为最终的验证码:
CHECK_CODE=pick(hash(ANTIC_KERNEL_CODE),8)
验证码=pick(hash(传入防伪标识核心编码),8)
其中,hash()进行散列运算,pick()对结果取其中的8位。
防伪标识初始编码的加密编码:
防伪标识的初始编码可以计算如下(以128bit防伪标识为例):
ANTIC_INIT_CODE=(ANTIC_KERNEL_CODE<<8)+CHECK_CODE
防伪标识初始编码=(防伪标识核心编码<<8)+验证码;
防伪标识初始核心编码虽然采用了复杂的可逆混合算法,但是无法应付针对数据中心数据库的DoS攻击,较复杂的DoS攻击可能利用多个IP地址发动而导致无法通过IP过滤来应对,因此必须从应用的层面上来阻止。一般针对数据中心的DoS攻击主要通过触发对数据中心数据库的频繁检索导致系统瘫痪,如果防伪数据中心在检索数据库之前建立一套机制对接收到的防伪标识进行无需数据库检索的初始识别,则会大大减轻由于攻击造成的对数据库的负担。
针对这种情况,可以对防伪标识初始编码进行一次可逆的加密运算得到最终的防伪标识。
ANTIC_CODE=encrypt(ANTIC_INIT_CODE,key())
防伪标识编码=encrypt(防伪标识初始编码,key());
其中,encrypt()是加密计算,key()获取一个密钥。
为避免固定密钥,密钥的选择可以是一组预先定义好的密钥序列,虽然密钥的设定相对固定,这个机制的主要目的是防止DoS攻击而非数据加密,所以加密算法可以不必选择计算复杂度高的方法。
防伪标识验证:
解密防伪标识:
系统一旦接收到防伪标识,首先进行解密,这里所有传入的数据用INPUT后缀表示。
ANTIC_INIT_CODE_INPUT=decrypt(ANTIC_CODE_INPUT,key())
传入防伪标识初始编码=decrypt(传入防伪标识编码,key())
如果系统保存了一个密钥序列,可以循环尝试解密直到成功为止,如果所有的密钥都解密失败,则说明此防伪标识无效。
匹配验证码:
防伪标识核心编码通过如下计算获得:
ANTIC_KERNEL_CODE_INPUT=ANTIC_INIT_CODE_INPUT>>8
传入防伪标识核心编码=传入防伪标识初始编码>>8
传入的验证码为
CHECK_CODE_INPUT=ANTIC_INIT_CODE_INPUT&0xFF
传入验证码=传入防伪标识初始编码&0xFF
然后对核心编码进行散列计算得到正确的验证码:
CHECK_CODE=pick(hash(ANTIC_KERNEL_CODE_INPUT),8)
验证码=pick(hash(传入防伪标识核心编码),8)
如果CHECK_CODE(验证码)和CHECK_CODE_INPUT(传入验证码)不同,则说明此防伪标识无效。
检索防伪标识核心编码:
如果系统采用固定的混合算法,则直接使用反混合算法计算出TAG_ID_INPUT(传入标识)和DYNAMIC_CODE_INPUT(传入动态随机码):
[TAG_ID_INPUT,DYNAMIC_CODE_INPUT]=rmix(ANTIC_KERNEL_CODE_INPUT)
[传入标识,传入动态随机码]=rmix(传入防伪标识核心编码)
其中rmix为预先定义的混合算法的逆运算,然后直接利用TAG_ID检索数据库,得到标签记录:
TAG_RECORD=query(TAG_ID_INPUT,"TAG_ID")
标签记录=query(传入标识,"标识")
如果系统采用动态的混合算法,则需要用核心编码来查询数据库获取对应标签的混合算法,然后进行反混合得到TAG_ID_INPUT(传入标识)和DYNAMIC_CODE_INPUT(传入动态随机码)。
首先获取标签记录:
TAG_RECORD=query(ANTIC_KERNEL_CODE_INPUT,"ANTIC_KERNEL_CODE")
标签记录=query(传入防伪标识核心编码,"防伪标识核心编码")
然后得到混合算法索引:
MIX_INDEX=TAG_RECORD.MIX_INDEX
混合索引=标签记录.混合索引
反混合计算获取TAG_ID(防伪标识)和DYNAMIC_CODE(动态随机码):
[TAG_ID_INPUT,DYNAMIC_CODE_INPUT]=rmix[MIX_INDEX](ANTIC_KERNEL_CODE_INPUT)
[传入标识,传入动态随机码]=rmix[混合索引](传入防伪标识核心编码)
只要下面任何一个条件不满足,就可以判断是无效的防伪标识:
(1)数据库检索无结果;
(2)TAG_ID_INPUT(传入标识)和标签记录的值不同;
(3)DYNAMIC_CODE_INPUT(动态随机码)和标签记录的值不同。
防伪标识的验证具体步骤如下:
1.防伪服务器启动后等待客户端(PC Driver)的验证请求。
2.接收到REQUEST_READER_AUTHENTICATION(请求读写认证)请求,此命令带有一个参数,即READER_ANTIC_ID(读写防伪标识)。
2.1调用Session Management(会话管理)模块,传入READER_ANTIC_ID(读写防伪标识)和当前的REQUEST_TYPE(请求模式)REQUEST_READER_AUTHENTICATION(请求读写认证)。
2.1.1如返回FAILURE(失败),则直接返回FAILURE失败给客户端表示验证失败。
2.1.2如返回SUCCESS(成功),继续。
2.2调用Verify Reader Anti-C ID(验证读写防伪标识)模块,传入READER_ANTIC_ID(读写防伪标识)。
2.2.1如返回FAILURE(失败),则直接返回FAILURE(失败)给客户端(PC Driver)表示验证失败。
2.2.2如成功返回READER_ANTIC_ID_DECODED(解码后读写防伪标识)继续。
2.3调用Generate Reader Anti-C ID(生成读写防伪标识)模块来生成一个READER_ANTIC_ID_NEW(新防伪标识),而其READER_ANTIC_ID_NEW_DECODED(新的解码后的读写防伪标识)将保存在数据库中当前Reader(读写)的记录里,不覆盖原有的译码后的READER_ANTIC_ID_DECODED(解码后读写防伪标识),以便以后可能由于系统错误需要Rollback(还原)。
2.3.1返回SUCCESS(成功)以及READER_ANTIC_ID_NEW(新防伪标识)。
3接收到REQUEST_TAG_AUTHENTICATION(请求标签认证)请求,此命令带有两个参数,即READER_ANTIC_ID(读写防伪标识)和TAG_ANTIC_ID(标签防伪标识)。
3.1调用Session Management(会话管理)模块,传入READER_ANTIC_ID(读写防伪标识)和TAG_ANTIC_ID(防伪标识)以及当前的REQUEST_TYPE(请求模式)REQUEST_TAG_AUTHENTICATION(请求标签认证)。
3.1.1如返回FAILURE(失败),则直接返回FAILURE(失败)给客户端(PC Driver)表示验证失败。
3.1.2如返回SUCCESS(成功),继续。
3.2调用Decode Tag Anti-C ID(解码后防伪标识)模块,传入TAG_ANTIC_ID(防伪标识)。
3.2.1如成功返回AG_ANTIC_ID_DECODED(解码后防伪标识),继续下一步。
3.2.2如返回FAILURE(失败),则直接返回FAILURE(失败)给客户端(PC Driver)表示验证失败。
3.3用TAG_ANTIC_ID_DECODED(解码后防伪标识)查询数据库(联合高速缓存cache)?:
3.3.1如果查询成功,说明是有效的Tag(标签):
3.3.1.1调用Generate Tag Anti-C ID(生成防伪标识)模块来生成一个TAG_ANTIC_ID_NEW(新防伪标识),而其TAG_ANTIC_ID_NEW_DECODED(新的解码后的防伪标识)将保存在数据库中当前Tag(标签)的记录里,不覆盖原有的TAG_ANTIC_ID_DECODED(解码后防伪标识),以便以后可能由于系统错误需要Rollback(还原)。
3.3.1.2返回SUCCESS(成功)以及TAG_ANTIC_ID_NEW新防伪标识。
3.3.2如果无法查询到Tag(标签),表示此Tag(标签)系伪造,返回FAILURE(失败)。
4接收到UPDATE_READER_ANTIC_ID_SUCCEEDED(更新读写防伪标识成功)请求。
4.1调用Session Management(会话管理)模块,传入READER_ANTIC_ID(读写防伪标识)以及当前的REQUEST_TYPE(请求模式)。
4.1.1如返回FAILURE(失败),则直接返回FAILURE(失败)给PC Driver(客户端)表示失败。
4.1.2如返回SUCCESS(成功),继续。
4.2)更新数据库,把READER_ANTIC_ID_NEW(新读写防伪标识)覆盖到原先的READER_ANTIC_ID(读写防伪标识)。
4.3)返回SUCCESS(成功)。
5接收到UPDATE_READER_ANTIC_ID_FAILED(更新读写防伪标识失败)请求:
5.1调用Session Management(会话管理)模块,传入READER_ANTIC_ID(读写防伪标识)以及当前的REQUEST_TYPE(请求模式)。
5.1.1如返回FAILURE(失败),则直接返回FAILURE(失败)给PC Driver(客户端)表示失败。
5.1.2如返回SUCCESS(成功),继续。
5.2更新数据库,把READER_ANTIC_ID_NEW(新读写防伪标识)删除。
5.3返回SUCCESS(成功)。
6接收到UPDATE_TAG_ANTIC_ID_SUCCEEDED(更新防伪标识成功)请求。
6.1调用Session Management(会话管理)模块,传入READER_ANTIC_ID(读写防伪标识)以及TAG_ANTIC_ID(防伪标识)和当前的REQUEST_TYPE(请求模式)。
6.1.1如返回FAILURE(失败),则直接返回FAILURE(失败)给PC Driver(客户端)表示失败。
6.1.2如返回SUCCESS(成功),继续。
6.2更新数据库,把TAG_ANTIC_ID_NEW(新防伪标识)覆盖到原先的TAG_ANTIC_ID(防伪标识)。
6.3返回SUCCESS(成功)。
7接收到UPDATE_TAG_ANTIC_ID_FAILED(更新防伪标识失败)请求:
7.1调用Session Management(会话管理)模块,传入READER_ANTIC_ID(读写防伪标识)以及TAG_ANTIC_ID(防伪标识)和当前的REQUEST_TYPE(请求模式)。
7.1.1如返回FAILURE(失败),则直接返回FAILURE(失败)给客户端PC Driver表示失败。
7.1.2如返回SUCCESS(成功),继续。
7.2更新数据库,把TAG_ANTIC_ID_NEW(新防伪标识)删除。
7.3返回SUCCESS(成功)。
Claims (9)
1.一种防伪标识,所述的防伪标识植入于读写器和标签,其特征在于所述的防伪标识包括但不限于以下三段数据:a.每个标签的唯一的不变ID,即标识;b.动态随机码;c.验证码。
2.如权利要求1所述的一种防伪标识,其特征在于所述的标识对每个标签而言必须唯一,标识设定成短于动态随机码,标识长度设定如下:
标识长度=56bits
标识最大数=256≈7′1016
所述的动态随机码是一段可变数据,这段数据应保证其唯一性,
动态随机码的长度可以定义如下:
动态随机码长度=64bits
动态随机码最大数=264≈1.8′1019
所述的验证码用于初步验证防伪数据的有效性,验证码的长度定义如下:
验证码长度=8bits 。
3.如权利要求1所述的一种防伪标识,其特征在于所述的防伪标识写入用户内存区的底部,用户内存区内的防伪标识的起始地址计算如下:
防伪标识起始地址=用户内存区大小–防伪标识长度;
以上的单位都是bit。
4.一种如权利要求1所述的防伪标识的写入保护方法,其特征在于设定非零访问密码来限定对非保留内存库的锁定权限,同时,初始化后的标签缺省设定应该将用户库锁定以保证只有提供了访问密码才可以解锁并修改其内的数据;从安全的角度,每个标签应该有自身唯一的一个访问密码,这个密码可以和标签固有的标识一一对应,保存于防伪数据中心,而为了确保标识是唯一的,应该加入相对应的商品的唯一序列号,标识库初始化时也必须被锁定而不被修改以保持其不变和唯一,这样,读写器可以通过读取标识然后检索防伪数据中心来获取防伪密码来最终达到修改植入于用户库的防伪标识的目的。
5.一种如权利要求1所述的防伪标识的生成算法,其特征在于
a.标识的生成:
标识可以按照整数顺序生成,每制造一个标签,就按照顺序产生一个56-bit的序列号作为标识;
b.动态随机码的生成:
动态随机码可以采用随机数发生器生成:
随机数发生器应该保证产生的动态随机码唯一;
c.防伪标识核心编码的生成:
通过可逆混合标识和动态随机码得到防伪标识核心编码,
防伪标识核心编码=mix(标识,动态随机码)
其中,mix()是可逆混合运算,混合算法必须可逆以保证可以解码,防伪标识核心编码存储与防伪数据中心作为防伪标签的一个唯一索引;
d.验证码的生成:
对产生的防伪标识核心编码进行固定的散列计算得到验证码保存于最后;
e.防伪标识初始编码的加密编码:
防伪标识的初始编码可以计算如下:
防伪标识初始编码=(防伪标识核心编码<<8)+验证码;
对防伪标识初始编码进行一次可逆的加密运算得到最终的防伪标识,
防伪标识编码=encrypt(防伪标识初始编码,key());
其中,encrypt()是加密计算,key()获取一个密钥。
6.如权利要求5所述的防伪标识的生成算法,其特征在于所述的防伪标识核心编码的生成方法如下:
防伪标识核心编码=mix_b(mix_a(标识,动态随机码))
其中,mix_a()是一组随机混合算法,每次生成防伪标识时,随机选取一种
混合算法来计算,mix_b()对输入的单一数值进行比特位重排列计算。
7.如权利要求5所述防伪标识的生成算法,其特征在于所述的防伪标识核心编码的生成方法如下:预先设计一系列混合算法MIX[i],i={0,…,n-1}, 每个混合算法有一个唯一的标识,每次生成防伪标识时,随机选取一种混合算法来计算核心编码:
防伪标识核心编码=mix[random(n)](标识,动态随机码)
其中,random(n)是计算0至n-1之间的随机整数,混合算法的标识可以保存于数据中心对应标签的记录中以便下一次验证时解码。
8.一种如权利要求1所述的防伪标识的验证方法,其特征在于
a.解密防伪标识:
系统一旦接收到防伪标识,首先进行解密,
传入防伪标识初始编码=decrypt(传入防伪标识编码,key())
其中,decrypt()是解密计算,key()获取一个密钥,如果系统保存了一个密钥序列,可以循环尝试解密直到成功为止,如果所有的密钥都解密失败,则说明此防伪标识无效;
b.匹配验证码:
防伪标识核心编码通过如下计算获得:
传入防伪标识核心编码=传入防伪标识初始编码>>8
传入的验证码为
传入验证码=传入防伪标识初始编码&0xFF
然后对核心编码进行散列计算得到正确的验证码:
验证码=pick(hash(传入防伪标识核心编码),8)
其中,hash()进行散列运算,pick()对结果取其中的8位,如果验证码和传入防伪标识核心编码不同,则说明此防伪标识无效;
c.检索防伪标识核心编码:
如果系统采用固定的混合算法,则直接使用反混合算法计算出传入标识和传入动态随机码:
[传入标识,传入动态随机码]=rmix(传入防伪标识核心编码)
其中rmix为预先定义的混合算法的逆运算,然后直接利用标识检索数据库,得到标签记录:
标签记录=query(传入标识,"标识")
其中,query()是数据库检索算法,如果系统采用动态的混合算法,则需要用核心编码来查询数据库获取对应标签的混合算法,然后进行反混合得到传入标识和传入动态随机码,
首先获取标签记录:
标签记录=query(传入防伪标识核心编码,"防伪标识核心编码")
然后得到混合算法索引:
混合索引=标签记录.混合索引
反混合计算获取传入标识和传入动态随机码:
[传入标识,传入动态随机码]=rmix[混合索引](传入防伪标识核心编码)
只要下面任何一个条件不满足,就可以判断是无效的防伪标识:
(1)数据库检索无结果
(2)传入标识和标签记录的值不同
(3)传入动态随机码和标签记录的值不同。
9.如权利要求8所述的防伪标识的验证方法,其特征在于所述的验证具体步骤如下:
a.防伪服务器启动后等待客户端的验证请求;
b.接收到请求读写认证请求,此命令带有一个参数,即读写防伪标识,调用会话管理模块,传入读写防伪标识和当前的请求模式请求读写认证,如返回失败,则直接返回失败给客户端表示验证失败,如返回成功,继续,调用验证读写防伪标识模块,传入读写防伪标识,如返回失败,则直接返回失败给客户端表示验证失败,如返回成功解码后读写防伪标识继续,调用生成读写防伪标识模块来生成一个新防伪标识,而其新的解码后的读写防伪标识将保存在数据库中当前用户的记录里,不覆盖原有的译码后的解码后读写防伪标识,以便以后可能由于系统错误需要还原,返回成功以及新防伪标识;
c.接收到请求标签认证请求:此命令带有两个参数,即读写防伪标识和标签防伪标识,调用会话管理模块,传入读写防伪标识和防伪标识以及当前的请求模式请求标签认证,如返回失败,则直接返回失败给客户端表示验证失败,如返回成功,继续,调用解码后防伪标识模块,传入防伪标识,如成功返回解码后防伪标识,继续下一步,如返回失败,则直接返回失败给客户端表示验证失败,用解码后防伪标识查询数据库,如果查询成功,说明是有效的标签,调用生成防伪标识模块来生成一个新防伪标识,而其新的解码后的防伪标识将保存在数据库中当前标签的记录里,不覆盖原有的解码后防伪标识,以便以后可能由于系统错误需要还原,返回成功以及新防伪标识,如果无法查询到标签,表示此标签系伪造,返回失败;
d.接收到更新读写防伪标识成功请求:调用会话管理模块,传入读写防伪标识以及当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新读写防伪标识覆盖到原先的读写防伪标识,返回成功;
e.接收到更新读写防伪标识失败请求:调用会话管理模块,传入读写防伪标识以及当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新读写防伪标识删除,返回成功;
f.接收到更新防伪标识成功请求:调用会话管理模块,传入读写防伪标识以及防伪标识和当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新防伪标识覆盖到原先的防伪标识,返回成功;
g.接收到更新防伪标识失败请求:调用会话管理模块,传入读写防伪标识以及防伪标识TAG_ANTIC_ID和当前的请求模式,如返回失败,则直接返回失败给客户端表示失败,如返回成功,继续,更新数据库,把新防伪标识删除,返回成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310520584.0A CN103544511A (zh) | 2013-10-29 | 2013-10-29 | 一种防伪标识 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310520584.0A CN103544511A (zh) | 2013-10-29 | 2013-10-29 | 一种防伪标识 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103544511A true CN103544511A (zh) | 2014-01-29 |
Family
ID=49967945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310520584.0A Pending CN103544511A (zh) | 2013-10-29 | 2013-10-29 | 一种防伪标识 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544511A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103971250A (zh) * | 2014-04-09 | 2014-08-06 | 四川谦泰仁投资管理有限公司 | 一种基于移动终端和rfid的一次一证防伪溯源系统 |
CN105321076A (zh) * | 2014-06-03 | 2016-02-10 | 江南大学 | 一种流通商品的可变长效防伪标识方法及系统 |
CN106202538A (zh) * | 2016-07-25 | 2016-12-07 | 广州小百合信息技术有限公司 | 信息检测方法及装置 |
CN107545637A (zh) * | 2017-09-13 | 2018-01-05 | 广东亚太天能科技股份有限公司 | 一种电子锁的激活方法及服务器 |
CN110176990A (zh) * | 2019-05-15 | 2019-08-27 | 百度在线网络技术(北京)有限公司 | 车辆组件更换识别方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100134287A1 (en) * | 2008-12-02 | 2010-06-03 | Joseph Carmine Lettieri | Method of detecting a conterfeit rfid tag |
CN101872460A (zh) * | 2010-05-27 | 2010-10-27 | 上海华彩科技有限公司 | 一种基于动态防伪标识的rfid在线防伪系统的处理方法 |
CN102339399A (zh) * | 2010-07-22 | 2012-02-01 | 上海孚恩电子科技有限公司 | 一种基于rfid电子标签的防伪方法 |
-
2013
- 2013-10-29 CN CN201310520584.0A patent/CN103544511A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100134287A1 (en) * | 2008-12-02 | 2010-06-03 | Joseph Carmine Lettieri | Method of detecting a conterfeit rfid tag |
CN101872460A (zh) * | 2010-05-27 | 2010-10-27 | 上海华彩科技有限公司 | 一种基于动态防伪标识的rfid在线防伪系统的处理方法 |
CN102339399A (zh) * | 2010-07-22 | 2012-02-01 | 上海孚恩电子科技有限公司 | 一种基于rfid电子标签的防伪方法 |
Non-Patent Citations (1)
Title |
---|
刘立冬: "RFID中间件技术在商品防伪的应用研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 August 2008 (2008-08-15) * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103971250A (zh) * | 2014-04-09 | 2014-08-06 | 四川谦泰仁投资管理有限公司 | 一种基于移动终端和rfid的一次一证防伪溯源系统 |
WO2015154595A1 (zh) * | 2014-04-09 | 2015-10-15 | 江峰 | 基于闭环认证理论和互联网的一次一密认证系统 |
CN103971250B (zh) * | 2014-04-09 | 2017-04-05 | 四川谦泰仁投资管理有限公司 | 一种基于移动终端和rfid的一次一证防伪溯源系统 |
CN105321076A (zh) * | 2014-06-03 | 2016-02-10 | 江南大学 | 一种流通商品的可变长效防伪标识方法及系统 |
CN106202538A (zh) * | 2016-07-25 | 2016-12-07 | 广州小百合信息技术有限公司 | 信息检测方法及装置 |
CN107545637A (zh) * | 2017-09-13 | 2018-01-05 | 广东亚太天能科技股份有限公司 | 一种电子锁的激活方法及服务器 |
CN110176990A (zh) * | 2019-05-15 | 2019-08-27 | 百度在线网络技术(北京)有限公司 | 车辆组件更换识别方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11552935B2 (en) | Distributed key secret for rewritable blockchain | |
CN101488856B (zh) | 用于数字签名以及认证的系统及方法 | |
CN108053001B (zh) | 电子仓单的信息安全认证方法和系统 | |
US10540297B2 (en) | Memory organization for security and reliability | |
CN101847199B (zh) | 用于射频识别系统的安全认证方法 | |
US20090096574A1 (en) | Rfid tag using encrypted password protection | |
US20080001752A1 (en) | System and method for securing rfid tags | |
WO2020144008A2 (en) | Methods and systems for preparing and performing an object authentication | |
CN106548353B (zh) | 一种商品防伪码生成与验证方法 | |
US20080297326A1 (en) | Low Cost RFID Tag Security And Privacy System And Method | |
CN102843232B (zh) | 生成安全装置密钥 | |
CN101582109A (zh) | 数据加密方法及装置、数据解密方法及装置、固态硬盘 | |
CN101243513A (zh) | 使用物理单向函数的信息载体鉴别 | |
US20110047200A1 (en) | A method and a system for validating a succession of events experienced by a device | |
CN108573296B (zh) | 防伪装置、防伪系统和防伪方法 | |
US20080212770A1 (en) | Key Information Generating Method and Device, Key Information Updating Method, Tempering Detecting Method and Device, and Data Structure of Key Information | |
WO2009052059A1 (en) | Rfid tag using encrypted value | |
CN103544511A (zh) | 一种防伪标识 | |
US9553729B2 (en) | Authentication method between a reader and a radio tag | |
Buldin et al. | Next generation industrial blockchain-based wireless sensor networks | |
JP2013251609A (ja) | 情報処理装置、icチップ及び情報処理方法 | |
CN106027237B (zh) | 一种rfid系统中基于组的密钥矩阵安全认证方法 | |
CN103403729A (zh) | 唯一代码签名密钥的安全管理和个性化 | |
CN112487839A (zh) | 一种防复制rfid安全系统 | |
KR20110111661A (ko) | 복제 방지를 위한 rfid 태그, 이를 이용한 복제 방지 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140129 |