一种实现用户匿名和克隆行为检测的二维码生成方法及系统



1.本发明涉及信息安全和隐私保护技术领域,尤其涉及一种实现用户匿名和克隆行为检测的二维码生成方法及系统。


背景技术:



2.当前时代,主要采用二维码系统通过将可信身份认证平台生成的个人身份标识,与一体化政务服务平台、交通等部门汇聚数据等进行关联和绑定,并采用动态安全二维码技术生成具备身份和健康状况双重属性的二维码。
3.现有的二维码系统中存在的难题是:一方面,申请二维码时,需要提交用户的实名认证信息,用户每一次生成和出示二维码,后台都会知晓该用户的身份,一旦用户的实名信息发生泄露,会对其隐私造成不可挽回的损失;另一方面,目前对于二维码的识别主要基于人工肉眼识别或机器扫码识别,存在截图欺骗和克隆行为。


技术实现要素:



4.为了解决背景技术中存在的问题,本发明提供了一种实现用户匿名和克隆行为检测的二维码生成方法及系统,用户在注册成为系统用户时,需要提交自身的实名认证信息,在生成和出示二维码时,保持匿名,即后台只会知晓该用户是一个合法用户,而不会知晓其具体身份;用户每次生成二维码,都会有一个对应的状态码,状态码的生成与用户上一次扫码有关,只有用户上一次扫码时的状态码和秘密参数被服务器签名后,下一次才能生成有效的状态码;用户如果将自身的账号借用给其他人登录生成二维码,自己下一次生成二维码进行出示时,会被服务器检测到两次认证序列号相同的二维码记录,存在克隆行为,服务器可以根据这两次二维码记录中的相关信息计算出该用户的秘密参数,出该用户的实名信息,并计算出该用户所有的认证序列号,禁止其再生成有效的二维码;用户如果将自己生成的二维码截图分享给其他人,在出示二维码截图时,会被闸机检测到存在截图欺骗行为,不予通行。
5.克隆行为是用户将自己的登录账号和登录密钥,分享给其他不在系统中的用户,让其能够以合法用户的身份登录系统;截图欺骗是指使用有效二维码的照片或截图进行出示,而非通过系统规定的方式生成。在二维码系统中,这两类行为尤为危险。一个本身存在健康风险的用户可以借用其他用户的账号或者二维码截图,出入公共场合,造成传播的风险。
6.为了实现上述目的,本发明采用的技术方案是:
7.一、一种实现用户匿名和克隆行为检测的二维码生成方法,包括:
8.(一)系统初始化阶段,服务器生成公共参数,包括用户申请匿名证书需要用到的rsa、生成知识承诺和知识签名的离散对数以及系统安全参数,所述的公共参数是对外公开的;
9.用户注册阶段,用户获取到系统初始化阶段公开的公共参数,向服务器申请匿名
证书;所述的申请匿名证书的过程为:
10.用户生成匿名证书中的秘密参数以及公私密钥对,将秘密参数隐藏到对应的知识承诺j1和知识承诺j2中,并生成用于证明知识承诺j1和知识承诺j2是正确构造的知识签名spk1,将知识承诺j1、知识承诺j2、知识签名spk1、公钥pku和实名信息发送给服务器进行注册;
11.服务器验证知识签名spk1通过后,记录该用户的实名信息和公钥pku,服务器侧注册成功;服务器侧注册成功后,服务器会对知识承诺j1和知识承诺j2中隐藏的秘密参数进行签名,并将签名发送给用户,同时计算出知识承诺j,保存到用户的实名信息数据库中;
12.用户接收到服务器发送的签名(a,y,t2)并进行验证,验证通过后,结合用户的秘密参数和服务器发送的签名生成用于后续扫码阶段使用的匿名证书;
13.(二)扫码阶段,用户根据注册阶段生成的匿名证书,生成知识承诺和知识签名spk2,并与时间戳一起发送给服务器;服务器接收到这些数据后,对认证序列号sn进行认证:
14.在违规用户认证序列号数据库中查此次扫码的认证序列号;
15.在已使用认证序列号数据库中查此次扫码的认证序列号;
16.若在违规用户认证序列号数据库中查到相同的认证序列号sn,则将该用户判断为曾经违规的用户,拒绝该用户的验证,告知闸机不放行,不再执行后续步骤;若在已使用认证序列号数据库中查到相同的认证序列号,则该用户存在克隆行为,拒绝该用户的验证,告知闸机不放行,并进入追踪阶段,不再执行后续步骤;若两个数据库中都未查到相同的认证序列号,则生成对应的标识码发回给用户;
17.服务器返回的标识码直接嵌入到用户二维码中,用户向闸机出示二维码,并通过nfc向闸机发送服务器返回的标识码,所述的服务器返回的标识码对用户不可见;闸机对二维码进行识别,提取出标识码并与用户通过nfc发送的标识码对比,若对比一致,则将标识码发送给服务器,否则不予通行,不再执行后续步骤;
18.服务器根据闸机发送的标识码到对应的用户发送数据,并验证知识签名spk2,将结果发送给闸机;闸机根据验证结果,判断是否对该用户进行放行;
19.用户通过闸机后,服务器会向用户发送对于状态码和用户秘密参数的签名;用户验证返回的签名,验证通过后更新匿名证书;
20.(三)追踪阶段,服务器在已使用认证序列号数据库中查到了此次扫码的认证序列号sn,结合两次扫码记录中的相关信息,服务器计算出该用户匿名证书中的秘密参数,并根据秘密参数计算出知识承诺j,出用户匿名证书对应的实名身份,并根据秘密参数生成所有认证序列号加入到违规用户认证序列号数据库中,禁止其进行扫码通行。
21.进一步的,在系统初始化阶段,服务器选择一个rsag
rsa
和离散对数g,其中rsa g
rsa
用于在用户注册阶段对用户的秘密参数进行签名,生成用户的匿名证书;离散对数 g用于生成扫码阶段中的知识签名和知识承诺。
22.进一步的,在系统的初始化阶段,服务器会生成系统的公共参数 (n,a,a
x
,as,a
t
,ai,ae,ad,h,σ,b,b1,b2),其中,n是g
rsa
的模数,(a,a
x
,as,a
t
,ai,ae,ad,h)是 g
rsa
中随机选取的元素,用来生成隐藏用户秘密参数的知识承诺;σ是离散对数g的模数, b,b1,b2是离散对数g中的元素,用来生成扫码阶段中的知识承诺和知识签名。
23.进一步的,在扫码阶段,用户向服务器发送的数据中,不会包含用户身份的相关信息,服务器在验证用户的知识签名时,只能够确定该用户此次扫码是否有效。
24.进一步的,用户向服务器发起注册并申请对匿名证书中的秘密参数的签名过程包括:
25.步骤a1,用户向服务器发起注册协议,用户生成自己匿名证书中的秘密参数 (t1,x,s,i,e,d,w),并以离散对数的方式将秘密参数(t1,x,s,i,e,d,w)隐藏到知识承诺j1和知识承诺j2中,同时生成用于证明知识承诺j1和知识承诺j2是由秘密参数(t1,x,s,i,e,d,w)正确构造生成的知识签名spk1;用户将公钥pku、知识承诺j1、知识承诺j2、知识签名spk1和用户的实名信息发送给服务器;
26.步骤a2,服务器接收到用户发送的知识承诺j1、知识承诺j2、知识签名spk1、用户公钥 pku和实名信息后,验证签名spk1的有效性;验证通过后,服务器将该用户的实名信息保存到用户实名信息数据库中,服务器侧注册完成;
27.步骤a3,服务器端对用户匿名证书中的秘密参数进行签名,将签名结果记为(a,y,t2)并发送给用户,同时计算出知识承诺j,将知识承诺j保存到用户的实名信息数据库中,y和t2是服务器选择的随机素数,a是服务器结合用户知识承诺j2、随机素数y和t2计算生成的结果;
28.步骤a4,用户验证服务器发送的签名(a,y,t2),验证通过后,用户更新本地的秘密参数,生成匿名证书。
29.进一步的,所述的扫码阶段中,若闸机从用户出示的二维码中提取出的标识码与用户通过nfc发送的标识码对比不一致,或者用户没有通过nfc向闸机发送标识码,说明用户出示的二维码并非用户自己生成,存在截图欺骗行为,闸机禁止该用户通行。
30.进一步的,所述的扫码阶段中,用户还需要通过哈希函数生成一个哈希值c,并与知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2、时间戳一起发送给服务器,其中ic是用户匿名证书的状态码,sn是用户匿名证书的认证序列号,t、d、a

