发明内容
有鉴于此,本公开提出了一种数据处理方法、装置和存储介质。
根据本公开的一方面,提供了一种数据处理方法,该方法包括:接收第一用户发送的第一数据,所述第一数据包括各子集的哈希值,所述各子集为所述第一用户欲进行交易的数据;向所述第一用户发送针对第二数据的抽检请求,所述第二数据包括所述各子集中的至少一个子集;接收所述第一用户响应于所述抽检请求发送的返回信息;根据所述第一数据包括的各子集的哈希值,确定所述第二数据的哈希值;根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估。
根据本申请实施例,可以实现对欲出售的数据的抽样检查,且在上述过程中买方和第三方无法得到欲出售数据的原始数据,可以防止欲出售的数据被滥用、转售。通过向第一用户发送抽检请求,可以使得第一用户无法确定会被抽样的第二数据,从而无法体现挑选质量更优数据作为被抽检的数据以获得更优的评估结果,使得该过程可信、可管控。
在一种可能的实现方式中,该返回信息包括第三数据,根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,包括:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过判断返回信息包括的第三数据的哈希值和第二数据的哈希值是否一致,可以确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。且上述过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,该第一数据包括加密后的所述各子集,该返回信息包括所述第二数据对应的密钥,根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,包括:根据所述密钥,对所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过根据返回信息中的密钥,对加密后的所述各子集中加密后的第二数据进行解密,得到第四数据,并判断第四数据的哈希值和第二数据的哈希值是否一致,可以确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。
在一种可能的实现方式中,该密钥包括与第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。
根据本申请实施例,通过使得不同的子集对应的密钥不同,可以实现在抽检的过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,该抽检请求包括至少一个数据位置,该数据位置用于指示所述第二数据包括的各子集中的至少一个子集在所述第一数据的各子集中的位置。
根据本申请实施例,通过在抽检请求中包括数据位置,可以使得各子集在欲出售的数据中的排列顺序确定,在后续交易得到原始的欲出售数据后,可核对对应数据位置下的数据的哈希值与第一用户最初提供的第一数据包括的各子集的哈希值中、对应位置的哈希值是否一致,从而可以防止第一用户在抽检前后对欲出售的各子集中的数据进行替换,使得第一用户无法在抽检过程中提供虚假数据以提升数据质量。
在一种可能的实现方式中,该方法还包括:将以下中的一项或多项公布至不可修改的数据库中:所述第一数据包括的各子集的哈希值、加密后的所述第一数据包括的各子集、所述抽检请求。
由此,在出现争议时可以利用公布至数据库中的信息对相关过程进行溯源,从而可以实现可溯源的抽检过程。
根据本公开的一方面,提供了一种数据处理方法,该方法包括:向服务端发送第一数据,所述第一数据包括各子集的哈希值,所述各子集为第一用户欲进行交易的数据;接收所述服务端发送的针对第二数据的抽检请求,所述第二数据包括所述各子集中的至少一个子集;响应于所述抽检请求,向所述服务端发送返回信息,所述返回信息用于所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估,所述第二数据的哈希值根据所述第一数据包括的各子集的哈希值确定。
根据本申请实施例,可以实现服务端对欲出售的数据的抽样检查,且在上述过程中买方和第三方无法得到欲出售数据的原始数据,可以防止欲出售的数据被滥用、转售。通过第一用户接收抽检请求,并响应于抽检请求,向服务端发送返回信息,可以使得第一用户无法确定会被抽样的第二数据,从而无法体现挑选质量更优数据作为被抽检的数据以获得更优的评估结果,使得该过程可信、可管控。
在一种可能的实现方式中,所述返回信息包括第三数据,所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,包括:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过服务端判断返回信息包括的第三数据的哈希值和第二数据的哈希值是否一致,可以使得服务端确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。且上述过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,所述第一数据包括加密后的所述各子集,所述返回信息包括所述第二数据对应的密钥,所述服务端根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,包括:根据所述密钥,对所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过服务端根据返回信息中的密钥,对加密后的所述各子集中加密后的第二数据进行解密,得到第四数据,并判断第四数据的哈希值和第二数据的哈希值是否一致,可以使得服务端确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。
在一种可能的实现方式中,所述密钥包括与第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。
根据本申请实施例,通过使得不同的子集对应的密钥不同,可以实现在抽检的过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,所述抽检请求包括至少一个数据位置,所述数据位置用于指示所述第二数据包括的各子集中的至少一个子集在所述第一数据的各子集中的位置。
根据本申请实施例,通过在抽检请求中包括数据位置,可以使得各子集在欲出售的数据中的排列顺序确定,在第二用户后续交易得到原始的欲出售数据后,可核对对应数据位置下的数据的哈希值与第一用户最初发送的第一数据包括的各子集的哈希值中、对应位置的哈希值是否一致,从而可以防止第一用户在抽检前后对欲出售的各子集中的数据进行替换,使得第一用户无法在抽检过程中提供虚假数据以提升数据质量。
根据本公开的一方面,提供了一种数据处理装置,该装置包括:第一接收模块,用于接收第一用户发送的第一数据,所述第一数据包括各子集的哈希值,所述各子集为所述第一用户欲进行交易的数据;第一发送模块,用于向所述第一用户发送针对第二数据的抽检请求,所述第二数据包括所述各子集中的至少一个子集;第二接收模块,用于接收所述第一用户响应于所述抽检请求发送的返回信息;确定模块,用于根据所述第一数据包括的各子集的哈希值,确定所述第二数据的哈希值;验证模块,用于根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估。
在一种可能的实现方式中,该返回信息包括第三数据,该验证模块,具体用于:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
在一种可能的实现方式中,该第一数据包括加密后的所述各子集,该返回信息包括与所述第二数据对应的密钥,该验证模块,具体用于:根据所述密钥,对所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
在一种可能的实现方式中,该密钥包括与第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。
在一种可能的实现方式中,该抽检请求包括至少一个数据位置,该数据位置用于指示所述第二数据中包括的所述各子集中的至少一个子集在所述第一数据的各子集中的位置。
在一种可能的实现方式中,该装置还包括:公布模块,用于将以下中的一项或多项公布至不可修改的数据库中:所述第一数据包括的各子集的哈希值、加密后的所述第一数据包括的各子集、所述抽检请求。
根据本公开的一方面,提供了一种数据处理装置,该装置包括:第二发送模块,用于向服务端发送第一数据,所述第一数据包括各子集的哈希值,所述各子集为第一用户欲进行交易的数据;第三接收模块,用于接收所述服务端发送的针对第二数据的抽检请求,所述第二数据包括所述各子集中的至少一个子集;第三发送模块,用于响应于所述抽检请求,向所述服务端发送返回信息,所述返回信息用于所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估,所述第二数据的哈希值根据所述第一数据包括的各子集的哈希值确定。
在一种可能的实现方式中,所述返回信息包括第三数据,所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,包括:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
在一种可能的实现方式中,所述第一数据包括加密后的所述各子集,所述返回信息包括所述第二数据对应的密钥,所述服务端根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,包括:根据所述密钥,对所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
在一种可能的实现方式中,所述密钥包括与第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。
在一种可能的实现方式中,所述抽检请求包括至少一个数据位置,所述数据位置用于指示所述第二数据包括各子集中的至少一个子集在所述第一数据的各子集中的位置。
根据本公开的另一方面,提供了一种数据处理装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
随着信息产业与大数据的发展,当前需要进行数据流通和交易的场景越来越多,在此过程中需要数据的买方或数据交易的第三方验证数据的卖方提供的数据的质量,以满足之后商业过程中的各种需求,例如定价等。由于数字商品不同于一般的商品,其具有易复制、交易前不可知等的特殊性,当前的技术手段下,在对数据质量进行验证的过程中无法保证数据不被转售、滥用,因此亟需可信的、可管控的新型技术手段对数据质量进行验证。
鉴于此,本申请提供了一种数据处理方法,该方法中,第一用户(即数据的卖方)欲出售的数据可以被分为各子集,买方(可称为第二用户)或第三方可以对第一用户(即数据的卖方)提供的第一数据对应的各子集(即欲出售的数据)中的部分子集(即第二数据)进行抽检,通过接收第一用户发送的返回信息,可以利用该返回信息,对第二数据进行验证,从而可以对第一用户欲出售的数据进行评估。在此过程中,第二用户无法获取欲出售的数据中除第二数据以外的其他数据,防止了数据被转售、滥用,使得该过程可信、可管控。
图1示出根据本申请一实施例的应用场景的示意图。如图1所示,本申请实施例提供的数据处理方法可以应用在第一用户、第二用户和第三方进行数据交易的场景中。第一用户可以理解为拥有数据并欲出售该数据中部分或全部数据的一方,第二用户可以理解为有意愿购买该数据(或该数据的一部分)的一方,本申请对于交易的数据的具体类型不作限制,例如可以是标注数据集(即带标注的数据的集合,可用于模型训练等场景)、算法模型代码等。第三方可理解为对第一用户欲出售的数据进行质检或评估的一方。
在一种可能的实现方式中,还可以存在不可修改的数据库,该数据库可以设置在平台上,可以是上述第三方运营的,也可以是另一第三方运营的。该数据库可用以公布第一用户、第二用户或第三方通过平台上传的相关信息。该信息可以包括抽检数据时的相关信息以及交易过程中的相关信息,该信息也可以是原信息的哈希值。该信息还可以是经平台签名的,从而保证其内容一经上传不可篡改,且可溯源。在一种可能的实现方式中,该数据库可以是基于区块链的数据库。
由此,可以保证对欲出售的数据进行抽检和交易的过程可信、可溯源。
以下,在图1的基础上对本申请实施例的数据处理方法进行详细的介绍,参见图2,图2示出根据本申请一实施例的数据处理方法的流程图。该方法可用于服务端,该服务端可应用于上述第二用户或第三方,例如第二用户可通过终端设备实现该实施例的方法,或者,第三方可通过服务器实现该实施例的方法。如图2所示,该方法包括:
步骤S201,接收第一用户发送的第一数据。
其中,所述第一数据包括各子集的哈希值,所述各子集为第一用户欲进行交易的数据。
可以由第三方或第二用户接收第一用户发送的第一数据。第一用户欲进行交易的数据(可称为D)可以被拆分成n项子集,将D拆分后的任一子集可以称为Di,i可以表示对应的子集序号,则拆分后D对应的数据集合中可以包括子集D1、D2、D3……Dn。本申请对于拆分后的子集的数量n不作限定,每一项子集可以表示对应数据D的最小单位,即该子集不可再被拆分。
可以分别对欲进行交易的数据中各子集D1、D2、D3……Dn用哈希函数进行压缩,得到各子集的各哈希值H(D1)、H(D2)、H(D3)……H(Dn),即第一数据。还可以对完整的欲进行交易的数据利用哈希函数进行压缩得到H(D),第一数据还可以包括上述完整的欲进行交易的数据的哈希值H(D)。
在一种可能的实现方式中,还可以分别对D中的各子集进行加密,得到对应的加密后的数据集合E(D),E(D)中可以包括子集E(D1)、E(D2)、E(D3)……E(Dn),可以分别表示加密后的各子集D1、D2、D3……Dn。第一数据还可包括上述加密后的各子集。在一种可能的实现方式中,第一数据中还可仅包括加密后的各子集而不包括各子集的哈希值,本申请对此不作限制。
其中,对数据D中的各子集进行加密的方法可以是由第一用户创建一个主密钥MK,并利用MK分别确定各子集对应的密钥K(Di)。
例如,可以首先确定(可以是随机生成)一个对应D1的密钥K(D1),则K(Di+1)可以是利用主密钥MK对K(Di)进行加密后确定,由此可以确定全部子集对应的密钥。
又例如,可以先确定各子集对应的哈希值H(Di),则子集Di对应的密钥K(Di)可以是利用主密钥MK对对应的H(Di)进行加密后确定,由此可以确定全部子集对应的密钥。
上述仅以两个例子对利用MK确定K(Di)的方式进行说明,本申请对于利用MK确定K(Di)的方式不作限制,只要根据MK或其他很少量的密钥即可确定全部子集对应的密钥,且他人即使知道任意项数子集对应的密钥,也无法推理出其他子集对应的密钥即可。
由此,可以实现各项子集对应的密钥的相对独立性,即第二用户或第三方即使后续得到了抽检的子集的密钥,也无法解密除抽检部分之外其他子集的数据,可以有效的防止第二用户或第三方滥用、转卖数据。
步骤S202,向第一用户发送针对第二数据的抽检请求。
其中,第二数据包括所述各子集中的至少一个子集。在一种可能的实现方式中,第二数据可以是欲出售的数据的各子集中的预定比例的子集,该比例可由第二用户(或第三方)与第一用户预先约定。该抽检请求可以被公布至上述数据库中。
需要说明的是,该预定比例越大,第一用户提供的数据造假的可能性就越小。假定第一用户把数据为300项子集,其中有30项(10%)为造假数据,如果第二用户或第三方选择10%的数据(即其中30项子集)进行检查,第一用户提供的数据造假而不被发现的概率只有大约3%。
在一种可能的实现方式中,该抽检请求可以包括第二数据对应于的各子集的哈希值。第一用户接收到抽检请求后可以将该哈希值对应的原始数据作为返回信息返回给第二用户或第三方。
在一种可能的实现方式中,该抽检请求包括至少一个数据位置,该数据位置用于指示所述第二数据包括的所述各子集中的至少一个子集在所述第一数据的各子集中的位置。
在这种情况下,在步骤S201中,第一用户发送的第一数据中的排列顺序可以与原始的欲出售的数据中各子集的排列顺序一致。
例如,选取的数据位置可以是(a1,a2……am),可以分别表示n项子集中的m项子集的位置。在一种可能的实现方式中,第二用户或第三方在提出抽样请求时还可以将该数据位置和该数据位置对应的第二数据的哈希值(H(Da1),H(Da2)……H(Dam))公布在上述数据库中。通过选取数据位置,可以使得第二数据包括的各子集在第一数据对应的欲出售的数据中各子集的排列顺序确定,在后续交易得到原始数据后,可核对选取数据位置的数据的哈希值与步骤S201中接收到的第一数据中对应位置的哈希值是否一致,从而可以防止第一用户在抽检前后对欲出售的各子集中的部分或全部数据进行替换,使得第一用户无法在抽检过程中提供虚假数据以提升数据质量。
步骤S203,接收第一用户响应于所述抽检请求发送的返回信息。
可以由第三方或第二用户接收第一用户发送的返回信息。该返回信息可以包括第三数据或第二数据对应的密钥,可参见步骤S205中的详细叙述。
步骤S204,根据所述第一数据包括的各子集的哈希值,确定所述第二数据的哈希值。
由于第二数据包括第一数据包括的各子集中的至少一个子集,可以根据第一用户发送的第一数据中对应于第二数据的部分,确定第二数据的哈希值。
步骤S205,根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估。
其中,可以根据返回信息,确定该返回信息中指示的数据是否与第二数据一致,从而确定第一用户是否提供了抽检请求中指定的数据,如果一致,则可以对该抽样的数据(即返回信息中指示的数据)进行评估,例如根据抽样的数据的质量对欲出售的各子集进行价值估计,从而可以实现对上述各子集进行评估。
根据本申请实施例,可以实现对欲出售的数据的抽样检查,且在上述过程第二用户和第三方无法得到欲出售数据的原始数据。且由于是由第三方或第二用户提出抽检请求,第一用户无法确定会被抽样的第二数据,从而无法体现挑选质量更优数据作为被抽检的数据以获得更优的评估结果,使得该过程随机化、可信、可管控。
在一种可能的实现方式中,该返回信息可包括第三数据,步骤S205,可包括:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
其中,第三数据可以是指第一用户返回的与抽样请求相对应的数据。该数据可以是原始数据,第二数据的哈希值可以根据步骤S204确定。从而,第三方或第二用户可以根据第三数据计算出该第三数据的哈希值,并判断该第三数据的哈希值和第二数据的哈希值是否一致,从而确定第一用户是否提供了抽检请求中指定的数据。
其中,根据判断结果对所述第二数据进行验证,可以包括在第三数据的哈希值和第二数据的哈希值一致的情况下,确定第一用户提供了抽检请求中指定的数据,从而可以进一步根据上述方式对抽样的数据进行评估;否则,可以确定第一用户未提供抽检请求中指定的数据,在一种可能的实现方式中,可以要求第一用户重新提供返回信息、或认定第二数据抽检不通过等。
在一种可能的实现方式中,第一数据包括加密后的所述各子集,该返回信息可以包括所述第二数据对应的密钥,步骤S205,包括:根据所述密钥,对与所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
其中,该密钥包括与加密后的第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。加密后的第二数据中的各子集对应的各密钥可以是指与加密后的第二数据中的各子集对应的上述密钥K(Di)。
例如,在抽检请求中第二用户或第三方选择查看子集E(DA)和E(DB)的数据内容的情况下,第一用户发送的返回信息可以包括子集E(DA)和E(DB)对应的密钥K(DA)和K(DB),第二用户或第三方则可以利用密钥打开加密的子集,查看子集DA和DB里的数据内容,即得到第四数据,从而可以判断第四数据的哈希值和第二数据的哈希值是否一致,以确定第一用户是否提供了抽检请求中指定的数据。
其中,根据判断结果对所述第二数据进行验证,可以包括在第四数据的哈希值和第二数据的哈希值一致的情况下,确定第一用户提供了抽检请求中指定的数据,从而可以进一步根据上述方式对抽样的数据进行评估;否则,可以确定第一用户未提供抽检请求中指定的数据,在一种可能的实现方式中,可以要求第一用户重新提供返回信息、或认定第二数据抽检不通过等。
在后续交易的过程中,在第二用户从第一用户购买到第一用户欲出售的数据后,也可以验证第一用户是否对数据进行了改动。例如,第二用户可以对购买到的数据整体计算哈希值,并与步骤S201中得到的H(D)进行对比。若抽检请求中包括了数据位置,第二用户还可以在购买到的数据中计算抽检时选取的对应数据位置(a1,a2……am)的各子集的哈希值,并与步骤S201中得到的各子集的哈希值(H(Da1),H(Da2)……H(Dam))进行对比,从而确定抽检的第二数据是否出现在购买到的数据中,且对应的位置是否改变,以防止第一用户在抽检前后对数据进行了替换。
在一种可能实现方式中,该方法还包括:
步骤S206,将以下中的一项或多项公布至不可修改的数据库中:所述第一数据包括的各子集的哈希值、加密后的所述第一数据包括的各子集、所述抽检请求。
其中,可以由第二用户或第三用户将上述内容公布至不可修改的数据库中,也可以由第一用户公布,本申请对此不作限制。该数据库也可以是基于区块链的数据库。
除上述内容以外,还可以将抽检过程中的其他数据公布至数据库中,本申请对此也不作限制。
由此,在出现争议时可以利用公布至数据库中的信息对相关过程进行溯源,从而可以实现可溯源的抽检过程。
参见图3,图3示出根据本申请一实施例的数据处理方法的流程图。该方法可用于用户端,该用户端应用于上述第一用户,例如第一用户可通过终端设备实现该实施例的方法。如图3所示,该方法包括:
步骤S301,向服务端发送第一数据。
其中,第一数据包括各子集的哈希值,所述各子集为第一用户欲进行交易的数据。
服务端可应用于第三方或第二用户。第一用户欲进行交易的数据(可称为D)可以被拆分成n项子集,将D拆分后的任一子集可以称为Di,i可以表示对应的子集序号,则拆分后D对应的数据集合中可以包括子集D1、D2、D3……Dn。本申请对于拆分后的子集的数量n不作限定,每一项子集可以表示对应数据D的最小单位,即该子集不可再被拆分。
可以分别对欲进行交易的数据中各子集D1、D2、D3……Dn用哈希函数进行压缩,得到各子集的各哈希值H(D1)、H(D2)、H(D3)……H(Dn),即第一数据。还可以对完整的欲进行交易的数据利用哈希函数进行压缩得到H(D),第一数据还可以包括上述完整的欲进行交易的数据的哈希值H(D)。
在一种可能的实现方式中,第一用户还可以分别对D中的各子集进行加密,得到对应的加密后的数据集合E(D),E(D)中可以包括子集E(D1)、E(D2)、E(D3)……E(Dn),可以分别表示加密后的各子集D1、D2、D3……Dn。第一数据还可包括上述加密后的各子集。在一种可能的实现方式中,第一数据中还可仅包括加密后的各子集而不包括各子集的哈希值,本申请对此不作限制。
其中,对数据D中的各子集进行加密的方法可以是由第一用户创建一个主密钥MK,并利用MK分别确定各子集对应的密钥K(Di)。
例如,可以首先确定(可以是随机生成)一个对应D1的密钥K(D1),则K(Di+1)可以是利用主密钥MK对K(Di)进行加密后确定,由此可以确定全部子集对应的密钥。
又例如,可以先确定各子集对应的哈希值H(Di),则子集Di对应的密钥K(Di)可以是利用主密钥MK对对应的H(Di)进行加密后确定,由此可以确定全部子集对应的密钥。
上述仅以两个例子对利用MK确定K(Di)的方式进行说明,本申请对于利用MK确定K(Di)的方式不作限制,只要根据MK或其他很少量的密钥即可确定全部子集对应的密钥,且他人即使知道任意项数子集对应的密钥,也无法推理出其他子集对应的密钥即可。
由此,可以实现各项子集对应的密钥的相对独立性,即第二用户或第三方即使后续得到了抽检的子集的密钥,也无法解密除抽检部分之外其他子集的数据,可以有效的防止第二用户或第三方滥用、转卖数据。
步骤S302,接收所述服务端发送的针对第二数据的抽检请求。
其中,所述第二数据包括所述各子集中的至少一个子集。
步骤S303,响应于所述抽检请求,向所述服务端发送返回信息。
其中,所述返回信息用于所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估,所述第二数据的哈希值根据所述第一数据包括的各子集的哈希值确定。
在一种可能的实现方式中,第二数据可以是欲出售的数据的各子集中的预定比例的子集,该比例可由第二用户(或第三方)与第一用户预先约定。该抽检请求可以被公布至上述数据库中。
需要说明的是,该预定比例越大,第一用户提供的数据造假的可能性就越小。假定第一用户把数据为300项子集,其中有30项(10%)为造假数据,如果第二用户或第三方选择10%的数据(即其中30项子集)进行检查,第一用户提供的数据造假而不被发现的概率只有大约3%。
在一种可能的实现方式中,该抽检请求可以包括第二数据对应于的各子集的哈希值。第一用户接收到抽检请求后可以将该哈希值对应的原始数据作为返回信息发送给第二用户或第三方。
在一种可能的实现方式中,该抽检请求包括至少一个数据位置,该数据位置用于指示所述第二数据包括的各子集中的至少一个子集在所述第一数据的各子集中的位置。
在这种情况下,在步骤S301中,第一用户发送的第一数据中的排列顺序可以与原始的欲出售的数据中各子集的排列顺序一致。
例如,选取的数据位置可以是(a1,a2……am),可以分别表示n项子集中的m项子集的位置。在一种可能的实现方式中,第二用户或第三方在提出抽样请求时还可以将该数据位置和该数据位置对应的第二数据的哈希值(H(Da1),H(Da2)……H(Dam))公布在上述数据库中。通过选取数据位置,可以使得第二数据包括的各子集在第一数据对应的欲出售的数据中各子集的排列顺序确定,在后续交易得到原始数据后,第二用户或第三方可核对选取数据位置的数据的哈希值与步骤S301中第一用户发送的第一数据中对应位置的哈希值是否一致,从而可以防止第一用户在抽检前后对欲出售的各子集中的部分或全部数据进行替换,使得第一用户无法在抽检过程中提供虚假数据以提升数据质量。
在一种可能的实现方式中,该返回信息包括第三数据,上述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,包括:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
其中,第三数据可以是指第一用户发送的与抽样请求相对应的数据。该数据可以是原始数据,第二数据的哈希值可以是步骤S301中第一用户发送的第一数据包括的各哈希值中、与第二数据相对应的各哈希值。从而,第三方或第二用户可以根据第三数据计算出该第三数据的哈希值,并判断该第三数据的哈希值和第二数据的哈希值是否一致,从而确定第一用户是否提供了抽检请求中指定的数据。
其中,服务端根据判断结果对所述第二数据进行验证,可以包括在第三数据的哈希值和第二数据的哈希值一致的情况下,第三方或第二用户确定第一用户提供了抽检请求中指定的数据,从而可以进一步根据上述方式对抽样的数据进行评估;否则,可以确定第一用户未提供抽检请求中指定的数据,在一种可能的实现方式中,可以要求第一用户重新提供返回信息、或认定第二数据抽检不通过等。
在一种可能的实现方式中,第一数据包括加密后的所述各子集,该返回信息可以包括所述第二数据对应的密钥,上述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,包括:根据所述密钥,对与所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
其中,该密钥包括与加密后的第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。加密后的第二数据中的各子集对应的各密钥可以是指与加密后的第二数据中的各子集对应的上述密钥K(Di)。
例如,在抽检请求中第二用户或第三方选择查看子集E(DA)和E(DB)的数据内容的情况下,第一用户发送的返回信息可以包括子集E(DA)和E(DB)对应的密钥K(DA)和K(DB),第二用户或第三方则可以利用密钥打开加密的子集,查看子集DA和DB里的数据内容,即得到第四数据,从而可以判断第四数据的哈希值和第二数据的哈希值是否一致,以确定第一用户是否提供了抽检请求中指定的数据。
其中,根据判断结果对所述第二数据进行验证,可以包括在第四数据的哈希值和第二数据的哈希值一致的情况下,第三方或第二用户确定第一用户提供了抽检请求中指定的数据,从而可以进一步根据上述方式对抽样的数据进行评估;否则,可以确定第一用户未提供抽检请求中指定的数据,在一种可能的实现方式中,可以要求第一用户重新提供返回信息、或认定第二数据抽检不通过等。
图4示出根据本申请一实施例的数据处理装置的结构图。如图4所示,该装置包括:
第一接收模块401,用于接收第一用户发送的第一数据,所述第一数据包括各子集的哈希值,所述各子集为所述第一用户欲进行交易的数据;
第一发送模块402,用于向所述第一用户发送针对第二数据的抽检请求,所述第二数据包括所述各子集中的至少一个子集;
确定模块403,用于根据所述第一数据包括的各子集的哈希值,确定所述第二数据的哈希值;
第二接收模块404,用于接收所述第一用户响应于所述抽检请求发送的返回信息;
验证模块405,用于根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估。
根据本申请实施例,可以实现对欲出售的数据的抽样检查,且在上述过程中买方和第三方无法得到欲出售数据的原始数据,可以防止欲出售的数据被滥用、转售。通过向第一用户发送抽检请求,可以使得第一用户无法确定会被抽样的第二数据,从而无法体现挑选质量更优数据作为被抽检的数据以获得更优的评估结果,使得该过程可信、可管控。
在一种可能的实现方式中,该返回信息包括第三数据,该验证模块405,具体用于:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过判断返回信息包括的第三数据的哈希值和第二数据的哈希值是否一致,可以确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。且上述过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,该第一数据包括加密后的所述各子集,该返回信息包括所述第二数据对应的密钥,该验证模块405,具体用于:根据所述密钥,对所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过根据返回信息中的密钥,对加密后的所述各子集中加密后的第二数据进行解密,得到第四数据,并判断第四数据的哈希值和第二数据的哈希值是否一致,可以确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。
在一种可能的实现方式中,该密钥包括与第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。
根据本申请实施例,通过使得不同的子集对应的密钥不同,可以实现在抽检的过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,该抽检请求包括至少一个数据位置,该数据位置用于指示所述第二数据包括的各子集中的至少一个子集在所述第一数据的各子集中的位置。
根据本申请实施例,通过在抽检请求中包括数据位置,可以使得各子集在欲出售的数据中的排列顺序确定,在后续交易得到原始的欲出售数据后,可核对对应数据位置下的数据的哈希值与第一用户最初提供的第一数据包括的各子集的哈希值中、对应位置的哈希值是否一致,从而可以防止第一用户在抽检前后对欲出售的各子集中的数据进行替换,使得第一用户无法在抽检过程中提供虚假数据以提升数据质量。
在一种可能的实现方式中,该装置还包括:公布模块,用于将以下中的一项或多项公布至不可修改的数据库中:所述第一数据包括的各子集的哈希值、加密后的所述第一数据包括的各子集、所述抽检请求。
由此,在出现争议时可以利用公布至数据库中的信息对相关过程进行溯源,从而可以实现可溯源的抽检过程。
图5示出根据本申请一实施例的数据处理装置的结构图。如图5所示,该装置包括:
第二发送模块501,用于向服务端发送第一数据,所述第一数据包括各子集的哈希值,所述各子集为第一用户欲进行交易的数据;
第三接收模块502,用于接收所述服务端发送的针对第二数据的抽检请求,所述第二数据包括所述各子集中的至少一个子集;
第三发送模块503,用于响应于所述抽检请求,向所述服务端发送返回信息,所述返回信息用于所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,以对所述第一数据中的各子集进行评估,所述第二数据的哈希值根据所述第一数据包括的各子集的哈希值确定。
根据本申请实施例,可以实现服务端对欲出售的数据的抽样检查,且在上述过程中买方和第三方无法得到欲出售数据的原始数据,可以防止欲出售的数据被滥用、转售。通过第一用户接收抽检请求,并响应于抽检请求,向服务端发送返回信息,可以使得第一用户无法确定会被抽样的第二数据,从而无法体现挑选质量更优数据作为被抽检的数据以获得更优的评估结果,使得该过程可信、可管控。
在一种可能的实现方式中,所述返回信息包括第三数据,所述服务端根据所述返回信息和第二数据的哈希值,对所述第二数据进行验证,包括:判断所述第三数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过服务端判断返回信息包括的第三数据的哈希值和第二数据的哈希值是否一致,可以使得服务端确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。且上述过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,所述第一数据包括加密后的所述各子集,所述返回信息包括所述第二数据对应的密钥,所述服务端根据所述返回信息和所述第二数据的哈希值,对所述第二数据进行验证,包括:根据所述密钥,对所述加密后的所述各子集中加密后的所述第二数据进行解密,得到第四数据;判断所述第四数据的哈希值和所述第二数据的哈希值是否一致;根据判断结果对所述第二数据进行验证。
根据本申请实施例,通过服务端根据返回信息中的密钥,对加密后的所述各子集中加密后的第二数据进行解密,得到第四数据,并判断第四数据的哈希值和第二数据的哈希值是否一致,可以使得服务端确定第一用户是否提供了抽检请求中指定的数据,防止第一用户提供虚假的数据。
在一种可能的实现方式中,所述密钥包括与第二数据中的各子集对应的各密钥,不同的子集对应的密钥不同。
根据本申请实施例,通过使得不同的子集对应的密钥不同,可以实现在抽检的过程中买方和第三方无法获得第一用户欲出售的数据中未被抽检到的数据的原始数据,防止第一用户欲出售的数据被滥用、转售。
在一种可能的实现方式中,所述抽检请求包括至少一个数据位置,所述数据位置用于指示所述第二数据包括各子集中的至少一个子集在所述第一数据的各子集中的位置。
根据本申请实施例,通过在抽检请求中包括数据位置,可以使得各子集在欲出售的数据中的排列顺序确定,在第二用户后续交易得到原始的欲出售数据后,可核对对应数据位置下的数据的哈希值与第一用户最初发送的第一数据包括的各子集的哈希值中、对应位置的哈希值是否一致,从而可以防止第一用户在抽检前后对欲出售的各子集中的数据进行替换,使得第一用户无法在抽检过程中提供虚假数据以提升数据质量。
在一种可能的实现方式中,提供了一种数据处理装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
在一种可能的实现方式中,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
图6示出根据本申请一实施例的数据处理装置1900的框图。例如,装置1900可以被提供为一服务器。参照图6,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作***,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。