基于用户唯一标识的首次扫码绑定后不可篡改的防伪校验方法与流程
本发明涉及防伪校验,特别是涉及一种基于用户唯一标识的首次扫码绑定后不可篡改的防伪校验方法。
背景技术:
1、防伪技术广泛应用于商品包装、电子产品、票证等领域,用于验证产品真伪、防止假冒伪劣。目前常见的防伪手段包括:防伪标签(如激光全息标签、变色油墨)、防伪查询码(如刮开式数字防伪码)、二维码防伪等。其中,基于二维码的防伪方法因其信息容量大、扫码便捷、成本较低等优点,逐渐成为主流方案。用户通过微信、支付宝等通用扫码工具扫描商品上的防伪二维码,即可跳转至验证页面获取真伪信息。
2、然而,现有基于二维码的防伪方案存在明显缺陷。部分现有二维码防伪方案仅校验防伪码本身,或虽记录扫码用户信息,但缺少首次绑定事件的原子确认、链式存证和异常复核机制,导致防伪码可被多人反复扫描验证。这带来了以下技术问题:
3、第一,无法确认真正的首次验证用户,正品商品被首次扫码验证后,防伪码仍可被他人再次使用,后续其他用户再次识别时,系统通常仅累加查询次数,无法可靠区分首次验证用户与后续访问用户,导致“一物一码”的验证唯一性被削弱,
4、第二,存在后台数据篡改风险,部分系统虽尝试记录首次扫码用户,但绑定关系通常仅保存在业务数据库中,系统管理员或具备数据库权限的人员有动机也有能力修改绑定关系,使得防伪校验的最终依据不可信。
5、第三,存在并发绑定冲突,当多个用户在同一时间点附近扫描同一个尚未绑定的防伪码时,系统可能因处理顺序问题导致多个请求均认为自己是首次绑定,或错误地将非首次用户记录为首绑用户,使得首次绑定主体不明确。
6、第四,存在用户隐私泄露和身份伪造风险,直接存储用户的openid、手机号、客户端实例标识等唯一标识,一旦数据库泄露,将导致用户敏感信息暴露;同时,这些明文标识也容易被恶意用户截获并伪造,从而绕过验证。
7、第五,缺少异常复核与日志审计机制,当防伪码对应的业务数据库记录、区块链存证摘要、或系统日志出现不一致时,现有系统无法自动识别并启动一个可信的复核流程来判断究竟是发生了数据篡改、并发冲突还是系统异常,导致防伪结论的可靠性存疑。
8、此外,现有基于二维码或一物一码的防伪校验方案,多侧重于防伪码有效性判断、扫码记录留存或查询次数统计,对于首次扫码绑定过程中的并发抢占、绑定主体确认、后续查询日志连续性校验以及后台数据篡改后的可验证发现,缺少贯穿首次绑定至后续校验全过程的协同处理机制。
9、因此,本领域亟需一种能够实现防伪码与用户匿名绑定标识首次绑定,并在首次扫码绑定后使绑定关系不可转移、篡改行为可被验证发现的防伪校验方法,以降低防伪码被复用、冒用以及后台数据篡改后无法发现的风险。
10、公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
技术实现思路
1、本发明的目的是提供一种能够实现防伪码与用户匿名绑定标识首次绑定,并在首次扫码绑定后使绑定关系及后续防伪查询日志篡改行为可被验证发现、绑定关系不可转移的防伪校验方法。
2、本发明还提供一种基于用户唯一标识的首次扫码绑定后不可篡改的防伪校验系统,包括信息获取模块、匿名标识生成模块、首次绑定控制模块、待确认处理模块、日志链生成模块、原子提交模块、已绑定校验模块、存证模块和异常处理模块;各模块配合执行上述防伪校验方法中的信息获取、匿名标识生成、首次绑定控制、待确认处理、日志链生成、原子提交、已绑定校验、存证锚点生成及异常复核处理。
3、本发明中,原子条件写入用于确定同一防伪码的首次绑定主体,事件链摘要和校验凭证用于将首次绑定日志及后续查询日志接入可重算、可验签的防伪查询日志链,存证锚点用于将预设日志区间的末端事件链摘要固化至不可篡改存证介质;三者依次衔接,使首次绑定唯一性、后续日志连续性和后台篡改可发现性形成相互依赖的验证链路。
4、本发明还提供一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
5、本文所称“用户唯一标识”,并非指在业务数据库中直接存储的用户明文身份标识,而是指经平台鉴权返回的用户原始身份凭证,或由该用户原始身份凭证经不可逆匿名化处理后形成的匿名绑定标识;在本方法中,用于后续绑定一致性比对的是所述匿名绑定标识。
6、本文所称“不可篡改”并非指业务数据库记录在物理层面绝对无法修改,而是指绑定关系及对应日志一经形成后,任何未按本方法生成合法事件链摘要、校验凭证,并在满足预设锚点生成条件时生成对应存证锚点的修改,均不能通过后续校验或复核,且其修改行为能够被验证发现。
7、为实现上述目的,本发明提供了如下方案:
8、一种基于用户唯一标识的首次扫码绑定后不可篡改的防伪校验方法,包括以下步骤:
9、步骤1:获取用户扫描附着于商品且携带防伪码参数的二维码后提交的防伪码信息,以及经平台鉴权返回的当前用户原始身份凭证;
10、步骤2:先校验防伪码有效性:查询防伪码数据表,判断该防伪码是否存在且处于可验证状态;
11、若不存在,或处于作废、冻结、过期状态,则判定为异常防伪码,进入异常处理流程;
12、若防伪码存在且处于可验证状态,则根据所述防伪码解析得到对应企业id,再根据所述防伪码的标识和所述当前用户原始身份凭证进行不可逆匿名化处理,生成当前匿名绑定标识;
13、步骤3:查询防伪码数据表,判断所述防伪码的当前状态;所述当前状态包括未绑定、绑定待确认或已绑定中的至少一种。
14、步骤4:当所述当前状态为未绑定状态时,执行首次绑定流程;
15、当为绑定待确认状态时,进入重试识别和超时校验流程;
16、当为已绑定状态时,进入已绑定校验流程。
17、步骤41:通过原子条件写入方式,将所述防伪码的状态更新为绑定待确认状态,并设置锁令牌和锁过期时间,以独占方式锁定首次绑定资格;若原子写入失败,则重新读取防伪码当前状态;当原子条件写入成功后,系统在防伪码数据表中写入绑定待确认状态、锁令牌和锁过期时间,同时在缓存中写入由企业id、防伪码和当前匿名绑定标识确定的绑定待确认缓存记录,缓存记录包括锁令牌、锁过期时间和处理状态,并设置与锁过期时间一致的有效期;该缓存记录仅用于识别同一用户在锁有效期内的重复扫码或重试请求,不作为正式绑定依据。
18、若重读后当前状态为已绑定,则进入步骤5已绑定校验流程;若当前状态为绑定待确认,则根据当前匿名绑定标识查询绑定待确认缓存记录,并在缓存存在、锁令牌与防伪码数据表中的锁令牌一致且未超时的情况下,判定为同一用户的重试请求,允许等待原绑定流程完成或返回原绑定流程的处理状态;若缓存记录不存在、锁令牌不一致或已超时,则重新读取防伪码数据表中的锁令牌、锁过期时间和处理状态;若确认所述防伪码处于补偿回滚、缓存写入失败处理或锁超时回收处理过程中,则返回等待或重试结果;否则进入步骤6异常处理流程;若当前状态为已作废、已冻结或已过期,则进入步骤6异常处理。
19、步骤42:在所述绑定待确认状态下,生成待提交的防伪查询日志,所述防伪查询日志至少包括所述防伪码、查询时间、查询地址、所述当前匿名绑定标识、查询类型和事件序号;所述事件序号为对应防伪查询日志链中按照日志成功落地顺序生成的单调递增序号。新增首次绑定防伪查询日志时,系统同样通过顺序化追加机制进行日志追加,确保对应防伪查询日志链中的事件序号单调递增,且每条日志引用的上一事件链摘要唯一确定;系统基于本条日志中预设参与摘要计算的业务字段与上一条已落地防伪查询日志的事件链摘要进行哈希计算,生成当前事件链摘要;其中,首条日志的事件链摘要由本条日志中预设参与摘要计算的业务字段直接哈希生成;
20、步骤43:由服务器使用私钥对所述当前事件链摘要进行数字签名,生成校验凭证;
21、步骤44:将所述防伪查询日志与所述防伪码的状态更新置于同一数据库事务中同步提交,将所述防伪码的状态从绑定待确认更新为已绑定状态,完成首次绑定;在采用消息队列的实施方式中,所述消息队列用于对同一企业的日志追加请求进行顺序化调度,实际日志写入与防伪码状态更新仍在同一数据库事务中完成。
22、在事务提交时,系统校验当前流程持有的锁令牌与防伪码数据表中的锁令牌一致,且锁过期时间未超时;提交成功后,将防伪码状态更新为已绑定,并删除或更新对应的绑定待确认缓存记录;在事务提交前检测到锁过期,或确认事务未提交、已回滚或提交失败时,系统中止提交,并基于相同锁令牌执行补偿回滚,将防伪码状态恢复为未绑定状态,释放锁令牌,清理或使对应的绑定待确认缓存记录失效,并进入步骤6异常处理;由于本次首次绑定防伪查询日志未成功落地,不基于本次未落地日志触发新增日志数量类锚点生成条件判断;若该提交失败事件属于能够确定企业id并关联至对应防伪查询日志链的预设异常事件,则可按照步骤7执行锚点条件判断或进入复核流程。
23、步骤5:当所述当前状态为已绑定状态时,执行已绑定校验流程:
24、步骤51:
25、校验一:签名有效性校验:
26、根据所述防伪码读取首次绑定事件所对应的防伪查询日志,获取其中存储的校验凭证和事件链摘要,使用与密钥版本对应的公钥、证书或密钥管理模块,对事件链摘要和校验凭证执行数字签名验签;若验签结果为失败,则判定验证不通过,跳转至步骤6;若验签通过,则系统按照事件链摘要生成规则,基于首次绑定日志当前存储的预设业务字段重新计算该日志对应的事件链摘要;若该日志非首条日志,则结合其前一条已落地日志的事件链摘要进行计算;若该日志为首条日志,则直接基于其当前存储的预设业务字段进行计算;若重新计算得到的事件链摘要与该日志中存储的事件链摘要不一致,则判定验证不通过,跳转至步骤6;若一致,则判定校验一通过,进入步骤52。
27、步骤52:
28、校验二:绑定身份一致性校验:若校验一通过,则比对所述当前匿名绑定标识与所述首次绑定防伪查询日志中存储的匿名绑定标识是否一致;若一致,则进入步骤53;若不一致,则查询是否存在经复核确认且校验凭证有效的身份变更确认记录;若存在且当前匿名绑定标识与所述身份变更确认记录中的新匿名绑定标识一致,则进入步骤53;若不存在或核验不通过,则判定验证不通过,跳转至步骤6;
29、步骤53:校验三:事件链摘要连续性及存证锚点核验:若绑定身份一致,则系统查询该企业对应的防伪查询日志表和存证锚点记录表,并以本次校验开始时通过一致性读或事务快照确定的最近一条已落地防伪查询日志作为校验终点。
30、若存证锚点记录表中存在结束事件序号不大于所述校验终点事件序号、且存证状态为成功的存证锚点记录,则选取其中最近一次存证锚点记录作为目标存证锚点记录;系统根据所述目标存证锚点记录中的企业id、起始事件序号、结束事件序号、末端事件链摘要、锚点生成时间和摘要算法版本重新计算锚点摘要,并基于链上交易哈希或可信存证凭证向不可篡改存证介质核验该锚点摘要;
31、若所述目标存证锚点记录的锚点摘要经不可篡改存证介质核验通过,则读取所述目标存证锚点记录中的结束事件序号和末端事件链摘要,并查询该结束事件序号对应的防伪查询日志;若该日志中存储的事件链摘要与所述末端事件链摘要不一致,则判定验证不通过,跳转至步骤6;若一致,则以所述结束事件序号和末端事件链摘要作为校验起点。若该结束事件序号之后存在新的已落地防伪查询日志,则以上述末端事件链摘要作为上一事件链摘要,从后一条日志开始按事件序号顺序重新计算事件链摘要,直至所述校验终点;若该结束事件序号之后不存在新的已落地防伪查询日志,则直接比对所述目标存证锚点记录中的末端事件链摘要与所述校验终点日志中存储的事件链摘要。
32、若存在存证状态为成功的存证锚点记录,但根据链上交易哈希或可信存证凭证核验锚点摘要不通过,则判定验证不通过,跳转至步骤6。
33、若存证锚点记录表中不存在结束事件序号不大于所述校验终点事件序号、且存证状态为成功的存证锚点记录,则系统先判断该企业是否曾生成存证成功的锚点记录;若存在历史存证成功记录,但本地锚点记录缺失、相邻锚点区间断裂、存证凭证无法匹配,或无法从不可篡改存证介质核验到对应锚点摘要,则判定为锚点记录异常并进入步骤6异常处理流程;仅在确认该企业尚未生成过存证成功锚点的情况下,才从该企业防伪查询日志表中的第一条已落地防伪查询日志开始,按事件序号顺序重新计算事件链摘要,直至所述校验终点。
34、在需要重新计算事件链摘要的场景中,系统同步读取参与重算日志中保存的校验凭证、签名算法版本和密钥版本,并使用对应公钥、证书或密钥管理模块进行验签;任一日志验签失败、最终重算得到的事件链摘要与校验终点日志中存储的事件链摘要不一致,或前述直接比对不一致的,均判定验证不通过,跳转至步骤6;否则校验三通过。
35、步骤54:若上述校验一、校验二、校验三全部通过,则判定本次验证通过;
36、步骤55:验证通过后,系统新增一条防伪查询日志,所述防伪查询日志至少包括防伪码、查询时间、查询地址、当前匿名绑定标识、查询类型和事件序号;新增已绑定查询日志时,系统通过顺序化追加机制执行日志追加,确保对应防伪查询日志链中的事件序号单调递增,且每条日志引用的上一事件链摘要唯一确定。系统基于本条日志中预设参与摘要计算的业务字段与上一条已落地防伪查询日志的事件链摘要进行哈希计算,生成当前事件链摘要,并由服务器使用私钥对所述当前事件链摘要进行数字签名,生成校验凭证;随后将所述防伪查询日志、当前事件链摘要和校验凭证保存至防伪查询日志表。若因版本冲突、队列并发或临时写入失败导致本次已绑定查询日志未成功落地,则系统先按照预设次数或预设时间窗口执行自动重试;重试期间不向用户返回防伪校验失败结论,且不触发步骤7所述锚点生成条件判断。若自动重试后仍未成功落地,则记录系统异常并进入步骤6异常处理流程。
37、在一种可选实施方式中,所述顺序化追加可通过以下至少一种方式实现:其一,将对应防伪查询日志链的防伪查询日志追加请求投递至同一消息队列分区,由消费者顺序读取上一条已落地日志的事件序号和事件链摘要后写入新日志;其二,在数据库事务中对企业日志游标记录或上一条日志记录加事务锁,读取上一事件序号和上一事件链摘要后生成本条日志;其三,通过乐观锁或版本号机制更新企业日志游标,若版本冲突则重新读取最新事件序号和事件链摘要后重试;其四,通过对应防伪查询日志链与事件序号的唯一约束保证同一防伪查询日志链内日志序号不重复,发生冲突时重新分配事件序号并重试。上述方式均用于保证对应防伪查询日志链中的事件序号单调递增,且本条日志引用的上一事件链摘要唯一确定。
38、步骤6:当所述防伪码不存在、当前状态为不可验证状态,或首次绑定流程失败,或已绑定校验流程中的任一校验失败,或验证通过后的防伪查询日志追加、事件链摘要生成或校验凭证保存失败时,将本次异常查询记录保存至异常查询总表,生成复核证据包,并根据异常去重、合并、限频或风险分级结果,向复核系统生成或更新复核任务或复核工单。所述不可验证状态包括已作废、已冻结或已过期中的至少一种。
39、对于能够确定企业id并关联至对应防伪查询日志链的异常事件,系统在保存异常查询记录和生成复核证据包后,可异步触发该企业的事件链摘要连续性检查或锚点条件判断;所述复核证据包还包括用于核验所述校验凭证的签名算法版本、密钥版本或公钥证书标识中的至少一种。该触发不改变本次异常查询记录的处理结论,且不将该异常查询记录写入企业防伪查询日志表。
40、系统保存异常查询记录后,可生成异常记录摘要,并将所述异常记录摘要写入只追加审计日志、复核证据包或与对应防伪查询日志链关联的审计记录中,用于发现异常查询记录被删除、修改或重排的情况。
41、步骤7:在首次绑定日志或已绑定查询日志成功落地后,系统根据上一存证锚点记录的结束事件序号和当前最大已落地事件序号确定本次锚点区间;若不存在上一存证锚点记录,则以该企业第一条已落地防伪查询日志作为本次锚点区间起点,系统判断是否满足锚点生成条件;所述预设锚点生成条件包括新增已落地防伪查询日志数量达到预设数量阈值、距离上一次锚点生成时间达到预设时间周期阈值,或发生能够确定企业id并关联至对应防伪查询日志链的预设异常事件中的至少一种;若满足,则在存证锚点记录表中新增锚点记录,所述锚点记录至少包括企业id、起始事件序号、结束事件序号、末端事件链摘要、锚点生成时间和摘要算法版本;系统对所述锚点记录中的企业id、起始事件序号、结束事件序号、末端事件链摘要、锚点生成时间和摘要算法版本进行哈希运算生成锚点摘要,并将所述锚点摘要写入不可篡改存证介质;存证成功后,将链上交易哈希或可信存证凭证回写至存证锚点记录表。对于能够确定企业id并关联至对应防伪查询日志链的异常事件,系统可将其作为提前执行锚点条件判断或事件链摘要连续性检查的触发信号;但实际生成存证锚点时,仍以该企业已成功落地的防伪查询日志区间为对象,并以该日志区间的事件链摘要连续性校验通过为前提;对于无法确定企业id或无法关联至对应防伪查询日志链的异常查询记录,仅保存至异常查询总表并进入复核流程,不作为触发锚点生成判断的异常事件。若事件链摘要连续性校验不通过,则不生成正常存证锚点,并进入步骤6异常处理。若存证失败,则将对应锚点记录的存证状态标记为待重试或存证失败,并保留锚点摘要和待存证数据进入重试队列。
42、可选的,所述用户原始身份凭证包括以下至少一种:社交应用开放平台分配的用户身份凭证(openid或unionid)、经过哈希处理的用户手机号码、移动设备的唯一设备标识、或由验证系统分配的内部账号id;所述匿名绑定标识通过hmac或带系统密钥的哈希生成,并将与企业id、防伪码或产品批次关联的盐值作为输入参数之一。
43、所述用户原始身份凭证优先采用同一身份提供方返回的稳定用户标识。当因身份提供方策略变化、应用迁移或用户授权范围变化导致本次取得的用户原始身份凭证发生变化,并使当前匿名绑定标识与首次绑定日志中的匿名绑定标识不一致时,系统将本次查询作为异常查询记录保存至异常查询总表并触发人工复核;经复核确认属于同一合法用户的,系统记录复核结论或复核凭证,但不覆盖首次绑定日志中的匿名绑定标识、事件链摘要和校验凭证。
44、经复核确认属于同一合法用户的,系统生成身份变更确认记录,所述身份变更确认记录包括防伪码、原匿名绑定标识或其摘要、新匿名绑定标识或其摘要、身份提供方变更原因、复核凭证、生成时间、事件序号、上一事件链摘要、当前事件链摘要、摘要算法版本、签名算法版本和校验凭证,并作为身份变更确认类型的防伪查询日志接入所述防伪码所属的防伪查询日志链;异常复核记录中可保存该身份变更确认记录的引用或副本。后续已绑定校验时,若当前匿名绑定标识与首次绑定日志中的匿名绑定标识不一致,但与已通过复核并保存的身份变更确认记录中的新匿名绑定标识一致,且该身份变更确认记录的校验凭证验签通过,并且该身份变更确认记录与其前一已落地防伪查询日志之间的事件链摘要连续性核验通过,则视为绑定身份一致;该处理不覆盖或删除首次绑定日志中的匿名绑定标识、事件链摘要和校验凭证。
45、可选的,所述原子条件写入方式通过以下至少一种存储组件实现:关系型数据库的唯一索引、事务锁或乐观锁;非关系型数据库的条件更新或版本号机制;缓存系统的分布式锁或setnx命令;当绑定待确认状态对应的锁过期时间已超时或绑定待确认缓存记录已失效时,系统通过数据库条件更新、后台巡检任务或补偿机制清理锁令牌和绑定待确认缓存记录,并将防伪码状态由绑定待确认恢复为未绑定状态。
46、可选的,所述预设的异常事件包括:非绑定用户扫码、校验凭证验签失败、事件链摘要不一致、绑定待确认超时、并发冲突、防伪码不存在、防伪码已作废、已冻结或已过期中的至少一种;当发生存证失败时,系统记录存证失败异常,保留待存证锚点数据,进入重试队列,并在重试失败达到阈值后触发人工复核。其中,无法确定企业id或无法关联至对应防伪查询日志链的异常事件仅用于异常记录和复核,不作为触发锚点生成判断的异常事件。
47、所述校验凭证与对应事件链摘要、签名算法版本、密钥版本一并保存于防伪查询日志表;
48、已绑定校验或复核时,系统根据签名算法版本和密钥版本获取对应公钥、证书或密钥管理模块,对事件链摘要和校验凭证进行验签;
49、验签失败时,将本次查询保存至异常查询总表并生成复核证据包;
50、公钥验签验证的是校验凭证是否为系统私钥针对该事件链摘要生成的有效签名。
51、可选的,所述不可篡改存证介质包括以下至少一种:区块链网络、只追加日志系统、一次写入多次读取存储系统或可信存证服务。所述不可篡改存证介质是指在业务约定或系统设计约束下,已写入的存证数据无法被常规业务权限修改、删除,或其修改、删除行为能够被审计发现的存证介质。
52、可选的,所述复核证据包至少包括:异常发生时的请求信息、本次校验的计算过程与结果;当本次异常查询能够确定企业id时,所述复核证据包还包括与该企业相关的防伪查询日志快照;当存在对应存证锚点记录时,所述复核证据包还包括该存证锚点记录对应的链上交易哈希或可信存证凭证;在人工复核或审计场景中,系统根据存证锚点记录中的起始事件序号和结束事件序号,重新计算对应区间内各日志的事件链摘要,并与该存证锚点记录中的末端事件链摘要进行比对,以判断日志业务字段是否被篡改并定位篡改区间。
53、可选的,所述防伪查询日志链可按企业id维度建立为企业级日志链,也可按企业id与产品批次、商品系列、防伪码段、业务租户或活动id中的至少一种组合维度建立为企业内分区日志链;不同企业级日志链或企业内分区日志链分别维护事件序号、上一事件链摘要和存证锚点记录。已绑定校验、事件链摘要重算和锚点生成以对应防伪码所属的防伪查询日志链为对象执行。
54、可选的,所述事件链摘要的生成方式为:将本条防伪查询日志中预设参与摘要计算的业务字段与前一条防伪查询日志的事件链摘要进行哈希计算,得到当前事件链摘要;首条防伪查询日志不拼接前一条事件链摘要,直接对本条防伪查询日志中预设参与摘要计算的业务字段进行哈希计算。其中,所述预设参与摘要计算的业务字段至少包括防伪码、查询时间、当前匿名绑定标识和事件序号,并可包括查询地址、查询类型中的一种或多种;首次绑定日志和已绑定查询日志采用同一参与摘要计算字段集合,并通过查询类型字段区分日志类型;对于某一业务场景下不存在或不适用的字段,系统写入预设空值或固定占位值后参与摘要计算;参与摘要计算的字段顺序、编码格式和空值规则由摘要算法版本确定。事件序号由对应防伪查询日志链的日志游标、单调递增序列或等效顺序化追加机制在日志成功提交时确定;数据库自增id仅可作为事件序号的实现方式之一,且应保证其与同一防伪查询日志链内防伪查询日志的成功提交顺序一致。因事务回滚、预分配序号未使用产生的未落地空号,不作为防伪查询日志链不连续或相邻存证锚点区间不连续;所述防伪查询日志链不连续,是指已成功落地日志对应的事件序号或事件链摘要无法按照日志成功落地顺序连续衔接;所述相邻存证锚点区间不连续,是指相邻存证锚点记录对应的起止事件序号无法连续覆盖对应防伪查询日志链的已成功落地日志区间。
55、可选的,所述方法还包括:在绑定待确认状态下,若根据当前匿名绑定标识查询到有效的绑定待确认缓存记录,且该缓存记录中的锁令牌与防伪码数据表中的锁令牌一致,则允许该重复扫码请求等待原绑定流程完成或返回原绑定流程的处理状态,不重复生成首次绑定日志;若未查询到有效缓存记录、缓存记录已超时或锁令牌不一致,则重新读取防伪码数据表中的锁令牌、锁过期时间和处理状态;若确认处于补偿回滚、缓存写入失败处理或锁超时回收处理过程中,则返回等待或重试结果;否则拒绝继续绑定并生成异常记录;不同用户扫码直接拒绝并触发异常记录。
56、可选的,所述不可逆匿名化处理使用与企业id、防伪码或产品批次关联的盐值,以及由密钥管理模块维护的系统密钥,并记录匿名化算法版本、盐值标识和密钥版本;在后续验证比对时,系统根据防伪码关联的盐值、算法版本和密钥版本重新计算当前匿名绑定标识,并支持在密钥轮换场景下调用历史密钥版本进行回溯匹配;用于不可逆匿名化处理的系统密钥按企业、品牌或业务租户中的至少一种维度进行分级配置,并设置密钥版本。
57、可选的,所述顺序化追加机制包括以下至少一种:按企业id分区的消息队列、数据库事务锁、乐观锁、企业日志游标、分布式序列号服务、单线程消费器,企业id或企业内分区日志链标识与事件序号的唯一约束。
58、可选的,所述企业维度的防伪查询日志链可按企业id与产品批次、商品系列、防伪码段、业务租户或活动id中的至少一种组合进一步划分为企业内分区日志链;各企业内分区日志链分别维护事件序号、上一事件链摘要和存证锚点记录,并仍归属于对应企业的防伪查询日志链。
59、与现有技术相比,本发明具有以下有益效果:
60、本发明通过原子条件写入与锁令牌机制,确保在高并发场景下只有一个用户能够成功完成首次绑定,有效降低了多个请求同时扫码同一防伪码时产生的竞态条件问题,使得首次绑定主体明确、可验证。
61、本发明为每一次成功落地的防伪查询日志生成事件链摘要,并使用服务器私钥对事件链摘要进行数字签名生成校验凭证,任何未同步取得合法签名和存证一致性的日志篡改,都会破坏事件链的连续性或签名、锚点校验结果,从而保证了绑定记录的真实性和完整性。
62、本发明按预设条件基于事件链末端摘要及锚点区间信息生成锚点摘要,并将锚点摘要写入区块链、可信存证服务等不可篡改存证介质中,即使业务数据库中的日志数据被篡改,系统也能够在日常增量校验、事件链重算或人工复核/审计过程中,通过锚点校验、锚点后日志重算以及锚点区间完整重算,发现相应篡改风险并辅助定位篡改区间,显著降低后台数据被篡改后无法发现的风险。
63、本发明对用户原始身份凭证进行不可逆匿名化处理,仅在系统中存储不可逆向还原的匿名绑定标识,即使数据库泄露也无法获取用户的真实身份信息;同时结合平台鉴权机制,降低身份凭证被伪造后绕过验证的风险。
64、本发明中,每一次成功落地的防伪查询日志均接入可重算、可验签的事件链;系统通过事件链摘要和校验凭证保证日志内容及日志顺序可被校验,并通过阶段性存证锚点将指定日志区间的末端事件链摘要固化至不可篡改存证介质,从而使后台事后删除、插入、重排或篡改日志的行为能够被发现。
65、本发明自动捕获校验失败事件,生成包含请求信息、计算过程与结果,并在能够关联企业id或存证锚点记录时包含相关日志快照和存证凭证的复核证据包,并支持人工复核闭环,为防伪结论的最终可靠性提供了强有力的保障。
66、匿名化算法参数及其版本信息一经用于生成匿名绑定标识,应在防伪码生命周期内保持可追溯,不得无记录变更;如需进行密钥轮换,系统保留历史密钥版本,并在比对匿名标识时依次使用当前版本和历史版本进行尝试计算,任一匹配成功则视为身份一致。
67、通过存证锚点将全量事件链重算转化为从最近可信检查点开始的增量校验,在海量防伪查询日志场景下降低每次校验的计算量,同时保留在复核或审计场景下对锚点区间进行完整重算的能力,从而兼顾校验效率和篡改发现能力。
68、本发明并非将原子条件写入、事件链摘要、数字签名和存证锚点简单并列使用,而是在同一防伪码的首次绑定及后续校验过程中形成相互依赖的可信链路:原子条件写入先保证同一防伪码首次绑定资格的唯一性,避免多个扫码请求同时取得首绑身份;首次绑定日志和后续查询日志再通过事件链摘要及校验凭证接入所述防伪码所属的防伪查询日志链,使绑定主体、查询顺序和日志业务字段能够被重算和验签;存证锚点进一步将阶段性末端事件链摘要固化至不可篡改存证介质,使后台事后修改、删除、插入或重排日志的行为能够通过锚点核验和事件链重算被发现。由此,单一锁机制只能解决并发首绑而不能发现后续数据篡改,单一事件链缺少外部可信固化依据,单一存证机制又不能保证首次绑定主体唯一;本发明通过上述技术手段的协同配合,同时解决首次绑定唯一性、后续日志连续性和后台篡改可验证发现的问题。
69、综上所述,本发明降低了防伪码被复用、冒用和篡改的风险,显著提升了防伪系统的安全性、可信度和用户体验。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com