、r1和r2是用户计算生成的结果;服务器在对认证序列号sn进行认证时,若在已使用认证序列号数据库中查到相同的认证序列号,且哈希值c不同,则该用户存在克隆行为,若哈希值c相同,则属于网络异常造成的系统重发现象,不属于克隆行为。
31.进一步的,所述的追踪阶段包括:
32.步骤c1,服务器根据两次认证序列号sn相同的数据记录,计算出该违规用户对应的秘密参数(s,t),其中,s是用户生成匿名证书中的其中一个秘密参数,t=t1+t2表示用户生成匿名证书中的其中一个秘密参数t1与服务器对秘密参数的签名中的参数t2的和;
33.步骤c2,根据秘密参数(s,t),计算出知识承诺j=b
t
,由于用户实名信息和知识承诺j存储的对应关系,出该违规用户对应的实名信息;
34.步骤c3,根据生成的秘密参数(s,t)生成该违规用户所有的认证序列号sn:
[0035][0036]
其中,b1、b2是服务器在系统初始阶段生成的公共参数,ic表示用户匿名证书的状态码;
[0037]
将所有的认证序列号加入到违规用户认证序列号数据库中,下一次扫码验证时,
只要检测到认证序列号sn在违规序列号数据库中就中断验证协议,禁止其进行扫码通行。
[0038]
二、一种实现用户匿名和克隆行为检测的二维码生成系统,用于实现上述的二维码生成方法,同时具有密切接触者追踪的功能。
[0039]
系统通过蓝牙广播和接收的方式实现密切接触者追踪功能,用户会不断地广播自身所对应的匿名编码,同时接收周围其他用户发送的匿名编码进行存储,若某一个用户被确诊为特定患者,其会向服务器发送自己生成的匿名编码,服务器对这些编码进行公开,供其他用户查询,确认自身是否是密切接触者;
[0040]
服务器会收集用户的认证序列号sn,当确诊者提供匿名证书参数计算出其所有sn后,服务器将满足时间空间条件的相关的其他用户的sn公开,供其他用户查询,确认自身是否是时空交集者。
[0041]
本发明的有益效果是:
[0042]
(1)本发明通过对二维码系统的改进,满足了诚实用户在二维码使用过程中的隐私保护需求,即用户进行扫码通行时,服务器只能够验证该用户此次扫码是否有效,并不能得到该用户其他信息,且任意两次扫码记录不可链接;
[0043]
(2)本发明对于存在克隆行为的违规用户,能够通过克隆行为检测和追踪算法,识别出克隆者的实名身份,并且禁止其后续的扫码操作;
[0044]
(3)本发明通过闸机和用户之间的交互,可以检测用户出示的二维码是否存在截图欺骗;
[0045]
(4)本发明通过蓝牙广播和接收在二维码系统中实现了密切接触者判断功能,如果用户在一定时间内接触过特定患者,用户可以根据服务器公布的特定患者相关信息判断自己是否是其密切接触者和时空交集者,在判断过程中,无法知晓该特定患者的相关信息,实现了特定患者的隐私保护需求。
附图说明
[0046]
图1是本发明实施例的系统示意图。
[0047]
图2是本发明实施例的用户注册二维码协议示意图。
[0048]
图3是本发明实施例的用户扫码协议示意图。
[0049]
图4是本发明实施例的违规用户追踪示意图。
具体实施方式
[0050]
以下结合附图和实施例对本发明的一种实现用户匿名和克隆行为检测的二维码生成方法作进一步的说明,用于二维码系统中的隐私保护和克隆行为的检测追踪。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0051]
如图1所示,本发明的实现用户匿名和克隆行为检测的二维码生成方法中包括用户、闸机和服务器。
[0052]
在本方案中,诚实用户的隐私得到了绝对的保护。也就是说,诚实用户在注册阶段申请了匿名证书后,在扫码阶段能够以匿名的方式向服务器证明其生成的二维码的有效性,任何人(包括服务器)都不能够识别用户的身份,而且也不能够判定任何两次(诚实的)扫码记录是否来自于同一个用户。服务器在验证用户的知识签名时,会先将用户此次扫码
的认证序列号与违规用户认证序列号对比,若发现该序列号为违规序列号,拒绝此用户扫码,并中断验证过程;通过将此次扫码的认证序列号与之前扫码已使用过认证序列号的信息进行对比,服务器能够识别出克隆行为以及该违规用户的真实身份,并对其进行制裁,计算出其所有认证序列号,并将这些序列号存入违规用户认证序列号数据库中。当用户的知识签名验证通过后,会对用户的秘密参数和状态码进行签名,用户每一次生成有效的二维码,需要上一次扫码使用的用户秘密参数和状态码被服务器签名(用户注册完成后的第一次扫码对应的为注册阶段服务器对其秘密参数的签名),用户在收到了银行的签名后,需要更新自己本地的秘密参数,不然下一次扫码时会被检测到存在克隆行为,被识别为违规用户。
[0053]
在本发明的一项具体实施中,注册过程是指用户向服务器申请在其秘密参数上的签名,获得服务器签名的匿名证书,从而成为系统的合法用户。用户在向服务器进行申请签名时,会将自己实名认证信息一起发送给服务器,确保存在克隆行为的违规用户能够被到并制裁。
[0054]
本发明所涉及的用户匿名证书,是指用户以实名方式注册、以秘密的方式选择证书参数并以零知识的方式证明用户对于这些参数的知识,进而被服务器签署的证书。匿名证书中的秘密参数仅为用户知晓,不被服务器获知,从而实现用户的匿名保护。
[0055]
在扫码过程中,用户匿名证书将被用户以零知识的方式证明对其的所有权(证明其拥有该匿名证书所对应秘密参数的知识,但服务器在验证过程中无法得到秘密参数的任何信息)。
[0056]
本发明中使用的零知识证明方式为知识签名和知识承诺,知识承诺中包含了所需要证明的秘密参数,但是在知晓知识承诺的情况下,推测出秘密参数的相关信息是不可行的;知识签名是指使用秘密参数知识在某个消息上的签名,验证者可以通过验证判断证明者是否具有知识承诺中包含的秘密参数知识。
[0057]
以证明用户的私钥知识为例,说明知识承诺和知识签名的方式和原理:
[0058]
给定一个循环g=《g》,元素的比特长度为lg。h:{0,1}
*

{0,1}k是一个可以将任意长度的二进制串映射为k比特二进制串的抗碰撞哈希函数。
[0059]
每个用户都会有公钥和私钥,其中公钥是公开的,私钥是仅用户自己知晓的,私钥为u,公钥为pku=gu(此处的幂运算,是g中的幂运算,在知道u的情况下,计算出pku是容易的;反过来,知道pku的情况下,计算出u是困难的)。因为私钥的特殊性,在证明的过程中不能够向服务器透露关于私钥的任何信息,防止私钥的泄露。
[0060]
上述公钥pku就是私钥u对应的知识承诺(包含了要证明的秘密参数,但是无法得到秘密参数的任何信息)。
[0061]
用户知晓私钥知识u,生成一个随机数r,计算c=h(pku||g||gr||m),s=r-cu,可以得到(c,s),表示为spk(u:pku=gu),是私钥在消息m上的知识签名。服务器接收到用户发送的知识签名(c,s)和知识承诺pku后,计算c’=h(pku||g||pkucgs||m),判断c和c’是否相等,成立则说明用户拥有pku对应的私钥知识,不成立则说明用户不具有对应的私钥知识。
[0062]
上述是本技术中的一种知识签名的方式,证明者能够在不告知验证者秘密参数的情况下,向验证者证明自己知道秘密参数。
[0063]
本发明注册阶段申请匿名证书处理过程如图2所示:
[0064]
步骤201,用户生成匿名证书的秘密参数,并根据秘密参数按照公式(1)和(2)生成其知识承诺j1和j2;
[0065][0066][0067]
式中,t1,x,s,i,e,d,w是用户选择的秘密参数,b,a,as,a
t
,ai,ae,ad,h是服务器在系统初始化阶段生成的公共参数,式(1)中表示b的t1次方,式(2)中,表示a
x
的x次方, ahw表示a、和hw的乘积;mod表示取余运算符,n表示用户申请匿名证书需要用到的rsag
rsa
的模数;
[0068]
步骤202,用户根据秘密参数的知识,结合用户的私钥知识生成知识签名spk1,用以证明拥有秘密参数(u,x,s,t1,i,e,d,w)的知识;
[0069][0070][0071]
式中,pku是公钥,∧表示取交集符号;
[0072]
步骤203,用户将公钥pku、知识承诺j1和j2、知识签名spk1和用户的实名信息发送给服务器;
[0073]
步骤204,服务器验证知识签名spk1的有效性。
[0074]
若验证结果为真,则继续完成后续步骤;
[0075]
若验证结果为假,则中断本次协议;
[0076]
步骤205,服务器对用户匿名证书中的秘密参数签名,生成(a,y,t2)。本实施例中,银行使用cl签名算法(可以在不知道用户秘密参数的情况下,对用户的秘密参数进行签名);
[0077][0078]
式中,(a,y,t2)即服务器对用户秘密参数的签名,其中y和t2分别是服务器生成的随机素数和随机数;
[0079]
步骤206,服务器存储用户的实名信息和知识承诺j,所述的知识承诺j的获取方式如下:
[0080]
由于t1是用户选择的秘密参数,t2是服务器选择的随机数,用户在接收到服务器发送的对用户秘密参数的签名(a,y,t2)中的t2后,会根据公式(5)计算得到t作为自己的秘密参数,对于服务器来说,t1是未知的,但是用户在步骤203中向服务器发送的知识承诺j1中隐藏了t1,服务器可以根据j1计算出知识承诺j,计算公式如下式(6)所示;后续在追踪违规用户时,计算得到的是该用户的秘密参数s和t,服务器知道了t后,可以计算出j=b
t
,根据用户实名信息和知识承诺j存储的对应关系,可以确定该用户的具体身份;
[0081]
t=t1+t2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0082][0083]
步骤207,银行将签名(a,y,t2)发送给用户。
[0084]
步骤208,用户验证服务器对其秘密参数的签名(a,y,t2),判断以下等式(7)是否
成立,并生成匿名证书。
[0085][0086]
如果验证无效,则用户此次申请匿名证书失败;由于cl签名算法属于成熟的签名算法,其准确性较高,验证无效情况发生的概率可以忽略不计。具体实施过程中,由于通信问题或其他原因,导致验证失败时,用户可以向服务器请求再次发送签名;
[0087]
如果验证有效,则用户获得了服务器在秘密参数上的签名,生成了一个有效的匿名证书,成为了一个合法用户。
[0088]
在完成如图2所示的申请匿名证书过程后,用户可以在扫码阶段生成有效的二维码。在扫码阶段,用户可以通过向服务器证明自己具有一个有效的匿名证书来告知服务器自己是一个合法用户。
[0089]
用户扫码过程如图3所示,为实现检测克隆行为和追踪违规用户的功能,用户每一次扫码都会有一个对应的状态码ic,是由上一次扫码的状态码推算出来的(只有上一次扫码的状态码被服务器正确签名,本次扫码状态码才能验证通过;每一个状态码只能够使用一次,若用户多次使用相同的状态码生成二维码,这些二维码的认证序列号会相同,会被克隆行为检测算法检测到,判别为违规用户)。
[0090]
为实现用户匿名地扫码通行,用户、闸机和服务器之间在此过程中需完成以下交互过程:
[0091]
用户将生成的知识承诺和知识签名,发送给服务器;
[0092]
服务器根据用户发送的知识承诺和知识签名生成对应的标识码,发送给用户;
[0093]
用户向闸机出示嵌入了标识码的二维码,并通过nfc发送标识码;
[0094]
闸机提取标识码进行对比,一致后将其发送给服务器;
[0095]
服务器根据闸机发送的标识码,验证对应的知识签名;
[0096]
服务器根据验证结果,通知闸机是否开闸;
[0097]
用户向服务器请求退出此次扫码;
[0098]
服务器向用户发送其对于此次扫码秘密参数的签名。
[0099]
具体过程如下:
[0100]
步骤301,用户利用匿名证书的秘密参数生成此次扫码的哈希值c、知识承诺 (a

,t,ic,sn,d,r1,r2)和知识签名spk2;
[0101][0102][0103]
ic=i+(e+d)-1
(mod k)
ꢀꢀꢀꢀꢀꢀꢀ
(10)
[0104][0105][0106]
r1=(ic+s)-1-ct,r2=(ic+t)-1-cs
ꢀꢀꢀꢀꢀ
(13)
[0107]
其中,w
*
,r是随机数,a,y是注册阶段服务器的签名,ic是用户此次扫码的状态码,sn是此次扫码的认证序列号,k是系统设定的安全参数,t是用户根据式(5)计算得到的秘密参数, b1、b2是服务器在系统初始阶段生成的公共参数,t是用户对其秘密参数t生成的知识
承诺,式(10)中的(e+d)-1
表示(e+d)对于k求逆的结果(即(e+d)-1
(e+d)=1(modk)),式 (11)和(12)中(ic+s)-1
和(ic+t)-1
分别表示(ic+s)和(ic+t)对于k求逆的结果;
[0108][0109][0110][0111]
步骤302,用户将生成的知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2和相关信息发送给服务器;本实施例中,相关信息指用户本地时间戳;
[0112]
步骤303,服务器接收到用户发送的知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2和相关信息;
[0113]
步骤304,服务器在违规用户认证序列号数据库中查此次扫码的认证序列号sn;
[0114]
若查结果为空,则继续后续步骤;
[0115]
若查结果不为空,则说明该用户为违规用户,拒绝该用户的验证,并告知闸机不放行,不再执行后续步骤;
[0116]
步骤305,服务器在已使用认证序列号数据库中查此次扫码的认证序列号sn;
[0117]
若查结果为空,则继续后续步骤;
[0118]
若查结果不为空,而且c不同,则说明该用户存在克隆行为,拒绝该用户的验证,进入追踪阶段,并告知闸机不放行,不再执行后续步骤;
[0119]
步骤306,服务器生成用户数据对应的标识码challenge;
[0120]
步骤307,服务器向用户发送标识码challenge;
[0121]
步骤308,用户向闸机出示嵌入了challenge的二维码,并通过nfc发送challenge;
[0122]
步骤309,闸机读取用户出示的二维码,并识别该二维码是否存在风险;例如,可以赋予二维码颜,通过颜区分二维码是否存在风险;
[0123]
若该二维码存在风险,则不予通行,不再执行后续步骤;
[0124]
若该二维码不存在风险,则执行后续步骤;
[0125]
步骤310,闸机提取二维码中的challenge,并与nfc发送的challenge进行对比;
[0126]
若该对比结果不一致或nfc发送的challenge不存在,则不予通行,不再执行后续步骤;
[0127]
若该对比结果一致,则执行后续步骤;
[0128]
步骤311,闸机向服务器发送challenge;
[0129]
步骤312,服务器根据challenge,到该用户先前发送的知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2和相关信息;
[0130]
步骤313,服务器验证spk2和认证序列号sn是否是正确生成的;
[0131][0132]
步骤314,服务器将知识签名的验证结果发送给闸机;
[0133]
步骤315,闸机根据服务器发送的验证结果判断是否放行;
[0134]
若验证结果为真,则打开闸门,让用户通行;
[0135]
若验证结果为假,则不打开闸门,并提示用户此次扫码失败;
[0136]
步骤316,如果用户知识签名验证结果为真,服务器会对用户本次扫码的秘密参数和状态码进行签名;
[0137]ad
=d
1/y

