CN112347058A - 一种数据加解密的方法、系统及设备 - Google Patents
一种数据加解密的方法、系统及设备 Download PDFInfo
- Publication number
- CN112347058A CN112347058A CN202011217844.3A CN202011217844A CN112347058A CN 112347058 A CN112347058 A CN 112347058A CN 202011217844 A CN202011217844 A CN 202011217844A CN 112347058 A CN112347058 A CN 112347058A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- virtual memory
- writing
- application program
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000015654 memory Effects 0.000 claims abstract description 236
- 238000013507 mapping Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000012544 monitoring process Methods 0.000 claims abstract description 32
- 230000006870 function Effects 0.000 claims description 37
- 230000004048 modification Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 230000003111 delayed effect Effects 0.000 claims description 4
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000001914 filtration Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种数据加解密的方法,包括:监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态;对位于待处理数据位置的加密数据进行解密,并将解密后的数据写入虚拟内存中,以使应用程序读取虚拟内存中的数据。本申请通过对内存保护异常进行处理实现对应用程序的数据处理类型及待处理数据位置的确定,进而实现了文件透明加解密,相对于现有技术本申请复杂程度低且更容易实现,极大的降低了软件开发成本,提高了文件透明加解密的稳定性。本申请同时还提供了一种数据加解密的系统、设备及可读存储介质,具有上述有益效果。
Description
技术领域
本申请涉及数据处理领域,特别涉及一种数据加解密的方法、系统、设备及可读存储介质。
背景技术
文件透明加解密是指应用程序不需要改变使用方式就能正常访问加密的文件,即加解密操作对于应用程序来说是无感知的。目前市场上文件透明加解密产品,绝大多数都是基于文件过滤驱动实现的。由于文件过滤驱动开发难度较一般应用程序高,从业人员水平参差不齐,因此此类产品的可靠性一直不够理想。而且,文件过滤驱动安装在操作系统内核,一旦发生异常就影响整个系统的稳定性。
因此,如何提高文件透明加解密的稳定性是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种数据加解密的方法、系统、设备及可读存储介质,用于提高文件透明加解密的稳定性。
为解决上述技术问题,本申请提供一种数据加解密的方法,该方法包括:
监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;
将所述虚拟内存的保护属性修改为不可访问状态,以使所述应用程序访问所述虚拟内存时产生内存保护异常;
根据所述内存映射文件创建操作确定所述应用程序的数据处理类型及待处理数据位置;
当所述数据处理类型为数据读取时,利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态;
对位于所述待处理数据位置的加密数据进行解密,并将解密后的数据写入所述虚拟内存中,以使所述应用程序读取所述虚拟内存中的数据。
可选的,在监测应用程序发起的内存映射文件创建操作之后,在分配与内存映射文件大小相同的虚拟内存之前,还包括:
判断所述内存映射文件是否为加密文件;
若是,则执行所述分配与内存映射文件大小相同的虚拟内存的步骤;
若否,则判断所述内存映射文件是否需要加密;
若所述内存映射文件需要加密,则加密所述内存映射文件,并执行所述分配与内存映射文件大小相同的虚拟内存的步骤;
若所述内存映射文件不需要加密,则将所述内存映射文件的基址作为结果返回给所述应用程序。
可选的,在利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态之前,还包括:
利用预设函数注册所述向量化异常处理程序。
可选的,还包括:
当所述数据处理类型为数据写入时,利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态,并启动监视线程;
利用所述监视线程对所述虚拟内存进行写入跟踪,并将跟踪得到的数据写入所述待处理数据位置中。
可选的,所述利用所述监视线程对所述虚拟内存进行写入跟踪,并将跟踪得到的数据写入所述待处理数据位置中,包括:
利用所述监视线程调用预设函数对所述虚拟内存进行写入跟踪;
当所述应用程序执行完数据写入时,控制所述预设函数携带跟踪得到的数据返回内存写入页面;
将所述内存写入页面中的数据加密保存到所述待处理数据位置中。
可选的,将所述内存写入页面中的数据加密保存到所述待处理数据位置中,包括:
将所有所述内存写入页面存储到延迟写入队列中;
执行所述延迟写入队列将所述内存写入页面中的数据定时加密保存到所述待处理数据位置中。
可选的,在将所述内存写入页面中的数据加密保存到所述待处理数据位置中之后,还包括:
重置所述内存写入页面的写入状态;
重复执行利用所述监视线程调用预设函数对所述虚拟内存进行写入跟踪的步骤,直到所述虚拟内存被关闭。
本申请还提供一种数据加解密的系统,该系统包括:
监测模块,用于监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;
第一修改模块,用于将所述虚拟内存的保护属性修改为不可访问状态,以使所述应用程序访问所述虚拟内存时产生内存保护异常;
确定模块,用于根据所述内存映射文件创建操作确定所述应用程序的数据处理类型及待处理数据位置;
第二修改模块,用于当所述数据处理类型为数据读取时,利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态;
第一写入模块,用于对位于所述待处理数据位置的加密数据进行解密,并将解密后的数据写入所述虚拟内存中,以使所述应用程序读取所述虚拟内存中的数据。
本申请还提供一种数据加解密设备,该数据加解密设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述数据加解密的方法的步骤。
本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述数据加解密的方法的步骤。
本申请所提供数据加解密的方法,包括:监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;将虚拟内存的保护属性修改为不可访问状态,以使应用程序访问虚拟内存时产生内存保护异常;根据内存映射文件创建操作确定应用程序的数据处理类型及待处理数据位置;当数据处理类型为数据读取时,利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态;对位于待处理数据位置的加密数据进行解密,并将解密后的数据写入虚拟内存中,以使应用程序读取虚拟内存中的数据。
本申请所提供的技术方案,通过利用虚拟内存代替内存映射文件,以使应用程序对虚拟内存进行操作,并通过将虚拟内存的保护属性修改为不可访问状态,以使应用程序访问虚拟内存时产生内存保护异常,通过对内存保护异常进行处理实现对应用程序的数据处理类型及待处理数据位置的确定,进而实现了文件透明加解密,相对于现有技术本申请复杂程度低且更容易实现,极大的降低了软件开发成本,提高了文件透明加解密的稳定性。本申请同时还提供了一种数据加解密的系统、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种数据加解密的方法的流程图;
图2为本申请实施例所提供的另一种数据加解密的方法的流程图;
图3为本申请实施例所提供的一种数据加解密的系统的结构图;
图4为本申请实施例所提供的一种数据加解密设备的结构图。
具体实施方式
本申请的核心是提供一种数据加解密的方法、系统、设备及可读存储介质,用于提高文件透明加解密的稳定性。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
文件透明加解密技术按照发展的先后顺序,可以分为以下几代:第一代技术以函数挂钩(API Hook)为代表,通过挂钩文件读写函数如ReadFile和WriteFile等实现文件数据的动态加解密。即应用程序读写哪部分文件,就加解密哪部分数据。第二代技术采用了文件过滤驱动(FSFilter或者MiniFilter),能够在操作系统内核接管所有的文件访问,包括内存映射文件的访问。当数据经过文件过滤驱动时,就可以进行加密和解密,用户和应用程序察觉不到这个操作。第三代技术叫做分层文件系统(Layered FileSystem),通过文件过滤驱动实现一个功能比较完整的文件系统,能够精确控制同一个文件对不同应用程序表现出不同状态(加密或解密状态)。这个文件系统位于操作系统原本的文件系统之上,应用程序首先访问的是这个上层文件系统,因此该技术叫做分层文件系统。第二和第三代技术都采用了文件过滤驱动,有时候也被统称为文件过滤驱动技术。
然而,目前市场上文件透明加解密产品,绝大多数都是基于文件过滤驱动实现的。由于文件过滤驱动开发难度较一般应用程序高,从业人员水平参差不齐,因此此类产品的可靠性一直不够理想。而且,文件过滤驱动安装在操作系统内核,一旦发生异常就影响整个系统的稳定性;故本申请提供了一种数据加解密的方法,用于解决上述问题。
请参考图1,图1为本申请实施例所提供的一种数据加解密的方法的流程图。
其具体包括如下步骤:
S101:监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;
这里提到的内存映射文件是指由一个文件到一块内存的映射,使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,这意味着在对文件进行处理时将不必再为文件申请并分配缓存,所有的文件缓存操作均由系统直接管理,由于取消了将文件数据加载到内存、数据从内存到文件的回写以及释放内存块等步骤,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用,Windows操作系统提供了允许应用程序把文件映射到虚拟内存的函数,例如CreateFileMapping函数和MapViewOfFile函数等;
在本步骤中,分配与内存映射文件大小相同的虚拟内存的目的在于,利用虚拟内存代替内存映射文件,以使应用程序对内存映射文件的操作转换为对虚拟内存的操作,进而不需要通过文件过滤驱动实现文件透明加解密;
具体的,可以使用VirtualAlloc函数或NtAllocateVirtualMemory函数分配与内存映射文件大小相同的虚拟内存,其中,VirtualAlloc函数的flAllocationType参数值为MEM_RESERVE|MEM_WRITE_WATCH,表示这块内存区域启用写入跟踪。
可选的,为提高文件透明加解密的处理效率,在监测应用程序发起的内存映射文件创建操作之后,在分配与内存映射文件大小相同的虚拟内存之前,还可以执行如下步骤:
判断内存映射文件是否为加密文件;
若是,则执行分配与内存映射文件大小相同的虚拟内存的步骤;
若否,则判断内存映射文件是否需要加密;
若内存映射文件需要加密,则加密内存映射文件,并执行分配与内存映射文件大小相同的虚拟内存的步骤;
若内存映射文件不需要加密,则将内存映射文件的基址作为结果返回给应用程序。
S102:将虚拟内存的保护属性修改为不可访问状态,以使应用程序访问虚拟内存时产生内存保护异常;
现代操作系统使用分页来管理内存,每个内存分页的大小是4KB,每一页内存可单独设置保护属性,用于控制该页内存是否可读、可写、可执行等;
在本步骤中,将虚拟内存的保护属性修改为不可访问状态的目的在于,令应用程序访问虚拟内存时产生内存保护异常,通过对内存保护异常进行处理实现对应用程序的数据处理类型及待处理数据位置的确定,进而实现了文件透明加解密;
具体的,可以使用VirtualProtect函数或NtProtectVirtualMemory函数完成对虚拟内存的保护属性的修改。
S103:根据内存映射文件创建操作确定应用程序的数据处理类型及待处理数据位置;
当应用程序发起内存映射文件创建操作时,则证明应用程序需要对内存映射文件进行相应的处理操作,本申请根据内存映射文件创建操作确定应用程序的数据处理类型及待处理数据位置,以使虚拟内存根据数据处理类型及待处理数据位置实现文件透明加解密。
S104:当数据处理类型为数据读取时,利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态;
在本步骤中,利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态的目的在于,对位于待处理数据位置的加密数据进行解密之后,能够将解密后的数据写入虚拟内存中,以使应用程序能够读取虚拟内存中的数据。
可选的,在利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态之前,还可以利用预设函数注册向量化异常处理程序,进而实现向量化异常处理程序的注册,用于处理所有的应用程序异常;
具体的,该预设函数具体可以为AddVectoredExceptionHandler函数或RtlAddVectoredExceptionHandler函数。
S105:对位于待处理数据位置的加密数据进行解密,并将解密后的数据写入虚拟内存中,以使应用程序读取虚拟内存中的数据。
基于上述技术方案,本申请所提供的一种数据加解密的方法,通过利用虚拟内存代替内存映射文件,以使应用程序对虚拟内存进行操作,并通过将虚拟内存的保护属性修改为不可访问状态,以使应用程序访问虚拟内存时产生内存保护异常,通过对内存保护异常进行处理实现对应用程序的数据处理类型及待处理数据位置的确定,进而实现了文件透明加解密,相对于现有技术本申请复杂程度低且更容易实现,极大的降低了软件开发成本,提高了文件透明加解密的稳定性。
针对于上一实施例的步骤S103,在根据内存映射文件创建操作确定应用程序的数据处理类型及待处理数据位置之后,当数据处理类型为数据写入时,还可以执行图2所示的步骤,下面结合图2进行说明。
请参考图2,图2为图1所提供的一种数据加解密的方法中S103的一种实际表现方式的流程图。
其具体包括以下步骤:
S201:当数据处理类型为数据写入时,利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态,并启动监视线程;
S202:利用监视线程对虚拟内存进行写入跟踪,并将跟踪得到的数据写入待处理数据位置中。
可选的,这里提到的利用监视线程对虚拟内存进行写入跟踪,并将跟踪得到的数据写入待处理数据位置中,其具体可以为:
利用监视线程调用预设函数对虚拟内存进行写入跟踪;
当应用程序执行完数据写入时,控制预设函数携带跟踪得到的数据返回内存写入页面;
将内存写入页面中的数据加密保存到待处理数据位置中。
可选的,这里提到的预设函数具体可以为GetWriteWatch函数和/或NtGetWriteWatch函数。
进一步的,为提高性能,降低数据落盘对性能的影响,这里提到的将内存写入页面中的数据加密保存到待处理数据位置中,具体可以通过执行如下步骤实现:
将所有内存写入页面存储到延迟写入队列中;
执行延迟写入队列将内存写入页面中的数据定时加密保存到待处理数据位置中。
可选的,在将内存写入页面中的数据加密保存到待处理数据位置中之后,还可以执行如下步骤实现对虚拟内存的重复写入跟踪:
重置内存写入页面的写入状态;
重复执行利用监视线程调用预设函数对虚拟内存进行写入跟踪的步骤,直到虚拟内存被关闭。
具体的,可以通过ResetWriteWatch函数和/或NtResetWriteWatch函数重置内存写入页面的写入状态。
请参考图3,图3为本申请实施例所提供的一种数据加解密的系统的结构图。
该系统可以包括:
监测模块100,用于监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;
第一修改模块200,用于将虚拟内存的保护属性修改为不可访问状态,以使应用程序访问虚拟内存时产生内存保护异常;
确定模块300,用于根据内存映射文件创建操作确定应用程序的数据处理类型及待处理数据位置;
第二修改模块400,用于当数据处理类型为数据读取时,利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态;
第一写入模块500,用于对位于待处理数据位置的加密数据进行解密,并将解密后的数据写入虚拟内存中,以使应用程序读取虚拟内存中的数据。
在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:
第一判断模块,用于判断内存映射文件是否为加密文件;
第一执行模块,用于若是,则执行分配与内存映射文件大小相同的虚拟内存的步骤;
第二判断模块,用于若否,则判断内存映射文件是否需要加密;
第二执行模块,用于若内存映射文件需要加密,则加密内存映射文件,并执行分配与内存映射文件大小相同的虚拟内存的步骤;
返回模块,用于若内存映射文件不需要加密,则将内存映射文件的基址作为结果返回给应用程序。
在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:
注册模块,用于利用预设函数注册向量化异常处理程序。
在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:
第三修改模块,用于当数据处理类型为数据写入时,利用向量化异常处理程序将虚拟内存的保护属性修改为可读可写状态,并启动监视线程;
第二写入模块,用于利用监视线程对虚拟内存进行写入跟踪,并将跟踪得到的数据写入待处理数据位置中。
在上述实施例的基础上,在一个具体实施例中,该第二写入模块可以包括:
跟踪子模块,用于利用监视线程调用预设函数对虚拟内存进行写入跟踪;
控制子模块,用于当应用程序执行完数据写入时,控制预设函数携带跟踪得到的数据返回内存写入页面;
保存子模块,用于将内存写入页面中的数据加密保存到待处理数据位置中。
在上述实施例的基础上,在一个具体实施例中,该保存子模块可以包括:
存储单元,用于将所有内存写入页面存储到延迟写入队列中;
执行单元,用于执行延迟写入队列将内存写入页面中的数据定时加密保存到待处理数据位置中。
在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:
重置模块,用于重置内存写入页面的写入状态;
重复模块,用于重复执行利用监视线程调用预设函数对虚拟内存进行写入跟踪的步骤,直到虚拟内存被关闭。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
请参考图4,图4为本申请实施例所提供的一种数据加解密设备的结构图。
该数据加解密设备400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,处理器422可以设置为与存储介质430通信,在数据加解密设备400上执行存储介质430中的一系列指令操作。
数据加解密设备400还可以包括一个或一个以上电源424,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述图1至图2所描述的数据加解密的方法中的步骤由数据加解密设备基于该图4所示的结构实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种数据加解密的方法、系统、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种数据加解密的方法,其特征在于,包括:
监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;
将所述虚拟内存的保护属性修改为不可访问状态,以使所述应用程序访问所述虚拟内存时产生内存保护异常;
根据所述内存映射文件创建操作确定所述应用程序的数据处理类型及待处理数据位置;
当所述数据处理类型为数据读取时,利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态;
对位于所述待处理数据位置的加密数据进行解密,并将解密后的数据写入所述虚拟内存中,以使所述应用程序读取所述虚拟内存中的数据。
2.根据权利要求1所述的方法,其特征在于,在监测应用程序发起的内存映射文件创建操作之后,在分配与内存映射文件大小相同的虚拟内存之前,还包括:
判断所述内存映射文件是否为加密文件;
若是,则执行所述分配与内存映射文件大小相同的虚拟内存的步骤;
若否,则判断所述内存映射文件是否需要加密;
若所述内存映射文件需要加密,则加密所述内存映射文件,并执行所述分配与内存映射文件大小相同的虚拟内存的步骤;
若所述内存映射文件不需要加密,则将所述内存映射文件的基址作为结果返回给所述应用程序。
3.根据权利要求1所述的方法,其特征在于,在利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态之前,还包括:
利用预设函数注册所述向量化异常处理程序。
4.根据权利要求1所述的方法,其特征在于,还包括:
当所述数据处理类型为数据写入时,利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态,并启动监视线程;
利用所述监视线程对所述虚拟内存进行写入跟踪,并将跟踪得到的数据写入所述待处理数据位置中。
5.根据权利要求4所述的方法,其特征在于,所述利用所述监视线程对所述虚拟内存进行写入跟踪,并将跟踪得到的数据写入所述待处理数据位置中,包括:
利用所述监视线程调用预设函数对所述虚拟内存进行写入跟踪;
当所述应用程序执行完数据写入时,控制所述预设函数携带跟踪得到的数据返回内存写入页面;
将所述内存写入页面中的数据加密保存到所述待处理数据位置中。
6.根据权利要求5所述的方法,其特征在于,将所述内存写入页面中的数据加密保存到所述待处理数据位置中,包括:
将所有所述内存写入页面存储到延迟写入队列中;
执行所述延迟写入队列将所述内存写入页面中的数据定时加密保存到所述待处理数据位置中。
7.根据权利要求5所述的方法,其特征在于,在将所述内存写入页面中的数据加密保存到所述待处理数据位置中之后,还包括:
重置所述内存写入页面的写入状态;
重复执行利用所述监视线程调用预设函数对所述虚拟内存进行写入跟踪的步骤,直到所述虚拟内存被关闭。
8.一种数据加解密的系统,其特征在于,包括:
监测模块,用于监测应用程序发起的内存映射文件创建操作,并分配与内存映射文件大小相同的虚拟内存;
第一修改模块,用于将所述虚拟内存的保护属性修改为不可访问状态,以使所述应用程序访问所述虚拟内存时产生内存保护异常;
确定模块,用于根据所述内存映射文件创建操作确定所述应用程序的数据处理类型及待处理数据位置;
第二修改模块,用于当所述数据处理类型为数据读取时,利用向量化异常处理程序将所述虚拟内存的保护属性修改为可读可写状态;
第一写入模块,用于对位于所述待处理数据位置的加密数据进行解密,并将解密后的数据写入所述虚拟内存中,以使所述应用程序读取所述虚拟内存中的数据。
9.一种数据加解密设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述数据加解密的方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据加解密的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011217844.3A CN112347058A (zh) | 2020-11-04 | 2020-11-04 | 一种数据加解密的方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011217844.3A CN112347058A (zh) | 2020-11-04 | 2020-11-04 | 一种数据加解密的方法、系统及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112347058A true CN112347058A (zh) | 2021-02-09 |
Family
ID=74428679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011217844.3A Pending CN112347058A (zh) | 2020-11-04 | 2020-11-04 | 一种数据加解密的方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112347058A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653980A (zh) * | 2015-12-30 | 2016-06-08 | 福建联迪商用设备有限公司 | 一种虚拟内存数据的保护方法及其系统 |
CN108958926A (zh) * | 2018-05-25 | 2018-12-07 | 厦门普杰信息科技有限公司 | 一种基于达尔文流媒体服务器的虚拟内存池设计方法 |
CN110598429A (zh) * | 2019-08-30 | 2019-12-20 | 百富计算机技术(深圳)有限公司 | 数据加密存储和读取的方法、终端设备及存储介质 |
CN111222103A (zh) * | 2019-12-31 | 2020-06-02 | 杭州安恒信息技术股份有限公司 | 基于向量化异常处理的软件保护方法 |
CN111679914A (zh) * | 2020-06-12 | 2020-09-18 | 北京字节跳动网络技术有限公司 | 一种内存管理方法、系统、计算机设备及存储介质 |
CN111736997A (zh) * | 2020-06-18 | 2020-10-02 | 北京达佳互联信息技术有限公司 | 内存分配方法、装置、电子设备及存储介质 |
-
2020
- 2020-11-04 CN CN202011217844.3A patent/CN112347058A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653980A (zh) * | 2015-12-30 | 2016-06-08 | 福建联迪商用设备有限公司 | 一种虚拟内存数据的保护方法及其系统 |
CN108958926A (zh) * | 2018-05-25 | 2018-12-07 | 厦门普杰信息科技有限公司 | 一种基于达尔文流媒体服务器的虚拟内存池设计方法 |
CN110598429A (zh) * | 2019-08-30 | 2019-12-20 | 百富计算机技术(深圳)有限公司 | 数据加密存储和读取的方法、终端设备及存储介质 |
CN111222103A (zh) * | 2019-12-31 | 2020-06-02 | 杭州安恒信息技术股份有限公司 | 基于向量化异常处理的软件保护方法 |
CN111679914A (zh) * | 2020-06-12 | 2020-09-18 | 北京字节跳动网络技术有限公司 | 一种内存管理方法、系统、计算机设备及存储介质 |
CN111736997A (zh) * | 2020-06-18 | 2020-10-02 | 北京达佳互联信息技术有限公司 | 内存分配方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10089191B2 (en) | Selectively persisting application program data from system memory to non-volatile data storage | |
US9218302B2 (en) | Page table management | |
US9058197B2 (en) | Method for sharing memory of virtual machine and computer system using the same | |
CN107807839B (zh) | 一种修改虚拟机内存数据的方法、装置及电子设备 | |
US11340808B2 (en) | Latency-based storage in a hybrid memory system | |
US20200409607A1 (en) | Hybrid memory system | |
US11836091B2 (en) | Secure memory access in a virtualized computing environment | |
CN109753347B (zh) | 一种实现驱动的系统及方法 | |
CN112541166A (zh) | 一种方法、系统和计算机可读存储介质 | |
CN112231007A (zh) | 基于用户态与内核态驱动协同处理框架的设备驱动方法 | |
US11327892B2 (en) | Latency-based storage in a hybrid memory system | |
CN108108133B (zh) | 一种改变nvme SSD硬盘用户可使用容量的方法及设备 | |
CN112347058A (zh) | 一种数据加解密的方法、系统及设备 | |
TWI452468B (zh) | 虛擬機器記憶體的分享方法與電腦系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |