数据加密存储方法和装置以及计算设备与流程

文档序号:18009479发布日期:2019-06-25 23:49阅读:130来源:国知局
数据加密存储方法和装置以及计算设备与流程

本公开涉及互联网技术领域,尤其涉及一种数据加密存储方法和装置以及计算设备。



背景技术:

随着互联网特别是移动网络的普及,越来越多的产品和服务提供商都选择使用应用程序(app)作为与消费者交互的渠道之一,甚至是主要渠道,人们获取信息的方式由此也从传统的个人计算机(pc)端转移到了app端。不同于pc上通过网页来获取信息时可将重要数据放在服务器,app需要存放部分敏感数据在客户端本地,这样就有可能会遭到黑客的攻击,从而泄漏本地存储的用户敏感信息。近来频繁发生的移动端安全事件,也可以说明对于客户端本地数据存储加密的安全越来越重要。

目前市场上大量app采用的本地数据存储方式大致可以分为以下两种。第一种是客户端以明文在本地存储敏感数据,也即不经过任何处理直接将用户敏感信息存储在客户端本地,其显然存在极大的安全漏洞。第二种是客户端对本地敏感数据进行加密存储,也即客户端使用基于预设代码生成的加密密钥对敏感数据加密后进行存储,但这种方式中使用的加密密钥和产生的加密数据都保存在本地的单一介质中,存在被暴力破解的风险。



技术实现要素:

本公开提供一种数据加密存储方法和装置以及计算设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开实施例的第一方面,提供一种数据加密存储方法,应用于安装有应用程序app的客户端中,所述方法包括:基于预设算法生成加密密钥;将所述加密密钥分成至少两个部分并分别保存在所述客户端的m种介质中,其中m为大于1的自然数;以及使用所述加密密钥对目标数据进行加密。

根据本公开实施例的第二方面,提供另一种数据加密存储方法,应用于安装有应用程序app的客户端中,所述方法包括:使用预先生成的加密密钥对目标数据进行加密;以及将所述加密后得到的加密数据分成至少两个部分并分别保存在所述客户端的n种介质中,其中n为大于1的自然数。

根据本公开实施例的第三方面,提供一种数据加密存储装置,应用于安装有应用程序app的客户端中,所述装置包括:生成模块,设置为基于预设算法生成加密密钥;划分模块,设置为将所述加密密钥分成至少两个部分并分别保存在所述客户端的m种介质中,其中m为大于1的自然数;以及加密模块,设置为使用所述加密密钥对目标数据进行加密。

根据本公开实施例的第四方面,提供另一种数据加密存储装置,应用于安装有应用程序app的客户端中,所述装置包括:加密模块,设置为使用预先生成的加密密钥对目标数据进行加密;以及划分模块,设置为将所述加密后得到的加密数据分成至少两个部分并分别保存在所述客户端的n种介质中,其中n为大于1的自然数。

根据本公开实施例的第五方面,提供一种存储有计算机程序的存储介质,所述计算机程序在由客户端的处理器运行时,使所述客户端执行如以上任一实施例所述的方法。

根据本公开实施例的第六方面,提供一种计算设备,包括:处理器;存储器,存储有可由所述处理器执行的指令;其中所述处理器被配置为执行如以上任一实施例所述的方法。

根据本公开实施例的数据加密存储方案,通过拆分客户端本地数据存储时使用的加密密钥和/或得到的加密数据,并相应进行多介质分段存储,增强了客户端数据存储的安全性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

图1为根据本公开一实施例的数据加密存储方法流程图。

图2为根据本公开另一实施例的数据加密存储方法流程图。

图3为根据本公开再一实施例的数据加密存储方法流程图。

图4为根据本公开又一实施例的数据加密存储方法流程图。

图5为根据本公开一实施例的数据加密存储装置示意框图。

图6为根据本公开另一实施例的数据加密存储装置示意框图。

图7为根据本公开再一实施例的数据加密存储装置示意框图。

图8为根据本公开一实施例的计算设备示意框图。

具体实施方式

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

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

根据本发明的实施方式,提出了一种数据加密存储方法和装置以及介质和计算设备。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

图1为根据本公开一实施例的数据加密存储方法流程图,如图所示,本实施例的方法包括以下步骤s101-s103。在一个实施例中,本实施例的方法可由安装有应用程序app的客户端(例如手机)来执行。

在步骤s101中,基于预设算法生成加密密钥。