(mod n)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(16)
[0138]
其中,y

是服务器随机选择的素数,d是用户在步骤301发送的知识承诺中的参数,其中也包含了用户此次扫码的状态码,返回的签名形式是(ad,y

);
[0139]
步骤317,服务器向用户发送签名(ad,y

);
[0140]
步骤318,用户验证服务器的签名(ad,y

)是否符合下式(17);
[0141][0142]
若验证结果为真,则接收签名;
[0143]
若验证结果为假,则通知服务器重新生成签名并发送;
[0144]
步骤319,用户更新自己的匿名证书,将其中的(a,y)更新为(ad,y

),并同步更新自己的秘密参数,将秘密参数中的i更新为最新的状态码ic,e更新为式(10)中的(e+d),w更新为 w’。
[0145]
在本发明的一项具体实施中,服务器在步骤305中检测到用户存在克隆行为后,需要追踪该违规用户的身份,具体追踪过程如下:
[0146]
步骤401,服务器将两次认证序列号相同的数据记录中的r1和哈希值c提取出来,计算用户的秘密参数;
[0147][0148]
其中,r1和c是用户此次扫码生成的,r
′1和c

是从已使用认证序列号数据库中查到的;
[0149]
步骤402,根据以下公式计算出用户的秘密参数s和t;
[0150][0151]
其中,k1、k2是系数,σ是离散对数g的模数;
[0152]
步骤403,根据步骤402中计算得到的t,用户可以按照式(6)计算出j,并到对应用户,同时按照公式(11)计算出该用户的所有认证序列号,加入到违规用户认证序列号数据库中。
[0153]
在本发明的一项具体实施中,一次完整的注册扫码过程如下:
[0154]
步骤a1,用户向服务器发起注册协议,用户生成自己匿名证书中的秘密参数 (t1,x,s,i,e,d,w),并以离散对数的方式将(t1,x,s,i,e,d,w)隐藏到知识承诺j1和知识承诺j2中,发送给服务器,同时提供能够证明知识承诺j1和知识承诺j2是由秘密参数(t1,x,s,i,e,d,w)正确构造生成的知识签名spk1;
[0155]
步骤a2,服务器接收到用户发送的知识承诺j1和知识承诺j2、知识签名spk1、用户公钥 pku和实名信息后,spk1验证通过后,服务器将该用户的实名信息保存到用户实名信息数据库中,服务器侧注册完成;
[0156]
步骤a3,服务器端生成对于用户秘密参数生成的签名(a,y,t2),并发送给用户,同时计算出知识承诺j保存到用户的实名信息数据库中;
[0157]
步骤a4,用户验证服务器发送的签名(a,y,t2),验证通过后,用户计算t=t1+t2,并生成匿名证书;
[0158]
步骤b1,用户根据自身匿名证书生成知识承诺(a

,t,ic,sn,d,r1,r2)和知识签名spk2,将知识承诺(a

,t,ic,sn,d,r1,r2)和当前时间戳合并通过哈希函数生成一个哈希值c,向服务器发送知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2和哈希值c,证明用户此次匿名证书的有效性;
[0159]
步骤b2,服务器接收到知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2和哈希值c后,在违规用户认证序列号数据库和已使用认证序列号数据库中查此次扫码的认证序列号sn,若在违规用户认证序列号数据库中到结果,则将该用户判断为违规用户,拒绝该用户的验证,告知闸机不放行,不再执行后续步骤;若在已使用认证序列号数据库中到结果,而且c不同,说明该用户存在克隆行为,拒绝该用户的验证,告知闸机不放行,并进入追踪阶段,不再执行后续步骤;若在两个数据库中都未到结果,则生成对应的标识码challenge,发送给用户;
[0160]
步骤b3,用户将接收到的challenge嵌入到二维码中,向闸机出示二维码,并通过nfc发送challenge;
[0161]
步骤b4,闸机提取用户出示的二维码,并识别该二维码是否存在风险。若存在风险,则不予通行,不再执行后续步骤;提取该二维码中嵌入的challenge,并与用户nfc发送的 challenge对比,对比一致将其发送给服务器,否则不予通行,不再执行后续步骤;
[0162]
步骤b5,服务器到challenge对应的知识承诺(a

,t,ic,sn,d,r1,r2)、知识签名spk2和哈希值c后进行验证,并将验证结果发送给闸机;
[0163]
步骤b6,闸机接收到服务器的验证结果,判断是否对该用户放行;
[0164]
步骤b7,服务器对用户的此次扫码的状态码和其他秘密参数进行签名,并将生成的签名 (ad,y

)发送给用户;
[0165]
步骤b8,用户对服务器发送(ad,y

)进行验证,验证通过后,将(ad,y

)更新到自身的匿名证书中;
[0166]
若步骤b2中检测到用户本次扫码的认证序列号sn已经被使用过,则进行以下步骤追踪违规用户的身份:
[0167]
步骤c1,服务器根据两次认证序列号sn相同的数据记录,通过追踪算法计算出该违规用户对应的秘密参数(s,t);
[0168]
步骤c2,根据秘密参数(s,t),计算出j=b
t
,并出该违规用户对应的实名信息;
[0169]
步骤c3,根据生成的秘密参数(s,t)生成该违规用户所有的认证序列号,加入到违规用户认证序列号数据库中,下一次扫码验证时,只要检测到认证序列号sn在违规用户认证序列号数据库中就中断验证协议,禁止其进行扫码通行。
[0170]
与前述的一种二维码系统中隐私保护和克隆行为追踪方法的实施例相对应,本发明还提供了一种实现用户匿名和克隆行为检测的二维码生成系统,主要用于实现上述用户匿名和克隆行为检测的二维码生成方法,同时具有密切接触者追踪的功能,所述的二维码生成系统包括用户终端、闸机终端、医护人员终端和服务器终端;
[0171]
所述服务器终端,在用户匿名和克隆行为检测功能中,负责实现以下功能:
[0172]
注册阶段匿名证书的颁发;
[0173]
扫码阶段与闸机和用户终端通信并验证用户生成的二维码是否有效;
[0174]
追踪阶段中解开违规用户的真实身份并禁止其再生成有效的二维码;
[0175]
在密切接触者判别功能中,负责实现以下功能:
[0176]
用户确诊为特定患者时,接收匿名编码和盐值并公布其d天中生成的所有匿名编码,供其他用户查询自身是否是密切接触者;接收其匿名证书中的秘密参数(s,t),计算出其所有认证序列号sn,将满足时空交集的其他用户认证序列号sn进行公开,供其他用户查询,确认自身是否是时空交集者;
[0177]
用户状态恢复时发送和验证医护人员终端发送的随机验证码;
[0178]
所述用户终端,在用户匿名和克隆行为检测功能中,负责实现以下功能:
[0179]
注册阶段与服务器终端进行通信,申请用户的匿名证书;
[0180]
扫码阶段生成有效二维码,并与服务器终端和闸机终端进行交互,对二维码进行验证和匿名证书的更新;
[0181]
在密切接触者判别功能中,负责以下实现以下功能:
[0182]
自身匿名编码的生成以及广播;
[0183]
其他用户匿名编码的接收;
[0184]
用户确诊时匿名证书秘密参数(s,t)、匿名编码和盐值的上传;
[0185]
用户是否为密切接触者和时空交集者判断;
[0186]
用户确诊和密切接触者(时空交集者)状态恢复;
[0187]
所述医护人员终端,负责在密切接触者判别功能中实现对于用户上传信息过程中服务器发送的随机验证码的接收;
[0188]
所述闸机终端,负责扫描用户出示的二维码,提取用户二维码中的标识码进行对比并发送给服务器,接收服务器对于用户知识签名的结果,并判断是否对该用户开闸放行;
[0189]
在本发明的一项具体实施中,系统通过蓝牙广播和接收的方式实现密切接触者追踪功能,用户会不断地广播自身所对应的匿名编码,同时接收周围其他用户发送的匿名编码进行存储,若某一个用户被确诊为特定患者(特定患者分为确诊患者和无症状感染者,因两者的传染能力相同,本发明中我们统一称为特定患者),其会向服务器发送自己生成的匿名编码,服务器对这些编码进行公开,供其他用户查询,确认自身是否是密切接触者,实现方式如下:
[0190]
用户匿名编码生成,使用md5盐值加密算法生成用户的匿名编码,用户第一次使用该二维码系统时,会随机生成一个起始的匿名编码m0和盐值salt,之后每隔2小时,就会生成新的匿名编码mi,mi由上一次的匿名编码m
i-1
拼接上盐值进行哈希后得到,当匿名编码的个数超过12*d个(d为预设的风险时间,单位:天)时,新的匿名编码会覆盖掉起始编码m0,后续生成的匿名编码会逐渐覆盖掉上一个周期生成的匿名编码,保留用户最近d天中生成的匿名编码;
[0191]
用户匿名编码接收,用户会在本地生成一个文件,用于存储d天中接触过的匿名编码,当时间超过d天时,会覆盖掉第一天的存储数据,后续接收到的匿名编码会逐渐覆盖掉上一个周期接收的匿名编码,保留最近d天中接收到的其他用户匿名编码;
[0192]
用户确诊匿名编码上传,当用户被确诊为特定患者前往医院接受时,需要在医护人员的监督下上报自己的匿名编码,医护人员的终端设备中会生成一串随机验证码,
用户在自己的终端上按下确诊信息上传按钮,并输入医护人员验证码,终端会将验证码、用户生成的匿名编码和用户计算认证序列号所使用的秘密参数(s,t)上传到服务器,同时将自身的二维码变成红码,为缓解用户和服务器之间的通信压力,只会发送最近d天中的第一个匿名编码m
i+1
和盐值salt(当前用户生成的是第i个匿名编码,需要发送的是第i+1个匿名编码,第i+1个编码是当前d天周期的第一个匿名编码,若用户匿名编码未满168个,则发送用户生成的起始匿名编码m0),后续d天中的匿名编码都根据这个匿名编码和盐值salt计算生成,服务器接收到用户的秘密参数(s,t)后,会生成该用户所有认证序列号sn,根据已使用认证序列号数据库中的扫码记录,将满足时空交集者的其他用户的sn进行公开,供用户查询,确认自身是否是时空交集者;
[0193]
用户判断密切接触,用户终端打开时,每隔一段时间都会访问服务器公布的特定患者匿名编码和盐值,用户需要将每个匿名编码和盐值通过md5盐值加密算法生成特定患者d天的匿名编码,随后用户会在自己的匿名编码接收数据库中查询这些特定患者的匿名编码,如果查询结果不为空,证明该用户是密切接触者,用户终端会自动将用户密切接触信息发送给服务器,并将用户的二维码切换成黄码;
[0194]
用户状态恢复,用户确诊感染并经过恢复后,用户需要在医护人员的监督下,进行确诊者恢复操作,点击确诊者恢复按钮,并输入医护人员终端生成的随机验证码,当服务器验证通过后,应用自动将用户的二维码变更为绿,并且清空所有匿名编码,重新生成盐值 salt;用户被判断为密切接触者后,需要进行隔离,若在隔离期间被诊断为特定患者,则需上传自己的匿名编码并按上述特定患者状态恢复步骤进行状态恢复;若隔离期间未被诊断为特定患者,需要在医护人员的监督下,进行密切接触者恢复操作,点击密切接触者恢复按钮,并输入医护人员终端生成的随机验证码,服务器验证通过后,应用自动将用户的二维码变更为绿,不需要清空匿名编码和重新生成salt值;
[0195]
对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
[0196]
本发明描述了具体实施例以简化本发明。但是需要认识到,本发明不局限于所说明的实施例,并且在不脱离基本原理的前提下,本发明的各种修改是可能的,这些等价形式同样落于本技术所附权利要求书所限定的范围。

