具体实施方式
数据作为当下最核心的资产,存储安全变得越来越至关重要。而为了能够保证数据可以安全的存储至终端设备,当前摆在面前的问题是如何提高数据的加密强度。
目前常用的对数据进行加密存储的方式为:以统一的对称加密密钥对数据进行加密,并存储至终端设备中。但是这种存储方式,常见的对称加密密钥的应用方式为:利用其它的加密方式将对称加密密钥保存在一张图片中,需要对数据进行加密时,从图片中读取对称加密密钥,然后利用对称加密密钥对数据进行加密,由于需要将图片加载到内存中,对称加密密钥会暴露在内存中,攻击者可能从内存中去截取对称加密密钥,由于采用的是统一的对称加密密钥,攻击者在获取到任意一台终端设备上的密钥的情况下,就可以解密其它终端设备上的数据,如此一来,对于终端设备本地存储的数据存在较高的安全风险,存在数据泄露的风险。
针对上述问题,本说明书实施例提供一种技术方案,通过获取当前数据存储场景中至少一方面的特征信息,按照预设的规则,将所获取的特征信息生成固定长度的摘要,以所述固定长度的摘要作为加密密钥,按照预设的加密算法对所述待存储的数据进行加密,将所述经过加密的待存储的数据存储到文件系统的存储文件中。如此一来,可以保证密钥的专一性,即便攻击者获取到任意一台终端设备上的密钥,也无法解密其它终端设备上的数据,提高了终端设备本地存储的数据的加密强度,有效降低了数据的泄露风险。
具体的,本说明书实施例所提供的技术方案是:
接收待存储的数据,对所述待存储的数据进行预处理,所述预处理至少包括对所述待存储的数据进行对齐操作;从当前数据存储场景中获取至少一方面的特征信息;按照预设的规则,将所获取的特征信息生成固定长度的第一摘要:以所述固定长度的第一摘要作为加密密钥,按照预设的加密算法对所述待存储的数据进行加密;将所述经过加密的待存储的数据存储到文件系统的存储文件中。
相应的,基于上述所提供的有关数据存储的技术方案,本说明书实施例还提供了一种数据读取的技术方案,具体的如下:
在接收到数据读取请求的情况下,从当前数据读取场景中,获取与数据加密时所获取的特征信息相对应的特征信息;按照所述预设的规则,将所获取的特征信息生成固定长度的第二摘要;以所述固定长度的第二摘要作为解密密钥,按照预设的解密算法对所述数据读取请求对应的存储文件中的数据进行解密;若对所述数据读取请求对应的存储文件中的数据解密成功,则读取所述数据读取请求对应的存储文件中的数据。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
下面分别从“数据存储”以及“数据读取”两个方面,对本说明书实施例所提供的技术方案进行说明。
如图1所示,为本说明书实施例提供的一种数据存储方法的实施流程图,该方法可以包括以下步骤:
S101,接收待存储的数据,对所述待存储的数据进行预处理,所述预处理至少包括对所述待存储的数据进行对齐操作;
数据是指对客观事件进行记录并可以鉴别的符号,是对客户事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符合的组合,它是可识别的、抽象的符号,它不仅指狭义上的数字,还可以是具有一定意义的文字、字母、数字符号的组合、图形、视频、音频等,也可以是客观事物的属性、数量、位置、及其相互关系的抽象表示。例如,“0、1、2……”、“阴、雨、下降、气温”、“学生的档案记录、货物的运输情况”等都是数据,值得注意的是,本说明书实施例对数据的具体内容不作限定。
另外对于所接收的待存储的数据的来源,例如可以是终端设备上产生的数据,还可以是服务器下发的数据,总之,本说明书实施例对数据的具体来源不作限定。
在接收到待存储的数据之后,对待存储的数据进行预处理,该预处理至少包括对待存储的数据进行对齐操作,当然也可以包括其他操作,例如进行排序,本说明书实施例在此不再一一赘述。
以对待存储的数据进行对齐操作为例,数据在存储至文件系统的存储文件中之前,预先判断存储文件的格式,例如预先查看存储文件的行宽,根据存储文件的行宽对待存储的数据进行对齐操作。
例如待存储的数据为“1-9”,以5*5的矩阵的形式存储到文件系统中,这里存储文件的行宽可以看成是5,在对数据“1-9”进行对齐之后,剩余位置可以填充“Null”,其填充完后的效果可以如下表1所示。
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
Null |
表1
S102,从当前数据存储场景中获取至少一方面的特征信息;
针对S101所接收的待存储的数据,在将待存储的数据存储至文件系统的存储文件之前,需要对其进行加密,因此需要获取当前数据存储场景中的特征信息,对特征信息经过加工以后,即可作为加密密钥,按照预设的加密算法对待存储的数据进行加密。
其中当前数据存储场景中的特征信息可以是终端设备信息,可以是文件系统信息,也可以是终端设备信息与文件系统信息的合集。下面分别对终端设备信息、文件系统信息进行举例说明:
终端设备信息,例如可以是终端设备的名称,可以是终端设备的型号,可以是终端设备的MAC地址,可以是终端设备的IP地址等等,当然也可以是上述信息中至少两项组成的合集。例如,以手机为例,获取的终端设备信息可以是MAC地址、IP地址、设备的型号。值得注意的是,本说明书实施例仅仅只是对终端设备信息的具体表现形式进行举例说明,并不限定终端设备信息的具体内容,终端设备信息还可以是其它形式的信息,本说明书再次不再一一赘述。
文件系统信息,例如可以是文件系统中某个文件的创建时间(可以是待存储数据即将存储至存储文件的创建时间),还可以是某个文件的修改时间,或者还可以是某个文件的名称、格式,或者还可以是某个文件中的某段内容,当然也可以是上述信息中至少两项组成的合集。例如,获取的文件系统信息可以是文件的创建时间“2018/01/01”、文件的名称“新申请”、文件的格式“.docx”与文件的内容“1812114”。值得注意的是,本说明书实施例仅仅只是对文件系统的具体表现形式进行举例说明,并不限定文件系统信息的具体内容,文件系统信息还可以是其它形式的信息,本说明书再次不再一一赘述。
除此之外,当前数据存储场景中的特征信息还可以是当前操作系统的信息,例如所使用的操作系统的版本,所使用的操作系统的名称,操作系统的更新时间等,本说明书在此不再一一赘述。
优选的,获取的特征信息可以是终端设备信息、文件系统信息与操作系统信息,其中终端设备信息可以是上述所说的几项的集合,文件系统信息可以是上述所说的几项的集合,操作系统信息可以是上述所说的几项的集合。
S103,按照预设的规则,将所获取的特征信息生成固定长度的第一摘要;
针对S102中所获取的特征信息,按照预设的规则,将所获取的特征信息生成固定长度的摘要,其中这里预设的规则可以是先对特征信息进行初步的加工,然后截取固定长度的内容生成固定长度的摘要。
这里初步的加工可以是组合,例如将上述S102所说的特征信息按照一定的组合规则进行组合,初步的加工还可以是排序,例如按照首字母对上述S102所说的特征信息进行排序,当然这里初步的加工还可以是重新取样,例如对上述S102所说的特征信息进行重新取样,另外里初步的加工还可以是对上述S102所说的特征信息添加标签,例如标签“1、2、3、4……”,这里初步的加工还可以是其它形式的处理步骤,本说明书实施例在此不再一一赘述。
在对上述S102所说的特征信息经过初步的加工之后,从经过加工的特征信息中截取固定长度的内容,生成固定长度的摘要,以固定长度的摘要作为加密密钥。其中加密密钥需要统一的长度,例如可以是128比特、192比特、256比特中的任意一个,因此对于摘要而言,也需要生成固定长度的摘要,故而需要在经过加工的特征信息中截取固定长度的内容。其中对于截取的规则,本说明书实施例对此不作限定,例如可以是从头至尾,还可以是从尾至头,还可以是从中间,另外若截取的内容不满足固定长度的话,可以补齐。
S104,以所述固定长度的第一摘要作为加密密钥,按照预设的加密算法对所述待存储的数据进行加密;
针对S103所生成的摘要,可以以所生成的摘要作为加密密钥,按照预设的加密算法对待存储的数据进行加密,其中加密密钥是一种参数,它是在明文转换为密文的加密算法中输入的参数。
本说明书实施例所采用的加密算法是AES(Advanced Encryption Standard,高级加密标准)加密算法,AES加密算法的区块长度固定为128比特,密钥长度可以是128、192或256比特。
另外,在对待存储数据加密的过程中,以固定长度的摘要作为加密密钥,按照预设的组合规则将加密密钥与待存储的数据进行组合,利用加密密钥,按照AES加密算法对由加密密钥与待存储的数据组成的组合进行加密,其中组合的形式可以是“密钥+原文+密钥”,值得注意的是,本说明书实施例对组合规则不作限定,其组合后的形式可以是任意形式。
S105,将所述经过加密的待存储的数据存储到文件系统的存储文件中。
针对S104中经过加密的待存储的数据,可以将其存储到文件系统的存储文件中,其中该存储文件可以是接收到待存储数据时生成的,此时存储到存储文件中的数据以密文的形式存在。
当然,针对S104中经过加密的由加密密钥与待存储的数据组成的组合,可以将其存储到文件系统的存储文件中,同理,此时存储到存储文件的由加密密钥与待存储的数据组成的组合以密文的形式存在。
基于上述数据存储方法的实施例,本说明书实施例还提供一种数据读取方法,具体的如图2所示,为本说明书实施例提供的一种数据读取方法的实施流程图,该方法具体可以包括以下步骤:
S201,在接收到数据读取请求的情况下,从当前数据读取场景中,获取与数据加密时所获取的特征信息相对应的特征信息;
在接收到数据读取请求的情况下,从当前数据读取场景中,获取与数据加密存储时所获取的特征信息相对应的特征信息,例如数据加密存储时获取的特征信息为终端设备信息,则数据读取时同样获取终端设备信息,又例如,数据加密时获取的特征信息为终端设备信息与文件系统信息,则数据读取时同样获取终端设备信息与文件系统信息。其中本步骤S201中的特征信息与上述步骤S102中的特征信息一致,本说明书再次不再详细赘述。
S202,按照所述预设的规则,将所获取的特征信息生成固定长度的第二摘要;
针对S201所获取的特征信息,按照预设的规则,将其生成固定长度的摘要,其中本步骤S202中的预设的规则,与上述S03中的预设的规则一致,本说明书实施例在此不再详细赘述。
S203,以所述固定长度的第二摘要作为解密密钥,按照预设的解密算法对所述数据读取请求对应的存储文件中的数据进行解密;
针对S202所生成的固定长度的摘要,以固定长度的摘要作为解密密钥,按照预设的解密算法对数据读取请求对应的存储文件中的数据进行解密,其中在数据读取请求中标明了所要读取的存储文件。这里预设的解密算法可以是AES解密算法,以该固定长度的摘要作为解密密钥,作为密文转换为明文的AES解密算法中的输入参数。
S204,若对所述数据读取请求对应的存储文件中的数据解密成功,则读取所述数据读取请求对应的存储文件中的数据。
针对S203中对数据读取请求对应的存储文件中的数据的解密结果,若对数据读取请求对应的存储文件中的数据解密成功,表明该存储文件还在原来的位置,该存储文件未被拷贝至其它位置,则读取数据请求对应的存储文件中的数据。若对数据读取请求对应的存储文件中的数据解密失败,表明该数据有可能被拷贝至其它位置,有数据泄露的风险,则提示用户读取失败。
其中在读取数据之前,可以校验此次所用的解密密钥与存储文件中的已有加密密钥是否一致,若一致,则读取数据请求对应的存储文件中的数据。其中这里的加密密钥是如上述步骤S105中存储的加密密钥。
通过上述对本说明实施例所提供的技术方案的描述,通过获取当前数据存储场景中至少一方面的特征信息,按照预设的规则,将所获取的特征信息生成固定长度的摘要,以固定长度的摘要作为加密密钥,按照预设的加密算法对待存储的数据进行加密,将经过加密的待存储的数据存储到文件系统的存储文件中。如此一来,可以保证密钥的专一性,即便攻击者获取到任意一台终端设备上的密钥,也无法解密其它终端设备上的数据,提高了终端设备本地存储的数据的加密强度,有效降低了数据的泄露风险。
同理,在数据读取的过程中,通过获取当前数据存储场景中至少一方面的特征信息,按照预设的规则,将所获取的特征信息生成固定长度的摘要,以固定长度的摘要作为解密密钥,按照预设的解密算法对数据读取请求对应的存储文件中的数据进行解密,若对数据读取请求对应的存储文件中的数据解密成功,则读取数据请求对应的存储文件中的数据,这样即便攻击者将存储文件拷贝到其它终端设备上,也无法读取存储文件中的数据,同样的降低了数据的泄露风险。
相应于上述方法实施例,本说明书实施例还提供一种数据存储装置以及数据读取装置,参见图3、图4所示,下面分别进行说明:
数据存储装置可以包括:数据接收模块310、信息获取模块320、摘要生成模块330、数据加密模块340、数据存储模块350。
数据接收模块310,用于接收待存储的数据,对所述待存储的数据进行预处理,所述预处理至少包括对所述待存储的数据进行对齐操作;
信息获取模块320,用于从当前数据存储场景中获取至少一方面的特征信息;
摘要生成模块330,用于按照预设的规则,将所获取的特征信息生成固定长度的第一摘要;
数据加密模块340,用于以所述固定长度的第一摘要作为加密密钥,按照预设的加密算法对所述待存储的数据进行加密;
数据存储模块350,用于将所述经过加密的待存储的数据存储到文件系统的存储文件中。
根据本说明书提供的一种具体实施方式,
所述特征信息为终端设备信息和/或文件系统信息。
根据本说明书提供的一种具体实施方式,所述数据加密模块340具体用于:
以所述固定长度的第一摘要作为加密密钥,按照预设的组合规则将所述加密密钥与所述待存储的数据进行组合;
利用所述加密密钥,按照预设的加密算法对由所述加密密钥与所述待存储的数据组成的组合进行加密;
所述数据存储模块350具体用于:
将所述经过加密的由所述加密密钥与所述待存储的数据组成的组合存储到文件系统的存储文件中。
根据本说明书提供的一种具体实施方式,、
所述预设的加密算法为AES加密算法。
数据读取装置,可以包括:信息获取模块410、摘要生成模块420、数据解密模块430、数据读取模块440。
信息获取模块410,用于在接收到数据读取请求的情况下,从当前数据读取场景中,获取与数据加密时所获取的特征信息相对应的特征信息;
摘要生成模块420,用于按照所述预设的规则,将所获取的特征信息生成固定长度的第二摘要;
数据解密模块430,用于以所述固定长度的第二摘要作为解密密钥,按照预设的解密算法对所述数据读取请求对应的存储文件中的数据进行解密;
数据读取模块440,用于若对所述数据读取请求对应的存储文件中的数据解密成功,则读取所述数据读取请求对应的存储文件中的数据。
根据本说明书提供的一种具体实施方式,所述装置还包括:提示模块450;
提示模块450,用于若对所述数据读取请求对应的存储文件中的数据解密失败,则提示用户读取失败。
根据本说明书提供的一种具体实施方式,
所述预设的解密算法为AES解密算法。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
通过上述对本说明实施例所提供的技术方案的描述,通过获取当前数据存储场景中至少一方面的特征信息,按照预设的规则,将所获取的特征信息生成固定长度的摘要,以固定长度的摘要作为加密密钥,按照预设的加密算法对待存储的数据进行加密,将经过加密的待存储的数据存储到文件系统的存储文件中。如此一来,可以保证密钥的专一性,即便攻击者获取到任意一台终端设备上的密钥,也无法解密其它终端设备上的数据,提高了终端设备本地存储的数据的加密强度,有效降低了数据的泄露风险。
同理,在数据读取的过程中,通过获取当前数据存储场景中至少一方面的特征信息,按照预设的规则,将所获取的特征信息生成固定长度的摘要,以固定长度的摘要作为解密密钥,按照预设的解密算法对数据读取请求对应的存储文件中的数据进行解密,若对数据读取请求对应的存储文件中的数据解密成功,则读取数据请求对应的存储文件中的数据,这样即便攻击者将存储文件拷贝到其它终端设备上,也无法读取存储文件中的数据,同样的降低了数据的泄露风险。
本说明书实施例还提供一种计算机设备,如图5所示,该设备可以包括:处理器510、存储器520、输入/输出接口530、通信接口540和总线550。其中处理器510、存储器520、输入/输出接口530和通信接口540通过总线550实现彼此之间在设备内部的通信连接。
处理器510可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器520可以采用ROM(Read Only Memory,只读存储器)、RAM(RandomAccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器520可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器520中,并由处理器510来调用执行。
输入/输出接口530用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口540用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线550包括一通路,在设备的各个组件(例如处理器510、存储器520、输入/输出接口530和通信接口540)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器510、存储器520、输入/输出接口530、通信接口540以及总线550,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的数据存储方法。该方法至少包括:
一种数据存储方法,该方法包括:
接收待存储的数据,对所述待存储的数据进行预处理,所述预处理至少包括对所述待存储的数据进行对齐操作;
从当前数据存储场景中获取至少一方面的特征信息;
按照预设的规则,将所获取的特征信息生成固定长度的第一摘要;
以所述固定长度的第一摘要作为加密密钥,按照预设的加密算法对所述待存储的数据进行加密;
将所述经过加密的待存储的数据存储到文件系统的存储文件中。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的数据读取方法。该方法至少包括:
一种数据读取方法,该方法包括:
在接收到数据读取请求的情况下,从当前数据读取场景中,获取与数据加密时所获取的特征信息相对应的特征信息;
按照所述预设的规则,将所获取的特征信息生成固定长度的第二摘要;
以所述固定长度的第二摘要作为解密密钥,按照预设的解密算法对所述数据读取请求对应的存储文件中的数据进行解密;
若对所述数据读取请求对应的存储文件中的数据解密成功,则读取所述数据读取请求对应的存储文件中的数据。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。