在一个实施例中,当app安装于客户端后,可以在用户首次打开app时基于预设算法生成唯一的加密密钥,之后对于该app需要在客户端本地进行存储的关键数据,都可使用该加密密钥进行加密。例如,使用客户端设备的uuid(universallyuniqueidentifier,通用唯一识别码)、当前时间戳和本地预置密钥,通过hmac(sha-256)算法生成aes-256的对称加密密钥。

然而,本公开的实施例并不仅限于此,针对不同类型的关键数据,上述app还可以基于预设的多种算法分别生成不同的加密密钥,此处不再赘述。

在步骤s102中,将加密密钥分成至少两个部分并分别保存在客户端的m种介质中,其中m为大于1的自然数。

与传统方式中加密密钥仅存储于单一介质不同,本实施例中使用多种介质对生成的加密密钥进行分段存储,从而降低破解风险。在一个实施例中,可基于现有的分段算法,例如base64操作,对上述生成的加密密钥进行处理,从而截取生成32位base64字符串,分成多个部分分别保存在客户端设备的不同介质中。

在一个实施例中,所述m种介质包括客户端上的不同存储器,或者同一存储器上的不同存储位置,或者二者兼有。例如,对于客户端上安装的某个app而言,所述m种介质可选自以下介质的任意组合:keychain(密钥串)、file(文件夹)和userdefaults(用户默认),但本公开并不仅限于此。上述keychain是客户端存储器上与app对应的相对独立空间,即使在app升级时keychain中保存的信息也不会删除,一般用于保存用户的机密信息;userdefaults一般用于存储与该app对应的用户配置文件,file则用于存储用户在使用该app期间下载或生成的非机密文件。

在步骤s103中,使用加密密钥对目标数据进行加密。

app在当前需要进行关键数据的本地存储时,首先基于步骤s102的反向操作从客户端的m种介质中取出并组装生成加密密钥,进而使用该加密密钥对上述关键数据进行加密操作,得到加密后的数据进行存储。

根据上述实施例的数据加密存储方法,通过拆分客户端本地数据存储时使用的加密密钥,并相应进行多介质分段存储,增强了客户端数据存储的安全性。

图2为根据本公开另一实施例的数据加密存储方法流程图,如图所示,本实施例的方法包括以下步骤s201-s204。

在步骤s201中,基于预设算法生成加密密钥。

在步骤s202中,将加密密钥分成至少两个部分并分别保存在客户端的m种介质中,其中m为大于1的自然数。

在步骤s203中,使用加密密钥对目标数据进行加密。

上述步骤s201-s203分别对应前一实施例的步骤s101-s103,此处不再赘述。

在步骤s204中,将加密后得到的加密数据分成至少两个部分并分别保存在客户端的n种介质中,其中n为大于1的自然数。

沿用前一实施例对加密密钥进行多介质分段存储的构思,本实施例中进一步对加密得到的加密数据同样进行多介质分段存储,从而进一步降低破解风险。在一个实施例中,步骤s204中所述的n种介质与步骤s202中所述的m种介质可以包括完全相同的多种介质,也可以选择各自不同的介质范围,例如均可选自以下介质的任意组合:keychain、file和userdefaults。

根据上述实施例的数据加密存储方法,通过拆分客户端本地数据存储时使用的加密密钥和得到的加密数据,并相应进行多介质分段存储,增强了客户端数据存储的安全性。

图3为根据本公开再一实施例的数据加密存储方法流程图,如图所示,本实施例的方法包括以下步骤s301-s306。

在步骤s301中,基于预设算法生成加密密钥。

在步骤s302中,将加密密钥分成至少两个部分并分别保存在客户端的m种介质中,其中m为大于1的自然数。

在步骤s303中,使用加密密钥对目标数据进行加密。

上述步骤s301-s303分别对应图1所示实施例的步骤s101-s103,此处不再赘述。

在步骤s304中,获取与目标数据对应的风控存储级别。

对于需要在客户端本地保存的关键数据,可能因为数据性质的不同存在不同的加密需求,例如对于常规的用户名和密码等数据,需要一般级别的加密;而对于银行账户、信用卡号和支付密码等数据,则需要更高级别的加密。本实施例中通过引入风控存储级别的设计来实现针对不同种类的关键数据进行不同级别的加密。