技术特征:


1.一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,包括:(一)系统初始化阶段,服务器生成公共参数,包括用户申请匿名证书需要用到的rsa、生成知识承诺和知识签名的离散对数以及系统安全参数,所述的公共参数是对外公开的;用户注册阶段,用户获取到系统初始化阶段公开的公共参数,向服务器申请匿名证书;所述的申请匿名证书的过程为:用户生成匿名证书中的秘密参数以及公私密钥对,将秘密参数隐藏到对应的知识承诺j1和知识承诺j2中,并生成用于证明知识承诺j1和知识承诺j2是正确构造的知识签名spk1,将知识承诺j1、知识承诺j2、知识签名spk1、公钥pk
u
和实名信息发送给服务器进行注册;服务器验证知识签名spk1通过后,记录该用户的实名信息和公钥pk
u
,服务器侧注册成功;服务器侧注册成功后,服务器会对知识承诺j1和知识承诺j2中隐藏的秘密参数进行签名,并将签名发送给用户,同时计算出知识承诺j,保存到用户的实名信息数据库中;用户接收到服务器发送的签名(a,y,t2)并进行验证,验证通过后,结合用户的秘密参数和服务器发送的签名生成用于后续扫码阶段使用的匿名证书;(二)扫码阶段,用户根据注册阶段生成的匿名证书,生成知识承诺和知识签名spk2,并与时间戳一起发送给服务器;服务器接收到这些数据后,对认证序列号sn进行认证:在违规用户认证序列号数据库中查此次扫码的认证序列号;在已使用认证序列号数据库中查此次扫码的认证序列号;若在违规用户认证序列号数据库中查到相同的认证序列号sn,则将该用户判断为曾经违规的用户,拒绝该用户的验证,告知闸机不放行,不再执行后续步骤;若在已使用认证序列号数据库中查到相同的认证序列号,则该用户存在克隆行为,拒绝该用户的验证,告知闸机不放行,并进入追踪阶段,不再执行后续步骤;若两个数据库中都未查到相同的认证序列号,则生成对应的标识码发回给用户;服务器返回的标识码直接嵌入到用户二维码中,用户向闸机出示二维码,并通过nfc向闸机发送服务器返回的标识码,所述的服务器返回的标识码对用户不可见;闸机对二维码进行识别,提取出标识码并与用户通过nfc发送的标识码对比,若对比一致,则将标识码发送给服务器,否则不予通行,不再执行后续步骤;服务器根据闸机发送的标识码到对应的用户发送数据,并验证知识签名spk2,将结果发送给闸机;闸机根据验证结果,判断是否对该用户进行放行;用户通过闸机后,服务器会向用户发送对于状态码和用户秘密参数的签名;用户验证返回的签名,验证通过后更新匿名证书;(三)追踪阶段,服务器在已使用认证序列号数据库中查到了此次扫码的认证序列号sn,结合两次扫码记录中的相关信息,服务器计算出该用户匿名证书中的秘密参数,并根据秘密参数计算出知识承诺j,出用户匿名证书对应的实名身份,并根据秘密参数生成所有认证序列号加入到违规用户认证序列号数据库中,禁止其进行扫码通行。2.根据权利要求1所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,在系统初始化阶段,服务器选择一个rsag
rsa
和离散对数g,其中rsag
rsa
用于在用户注册阶段对用户的秘密参数进行签名,生成用户的匿名证书;离散对数g用于生成扫码阶段中的知识签名和知识承诺。
3.根据权利要求2所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,在系统的初始化阶段,服务器会生成系统的公共参数(n,a,a
x
,a
s
,a
t
,a
i
,a
e
,a
d
,h,σ,b,b1,b2),其中,n是g
rsa
的模数,(a,a
x
,a
s
,a
t
,a
i
,a
e
,a
d
,h)是g
rsa
中随机选取的元素,用来生成隐藏用户秘密参数的知识承诺;σ是离散对数g的模数,b,b1,b2是离散对数g中的元素,用来生成扫码阶段中的知识承诺和知识签名。4.根据权利要求1所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,在扫码阶段,用户向服务器发送的数据中,不会包含用户身份的相关信息,服务器在验证用户的知识签名时,只能够确定该用户此次扫码是否有效。5.根据权利要求1所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,用户向服务器发起注册并申请对匿名证书中的秘密参数的签名过程包括:步骤a1,用户向服务器发起注册协议,用户生成自己匿名证书中的秘密参数(t1,x,s,i,e,d,w),并以离散对数的方式将秘密参数(t1,x,s,i,e,d,w)隐藏到知识承诺j1和知识承诺j2中,同时生成用于证明知识承诺j1和知识承诺j2是由秘密参数(t1,x,s,i,e,d,w)正确构造生成的知识签名spk1;用户将公钥pk
u
、知识承诺j1、知识承诺j2、知识签名spk1和用户的实名信息发送给服务器;步骤a2,服务器接收到用户发送的知识承诺j1、知识承诺j2、知识签名spk1、用户公钥pk
u
和实名信息后,验证签名spk1的有效性;验证通过后,服务器将该用户的实名信息保存到用户实名信息数据库中,服务器侧注册完成;步骤a3,服务器端对用户匿名证书中的秘密参数进行签名,将签名结果记为(a,y,t2)并发送给用户,同时计算出知识承诺j,将知识承诺j保存到用户的实名信息数据库中,y和t2是服务器选择的随机素数,a是服务器结合用户知识承诺j2、随机素数y和t2计算生成的结果;步骤a4,用户验证服务器发送的签名(a,y,t2),验证通过后,用户更新本地的秘密参数,生成匿名证书。6.根据权利要求1所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,所述的扫码阶段中,若闸机从用户出示的二维码中提取出的标识码与用户通过nfc发送的标识码对比不一致,或者用户没有通过nfc向闸机发送标识码,说明用户出示的二维码并非用户自己生成,存在截图欺骗行为,闸机禁止该用户通行。7.根据权利要求1所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,所述的扫码阶段中,用户还需要通过哈希函数生成一个哈希值c,并与知识承诺(a

,t,i
c
,sn,d,r1,r2)、知识签名spk2、时间戳一起发送给服务器,其中i
c
是用户匿名证书的状态码,sn是用户匿名证书的认证序列号,t、d、a

