数据处理方法、装置、计算机设备和存储介质与流程

文档序号:18884853发布日期:2019-10-15 20:44阅读:105来源:国知局
数据处理方法、装置、计算机设备和存储介质与流程

本申请涉及信息安全技术领域,特别涉及一种数据处理方法、装置、计算机设备和存储介质。



背景技术:

零知识证明协议能够在不向验证者提供任何有用的信息的情况下,对目标对象进行验证,使验证者相信某个论断是正确的,该协议被广泛应用于区块链隐私保护、电子现金系统、群签名方案、公开验证秘密共享方案等领域。

目前,最为广泛应用的对目标对象进行验证时所采用的方式是签名盲化的方式,但是目前采用该方式的协议主要是基于boneh-boyen签名进行实现的,需要涉及双线性对复杂的运算开销,造成通信代价和计算开销较高。

针对上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请实施例提供了一种数据处理方法、装置、计算机设备和存储介质,以解决现有技术中实现对目标对象进行验证的方案通信代价高且计算开销高的问题。

本申请实施例提供了一种数据处理方法,包括:第一用户端获取预设进制数;第一用户端根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端;第一用户端接收第二用户端发送的承诺值,其中,承诺值由第二用户端根据第二用户端获取的目标对象生成;第一用户端接收第二用户端返回的盲化值,其中,盲化值由第二用户端根据接收到的多个sm2签名和目标对象生成;第一用户端根据承诺值和盲化值对目标对象进行验证。

在一个实施例中,第一用户端根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端,包括:获取sm2签名算法的椭圆曲线相关参数和安全哈希函数;根据椭圆曲线相关参数生成私钥和公钥;根据椭圆曲线相关参数确定小于预设进制数的多个自然数中各自然数对应的椭圆曲线点,得到多个椭圆曲线点;根据私钥、安全哈希函数和各自然数对应的椭圆曲线点对各自然数进行签名,得到多个sm2签名;将公钥、多个椭圆曲线点和多个sm2签名发送至第二用户端。

在一个实施例中,第二用户端根据第二用户端中获取的目标对象生成承诺值,包括:获取目标对象和椭圆曲线相关参数;根据目标对象和椭圆曲线相关参数生成承诺值。

在一个实施例中,第二用户端根据接收到的多个sm2签名和目标对象生成盲化值,包括:获取预设进制数和预设位数;根据预设进制数和预设位数表示目标对象,得到多个系数;根据接收到的多个sm2签名确定多个系数中各系数对应的sm2签名;根据椭圆曲线相关参数对各系数对应的sm2签名进行盲化,得到各系数对应的盲化值。

在一个实施例中,第一用户端根据承诺值和盲化值对目标对象进行验证,包括:接收第二用户端发送的第一参数和第二参数,其中,第一参数和第二参数由第二用户端根据椭圆曲线相关参数、预设进制数、预设位数和公钥确定;根据椭圆曲线相关参数确定挑战值,并将挑战值发送至第二用户端;接收第二用户端发送的证明数据,其中,证明数据由第二用户端根据椭圆曲线相关参数、多个椭圆曲线点、挑战值和多个系数确定;根据盲化值、承诺值、第一参数、第二参数、挑战值和证明数据验证目标对象是否在预设范围内。

在一个实施例中,第二用户端按照以下公式生成承诺值:

c=σg+rh;

其中,c为承诺值,σ为目标对象,g为群的生成元,群为包含椭圆曲线e所有点以及无穷远点的循环群,h为群上的点,为集合{1,2,...,n}中与n互素的元素构成的集合,其中,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,n为生成元g的阶,其中,a,b为fq中的元素,定义fq上的椭圆曲线e,fq为包含q个元素的有限域,q为大素数,q、fq、a、b、n、g、和h为椭圆曲线相关参数。

在一个实施例中,第一用户端根据椭圆曲线相关参数生成私钥和公钥,包括按照以下公式生成公钥:

p=dg;

其中,p为公钥,d为私钥,为集合{1,2,...,n}中与元素n互素的元素构成的集合,n为生成元g的阶,n和g为椭圆曲线相关参数。

在一个实施例中,第一用户端按照以下公式确定各自然数对应的椭圆曲线点和各自然数对应的sm2签名:

ki=kig=(xi,yi);

si=(1+d)-1·(ki-rid)modn;

其中,i=0,1,2,...,u-1,为小于预设进制数的多个自然数,u为预设进制数,ki为i对应的椭圆曲线点,(xi,yi)为i对应的椭圆曲线点ki的坐标,(ri,si)为i对应的sm2签名,为安全哈希函数,d为私钥,为集合{1,2,...,n}中与n互素的元素构成的集合,q为大素数,n为生成元g的阶,q、n和g为椭圆曲线相关参数,mod为模运算。

在一个实施例中,第二用户端按照以下公式生成盲化值:

其中,是σj对应的签名的盲化值,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,为小于预设进制数的自然数,其中,σ为目标对象,u为预设进制数,l为预设位数,j=0,1,2,...,l-1,为多个sm2签名中与σj对应的sm2签名,为集合{1,2,...,n}中与n互素的元素构成的集合,其中,n为生成元g的阶,n和g为椭圆曲线相关参数,mod为模运算。

在一个实施例中,第二用户端按照以下公式生成第一参数和第二参数:

ej=tj+(αj+βj)p+βjg;

其中,ej为第一参数,d为第二参数,其中,j=0,1,2,...,l-1,为集合{1,2,...,n}中与n互素的元素构成的集合,h为群上的点,群为包含椭圆曲线e所有点以及无穷远点的循环群,g为群的生成元,n为生成元g的阶,其中,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,其中,a,b为fq中的元素,定义fq上的椭圆曲线e,fq为包含q个元素的有限域,q为大素数,其中,q、fq、a、b、n、g、和h为椭圆曲线相关参数。

在一个实施例中,第二用户端按照以下公式生成证明数据:

zy=y-r·c;

其中,为证明数据,j=0,1,2,...,l-1;c为挑战值,其中,为集合{1,2,...,n}中与元素n互素的元素构成的集合,n为生成元g的阶,n和g为椭圆曲线相关参数,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,其中,σ为目标对象,u为预设进制数,l为预设位数,为多个椭圆曲线点中与σj对应的椭圆曲线点。

在一个实施例中,第一用户端根据盲化值、承诺值、第一参数、第二参数、挑战值和证明数据确定目标对象是否在预设范围内,包括:

确定以下两个等式是否均成立:

在确定以上两个等式均成立的情况下,确定目标对象在预设范围内,其中,预设范围为[0,ul);

其中,d为第二参数,ej为第一参数,为证明数据,j=0,1,2,...,l-1,u为预设进制数,l为预设位数;c为挑战值,c为承诺值,p为公钥,h为群上的点,群为包含椭圆曲线e所有点以及无穷远点的循环群,g为群的生成元,q、fq、a、b、n、g、和h为椭圆曲线相关参数,其中,q为大素数,fq为包含q个元素的有限域,a,b为fq中的元素,定义fq上的椭圆曲线e,n为生成元g的阶;是系数σj对应的签名的盲化值。

本申请实施例还提供了一种数据处理装置,位于第一用户端中,包括:获取模块,用于获取预设进制数;签名模块,用于根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端;第一接收模块,用于接收第二用户端发送的承诺值,其中,承诺值由第二用户端根据第二用户端获取的目标对象生成;第二接收模块,用于接收第二用户端返回的盲化值,其中,盲化值由第二用户端根据接收到的多个sm2签名和目标对象生成;验证模块,用于根据承诺值和盲化值对目标对象进行验证。

本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的数据处理方法的步骤。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的数据处理方法的步骤。

在本申请实施例中,提供了一种数据处理方法,第一用户端获取预设进制数,根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端,接收第二用户端发送的承诺值,其中,承诺值由第二用户端根据获取的目标对象生成;接收第二用户端返回的盲化值,其中,盲化值由第二用户端根据接收到的多个sm2签名和目标对象生成;根据承诺值和盲化值对目标对象进行验证。上述方案中,通过采用sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,由于sm2签名算法安全高效且简单易用,因此基于sm2签名算法对目标对象进行验证具有低计算复杂性、高安全性和易验证等优势;进一步地,根据承诺值以及基于sm2签名生成的盲化值,第一用户端可以在不获取目标对象的情况下验证目标对象,有效保护了数据隐私和数据安全性。通过上述方案解决了现有的对目标对象进行验证的通信代价和计算开销高的技术问题,达到了有效降低通信代价和计算开销、提高计算安全性的技术效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:

图1示出了本申请一实施例中的数据处理方法的一种应用场景示意图;

图2示出了本申请一实施例中的数据处理方法的流程图;

图3示出了本申请一实施例中的数据处理方法的顺序图;

图4示出了本申请一实施例中的数据处理装置的示意图;

图5示出了本申请一实施例中的计算机设备的示意图。

具体实施方式

下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

考虑到现有的验证数据的方案主要是基于boneh-boyen签名进行实现的,需要涉及双线性对复杂的运算开销,造成通信代价和计算开销较高,发明人研究发现可以基于sm2签名算法来实现对目标对象的验证。

本申请实施例提供了一种数据处理方法,图1示出了该数据处理方法的一种应用场景的示意图。在图1中,示意性地示出了系统服务器、第一用户端和第二用户端,其中,系统服务器用于生成sm2签名算法所需的参数,第一用户端和第二用户端可以从系统服务器获取sm2签名算法所需的参数。第一用户端和第二用户端之间通信连接,其中,第一用户端为验证者,第二用户端为证明者,第二用户端中存储有目标对象。基于sm2签名算法,第一用户端和第二用户端执行预设协议,以使得在第二用户端不向第一用户端发送目标对象的情况下向第一用户端证明该目标对象,即,使得第一用户端在不获取目标对象的情况下对该目标对象进行验证。

其中,上述系统服务器可以是单一的服务器,也可以是服务器集群,或者是云服务器等都可以,具体的组成形成本申请不作限定。上述第一用户端和第二用户端可以是台式电脑、笔记本、手机终端、pda等,只要是可以建立通信连接并具备计算能力的设备都可以,对于第一用户端和第二用户端的呈现形成,本申请也不作限定。

本申请实施例提供了一种数据处理方法,图2示出了本申请一实施例中数据处理方法的流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。

具体地,如图2所示,本申请一种实施例提供的数据处理方法可以包括以下步骤:

步骤s201,第一用户端获取预设进制数。

步骤s202,第一用户端根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端。

其中,预设进制数可以由第一用户端和第二用户端根据实际情况共同设定,例如,预设进制数可以为2、8、10和16等。

具体地,第一用户端获取预设进制数,在获取预设进制数之后,第一用户端可以根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名。其中,小于预设进制数的多个自然数可以为{0,1,...,u-1},u为所述预设进制数。第一用户端根据sm2签名算法对{0,1,...,u-1}中的各个数进行签名,得到多个sm2签名。

步骤s203,第一用户端接收第二用户端发送的承诺值,其中,承诺值由第二用户端根据第二用户端获取的目标对象生成。

为了在不获取目标对象的情况下对目标对象进行验证,第一用户端需要从第二用户端接收承诺值。具体地,第二用户端获取目标对象,根据目标对象生成承诺值,并将承诺值发送至第一用户端。

步骤s204,第一用户端接收第二用户端返回的盲化值,其中,盲化值由第二用户端根据接收到的多个sm2签名和目标对象生成。

步骤s205,第一用户端根据承诺值和盲化值对目标对象进行验证。

具体地,在第一用户端向第二用户端发送多个sm2签名之后,第二用户端根据所述多个sm2签名和目标对象生成盲化值,即对目标对象的信号和sm2签名进行盲化,并将得到的盲化值发送至第一用户端。在第一用户端接收到第二用户端发送的承诺值和盲化值之后,可以根据承诺值和盲化值来对目标对象进行验证,即可以通过验证承诺值和盲化值是否一致来验证目标对象是否有效。

上述实施例中的数据处理方法,通过采用sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,由于sm2签名算法安全高效且简单易用,因此基于sm2签名算法对目标对象进行验证具有低计算复杂性、高安全性和易验证等优势;进一步地,根据承诺值以及基于sm2签名生成的盲化值,第一用户端可以在不获取目标对象的情况下验证目标对象,有效保护了数据隐私和数据安全性。