在一个实施例中,每种目标数据对应的风控存储级别可以预先设置并存储在app(也即客户端本地)中。在另一实施例中,还可以由与客户端通信的服务器实时反馈某一目标数据对应的风控存储级别,从而便于更加灵活的级别设置和更新。例如,当app通过客户端收到用户输入的某个关键字段需要在本地进行存储时,其与服务器进行通信,由服务器返回与该关键字段数据对应的风控存储级别。又例如,当app需要从服务器获取某个关键字段在本地进行存储时,服务器可以在返回关键字段数据的同时携带相应的风控存储级别。

在步骤s305中,根据风控存储级别将加密后得到的加密数据分成n个部分,其中n为自然数,且风控存储级别越高,n越大。

在步骤s306中,将n个部分的加密数据分别保存在客户端的n种介质中。

与不同风控存储级别的加密需求相对应的,本实施例提供不同数目的加密数据分段和存储介质。例如,对于级别最高的加密需求,可将加密数据分为三段分别保存在keychain、file和userdefaults中;对于级别次高的加密需求,可将加密数据分为两段分别保存在keychain和file;对于级别最低的加密需求,可将加密数据不分段地(可理解为分为一段)保存在userdefaults中。

根据上述实施例的数据加密存储方法,通过拆分客户端本地数据存储时使用的加密密钥和得到的加密数据,相应进行多介质分段存储,并引入风控存储级别的设计来实现针对不同种类的关键数据进行不同级别的加密,增强了客户端数据存储的安全性和灵活性。

图4为根据本公开又一实施例的数据加密存储方法流程图,本实施例涉及与图3实施例加密流程相对应的解密流程。如图所示,本实施例的方法包括以下步骤s401-s404。

在步骤s401中,基于数据获取请求获取与目标数据对应的风控存储级别。

在app需要对本地存储的关键数据进行解密时,需要完成与加密过程对应的反向操作。由于图3实施例中涉及针对不同种类的关键数据进行不同级别的加密,因此本实施例中在解密该关键数据时,需要先获取与其对应的风控存储级别。

在一个实施例中,风控存储级别例如是以映射表项的形式与关键数据的字段名存储在客户端本地。例如,app在需要获取本地存储的用户名和密码对当前用户的输入数据进行校验时,通过在上述映射表项中查询字段名“用户名”和“密码”即可获取相应的风控存储级别。

另外,步骤s401的数据获取请求既可以是app基于本地需求(例如上述的用户名和密码校验)而生成的,也可以是来自与客户端通信的服务器。例如,对于银行账号和支付密码,除了app需要在本地进行校验之外,还需要通过服务器与相应的银行服务器通信进行校验,此时便可由服务器产生上述数据获取请求并发送至客户端。

在步骤s402中,根据风控存储级别从n种介质中取出并生成加密数据。

本步骤可视为前一实施例步骤s306的逆过程。例如,基于步骤s401获取的不同风控存储级别:当获取到最高级别时,可从keychain、file和userdefaults中分别取出并经过组装生成完整的加密数据;当获取到次高级别时,可从keychain和file中分别取出并经过组装生成完整的加密数据;当获取到最低级别时,可直接从userdefaults中取出完整的加密数据。

在步骤s403中,从m种介质中取出并生成加密密钥。

本步骤可视为前一实施例步骤s302的逆过程。例如,当app基于预设规则确定加密密钥是分成三段时,则可从keychain、file和userdefaults中分别取出并经过组装生成完整的加密密钥。

在步骤s404中,使用加密密钥对加密数据进行解密得到目标数据;或者将加密数据和加密密钥回复至发送数据获取请求的服务器。

对应于数据获取请求的不同来源,步骤s404包括两种不同的实施方式。

在一个实施例中,当数据获取请求是app本地产生时,本步骤直接使用步骤s403得到的加密密钥对步骤s402得到的加密数据进行解密处理,从而得到目标数据。

在另一实施例中,当数据获取请求是来自服务器时,本步骤不进行解密处理,而是将步骤s403得到的加密密钥对步骤s402得到的加密数据发送至上述服务器。进一步,在发送至服务器之前,还可以对前述步骤得到的加密密钥和加密数据进行再次加密处理。例如,使用先aes(advancedencryptionstandard,高级加密标准)、后rsa(rivest-shamir-adleman)的方式对加密密钥和加密数据进行加密,将生成的两个值(分别对应加密密钥和加密数据)发送至服务器,由服务器通过逆向操作进行解密从而最终得到目标数据。

图4实施例虽然仅描述了与图3实施例对应的解密过程,但本领域技术人员由此能够理解与图1和图2实施例对应的解密过程,此处不再赘述。

需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。

本示例实施方式中进一步提供了一种数据加密存储装置。

图5为根据本公开一实施例的数据加密存储装置示意框图。本实施例的装置应用于安装有应用程序app的客户端中,如图所示,该装置包括生成模块51、划分模块52和加密模块53。

在一个实施例中,生成模块51设置为基于预设算法生成加密密钥;划分模块52设置为将上述加密密钥分成至少两个部分并分别保存在客户端的m种介质中,其中m为大于1的自然数;加密模块53设置为使用上述加密密钥对目标数据进行加密。

在一个实施例中,上述m种介质包括客户端上的不同存储器,或者同一存储器上的不同存储位置,或者二者兼有。例如,对于客户端上安装的某个app而言,所述m种介质可选自以下介质的任意组合:keychain、file和userdefaults,但本公开并不仅限于此。

根据上述实施例的数据加密存储装置,通过拆分客户端本地数据存储时使用的加密密钥,并相应进行多介质分段存储,增强了客户端数据存储的安全性。

图6为根据本公开另一实施例的数据加密存储装置示意框图。本实施例的装置应用于安装有应用程序app的客户端中,如图所示,该装置包括加密模块61和划分模块62。

在一个实施例中,加密模块61设置为使用预先生成的加密密钥对目标数据进行加密;划分模块62设置为将上述加密后得到的加密数据分成至少两个部分并分别保存在所述客户端的n种介质中,其中n为大于1的自然数。

在一个实施例中,上述n种介质包括客户端上的不同存储器,或者同一存储器上的不同存储位置,或者二者兼有。例如,对于客户端上安装的某个app而言,所述n种介质可选自以下介质的任意组合:keychain、file和userdefaults,但本公开并不仅限于此。

根据上述实施例的数据加密存储装置,通过拆分客户端本地数据存储时得到的加密数据,并相应进行多介质分段存储,增强了客户端数据存储的安全性。

图7为根据本公开再一实施例的数据加密存储装置示意框图。本实施例的装置应用于安装有应用程序app的客户端中,如图所示,该装置包括生成模块71、第一划分模块72、加密模块73和第二划分模块74。

在一个实施例中,生成模块71设置为基于预设算法生成加密密钥;第一划分模块72设置为将上述加密密钥分成至少两个部分并分别保存在客户端的m种介质中,其中m为大于1的自然数;加密模块73设置为使用上述加密密钥对目标数据进行加密;第二划分模块74设置为将上述加密后得到的加密数据分成至少两个部分并分别保存在所述客户端的n种介质中,其中n为大于1的自然数。

在一个实施例中,上述m种介质包括客户端上的不同存储器,或者同一存储器上的不同存储位置,或者二者兼有。例如,对于客户端上安装的某个app而言,所述m种介质可选自以下介质的任意组合:keychain、file和userdefaults,但本公开并不仅限于此。上述n种介质与上述m种介质可以包括完全相同的多种介质,也可以选择各自不同的介质范围,例如均可选自以下介质的任意组合:keychain、file和userdefaults。

根据上述实施例的数据加密存储装置,通过拆分客户端本地数据存储时使用的加密密钥和得到的加密数据,并相应进行多介质分段存储,增强了客户端数据存储的安全性。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上实施方式的描述,本领域的技术人员易于理解,上文描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。

例如,在一个示例实施方式中,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可以实现上述任意一个实施例中所述方法的步骤。所述方法的具体步骤可参考前述实施例中的详细描述,此处不再赘述。所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

在另一个示例实施方式中,还提供一种计算设备,该设备可以是手机、平板电脑等移动终端,也可以是台式计算机、服务器等终端设备,本示例实施方式中对此不作限制。图8示出根据本公开示例实施方式中一种计算设备80的示意图。例如,设备80可以被提供为一移动终端。参照图8,设备80包括处理组件81,其进一步包括一个或多个处理器,以及由存储器82所代表的存储器资源,用于存储可由处理组件81的执行的指令,例如应用程序。存储器82中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件81被配置为执行指令,以执行上述数据加密存储方法。该方法的步骤可参考前述方法实施例中的详细描述,此处不再赘述。

装置80还可以包括一个电源组件83被配置为执行装置80的电源管理,一个有线或无线网络接口84被配置为将装置80连接到网络,和一个输入输出(i/o)接口85。装置80可以操作基于存储在存储器82的操作系统,例如android、ios或类似。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

虽然已参照几个典型实施例描述了本公开,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本公开能够以多种形式具体实施而不脱离申请的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。

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