、r1和r2是用户计算生成的结果;服务器在对认证序列号sn进行认证时,若在已使用认证序列号数据库中查到相同的认证序列号,且哈希值c不同,则该用户存在克隆行为,若哈希值c相同,则属于网络异常造成的系统重发现象,不属于克隆行为。8.根据权利要求7所述的一种实现用户匿名和克隆行为检测的二维码生成方法,其特征在于,所述的追踪阶段包括:步骤c1,服务器根据两次认证序列号sn相同的数据记录,计算出该违规用户对应的秘密参数(s,t),其中,s是用户生成匿名证书中的其中一个秘密参数,t=t1+t2表示用户生成
匿名证书中的其中一个秘密参数t1与服务器对秘密参数的签名中的参数t2的和;步骤c2,根据秘密参数(s,t),计算出知识承诺j=b
t
,由于用户实名信息和知识承诺j存储的对应关系,出该违规用户对应的实名信息;步骤c3,根据生成的秘密参数(s,t)生成该违规用户所有的认证序列号sn:其中,b1、b2是服务器在系统初始阶段生成的公共参数,i
c
表示用户匿名证书的状态码;将所有的认证序列号加入到违规用户认证序列号数据库中,下一次扫码验证时,只要检测到认证序列号sn在违规序列号数据库中就中断验证协议,禁止其进行扫码通行。9.一种实现用户匿名和克隆行为检测的二维码生成系统,其特征在于,用于实现权利要求1所述的二维码生成方法,同时具有密切接触者追踪的功能。10.根据权利要求9所述的一种实现用户匿名和克隆行为检测的二维码生成系统,其特征在于,系统通过蓝牙广播和接收的方式实现密切接触者追踪功能,用户会不断地广播自身所对应的匿名编码,同时接收周围其他用户发送的匿名编码进行存储,若某一个用户被确诊为特定患者,其会向服务器发送自己生成的匿名编码,服务器对这些编码进行公开,供其他用户查询,确认自身是否是密切接触者;服务器会收集用户的认证序列号sn,当确诊者提供匿名证书参数计算出其所有sn后,服务器将满足时间空间条件的相关的其他用户的sn公开,供其他用户查询,确认自身是否是时空交集者。

技术总结


本发明公开了一种实现用户匿名和克隆行为检测的二维码生成方法及系统。用户在注册阶段向服务器申请匿名证书以替代实名注册方案;在扫码阶段,用户零知识地向服务器证明对有效匿名证书的所有权;若扫码过程中服务器检测到克隆行为,通过追踪算法到该违规用户的实名身份,并计算其用于生成二维码的所有认证序列号,禁止其再生成二维码;若用户出示其他用户的二维码截图,闸机可以识别出截图欺骗,不予通行。本发明所公开的二维码生成系统还可以通过蓝牙广播和接收匿名编码、服务器公开满足时空伴随的认证序列号实现密切接触者追踪。本发明可以彻底地解决二维码生成系统中的用户隐私保护、克隆行为检测问题,并有效解决密切接触者追踪问题。触者追踪问题。触者追踪问题。


技术研发人员:

练斌 陈霁阳 崔家林 赵祥红 朱勇 肖云泉 柯鸿霖 安杰 王烁然 陈克非

受保护的技术使用者:

浙大宁波理工学院

技术研发日:

2022.05.17

技术公布日:

2022/12/12

本文发布于:2024-09-22 17:39:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/39846.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:用户   服务器   知识   序列号
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议