进一步地,在本申请一些实施例中,第一用户端根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端,可以包括:获取sm2签名算法的椭圆曲线相关参数和安全哈希函数;根据椭圆曲线相关参数生成私钥和公钥;根据椭圆曲线相关参数确定小于预设进制数的多个自然数中各自然数对应的椭圆曲线点,得到多个椭圆曲线点;根据私钥、安全哈希函数和各自然数对应的椭圆曲线点对各自然数进行签名,得到多个sm2签名;将公钥、多个椭圆曲线点和多个sm2签名发送至第二用户端。通过上述方式,第一用户端可以基于sm2签名算法为小于预设进制数的多个自然数生成多个sm2签名,并将多个sm2签名、公钥和多个椭圆曲线点发送至第二用户端。

进一步地,在本申请一些实施例中,第二用户端根据第二用户端中获取的目标对象生成承诺值,可以包括:获取目标对象和椭圆曲线相关参数;根据目标对象和椭圆曲线相关参数生成承诺值。通过上述方式,可以基于椭圆曲线相关参数生成承诺值。

进一步地,在本申请一些实施例中,第二用户端根据接收到的多个sm2签名和目标对象生成盲化值,可以包括:获取预设进制数和预设位数;根据预设进制数和预设位数表示目标对象,得到多个系数;根据接收到的多个sm2签名确定多个系数中各系数对应的sm2签名;根据椭圆曲线相关参数对各系数对应的sm2签名进行盲化,得到各系数对应的盲化值。

具体地,第二用户端在获取预设进制数和预设位数之后,可以根据预设进制数和预设位数将目标对象表示为:其中,σ为目标对象,u为预设进制数,l为预设位数,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,j=0,1,2,...,l-1。在得到各个系数σj之后,可以根据接收到的多个sm2签名确定各个系数σj对应的sm2签名。由于,多个sm2签名为小于预设进制数的多个自然数中各自然数对应的sm2签名,而各个系数σj均为小于预设进制数的自然数,所以可以根据σj的数值确定σj对应的sm2签名。在确定各系数σj对应的sm2签名之后,第二用户端可以根据椭圆曲线相关参数对各系数对应的sm2签名进行盲化,得到各系数对应的盲化值,并将得到的盲化值发送至第一用户端。通过上述方式,可以基于多个sm2签名、椭圆曲线相关参数和目标对象的各个系数确定盲化值。

考虑到范围证明协议是零知识证明的一种,允许证明者不提供具体元素的情况下,让验证者相信某一承诺值中的元素在指定的范围内。也就是说,给定元素σ的承诺值,证明者能够以零知识的方式让验证者相信σ在某一个数值范围内(比如,σ∈[0,232-1)),因此本申请一些实施例中提供的数据处理方法可以用于实现范围证明协议,即证明目标对象在预设范围内。因此,在本申请一些实施例中,第一用户端根据承诺值和盲化值对目标对象进行验证,可以包括:接收第二用户端发送的第一参数和第二参数,其中,第一参数和第二参数由第二用户端根据椭圆曲线相关参数、预设进制数、预设位数和公钥确定;根据椭圆曲线相关参数确定挑战值,并将挑战值发送至第二用户端;接收第二用户端发送的证明数据,其中,证明数据由第二用户端根据椭圆曲线相关参数、多个椭圆曲线点、挑战值和多个系数确定;根据盲化值、承诺值、第一参数、第二参数、挑战值和证明数据验证目标对象是否在预设范围内。通过上述方式,可以实现范围证明协议,使得在第二用户端不提供目标对象的情况下,让第一用户端相信某一承诺值对应的目标对象在预设范围内。

进一步地,在本申请一些实施例中,第二用户端可以按照以下公式生成承诺值:

c=σg+rh;

其中,c为承诺值,σ为目标对象,g为群的生成元,群为包含椭圆曲线e所有点以及无穷远点的循环群,h为群上的点,为集合{1,2,...,n}中与n互素的元素构成的集合,其中,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,n为生成元g的阶,其中,a,b为fq中的元素,定义fq上的椭圆曲线e,fq为包含q个元素的有限域,q为大素数,q、fq、a、b、n、g、和h为椭圆曲线相关参数。

