CN105468543A - 一种保护敏感信息的方法及装置 - Google Patents
一种保护敏感信息的方法及装置 Download PDFInfo
- Publication number
- CN105468543A CN105468543A CN201410461447.9A CN201410461447A CN105468543A CN 105468543 A CN105468543 A CN 105468543A CN 201410461447 A CN201410461447 A CN 201410461447A CN 105468543 A CN105468543 A CN 105468543A
- Authority
- CN
- China
- Prior art keywords
- memory block
- file
- blocks
- files
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种保护敏感信息的方法及装置,该方法包括:申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。通过本发明可以增加攻击者获取原始文件内容的复杂度。换句话说,即便攻击者能够在转储的内存数据中定位到敏感信息的开始位置,也不能轻易地获取到完整的原始文件内容。
Description
技术领域
本发明涉及移动互联网领域,特别是涉及一种保护敏感信息的方法及装置。
背景技术
随着移动宽带技术和终端硬件平台技术的不断发展,移动终端上可用的计算资源足以满足各种办公场景的需求,并且廉价和随处可用的无线网络,也可以帮助人们利用移动终端随时随地地访问本来需要通过固定网络才能够获取的各种数据和文件。随着移动终端操作系统技术的发展,各种原来只有在桌面办公系统中才能够使用的应用软件,都已经以适合移动终端用户操作的方式,在各种移动操作系统环境中被开发出来。这些基础设置的普及,推动着移动终端在企业办公环境中的使用越来越普遍。
当企业员工使用自有的和企业配发的移动终端执行各种办公操作时,很重要的一点就是考虑在这种操作过程中,使用的各种数据的安全性以及网络的安全性等。不过,完全限定用户只在专用手机上安装指定应用来完成移动办公的需求,显然背离了用户原本可以通过移动终端办公所能够达到的高效、舒适和便捷的体验目标。因此,即便有诸多的安全考虑,但是企业应用软件的实际运行环境,还是混合了企业专有应用和用户自有应用的复杂系统环境。这是各种BYOD(BringYourOwnDevice,自带设备)实现技术的主要需求驱动来源。
当前普遍使用的BYOD实现技术中,有些是基于专门的API(ApplicationProgrammingInterface,应用程序编程接口)来开发企业安全应用,有些是针对既有的第三方应用,采用直接修改软件安装包或者是将原有软件安装包作为一个新的软件安装包的载荷的方式,为这些本来没有企业安全策略功能的应用软件添加VPN(VirtualPrivateNetwork,虚拟专用网络)登录、数据隔离、信息管控等安全功能。不管是采用哪一种BYOD实现技术,在对敏感信息的保护方面,都需要使用加密技术。比如,当需要对原始的应用安装包进行保护时,需要将该软件安装包以加密的形式来存储;当需要对用户操作的文件数据进行保护时,同样也可以用加密的形式来保存文件。
既然有加密,自然就需要有解密操作,否则直接使用这些已经被加过密的数据,只能导致软件原有的功能失效。这种解密操作只能在软件的运行时进行,否则就失去了对敏感信息保护的意义。这时,就不得不考虑这种解密操作所处的运行环境。在BYOD场景中,即便是已经被做过安全加固的企业应用软件,也是在充满安全风险的用户终端环境中运行,可能遭遇到各种已知和未知的安全攻击。一般将这种无法掌控的安全环境称之为白盒运行环境,与之相对的黑盒运行环境中,软件内部的运行细节,比如进程空间等,对于用户来说,都是不可访问的,但是在这种白盒环境中,此种假设将不能成立。
为了保证企业应用软件功能的正常执行,必须将已经加密处理过的文件重新解密后才能够加以使用。但是考虑到BYOD业务场景中,企业应用运行在白盒环境中,因此解密后的文件不能以明码的方式直接保存到外部文件系统中,否则需要保护的敏感信息将遭遇到泄漏的危险。一种简单的解决这种矛盾的处理方式是:以内存文件来保护这些已经被解密的信息。但是当攻击者使用内存转储的方式来分析用户进程的全部地址空间时,这些已经被解密处理的内存文件还是可能被轻易地定位,攻击者可以据此获得所需要的敏感信息的原始内容。
发明内容
本发明要解决的技术问题是提供一种保护敏感信息的方法及装置,以增加攻击者获取原始文件内容的复杂度。
为了解决上述技术问题,本发明提供了一种保护敏感信息的方法,包括:
申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;
将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。
进一步地,上述方法还具有下面特点:所述申请多个长度随机确定的内存块,包括:
将申请的用于保存文件特性信息的内存块的随机长度设定为小于所述文件特征信息的长度。
进一步地,上述方法还具有下面特点:所述申请多个长度随机确定的内存块后,还包括:
将所述多个内存块以随机的顺序重新编排,然后再保存所述文件块。
进一步地,上述方法还具有下面特点:
所述内存块的引用信息包括:指向内存块的地址指针、内存块长度和内存块所保存的文件块在所述文件中的位置信息;
所述数据结构中的节点还保存有指向上节点和/或下节点的地址指针。
进一步地,上述方法还具有下面特点:
所述方法还包括:对所述数据结构节点中保存的一项或多项信息进行转换处理,不同项采用的转换方式相同或不同。
进一步地,上述方法还具有下面特点:
还包括:在将所述数据结构提供给其他程序模块使用时,先进行安全处理。
进一步地,上述方法还具有下面特点:
将所述文件划分为相应大小的多个文件块之前,或者将划分的多个文件块分别保存在所述多个内存块之前,还包括:将所述文件的数据或文件块的数据处理为不可直接使用的内容。
为了解决上述问题,本发明还提供了一种保护敏感信息的装置,其中,包括:
申请模块,用于申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;
保存模块,用于将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。
进一步地,上述装置还具有下面特点:
所述申请模块,还用于将申请的用于保存文件特征信息的内存块的随机长度设定为小于所述文件特征信息的长度。
进一步地,上述装置还具有下面特点:还包括,
编排模块,用于对所述申请模块申请的多个内存块以随机的顺序重新编排,然后触发所述保存模块保存所述文件块。
进一步地,上述装置还具有下面特点:还包括:
所述申请模块,申请的内存块的引用信息包括:指向内存块的地址指针、内存块长度和内存块所保存的文件块在所述文件中的位置信息;
所述数据结构中的节点还保存有指向上节点和/或下节点的地址指针。
进一步地,上述装置还具有下面特点:还包括:
处理模块,用于对所述数据结构节点中保存的一项或多项信息进行转换处理,不同项采用的转换方式相同或不同。
进一步地,上述装置还具有下面特点:还包括:
处理模块,用于在将所述数据结构提供给其他程序模块使用时,先进行安全处理。
进一步地,上述装置还具有下面特点:还包括:
处理模块,用于在所述保存模块将所述文件划分为相应大小的多个文件块之前,或者将划分的多个文件块分别保存在所述多个内存块之前,将所述文件的数据或文件块的数据处理为不可直接使用的内容。
综上,本发明提供一种保护敏感信息的方法及装置,可以增加攻击者获取原始文件内容的复杂度。换句话说,即便攻击者能够在转储的内存数据中定位到敏感信息的开始位置,也不能轻易地获取到完整的原始文件内容。
附图说明
图1是现有技术的32位Android(安卓)操作系统下一般用户进程的地址空间的布局图。
图2是现有技术的连续申请的内存区域的示意图。
图3为本发明实施例的一种保护敏感信息的流程图。
图4为本发明实施例的使用链表方式组织碎片化的内存块的示意图。
图5为本发明实施例的使用二叉树方式组织碎片化的内存块的示意图。
图6为本发明实施例的对数据结构中的对象节点中的关键信息进行转换处理的示意图。
图7为本发明实施例的一种保护敏感信息的装置的示意图。
具体实施方式
图1描述的是32位Android(安卓)操作系统下一般用户进程的地址空间的布局图,在其他的终端操作系统下,包括在PC端的Linux操作系统等的用户进程空间的内存布局也是类似的。
如图1所示,这里所说的地址空间是指的用户进程的虚拟地址空间,因此地址布局是一个连续平坦空间;如果是映射为物理内存的话,那么这些地址可能是不连续的。这一点对于白盒运行环境中的企业应用来说,并没有增加安全保障。换句话说,尽管用户进程申请的存储区域在整个运行时环境中和其他进程所申请的存储区域在物理上是交错的,但是从单一用户进程的角度来看,其地址空间还是连续的。在这个连续的地址空间中,可以明确地定位到用户进程执行镜像的代码段、数据段、内存分配堆、栈空间以及映射到用户进程中的共享库所占用的地址空间,等等。在一个确定的终端操作系统环境中,这些参数的边界,很多都是预设的,比如在32位的Android运行环境中,用户进程代码段是从0x2a000000虚拟地址(较高版本Linux内核可能支持了内存地址随机化功能,在此开始地址基础上增加了随机偏移量,但是这对于白盒环境中的攻击者来说,也是已知的参数)开始的,而紧接的部分是静态分配的数据段,再接着是内存堆所占用的空间。而用户进程在运行时动态申请的内存,都是在堆空间中分配的。因此,对于白盒运行环境中的攻击者而言,只要能够得到内存转储的机会,就可以根据已知的目标文件的特征信息,在堆空间中搜索定位文件的存储位置。
图2描述的是假如利用一个连续申请的内存区域来保存已经解密后的文件内容,将可能面临的安全风险。从图2中可以清楚地看到,只要攻击者可以明确地知道文件头的特性信息,而这一点是很容易得到的,比如Android运行环境中,dex文件中包含这一个用户应用中全部Java代码编译后生成的字节码。这种文件的特征是前8个字节为ASCII字符‘dex\n’或者‘dey\n’加上版本号,而版本号实际上只有两种,‘036’和‘035’,即使考虑到运行环境中字节序的不同,所需要搜索的目标特征字节数组也只有8种。对于其他可能的攻击者感兴趣的敏感信息文件来说,这种明确的特征也是可能存在的。尤其是这些有着固定格式的文件在其头部的元数据中通常都带有诸如文件头长度、文件长度等信息。因此,只要能够根据文件的特征信息定位到文件数据存放的开始虚拟地址,就可以从导出的用户进程空间数据中方便地得到敏感数据的原始内容。
本发明实施例的目的是设计一种可以抵抗上面提到的内存转储的攻击手段,以使得经过安全加固后的企业应用在运行时,不因为将敏感信息解密后使用,导致其被攻击者轻易地获取,进而增加企业应用的安全性。
分析攻击者能够通过内存转储的方式分析并获取原始敏感信息的原因,主要是因为攻击者可以根据原始文件的特征信息,比如标准的文件头等,在内存映像中搜索并定位到原始文件的开始位置,并根据文件头获取文件的元数据(可能包括文件长度等参数)。此时,如果文件数据在内存中以连续地址的方式来保存,那么攻击者只要以对应的文件头位置加上文件长度参数,就可以截取出文件内容。即便不知道文件长度参数,也可以通过逐步尝试的方式,获取精确的文件原始内容。假如攻击者不能得到文件头的特征信息,而是根据文件其他位置的特征来定位内存中的敏感信息的话,由于文件数据是连续存放的,因此,也可以根据已经解密后的文件内容的相关性,来得到部分或者全部的原始文件内容。
总而言之,只要解密后的文件内容以连续的方式保存在内存中,那么就不能阻止攻击者在白盒运行环境中以内存转储的方式,在运行时分析并得到原本是加密处理过的敏感信息。
图3为本发明实施例的一种保护敏感信息的流程图,如图3所示,本实施例的方法包括:
S11、申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;
S12、将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。
本发明实施例提出的方案,是将原本需要连续存放的文件内容,以碎片化的方式保存在内存中。这样既可以避免将文件内容写入到文件系统中所造成的信息泄漏,又可以在很大程度上抵抗攻击者所能够使用的内存转储的分析手段。
其中,已经解密的文件内容以碎片化的内存块保存,每个内存块采用动态分配的方式获取,且申请时使用随机的内存块长度。为了使得攻击者难以根据文件头特征定位到敏感信息,一般可以将包含敏感信息特征数据的内存块的随机长度尽量设定为小于文件头特征长度。尽管是随机值,但是其取值范围在编程实现时通常是可以指定的。
其中,在使用这种碎片化的处理方式时,创建非连续的数据结构,利用所述数据结构中的多个节点分别保存所述多个内存块的引用信息,例如采用链表或二叉树等树型数据结构保存对所述内存块的引用信息。这些已经申请到的内存块,应该避免使用指针数组或者对象数组等连续的数据结构来保存,而是以链表、二叉树等数据结构形式组织起来,由这些数据结构中的节点对象里的指针指向每块数据的开始地址。
所述内存块的引用信息可以包括:指向内存块的地址指针、内存块长度和内存块所保存的文件块在所述文件中的位置信息;
所述数据结构中的节点还保存有指向上节点和/或下节点的地址指针。
在这些数据结构的节点对象中,至少还需要保存每个内存块的长度和该内存块在整个文件中的位置信息,以方便程序对文件数据的连续访问和随机访问。
可以通过对这些数据结构中的节点对象里所保存的关键信息,比如地址指针、数据块长度、数据块位置信息等进行转换处理,来阻止攻击者使用逆向技术分析出所用的数据结构以及文件的完整内容。
对所述数据结构节点中保存的一项或多项信息进行转换处理,不同项采用的转换方式可以相同或不同。
经过安全处理的文件数据结构需要经过包装后才能够提供给其他程序模块使用,尽量减少应用安全加固技术所带来的外部模块的实现复杂度的增加;
这里的安全处理可以是可逆的以及运算结果取值范围在数据结构中字段所能够装载的各种线性或者非线性运算,例如,移位、映射表、异或等等。
当然,更进一步地,可以对内存块中的数据进行进一步处理,并不记录原始信息,而是在读出数据时才计算并恢复出文件数据块的原始内容,而当外部模块将数据写入数据块时,将其处理为不可直接使用的内容。
采用本实施例描述的实现方案可以保证当企业应用运行在白盒形式的不安全的移动终端环境中,并且攻击者使用了内存转储等攻击技术后,还是可以保证已经解密处理的文件内容不被轻易地获取,进而增加企业应用运行时的安全性。
下面结合附图对技术方案的实施作进一步的详细描述。
图3说明的是使用链表方式组织碎片化的文件块的实现样例:
首先,用于存储实际文件内容的内存是按照小于文件长度的块的方式来动态申请的。不过,在申请时的内存块长度是随机选定的,只要该值是远小于文件的实际长度就可以。当然,如果这个值过小的话,可能造成在读取文件和写入文件时,需要处理的文件块的数量过多,造成处理效率的下降。而如果这个值过大的话,文件块的数量就会变少,自然攻击者利用文件特征获取文件原始内容的难度就会变小。当文件块数量过少时,即便攻击者不能一次性获取文件的全部内容,也可能只通过几个文件块甚至是一个文件块,就获取所需要的敏感信息,这当然是实现安全加固功能时所希望避免出现情况。因此,确定动态申请块长度时的随机值的可选范围以及每次的实际取值,是需要在实际终端处理能力、应用性能需求以及安全加固目标之间进行权衡的。
一般来说,操作系统和应用框架所提供的内存分配算法的具体实现方法,会根据不同长度的内存分配请求,在不同的预申请内存页面中来完成分配。换句话说,使用随机的内存长度,一方面可以防止攻击者根据内存块的长度来确定文件块的位置,另一方面,也可以使得分配到的内存块在用户进程空间中的位置是不连续的,这实际上是使用碎片化的内存来保存文件内容所希望实现的主要目标。当然,为了尽量提高系统的安全性,也可以将预先申请的不同长度的内存块以随机的顺序重新编排后使用,以保证最终用于保存文件实际内容的内存块在用户进程空间中尽量地离散化。
为了能够使得应用在运行时正常访问到这些已经分配到的内存块,同时也为了保持这些文件块之间的固有的顺序关系,需要将这些文件块的地址信息和位置信息以一定的形式组织起来。实际上,这种组织方式可以是多种多样的,只要能够保证应用模块可以高效地完成连续和随机的对文件内容的读写操作,那么,该种组织方式都是可以接受的。但是,采用指针数组或对象数组这种连续数组方式来组织文件块是不可以的。原因在于,即便是对数组中的每个数据单元进行了安全处理,攻击者还是可以利用这些数据单元之间的线性关系,分析和它们相关的内存块的位置,并进而从已经转储出来的地址空间中找到目标文件块。只有当采用链表、二叉树等不连续的数据结构来保存对数据块的引用信息时,才能够保证这种碎片化的文件访问机制所带来的安全性得以真正实现。
图3是一种简单的利用双向链表实现的保存文件块引用的实现样例。在此样例中,链表中的每一个数据节点是一个自定义的结构。在此结构体中所需要保存的信息元素包括:当前节点指向的内存块的地址、该内存块的长度以及该内存块在文件中的位置。当然,为了实现双向链表数据结构,还需要在该结构中定义指向下一链表节点的地址指针和指向前一链表节点的地址指针。由于链表节点对象和内存块对象都是采用动态申请方式获取的,因此从实际用户进程运行时地址空间的角度观察,它们将以不连续的方式存放,这样就可以增大攻击者访问每一个内存块的难度。
利用双向链表来保存针对文件块引用信息可以很方便地支持对文件的顺序访问请求。这一点是很明显的,因为在链表的每一个节点中,都有指向下一个节点的地址指针。只要顺着这些指针的顺序,逐个访问每个链表节点,就可以得到全部的文件块地址指针,再根据这些文件块长度,就可以对文件内容进行读写。不过,如果应用希望完成对文件的随机读写,就需要从链表头开始逐个访问链表节点,根据该节点指向的文件块在整个文件中所处的位置,确定要对哪个或者哪些文件块进行读写操作。尽管可以利用双向链表的特点,在程序访问到链表中间某个节点时,通过反向指针直接访问当前节点的前序节点来加快定位处理的过程,但是,每次应用的随机访问请求到达时,文件当前位置指针的位置是未知的,因此,只采用双向链表结构来保存文件块引用信息,在性能要求特别高的场合,可能是不合适的。
为此,在图4中,还给出了一种利用简单的二叉树的形式来保存文件块应用的实现样例。当然,可以选择的树形存储结构远不止二叉树一种,因此这里给出的说明可以看作是在此种功能场景中使用树形存储结构的笼统的概括。因为,即便是采用其他的树形数据结构来保存这些针对文件块的引用,和只使用简单二叉树相比,可能的不同主要在于插入节点时的算法需要根据具体的数据结构加以调整,以及在搜索和遍历节点时的算法的调整,不过,主要的思想并没有改变,那就是利用在用户进程空间中离散的节点来保存对碎片化文件块的引用信息,并且为应用提供尽量高效的访问手段。需要注意的是,当对内存的使用效率要求不高时,外部应用的访问接口中,可以无需实现对节点或者说是内存块的删除,而只需要在必要时,增加内存块或者插入节点就可以了。
从图4中可以看到,每个二叉树的节点对象中,和在双向链表实现样例中类似,也保存了指向每个内存块的地址指针,以及内存块的长度和在文件中的位置信息。不过,由于二叉树的结构特点,在每个节点对象中还设置了指向左子节点的地址指针和指向右子节点的地址指针。这里可以简单地设计为树中的每个节点都能够保存数据,也就是对应内存块的引用信息。在这种组织方式中,可以将每个内存块在文件中的位置,作为节点的键值,这样就自然保证了二叉树结构所需要的节点顺序关系。当然,也可以采用其他的键值,比如文件块的编号等等。可以将节点之间的关系设计为,所有左子树中节点所指向的文件块在文件中的位置都比当前节点所指向的要靠前,而所有右子树中节点所指向的文件块位置都比当前指向的要靠后。这样,当采用中序方式对树形结构进行遍历时,就可以通过每个节点中指向的文件块信息,完成对文件的顺序访问。而当应用需要实现对文件的随机访问时,也可以利用树形结构中节点之间有序组织的优点,减少搜索文件块时所需要访问的节点数量。
本实施例的方案中,将文件内容保存到碎片化的内存块中,并且将指向这些内存块的引用信息单元以链表、二叉树等形式组织为离散化的节点,但这些节点中保存有指向其他节点的地址信息,尤其是保存有指向每个文件块的地址信息,还有每个文件块的长度以及在文件中的位置信息等。只要攻击者找到其中一个节点对象,并且了解了节点对象中的数据组织形式,那么还是有可能逐个地找到其他节点以及保存有文件内容的文件块。比如当攻击者根据文件头的特征定位到第一个文件块时,自然也可以得到该文件块在用户进程空间中对应的地址,而根据该地址又可以再找到对应的引用节点,那么只要攻击者对每个引用节点的组织方式有所了解的话,就可以实现将已经离散化保存的文件块再重新找到的任务。
因此,为了确保敏感信息的安全性,还可以对指向那些内存单元的引用节点的内容进行安全处理。图5中就给出了一个实现样例图。这是针对前面提到的用双向链表来组织对碎片化内存块引用节点进行组织时的加固处理实现示意。在这个实现样例中,每一个指向其他位置的地址指针都需要进行变换处理,这包括了链表节点中每一个指向后一个节点的指针以及指向前一个节点的指针,以及指向内存块的指针。这样,当直接在内存转储数据中搜索每个已知的地址信息时,是不可能准确找到对应的指针的。具体的转换算法是可以多种多样的,包括采用简单的对照表转换,或者是利用加密方法或者某种非线性公式对地址信息进行变换,越是不为人知的转换方法,所取得的安全加固的效果可能越好。
当然,每个节点中的空指针可以考虑不进行转换,尽管这样可能为攻击者定位节点对象提供方便,但是假如每个空指针的转换结果为相同时,那么还是可能为攻击者的分析提供了很好的线索,并且可能同时将其他地址的转换的方法也暴露了出来。当然,这是和具体使用的转换方法有关的。在采用某一种转换方法时,选择对空指针进行转换得到的最终安全性更高时,自然会选择进行转换而不是加以忽略的方法。只要能够切断内存块和与之对应的引用节点之间的显式的关联,那么要根据其中一方找到另一方就变得不那么容易了。
与地址参数的转换类似,对引用节点中的内存块长度,以及内存块在文件中的位置信息进行转换处理,也可以增加具体实现的安全性。和地址转换相同的是,这里采用的转换方法,还是可以在不同的程序实现中根据实际需要加以选择。
另外,在图中,还显示了对下一节点地址指针和前一节点地址指针的不同处理。假如采用相同的转换方式,那么在内存中将出现某些有很强相关性的地址片段,而分析程序将可以发现这种明显的特征,并进而定位到这些地址。这样敏感信息将遭遇到暴露的危险。
由于采用了针对地址参数和内存块长度、位置等信息的转换处理,在实现对链表或者二叉树等结构的遍历和定位处理时,还需要首先对这些参数进行逆向处理,得到原始参数,这样才能够获取到指针指向的内存地址以及内存块的长度和对应的文件位置。
由于采用了上面描述的这些对文件存储的处理方式,使得实际的应用程序在读写文件内容时,不再能够只通过标准的库函数进行,而必须使用经过包装的定制接口。不论采用哪种形式的引用节点组织方式,比如链表和二叉树等,只要保持定制接口不变,应用程序在访问碎片化的文件内容时,是感受不到这种变化的。对于应用程序来说,除了必须使用指定的读写访问接口之外,甚至无需了解这些文件内容是已经以碎片化的形式来保存,还是像通常那样以一个连续的内存块来存放。
一种接口的定义样例为:
1、应用打开一个含有敏感信息的文件时,以指定的文件长度要求创建一个碎片化的存储区域:输入参数为文件长度,或者没有输入,这表明以缺省或者0长度来创建这样的文件。而返回对象为指向该存储区域的头节点的指针。
对于应用来说,还是使用标准的打开文件操作,但是在内部的库实现中,可能已经引用了这里所说的函数接口。内部库实现可能会先去解密文件,然后以解密后的文件长度作为参数来调用创建碎片化区域的函数。
2、应用以指定的长度扩展一个已经创建的碎片化存储区域:输入参数为指向已经创建的存储区域的头节点的指针和需要扩展的文件长度。返回对象为指向该存储区域的头节点的指针。
3、当关闭一个加密文件时,应用释放一个碎片化的存储区域:输入参数为已经创建的存储区域的头节点指针,返回参数为执行成功与否的标志。
4、应用请求读碎片化存储区域中的一个指定部分或者是全部内容:输入参数自然首先是已经创建的存储区域的头节点指针,以及需要开始读取的偏移量和所需读取的数据长度以及输出缓冲区等,而输出参数为实际读取的字节数。
5、应用请求写碎片化存储区域中的一个指定部分:和读请求有着类似的输入和输出参数,包括存储区域的指针以及开始写操作针对的文件位置的偏移量和所需写的数据长度和所需写入的数据所在缓冲区。而接口返回为实际完成写入的数据的字节数。对于读请求和写请求还可以再定义一些专用接口,包括专门读一个字符和专门写一个字符等,以方便应用的使用。
6、有时,外部应用需要获取文件中某个指定位置的地址,这时就需要设计专用的接口,以返回该指针。只是外部应用在得到该指针后,不能以连续的方式来访问内存。
如果在提供了上述接口包装函数后,应用还不能够方便地开发,或者说应用只能以标准的文件库接口形式来执行对内存文件的读写,那么就需要在上述接口基础上再进行一层包装,以标准的文件对象形式对外提供访问接口,而在文件对象内部处理时,再使用上述定制的接口。这样对于应用开发来说,几乎不再有额外的适配负担了。
由于提供了专门的接口用以访问碎片化的文件存储区域,因此这种接口实际上已经隔离了应用中所访问的原始数据和保存到内存中的数据。换句话说,即使在已经碎片化的内存块中,也未必一定要保存文件的原始内容。在前面已经提到过,如果以原始形式来保存文件内容的话,即使是在碎片化之后,攻击者还是可以直接搜索并定位到第一个文件块,除非第一个文件块足够小,不足以容纳攻击者所需要匹配的特征字节的长度。只不过,前面描述的方案已经给出了很多设计,来保证即使攻击者得到了一个小的文件片段,但是还不足以继续获取其他的敏感信息。但是,只要在这个专门的接口上做进一步的处理,那么甚至可以阻止攻击者获取到带有特性信息的文件块。这一步的处理是可选,只不过增加这样的处理后的确可以强化所能获得的安全性。
这种在专门接口上的安全转换处理可以理解为对已经碎片化保存的文件内容的再次加密和解密。不过,在通常的对称和非对称加密处理中,需要将固定长度的内存块作为加解密处理模块的输入,比如8个字节、16个字节甚至128个字节等。这样,对于应用模块来说,对文件的随机读写的灵活度将大打折扣,或者使得专门接口上的安全转换处理过程变得复杂而低效。因此,此时选择基于单字节的转换方法,尽管其安全性较低,但是对于文件读写的效率来说,将是比较合适的。而碎片化的处理过程,已经为整体的安全性提供了必要的保证,使得这种可选的进一步处理过程不需要过高的复杂度就能满足需求。
图7为本发明实施例的一种保护敏感信息的装置的示意图,如图所示,本实施例的装置包括:
申请模块,用于申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;
保存模块,用于将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。
其中,所述申请模块,还用于将申请的用于保存文件特征信息的内存块的随机长度设定为小于所述文件特征信息的长度。
在一优选实施例中,所述装置还可以包括:
编排模块,用于对所述申请模块申请的多个内存块以随机的顺序重新编排,然后触发所述保存模块保存所述文件块。
所述内存块的引用信息包括:指向内存块的地址指针、内存块长度和内存块所保存的文件块在所述文件中的位置信息;
所述数据结构中的节点还保存有指向上节点和/或下节点的地址指针。
在一优选实施例中,所述装置还可以包括:
处理模块,用于对所述数据结构节点中保存的一项或多项信息进行转换处理,不同项采用的转换方式相同或不同。
在一优选实施例中,所述装置还可以包括:
处理模块,用于在将所述数据结构提供给其他程序模块使用时,先进行安全处理。
在一优选实施例中,所述装置还可以包括:
处理模块,用于在所述保存模块将所述文件划分为相应大小的多个文件块之前,或者将划分的多个文件块分别保存在所述多个内存块之前,将所述文件的数据或文件块的数据处理为不可直接使用的内容。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和扩充,比如选择不同于上面所说的链表和二叉树的内存块引用信息的组织方式,以及选择不同的节点信息转换处理等等。但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (14)
1.一种保护敏感信息的方法,包括:
申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;
将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。
2.如权利要求1所述的方法,其特征在于:所述申请多个长度随机确定的内存块,包括:
将申请的用于保存文件特性信息的内存块的随机长度设定为小于所述文件特征信息的长度。
3.如权利要求1所述的方法,其特征在于:所述申请多个长度随机确定的内存块后,还包括:
将所述多个内存块以随机的顺序重新编排,然后再保存所述文件块。
4.如权利要求1所述的方法,其特征在于:
所述内存块的引用信息包括:指向内存块的地址指针、内存块长度和内存块所保存的文件块在所述文件中的位置信息;
所述数据结构中的节点还保存有指向上节点和/或下节点的地址指针。
5.如权利要求1所述的方法,其特征在于:
所述方法还包括:对所述数据结构节点中保存的一项或多项信息进行转换处理,不同项采用的转换方式相同或不同。
6.如权利要求1所述的方法,其特征在于:
还包括:在将所述数据结构提供给其他程序模块使用时,先进行安全处理。
7.如权利要求1-6任一项所述的方法,其特征在于:
将所述文件划分为相应大小的多个文件块之前,或者将划分的多个文件块分别保存在所述多个内存块之前,还包括:将所述文件的数据或文件块的数据处理为不可直接使用的内容。
8.一种保护敏感信息的装置,其特征在于,包括:
申请模块,用于申请多个长度随机确定的内存块,每一内存块均采用动态分配的方式获取,并以不连续的数据结构来关联所述内存块,利用所述数据结构中的多个节点分别保存所述内存块的引用信息;
保存模块,用于将已解密的包含敏感信息的文件划分为相应大小的多个文件块,分别保存在所述多个内存块中。
9.如权利要求8所述的装置,其特征在于:
所述申请模块,还用于将申请的用于保存文件特征信息的内存块的随机长度设定为小于所述文件特征信息的长度。
10.如权利要求8所述的装置,其特征在于:还包括,
编排模块,用于对所述申请模块申请的多个内存块以随机的顺序重新编排,然后触发所述保存模块保存所述文件块。
11.如权利要求8所述的装置,其特征在于:还包括:
所述申请模块,申请的内存块的引用信息包括:指向内存块的地址指针、内存块长度和内存块所保存的文件块在所述文件中的位置信息;
所述数据结构中的节点还保存有指向上节点和/或下节点的地址指针。
12.如权利要求8所述的装置,其特征在于:还包括,
处理模块,用于对所述数据结构节点中保存的一项或多项信息进行转换处理,不同项采用的转换方式相同或不同。
13.如权利要求8所述的装置,其特征在于:还包括,
处理模块,用于在将所述数据结构提供给其他程序模块使用时,先进行安全处理。
14.如权利要求8-13任一项所述的装置,其特征在于:还包括:
处理模块,用于在所述保存模块将所述文件划分为相应大小的多个文件块之前,或者将划分的多个文件块分别保存在所述多个内存块之前,将所述文件的数据或文件块的数据处理为不可直接使用的内容。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410461447.9A CN105468543B (zh) | 2014-09-11 | 2014-09-11 | 一种保护敏感信息的方法及装置 |
PCT/CN2015/078038 WO2016037488A1 (zh) | 2014-09-11 | 2015-04-30 | 一种保护敏感信息的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410461447.9A CN105468543B (zh) | 2014-09-11 | 2014-09-11 | 一种保护敏感信息的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468543A true CN105468543A (zh) | 2016-04-06 |
CN105468543B CN105468543B (zh) | 2020-06-16 |
Family
ID=55458323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410461447.9A Active CN105468543B (zh) | 2014-09-11 | 2014-09-11 | 一种保护敏感信息的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105468543B (zh) |
WO (1) | WO2016037488A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106168883A (zh) * | 2016-05-05 | 2016-11-30 | 诸葛晴凤 | 一种高效的数据组织与访问方法 |
CN106815301A (zh) * | 2016-12-12 | 2017-06-09 | 北京奇虎科技有限公司 | 一种dex文件的存储方法和装置 |
CN106934280A (zh) * | 2017-03-08 | 2017-07-07 | 网易(杭州)网络有限公司 | 内存数据处理方法、装置及网络游戏客户端 |
CN108900474A (zh) * | 2018-06-05 | 2018-11-27 | 苏州科达科技股份有限公司 | 敏感信息的传输方法,装置及电子设备 |
CN109920044A (zh) * | 2019-02-27 | 2019-06-21 | 浙江科澜信息技术有限公司 | 一种三维场景构建方法、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388496A (zh) * | 2018-01-23 | 2018-08-10 | 晶晨半导体(上海)股份有限公司 | 一种系统日志的收集方法 |
CN112580092B (zh) * | 2020-12-07 | 2023-03-24 | 北京明朝万达科技股份有限公司 | 一种敏感文件识别方法及装置 |
CN115859384B (zh) * | 2022-10-12 | 2023-11-10 | 北京连山科技股份有限公司 | 一种网络安全设备内存敏感数据残余信息的安全保护方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110044A (zh) * | 2007-08-28 | 2008-01-23 | 中兴通讯股份有限公司 | 一种内存监控管理的方法及系统 |
CN100378666C (zh) * | 2002-06-04 | 2008-04-02 | 佐治亚技术研究公司 | 用于防止泄露的程序分区的系统和方法 |
US7437530B1 (en) * | 2003-04-24 | 2008-10-14 | Network Appliance, Inc. | System and method for mapping file block numbers to logical block addresses |
US20120324168A1 (en) * | 2010-03-10 | 2012-12-20 | Giesecke & Devrient Gmbh | Protection against access violation during the execution of an operating sequence in a portable data carrier |
CN103118135A (zh) * | 2013-02-28 | 2013-05-22 | 中国地质大学(武汉) | 云计算中用户数据隐私的保护方法及系统 |
US9158468B2 (en) * | 2013-01-02 | 2015-10-13 | International Business Machines Corporation | High read block clustering at deduplication layer |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479656A (en) * | 1992-05-13 | 1995-12-26 | Rawlings, Iii; Joseph H. | Method and system for maximizing data files stored in a random access memory of a computer file system and optimization therefor |
US9344278B2 (en) * | 2011-10-18 | 2016-05-17 | Broadcom Corporation | Secure data transfer using random ordering and random block sizing |
CN103607393A (zh) * | 2013-11-21 | 2014-02-26 | 浪潮电子信息产业股份有限公司 | 一种基于数据分割的数据安全保护方法 |
-
2014
- 2014-09-11 CN CN201410461447.9A patent/CN105468543B/zh active Active
-
2015
- 2015-04-30 WO PCT/CN2015/078038 patent/WO2016037488A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100378666C (zh) * | 2002-06-04 | 2008-04-02 | 佐治亚技术研究公司 | 用于防止泄露的程序分区的系统和方法 |
US7437530B1 (en) * | 2003-04-24 | 2008-10-14 | Network Appliance, Inc. | System and method for mapping file block numbers to logical block addresses |
CN101110044A (zh) * | 2007-08-28 | 2008-01-23 | 中兴通讯股份有限公司 | 一种内存监控管理的方法及系统 |
US20120324168A1 (en) * | 2010-03-10 | 2012-12-20 | Giesecke & Devrient Gmbh | Protection against access violation during the execution of an operating sequence in a portable data carrier |
US9158468B2 (en) * | 2013-01-02 | 2015-10-13 | International Business Machines Corporation | High read block clustering at deduplication layer |
CN103118135A (zh) * | 2013-02-28 | 2013-05-22 | 中国地质大学(武汉) | 云计算中用户数据隐私的保护方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106168883A (zh) * | 2016-05-05 | 2016-11-30 | 诸葛晴凤 | 一种高效的数据组织与访问方法 |
CN106815301A (zh) * | 2016-12-12 | 2017-06-09 | 北京奇虎科技有限公司 | 一种dex文件的存储方法和装置 |
CN106934280A (zh) * | 2017-03-08 | 2017-07-07 | 网易(杭州)网络有限公司 | 内存数据处理方法、装置及网络游戏客户端 |
CN108900474A (zh) * | 2018-06-05 | 2018-11-27 | 苏州科达科技股份有限公司 | 敏感信息的传输方法,装置及电子设备 |
CN109920044A (zh) * | 2019-02-27 | 2019-06-21 | 浙江科澜信息技术有限公司 | 一种三维场景构建方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016037488A1 (zh) | 2016-03-17 |
CN105468543B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468543A (zh) | 一种保护敏感信息的方法及装置 | |
US9215066B2 (en) | Method and system for making information in a data set of a copy-on-write file system inaccessible | |
US9742564B2 (en) | Method and system for encrypting data | |
US11809584B2 (en) | File system metadata protection | |
US9152813B2 (en) | Transparent real-time access to encrypted non-relational data | |
US10440111B2 (en) | Application execution program, application execution method, and information processing terminal device that executes application | |
CN107124271B (zh) | 一种数据加密、解密方法和设备 | |
US8954753B2 (en) | Encrypting data in volatile memory | |
DE102018129420A1 (de) | Indirektionsverzeichnis für den kryptografischen speicherschutz | |
CN108108633B (zh) | 一种数据文件及其访问方法、装置及设备 | |
CN103825953A (zh) | 一种用户模式加密文件系统 | |
EP2511848A2 (en) | Multiple independent encryption domains | |
CN106815528A (zh) | 一种文件管理方法及装置、存储设备 | |
CN115758420B (zh) | 文件访问控制方法、装置、设备及介质 | |
CN106598496A (zh) | 构建虚拟磁盘及其数据处理的方法和装置 | |
WO2024032770A1 (zh) | 数据删除方法和电子设备 | |
US11720529B2 (en) | Methods and systems for data storage | |
US20120131199A1 (en) | Systems and Methods for Layered Resource Management | |
KR101761799B1 (ko) | 단말의 보안 데이터 관리 장치 및 그 방법 | |
CN112084536B (zh) | 基于区块链的密钥存储方法及装置 | |
KR102216173B1 (ko) | 컨텐츠 이용 방법 및 이를 위한 장치 | |
CN111310231A (zh) | 一种基于linux系统的文件安全应用管理方法及系统 | |
CN106528571A (zh) | 一种用于移动终端的文件管理方法及系统 | |
US20160357470A1 (en) | Computer readable medium, information processing apparatus, and method | |
US10324624B2 (en) | Decommissioning of source storages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |