本发明涉及数据处理
技术领域:
,具体涉及一种云计算平台用户数据的存储、查询方法及装置。
背景技术:
:云计算存在的最主要目的为降低企业it运营成本,使得企业无需自行构建数据中心,通过租用云计算服务商(以下简称sp)提供的服务,即可获得处理业务数据的能力。每个租用该云计算服务的企业即可称为一个租户。对sp而言,如何最大化的利用计算资源,降低单位计算的开销,是其最为重要的目标。鉴于各租户的计算高峰时段不尽相同,让各租户共享资源则是一种很自然的节省成本的方法。因此大部分的数据平台,采用的是单一实例下不同的schema的模式实现多租户,比如各租户使用同一个mysql、hive数据库。这就要求sp的云计算平台既能实现租户之间的数据隔离,又能实现租户的授权情况可以实现数据共享。然而,现有的数据共享保护机制,在使用数据时,需要对计算数据解密到明文,sp有可能在计算过程偷偷留存数据,无法让租户完全放心信任。现有的加密保护技术,缺少对共享的机制的考虑。并且,通过公钥基础设施(pki)技术保护数据的方式,在使用数据时需要频繁对数据进行加密、解密。非对称的加密、解密计算过程非常消耗系统的资源。技术实现要素:有鉴于此,本发明实施例提供了一种云计算平台用户数据的存储、查询方法及装置,以解决现有的加密保护技术占用资源较大,且仍难以在数据共享时保障数据安全的问题。根据第一方面,本发明实施例提供了一种云计算平台用户数据的存储方法,包括:获取用户的存储请求,为所述云计算平台的用户生成两组配对的密钥;接收所述用户上传的数据及用户输入的数据保护类型;将所述数据的类型将所述数据划分为多列数据;根据所述数据保护类型使用所述密钥对各列数据进行加密保存。结合第一方面,在第一方面第一实施方式中,所述两组配对的密钥包括:用于数据加密的密钥对、以及用于密钥分发和数据签名的公钥及私钥。结合第一方面第一实施方式,在第一方面第二实施方式中,根据所述数据保护类型使用所述密钥对各列数据进行加密保存,包括:对于所述各列数据,使用所述用于数据加密的密钥对,分别调用相应的加密算法进行加密,使每列数据对应生成多组结果数据,进行保存。根据第二方面,本发明实施例提供了一种云计算平台用户数据的查询方法,包括:获取第二用户的数据查询请求;提取所述数据查询请求中的第一用户信息及加密数据,所述加密数据为使用第一方面或第一方面中任意一种实施方式所述的云计算平台用户数据的存储方法进行加密存储的;根据所述数据类型信息确定加密类型,使用对应的加密算法进行解密,提取所述数据。结合第二方面,在第二方面第一实施方式中,该云计算平台用户数据的查询方法还包括:获取所述第二用户的下载解密请求;根据所述下载解密请求向所述第一用户发送提示信息;当获取到所述第一用户的下载许可信息时,向所述第一用户发送所述第二用户的公钥文件;获取所述第一用户使用所述公钥文件对所述第一用户的加密密钥进行加密生成的密钥加密数据;将所述密钥加密数据发送至所述第二用户,供所述第二用户使用私钥进行解密,得到所述加密密钥,以对所述第一用户的数据进行解密,得到明文文件。根据第三方面,本发明实施例提供了一种云计算平台用户数据的存储装置,包括:密钥生成模块,用于获取用户的存储请求,为所述云计算平台的用户生成两组配对的密钥;数据接收模块,用于接收所述用户上传的数据及用户输入的数据保护类型;数据划分模块,用于将所述数据的类型将所述数据划分为多列数据;加密模块,用于根据所述数据保护类型使用所述密钥对各列数据进行加密保存。结合第三方面,在第三方面第一实施方式中,所述两组配对的密钥包括:用于数据加密的密钥对、以及用于密钥分发和数据签名的公钥及私钥。结合第三方面第一实施方式,在第三方面第二实施方式中,所述加密模块具体用于:对于所述各列数据,使用所述用于数据加密的密钥对,分别调用相应的加密算法进行加密,使每列数据对应生成多组结果数据,进行保存。根据第四方面,本发明实施例提供了一种云计算平台用户数据的查询装置,包括:数据查询请求获取模块,用于获取第二用户的数据查询请求;加密数据提取模块,用于提取所述数据查询请求中的第一用户信息及加密数据,所述加密数据为使用第一方面或第一方面中任意一种实施方式所述的云计算平台用户数据的存储方法进行加密存储的;数据解密提取模块,用于根据所述数据类型信息确定加密类型,使用对应的加密算法进行解密,提取所述数据。结合第四方面,在第四方面第一实施方式中,该云计算平台用户数据的查询装置还包括:下载解密请求获取模块,用于获取所述第二用户的下载解密请求;提示信息发送模块,用于根据所述下载解密请求向所述第一用户发送提示信息;公钥文件发送模块,用于当获取到所述第一用户的下载许可信息时,向所述第一用户发送所述第二用户的公钥文件;加密数据获取模块,用于获取所述第一用户使用所述公钥文件对所述第一用户的加密密钥进行加密生成的密钥加密数据;加密数据传输模块,用于将所述密钥加密数据发送至所述第二用户,供所述第二用户使用私钥进行解密,得到所述加密密钥,以对所述第一用户的数据进行解密,得到明文文件。根据第五方面,本发明实施例提供了一种计算机设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或者第一方面的任意一种实施方式中所述的云计算平台用户数据的存储方法,或者执行第二方面或第二方面的任意一种实施方式中所述的云计算平台用户数据的查询方法。根据第六方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面或者第一方面的任意一种实施方式中所述的云计算平台用户数据的存储方法,或者执行第二方面或第二方面的任意一种实施方式中所述的云计算平台用户数据的查询方法。本发明实施例所具备的有益效果在于,通过对用户的数据进行划分并根据用户需要的保护策略分别进行加密,从而为用户提供一个可以灵活设置数据的保护策略的云计算平台,既能保证其数据安全保护的诉求,又能实现其数据可以与其他租户的共享。附图说明通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:图1示出了本发明实施例的云计算平台用户数据的存储方法的流程图;图2示出了本发明实施例的原始数据与结果数据的示意图;图3示出了本发明实施例的云计算平台用户数据的查询方法的流程图;图4示出了本发明实施例的云计算平台用户数据的查询方法的离线下载过程的流程图;图5示出了本发明实施例的云计算平台用户数据的存储装置的结构示意图;图6示出了本发明实施例的云计算平台用户数据的查询装置的结构示意图;图7示出了本发明另一实施例的云计算平台用户数据的查询装置的结构示意图;图8示出了本发明实施例的计算机设备的结构框图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种云计算平台用户数据的存储方法,如图1所示,该云计算平台用户数据的存储方法主要包括:步骤s11:获取用户的存储请求,为云计算平台的用户生成两组配对的密钥。当有用户需要在云计算平台上进行数据存储时,可根据用户的存储请求创建租户信息,此时,为每个用户生成两个配对的密钥。生成的两个配对的密钥分别是:1.用于数据加密的密钥对:主密钥和加密密钥。主密钥是明文,加密密钥是对主密钥使用对称加密算法aes(advancedencryptionstandard)加密后生成密文,存于云计算平台。例如:主密钥为:dacp,加密密钥:u2fsdgvkx1/vvrb/mdkqrd8im0yjuwo7qy7ph8m6wxu=主密钥和加密密钥是一个配对密钥,主密钥交由租户自己管理,无需存在云端,是明文。加密密钥是主密钥的配对密钥,采用了md5对主密钥进行加密,存储在云端。2.用于密钥分发,数据签名的公钥和私钥。可选地,该公钥及私钥可以是采用非对称加密算法rsa的公钥及私钥。步骤s12:接收用户上传的数据及用户输入的数据保护类型;步骤s13:将数据的类型将数据划分为多列数据。实际应用中,用户在上传数据时,其输入的原始的数据如表1所示。表1手机号码姓名月均消费家庭地址13599…张三200厦门市….13598..李四300福州市…并且,用户可对自己上传的数据设置加密数据的保护策略,即对应该数据的保护类型。具体实施时,不同数据的保护策略(保护类型)可如表2所示。表2对于表2中的各个保护类型的说明如下:允许关联:指用户的这一列的数据是否允许跟被其他用户的数据进行关联分析。比如另外一个用户也有一批数据,也包含手机号码信息,生日,是否允许通过手机号码关联来为其他用户提供其他列的信息。当检测到用户选择的是允许关联,就会采用确定性加密算法进行加密。允许查找:是否允许其他用户对这一列进行like的查询操作数值泛化:对数值型的列,如果不想提供具体的数值,通过泛化,变成一种模糊的区间描述。如月均消费120元,泛化后变成:中等消费[100-150]。字符泛化:对字符型的列,如果不想提供具体信息,通过泛化,隐藏敏感信息。如福建省福州市南平路100号,泛化后:福建省福州市xxx路**号。需要说明的是,上述表1及表2所列数据的种类及其保护类型,仅为举例说明,并非用以限制本发明。步骤s14:根据数据保护类型使用密钥对各列数据进行加密保存。根据用户选择的数据保护类型,调用相应的加密算法函数,对数据进行加密保存。实际应用中,云计算平台提供的加密算法的函数可以例如是sdk或基于数据库的udf等。通过本发明实施例的云计算平台用户数据的存储方法,通过对用户的数据进行划分并根据用户需要的保护策略分别进行加密,从而为用户提供一个可以灵活设置数据的保护策略的云计算平台,既能保证其数据安全保护的诉求,又能实现其数据可以与其他租户的共享。可选地,在本发明的一些实施例中,上述步骤s14,根据数据保护类型使用密钥对各列数据进行加密保存,具体包括:对于各列数据,使用用于数据加密的密钥对,分别调用相应的加密算法进行加密,使每列数据对应生成多组结果数据,进行保存。根据租户的策略,调用相应的加密算法函数,对数据进行加密保存。以下以mysql数据库的udf为例进行说明,各数据保护策略(保护类型)对应使用的加密算法函数如下表3所示:表3针对不同的保护策略,使用对应的加密算法进行加密的过程为:根据用户的每一列的保护策略,同时考虑后续使用数据的运算性能,1列的数据可输出多列不同算法产生的结果数据。加密后保存的数据比原来的数据的列多出几个。比如手机号码,首先采用用户自己的主密钥进行加密输出phone_encry,为了能够跟其他用户的号码管理,采用云计算平台随机密钥进行加密,输出phone_join列。为了支持基于密文的模糊检索,需要输出基于sha-3的加密后的列:phone_search。表1中示出的各类数据对应的加密数据如表4所示。表4原始数据与加密后的结果数据的对应关系如图2所示,从图2中可以看出,用户的原始数据使用不同的加密算法,可生成多个加密后的结果数据。本发明实施例还提供一种云计算平台用户数据的查询方法,如图3所示,该云计算平台用户数据的查询方法主要包括:步骤s31:获取第二用户的数据查询请求;步骤s32:提取数据查询请求中的第一用户信息及加密数据。其中,该加密数据为使用上述方法实施例所述的云计算平台用户数据的存储方法进行加密存储的;步骤s33:根据数据类型信息确定加密类型,使用对应的加密算法进行解密,提取数据。实际应用中,用户在完成原始数据的加密存储于云计算平台之后,可供在同一云计算平台上的其它用户在线使用。在本发明实施例中,将提供数据的用户称为第一用户(供方用户),将想要使用第一用户提供的数据的用户称为第二用户(需方用户)。为保护第一用户的权益,需要满足以下几个规则:1)需要得到第一用户的授权。2)在使用过程中,数据不需完全解密成明文。以防止平台留存。以下,结合具体的应用场景来详细描述云计算平台上的查询方法的过程。应用场景1:第二用户希望通过号码关联得到第一用户的姓名信息。selectb.手机号码,a.的客户姓名from第一用户的表a,第二用户表bwhere第一用户表a.phone_join=ecntry_join(第二用户表b.手机号码)说明:这种情况下,查询得到的结果姓名列是密文字段,必须得到第一用户的授权,根据第一用户的数据的类型信息确定加密类型,获取到第一用户的公钥,第二用户才能看到明文。从而保证必须在第一用户的授权,才能访问数据。应用场景2:第二用户有一批数据,其中有一列是号码,想要通过号码关联统计收入层次的构成。selectbill_gerner,count(1)from第一用户的表a,第二用户表bwhere第一用户表a.phone_join=ecntry_join(第二用户表b.手机号码)groupbybill_gerner。说明:因为第一用户的phone_join,是采用云计算平台的加密密钥,所以将第二用户的手机号码也进行同样的加密,实现在密文上相同关联。可见,当在云计算平台上的不同用户的相同类型数据需要进行关联时,可获取用户对于相同类型数据使用的加密算法,使用相同的加密算法进行加密,从而实现密文上的关联。应用场景3:第二用户对第一用户的数据进行模糊查询,比如想查询号码包含%13599%的信息。select*from第一用户的表awheresha-3search(a.phone_search,’13599’);因为第一用户的号码phone_search列信息是基于sha-3的加密,具备密文模糊检索的能力,所以不需要对a的数据进行解密即可匹配。在实际应用中,对于第二用户在需求使用第一用户的数据时,存在一种情况是希望能够将数据下载后离线使用,可选地,在本发明的一些实施例中,该云计算平台用户数据的查询方法还包括离线下载过程,具体地,如图4所示,该过程包括:步骤s41:获取第二用户的下载解密请求;当第二用户需要下载第一用户提供的数据时,需先发出下载解密请求。步骤s42:根据下载解密请求向第一用户发送提示信息;云计算平台在获取得到第二用户的下载解密请求时,向第一用户发送提示信息,提示第一用户,有其他用户希望获取第一用户提供到云计算平台的数据。步骤s43:当获取到第一用户的下载许可信息时,向第一用户发送第二用户的公钥文件。如果第一用户确认可以向第二用户提供数据,则可向云计算平台发送下载许可信息,许可进行下载。云计算平台获取到该下载许可信息后,向第一用户发送第二用户的公钥,供第一用户进行加密使用。步骤s44:获取第一用户使用公钥文件对第一用户的加密密钥进行加密生成的密钥加密数据。第一用户在获取到云计算平台提供的第二用户的公钥后,使用该公钥对第一用户自己的加密密钥进行加密,生成密钥加密数据,并反馈给云计算平台。步骤s45:将密钥加密数据发送至第二用户,供第二用户使用私钥进行解密,得到加密密钥,以对第一用户的数据进行解密,得到明文文件。将密钥加密数据发送给第二用户,第二用户可以使用自己的私钥进行解密,从而获取到第一用户加密使用的加密密钥,从而使用该加密密钥对下载到的第一用户的密文数据进行解密,得到明文数据。通过上述过程,一方面,确保了供方用户的数据在被需方用户下载时,需得到供方用户的授权确认;另一方面,使用供方用户和需方用户提供的密钥进行相应的加密、解密操作,保证了供方用户的数据的使用安全性,不会在云计算平台上进行解密操作,防止被云计算平台上的其他用户获取到供方用户的数据,提高了云计算平台的安全性。本发明实施例还提供一种云计算平台用户数据的存储装置,其如图5所示,该云计算平台用户数据的存储装置主要包括:密钥生成模块51、数据接收模块52、数据划分模块53及加密模块54等。该密钥生成模块51用于获取用户的存储请求,为云计算平台的用户生成两组配对的密钥;详细内容可参见上述方法实施例中步骤s11的相关描述。数据接收模块52用于接收用户上传的数据及用户输入的数据保护类型;;详细内容可参见上述方法实施例中步骤s12的相关描述。数据划分模块53用于将数据的类型将数据划分为多列数据;详细内容可参见上述方法实施例中步骤s13的相关描述。加密模块54用于根据数据保护类型使用密钥对各列数据进行加密保存;详细内容可参见上述方法实施例中步骤s14的相关描述。通过本发明实施例的云计算平台用户数据的存储装置,通过对用户的数据进行划分并根据用户需要的保护策略分别进行加密,从而为用户提供一个可以灵活设置数据的保护策略的云计算平台,既能保证其数据安全保护的诉求,又能实现其数据可以与其他租户的共享。本发明实施例还提供一种云计算平台用户数据的查询装置,如图6所示,该云计算平台用户数据的查询装置包括:数据查询请求获取模块61、加密数据提取模块62及数据解密提取模块63等。该数据查询请求获取模块61用于获取第二用户的数据查询请求;详细内容可参见上述方法实施例的步骤s31的相关描述。加密数据提取模块62用于提取数据查询请求中的第一用户信息及加密数据,加密数据为使用上述方法实施例云计算平台用户数据的存储方法进行加密存储的;详细内容可参见上述方法实施例的步骤s32的相关描述。数据解密提取模块63用于根据数据类型信息确定加密类型,使用对应的加密算法进行解密,提取数据;详细内容可参见上述方法实施例的步骤s31的相关描述。在实际应用中,对于第二用户在需求使用第一用户的数据时,存在一种情况是希望能够将数据下载后离线使用,可选地,在本发明的一些实施例中,该云计算平台用户数据的查询装置还可实现离线下载过程的数据保护,具体地,如图7所示,该云计算平台用户数据的查询装置还包括:下载解密请求获取模块71、提示信息发送模块72、公钥文件发送模块73、加密数据获取模块74及加密数据传输模块75等。下载解密请求获取模块71用于获取第二用户的下载解密请求;详细内容可参见上述方法实施例的步骤s41的相关描述。提示信息发送模块72用于根据下载解密请求向第一用户发送提示信息;详细内容可参见上述方法实施例的步骤s42的相关描述。公钥文件发送模块73用于当获取到第一用户的下载许可信息时,向第一用户发送第二用户的公钥文件;详细内容可参见上述方法实施例的步骤s43的相关描述。加密数据获取模块74用于获取第一用户使用公钥文件对第一用户的加密密钥进行加密生成的密钥加密数据;详细内容可参见上述方法实施例的步骤s44的相关描述。加密数据传输模块75用于将密钥加密数据发送至第二用户,供第二用户使用私钥进行解密,得到加密密钥,以对第一用户的数据进行解密,得到明文文件;详细内容可参见上述方法实施例的步骤s45的相关描述。通过上述过程,一方面,确保了供方用户的数据在被需方用户下载时,需得到供方用户的授权确认;另一方面,使用供方用户和需方用户提供的密钥进行相应的加密、解密操作,保证了供方用户的数据的使用安全性,不会在云计算平台上进行解密操作,防止被云计算平台上的其他用户获取到供方用户的数据,提高了云计算平台的安全性。本发明实施例还提供一种计算机设备,如图8所示,该计算机设备可以包括处理器81和存储器82,其中处理器81和存储器82可以通过总线或者其他方式连接,图8中以通过总线连接为例。处理器81可以为中央处理器(centralprocessingunit,cpu)。处理器81还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。存储器82作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的云计算平台用户数据的存储方法或云计算平台用户数据的查询方法对应的程序指令/模块(例如,图5所示的密钥生成模块51、数据接收模块52、数据划分模块53及加密模块54,或者图6所示的数据查询请求获取模块61、加密数据提取模块62及数据解密提取模块63)。处理器81通过运行存储在存储器82中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的云计算平台用户数据的存储方法或云计算平台用户数据的查询方法。存储器82可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器81所创建的数据等。此外,存储器82可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器82可选包括相对于处理器81远程设置的存储器,这些远程存储器可以通过网络连接至处理器81。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述一个或者多个模块存储在所述存储器82中,当被所述处理器81执行时,执行如图1-图4所示实施例中的云计算平台用户数据的存储方法或云计算平台用户数据的查询方法。上述计算机设备具体细节可以对应参阅图1至图4所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。当前第1页12