进一步地,在本申请一些实施例中,第一用户端根据椭圆曲线相关参数生成私钥和公钥,可以包括按照以下公式生成公钥:

p=dg;

其中,p为公钥,d为私钥,为集合{1,2,...,n}中与元素n互素的元素构成的集合,n为生成元g的阶,n和g为椭圆曲线相关参数。

进一步地,在本申请一些实施例中,第一用户端可以按照以下公式确定各自然数对应的椭圆曲线点和各自然数对应的sm2签名:

ki=kig=(xi,yi);

si=(1+d)-1·(ki-rid)modn;

其中,i=0,1,2,...,u-1,为小于预设进制数的多个自然数,u为预设进制数,ki为i对应的椭圆曲线点,(xi,yi)为i对应的椭圆曲线点ki的坐标,(ri,si)为i对应的sm2签名,为安全哈希函数,d为私钥,为集合{1,2,...,n}中与n互素的元素构成的集合,q为大素数,n为生成元g的阶,q、n和g为椭圆曲线相关参数,mod为模运算。

进一步地,在本申请一些实施例中,第二用户端可以按照以下公式生成盲化值:

其中,是σj对应的签名的盲化值,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,为小于预设进制数的自然数,其中,σ为目标对象,u为预设进制数,l为预设位数,j=0,1,2,...,l-1,为多个sm2签名中与σj对应的sm2签名,为集合{1,2,...,n}中与n互素的元素构成的集合,其中,n为生成元g的阶,n和g为椭圆曲线相关参数,mod为模运算。

进一步地,在本申请一些实施例中,第二用户端可以按照以下公式生成第一参数和第二参数:

ej=tj+(αj+βj)p+βjg;

其中,ej为第一参数,d为第二参数,其中,j=0,1,2,...,l-1,为集合{1,2,...,n}中与n互素的元素构成的集合,h为群上的点,群为包含椭圆曲线e所有点以及无穷远点的循环群,g为群的生成元,n为生成元g的阶,其中,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,其中,a,b为fq中的元素,定义fq上的椭圆曲线e,fq为包含q个元素的有限域,q为大素数,其中,q、fq、a、b、n、g、和h为椭圆曲线相关参数。

进一步地,在本申请一些实施例中,第二用户端可以按照以下公式生成证明数据:

zy=y-r·c;

其中,为证明数据,j=0,1,2,...,l-1;c为挑战值,其中,为集合{1,2,...,n}中与元素n互素的元素构成的集合,n为生成元g的阶,n和g为椭圆曲线相关参数,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,其中,σ为目标对象,u为预设进制数,l为预设位数,为多个椭圆曲线点中与σj对应的椭圆曲线点。

进一步地,在本申请一些实施例中,第一用户端根据盲化值、承诺值、第一参数、第二参数、挑战值和证明数据确定目标对象是否在预设范围内,可以包括:

确定以下两个等式是否均成立:

在确定以上两个等式均成立的情况下,确定目标对象在预设范围内,其中,预设范围为[0,ul);

其中,d为第二参数,ej为第一参数,为证明数据,j=0,1,2,...,l-1,u为预设进制数,l为预设位数;c为挑战值,c为承诺值,p为公钥,h为群上的点,群为包含椭圆曲线e所有点以及无穷远点的循环群,g为群的生成元,q、fq、a、b、n、g、和h为椭圆曲线相关参数,其中,q为大素数,fq为包含q个元素的有限域,a,b为fq中的元素,定义fq上的椭圆曲线e,n为生成元g的阶;是系数σj对应的签名的盲化值。

在本申请的一些实施例中,上述数据处理方法不仅支持σ∈[0,ul)形式的范围证明,还可以扩展成一般形式的范围证明,其中,a和b为非负整数。若ul-1<b<ul,则将σ∈[a,b]等价为σ-b+ul∈[0,ul]∧σ-a∈[0,ul);若a+ul-1<b,则将σ∈[a,b]等价为b-σ∈[0,ul-1]∨σ-a∈[0,ul-1)。因此,通过两次调用σ∈[0,ul)形式的范围证明,可以实现一般形式σ∈[a,b]的范围证明。

可以理解的是,本申请实施例提供的数据处理方法可以用于验证目标对象在预设范围内,但本申请并不限于此。例如,本申请实施例提供的方法还可以用于验证目标对象是否为真,等等。

下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。

如图3所示,示出了将本申请实施例中提供的数据处理方法应用于实现范围证明协议的顺序图,该方法包括以下步骤:

步骤1,第一用户端获取安全哈希函数椭圆曲线相关参数预设进制数u和预设位数l;第二用户端获取椭圆曲线相关参数目标对象σ、预设进制数u和预设位数l,其中,q为大素数,fq为包含q个元素的有限域,a,b为fq中的元素,定义fq上的椭圆曲线e,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,群为包含椭圆曲线e所有点以及无穷远点的循环群,h为群上的点,g为群的生成元,n为生成元g的阶;

步骤2,第一用户端根据椭圆曲线相关参数生成私钥和公钥,根据椭圆曲线相关参数确定小于预设进制数的所有自然数中各自然数对应的椭圆曲线点,得到多个椭圆曲线点,根据私钥、安全哈希函数和各自然数对应的椭圆曲线点对各自然数进行签名,得到多个签名,并将公钥、多个椭圆曲线点和多个签名发送至第二用户端,具体地,第一用户端随机选取作为签名的私钥,计算公钥p=dg,对于随机选取计算椭圆曲线点ki=kig=(xi,yi),si=(1+d)-1·(ki-rid)modn,并将椭圆曲线点ki、公钥p和签名(ri,si)发送给第二用户端;

步骤3,第二用户端根据椭圆曲线相关参数和目标对象生成承诺值,并将承诺值发送至第一用户端,具体地,第二用户端随机选取计算承诺值c=σg+rh,其中σ为第二用户端拥有的元素,并将承诺值c发送给第一用户端;

步骤4,第二用户端根据预设进制数和预设位数表示目标对象,得到对应的系数,系数的个数与预设位数相等,第二用户端根据接收到的多个签名确定系数中各系数对应的签名,根据椭圆曲线参数对各系数对应的签名进行盲化,得到盲化值,并将盲化值发送至第一用户端,具体地,第二用户端将目标对象表示成然后对l个系数σj对应的签名进行盲化,即对于随机选取计算然后将盲化值发送给第一用户端;

步骤5,第二用户端根据椭圆曲线相关参数和公钥确定第一参数和第二参数,并将第一参数和第二参数发送至第一用户端,具体地,对于第二用户端随机选取计算第一参数ej=tj+(αj+βj)p+βjg和第二参数最后将发送给第一用户端;

步骤6,第一用户端根据椭圆曲线相关参数确定挑战值,并将挑战者发送至第二用户端,具体地,第一用户端随机选取挑战值并将c发送给第二用户端;

步骤7,第二用户端根据椭圆曲线相关参数、多个椭圆曲线点、挑战值和系数确定证明数据,并将证明数据发送至第一用户端,具体地,第二用户端计算证明数据zy=y-r·c,并将证明数据发送给第一用户端;

步骤8,第一用户端根据第一参数、第二参数、公钥、盲化值、证明数据和椭圆曲线相关参数确定目标对象是否在预设范围内,其中,预设范围由预设进制数和预设位数确定,具体地,第一用户端验证等式和等式是否成立,若两个等式均成立,说明验证通过,σ∈[0,ul);否则,拒绝该证明。

上述实施例中的用于实现范围证明协议的数据处理方法,第一用户端和第二用户端获取共同输入参数之后,第一用户端基于sm2签名算法对小于预设进制数的多个自然数进行签名,并将得到的多个sm2签名发送给第二用户端;第二用户端根据椭圆曲线相关参数和目标对象生成承诺值,将承诺值发送给第一用户端;第一用户端根据接收到的多个签名和目标对象生成多个盲化值,并将盲化值发送给第一用户端;第二用户端根据第一用户端返回的挑战值生成证明数据,并将证明数据发送给第一用户端,使得第一用户端可以根据盲化值、承诺值和证明数据验证目标对象是否在预设范围内。即,上述方案利用sm2签名算法进行构造,第一用户端预先提供各元素的签名时采用sm2签名算法进行签名,不仅具备更高的安全性,还有效地避免复杂的双线性对运算,降低和减轻了系统的开销和负担,适应云计算和大数据等领域的数据隐私保护安全需求。

基于同一发明构思,本申请实施例中还提供了一种数据处理装置,如下面的实施例所述。由于数据处理装置解决问题的原理与数据处理方法相似,因此数据处理装置的实施可以参见数据处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图4是本申请实施例的数据处理装置的一种结构框图,如图4所示,包括:获取模块401、签名模块402、第一接收模块403、第二接收模块404和验证模块405,下面对该结构进行说明。

获取模块401用于获取预设进制数。

签名模块402用于根据sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,并将得到的多个sm2签名发送至第二用户端。

第一接收模块403用于接收第二用户端发送的承诺值,其中,承诺值由第二用户端根据第二用户端获取的目标对象生成。

第二接收模块404用于接收第二用户端返回的盲化值,其中,盲化值由第二用户端根据接收到的多个sm2签名和目标对象生成。

验证模块405用于根据承诺值和盲化值对目标对象进行验证。

在本申请一些实施例中,签名模块可以具体用于:获取sm2签名算法的椭圆曲线相关参数和安全哈希函数;根据椭圆曲线相关参数生成私钥和公钥;根据椭圆曲线相关参数确定小于预设进制数的多个自然数中各自然数对应的椭圆曲线点,得到多个椭圆曲线点;根据私钥、安全哈希函数和各自然数对应的椭圆曲线点对各自然数进行签名,得到多个sm2签名;将公钥、多个椭圆曲线点和多个sm2签名发送至第二用户端。

在本申请一些实施例中,第二用户端根据第二用户端中获取的目标对象生成承诺值,可以包括:获取目标对象和椭圆曲线相关参数;根据目标对象和椭圆曲线相关参数生成承诺值。

在本申请一些实施例中,第二用户端根据接收到的多个sm2签名和目标对象生成盲化值,可以包括:获取预设进制数和预设位数;根据预设进制数和预设位数表示目标对象,得到多个系数;根据接收到的多个sm2签名确定多个系数中各系数对应的sm2签名;根据椭圆曲线相关参数对各系数对应的sm2签名进行盲化,得到各系数对应的盲化值。

在本申请一些实施例中,验证模块可以具体用于:接收第二用户端发送的第一参数和第二参数,其中,第一参数和第二参数由第二用户端根据椭圆曲线相关参数、预设进制数、预设位数和公钥确定;根据椭圆曲线相关参数确定挑战值,并将挑战值发送至第二用户端;接收第二用户端发送的证明数据,其中,证明数据由第二用户端根据椭圆曲线相关参数、多个椭圆曲线点、挑战值和多个系数确定;根据盲化值、承诺值、第一参数、第二参数、挑战值和证明数据验证目标对象是否在预设范围内。

在本申请一些实施例中,第二用户端可以按照以下公式生成承诺值:

c=σg+rh;

其中,c为承诺值,σ为目标对象,g为群的生成元,群为包含椭圆曲线e所有点以及无穷远点的循环群,h为群上的点,为集合{1,2,...,n}中与n互素的元素构成的集合,其中,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,n为生成元g的阶,其中,a,b为fq中的元素,定义fq上的椭圆曲线e,fq为包含q个元素的有限域,q为大素数,q、fq、a、b、n、g、和h为椭圆曲线相关参数。

在本申请一些实施例中,根据椭圆曲线相关参数生成私钥和公钥,可以包括按照以下公式生成公钥:

p=dg;

其中,p为公钥,d为私钥,为集合{1,2,...,n}中与元素n互素的元素构成的集合,n为生成元g的阶,n和g为椭圆曲线相关参数。

在本申请一些实施例中,所述签名模块可以具体用于可以按照以下公式确定各自然数对应的椭圆曲线点和各自然数对应的sm2签名:

ki=kig=(xi,yi);

si=(1+d)-1·(ki-rid)modn;

其中,i=0,1,2,...,u-1,为小于预设进制数的多个自然数,u为预设进制数,ki为i对应的椭圆曲线点,(xi,yi)为i对应的椭圆曲线点ki的坐标,(ri,si)为i对应的sm2签名,为安全哈希函数,d为私钥,为集合{1,2,...,n}中与n互素的元素构成的集合,q为大素数,n为生成元g的阶,q、n和g为椭圆曲线相关参数,mod为模运算。

在本申请一些实施例中,第二用户端可以按照以下公式生成盲化值:

其中,是σj对应的签名的盲化值,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,为小于预设进制数的自然数,其中,σ为目标对象,u为预设进制数,l为预设位数,j=0,1,2,...,l-1,为多个sm2签名中与σj对应的sm2签名,为集合{1,2,...,n}中与n互素的元素构成的集合,其中,n为生成元g的阶,n和g为椭圆曲线相关参数,mod为模运算。

在本申请一些实施例中,第二用户端可以按照以下公式生成第一参数和第二参数:

ej=tj+(αj+βj)p+βjg;

其中,ej为第一参数,d为第二参数,其中,j=0,1,2,...,l-1,为集合{1,2,...,n}中与n互素的元素构成的集合,h为群上的点,群为包含椭圆曲线e所有点以及无穷远点的循环群,g为群的生成元,n为生成元g的阶,其中,椭圆曲线e的椭圆曲线方程为y2=x3+ax+b,其中,a,b为fq中的元素,定义fq上的椭圆曲线e,fq为包含q个元素的有限域,q为大素数,其中,q、fq、a、b、n、g、和h为椭圆曲线相关参数。

在本申请一些实施例中,第二用户端可以按照以下公式生成证明数据:

zy=y-r·c;

其中,为证明数据,j=0,1,2,...,l-1;c为挑战值,其中,为集合{1,2,...,n}中与元素n互素的元素构成的集合,n为生成元g的阶,n和g为椭圆曲线相关参数,σj为根据预设进制数和预设位数表示目标对象时得到的多个系数,其中,σ为目标对象,u为预设进制数,l为预设位数,为多个椭圆曲线点中与σj对应的椭圆曲线点。

在本申请一些实施例中,根据盲化值、承诺值、第一参数、第二参数、挑战值和证明数据确定目标对象是否在预设范围内,可以包括:

确定以下两个等式是否均成立:

在确定以上两个等式均成立的情况下,确定目标对象在预设范围内,其中,预设范围为[0,ul);

其中,d为第二参数,ej为第一参数,为证明数据,j=0,1,2,...,l-1,u为预设进制数,l为预设位数;c为挑战值,c为承诺值,p为公钥,h为群上的点,群为包含椭圆曲线e所有点以及无穷远点的循环群,g为群的生成元,q、fq、a、b、n、g、和h为椭圆曲线相关参数,其中,q为大素数,fq为包含q个元素的有限域,a,b为fq中的元素,定义fq上的椭圆曲线e,n为生成元g的阶;是系数σj对应的签名的盲化值。

从以上的描述中,可以看出,本申请实施例实现了如下技术效果:上述方案中,通过采用sm2签名算法对小于预设进制数的多个自然数中的各自然数进行签名,由于sm2签名算法安全高效且简单易用,因此基于sm2签名算法对目标对象进行验证具有低计算复杂性、高安全性和易验证等优势;进一步地,根据承诺值以及基于sm2签名生成的盲化值,第一用户端可以在不获取目标对象的情况下验证目标对象,有效保护了数据隐私和数据安全性。通过上述方案解决了现有的对目标对象进行验证的通信代价和计算开销高的技术问题,达到了有效降低通信代价和计算开销、提高计算安全性的技术效果。

本申请实施方式还提供了一种计算机设备,具体可以参阅图5所示的基于本申请实施例提供的数据处理方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备51、处理器52、存储器53。其中,所述存储器53用于存储处理器可执行指令。所述处理器52执行所述指令时实现上述任意实施例中所述的数据处理方法的步骤。所述输入设备51具体可以用于输入预设进制数和预设位数等参数。

在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如ram、fifo等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、tf卡等。

在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

本申请实施方式中还提供了一种基于数据处理方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述数据处理方法的步骤。

在本实施方式中,上述存储介质包括但不限于随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、缓存(cache)、硬盘(harddiskdrive,hdd)或者存储卡(memorycard)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。

在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。

应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1