CN107577937B - 一种应用程序保护方法及系统 - Google Patents
一种应用程序保护方法及系统 Download PDFInfo
- Publication number
- CN107577937B CN107577937B CN201710780711.9A CN201710780711A CN107577937B CN 107577937 B CN107577937 B CN 107577937B CN 201710780711 A CN201710780711 A CN 201710780711A CN 107577937 B CN107577937 B CN 107577937B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- container
- application
- system service
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种应用程序保护方法及系统,用于在虚拟机中将应用程序及与其相关的系统服务程序中的可执行文件及依赖库的路径固定化,从而简化应用在运行中的签名过程,保证应用程序的正常运行。本发明实施例方法包括:配置Linux系统中Init进程的可执行文件,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务;将需要运行的应用程序封装为应用容器;将与应用程序相关联的系统服务程序封装为系统服务容器。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用程序保护方法及系统。
背景技术
应用程序保护是防范新型病毒和恶意代码攻击的主要方法之一,通过该技术,用户可以在系统中设置一个应用程序白名单,只有白名单中的应用程序才能在系统中运行。具体来说,该技术通过验证应用程序的签名,确保白名单中的应用程序在运行前是完整的,同时,基于虚拟化技术确保应用程序在运行过程中也是完整的。因此,在整个系统的运行过程中,只有白名单中的应用程序才能被执行,其他病毒和恶意代码不能被执行。该技术在Windows 10 Device Guard和VMware micro-segmentation中被广泛应用。
现有的应用程序保护是通过以下方式来实现的:现有的应用程序在运行时,查找应用程序的可执行文件及依赖库,对所有的可执行文件及依赖库进行签名,在不同的系统中,由于系统版本及配置的不同,会造成可执行文件及依赖库的路径不同,而且有的应用程序的依赖库是在应用程序中动态加载的,很难在运行前确定。
其次,操作系统中运行着大量的系统服务进程,应用程序在运行时,需要对所有的系统服务进程进行签名,而不同版本的操作系统有着不同的系统服务进程,系统服务进程的可执行文件和依赖库也可能不同。
基于上述过程,应用程序在运行中的签名过程需要参考操作系统的不同版本、应用程序及系统服务进程中可执行文件及依赖库的不同路径,造成签名过程冗长、复杂,且很容易造成漏签及误签,导致应用程序运行失败。
发明内容
本发明实施例提供了一种应用程序保护方法及系统,通过在虚拟机中将应用程序及与其相关的系统服务程序分别封装为应用容器及系统服务容器,从而将应用程序及与其相关的系统服务程序中的可执行文件及依赖库的路径固定化,从而简化应用在运行中的签名过程,保证应用程序的正常运行。
本发明实施例一方面提供了一种应用程序保护方法,包括:
配置Linux系统中Init进程的可执行文件,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务;
将需要运行的应用程序封装为应用容器;
将与应用程序相关联的系统服务程序封装为系统服务容器。
可选的,该方法还包括:
将可执行文件、应用容器及系统服务容器打包至虚拟机镜像中。
可选的,该方法还包括:
虚拟机对应用程序及系统服务程序进行签名,并将签名写入虚拟机监控器中。
可选的,该方法还包括:
当虚拟机基于虚拟机镜像启动时,虚拟机监控器对签名进行验证,以用于对应用程序及系统服务程序的静态保护。
可选的,该方法还包括:
当虚拟机基于虚拟机镜像启动后,虚拟机监控器对虚拟机的地址空间切换实时监控,以用于对应用程序及系统服务程序的动态保护。
可选的,应用容器可从docker容器仓库中获取,系统服务容器根据Linux根文件系统构建。
可选的,虚拟机基于虚拟机镜像启动包括:
虚拟机依次启动内核、Init进程、系统服务容器及应用容器。
本发明另一方面提供了一种应用程序保护系统,包括:
配置单元,用于配置Linux系统中Init进程的可执行文件,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务;
第一封装单元,用于将需要运行的应用程序封装为应用容器;
第二封装单元,用于将与应用程序相关联的系统服务程序封装为系统服务容器。
可选的,该系统还包括:
装配单元,用于将可执行文件、应用容器及系统服务容器打包至虚拟机镜像中。
可选的,该系统还包括:
签名单元,用于使得虚拟机对应用程序及系统服务程序进行签名,并将签名写入虚拟机监控器中。
可选的,该系统还包括:
验证单元,用于在虚拟机基于虚拟机镜像启动时,控制虚拟机监控器对签名进行验证,以用于对应用程序及系统服务程序的静态保护。
可选的,该系统还包括:
监控单元,用于在虚拟机基于虚拟机镜像启动后,控制虚拟机监控器对虚拟机的地址空间进行实时监控,以用于对应用程序及系统服务程序的动态保护。
可选的,应用容器可从docker容器仓库中获取,系统服务容器根据Linux根文件系统构建。
可选的,虚拟机基于虚拟机镜像启动包括:
虚拟机依次启动内核、Init进程、系统服务容器及应用容器。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明在虚拟机中,配置Linux系统中Init进程的可执行文件,其中,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务,将用户需要运行的应用程序封装为应用容器,将与应用程序相关联的系统服务程序封装为系统服务容器,从而将应用运行过程中的应用程序及与其相关联的系统服务程序的存储路径固定化,从而简化了应用运行中的签名过程,保证应用程序的正常运行。
附图说明
图1为本发明实施例中一种应用程序保护方法的一个实施例示意图;
图2为本发明实施例中一种应用程序保护方法的另一个实施例示意图;
图3为本发明实施例中一种应用程序保护系统的一个实施例示意图;
图4为本发明实施例中一种应用程序保护系统的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种应用程序的保护方法及系统,用于简化虚拟机在应用运行中的签名过程,保证应用程序的正常运行。
为便于理解,先对文中的专用词汇解释如下,以后不再赘述:
虚拟机监控器(Hypervisor):实现虚拟化的核心软件。主要用于管理底层硬件资源,向上层虚拟机提供虚拟设备,管理虚拟机的整个生命周期等。
虚拟机(Virtual Machine):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
容器(Container):容器让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。
cgroup:是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如cpu memory i/o等等)的机制。
Apache:世界使用排名第一的Web服务器软件,可以运行在几乎所有广泛使用的计算机平台上。
MySQL:一种常用的关系型数据库管理系统。
地址空间:操作系统采用虚拟内存技术,所有进程运行在自己的地址空间,以虚拟方式共享内存。
mov-to-cr3指令:Intel处理器中实现地址空间切换的指令。
为便于理解,下面对本发明中的一种应用程序的保护方法进行描述,请参阅图1,本发明实施例中一种应用程序的保护方法的一个实施例,包括:
101、配置Linux系统中Init进程的可执行文件,可执行文件用于执行所述Init进程的初始任务及容器环境的初始化任务;
本实施例应用于虚拟机(Virtual Machine),而虚拟机是通过虚拟机监控器(Hypervisor)将底层硬件资源(服务器),通过软件模拟出的具有完整硬件系统功能的,且运行在一个完全隔离环境中的完整计算机系统。
进一步,容器是可以让程序开发者将应用及依赖包进行封装的程序代码,并且可以发布在Linux机器上进行运行。为了保证容器的正常运行,需要在容器运行前,对容器的运行环境进行初始化。
而Init是Linux系统操作中不可缺少的一个程序,是一个由内核启动的用户级进程,虚拟机中Linux系统的在完成内核启动后,即内核被载入内存,开始运行并初始化所有的设备驱动程序和数据结构后,需要启动一个用户级程序Init的方式,完成引导进程。
所以,Linux系统运行应用程序前,应用程序保护系统需要配置用于引导Linux系统进入应用程序的Init进程的可执行文件,其中,可执行文件用于执行传统的初始化任务(挂载文件系统、设置网络、运行环境初始化等),进一步,可执行文件还用于将容器环境初始化(如设置cgroup、启动容器守护进程等)。
102、将需要运行的应用程序封装为应用容器;
为了将需要运行的应用程序(如MySQL,Apache)的存储路径固定化,应用程序保护系统可以将应用程序封装为应用容器,因应用容器在封装过程中,应用程序的写入路径固定不变,而容器的可移植性又保证应用程序容器可以安装在不同版本的操作系统中,所以本实施例中应用程序保护系统将应用程序封装为应用程序容器,保证了应用程序的路径不因操作系统配置及版本的不同而改变,从而实现应用运行过程中访问路径的固定性及可靠性。
需要说明的是,docker是一个存放各种应用容器的容器仓库,本实施例中的应用容器可以直接从docker容器仓库中获取。
其中,MySQL是一种常用的关系型数据库管理系统,用于将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,从而增加了数据的读取速度及灵活性,是完成系统数据管理的一种常用应用程序。Apache是一种Web服务软件,即驻留于因特网上的某种类型的计算机程序,它可以运行在几乎所有广泛使用的计算机平台上,支持用户放置各种网络文件及数据文件,并可以向浏览器等Web客户端提供各种被请求的文档。
需要说明的是,本实施例中的MySQL,Apache仅是需要运行的应用程序的举例说明,并不对需要运行的应用程序的类型构成限定,本实施例中的应用程序还可以包括:ngnix、Java应用程序、Python应用程序等。
103、将与应用程序相关联的系统服务程序封装为系统服务容器。
应用程序(如MySQL,Apache)在运行过程中,还需要系统服务程序(如Systemctl、Binfmp、Dhcpd)的支持,才能保证应用程序的正常运行,为了保证应用程序运行中,与应用程序相关联的系统服务程序的存储路径固定化,应用程序保护系统将与应用程序相关联的的系统服务程序也封装为系统服务容器,因系统服务容器在封装过程中,系统服务程序的写入路径固定不变,而容器的可移植性又保证系统服务容器可以安装在不同配置及不同版本的操作系统中,所以本实施例中的系统服务容器保证了与应用程序相关联的系统服务程序路径不因操作系统配置及版本的不同而改变,进而实现了应用运行过程中系统服务程序访问路径的固定性及可靠性。
需要说明的是,与应用程序相关联的系统服务程序可以从Linux根文件系统中获取,所以本实施例中的系统服务容器可以通过Linux根文件系统构建。
其中,Systemctl用于监控应用程序的运行,例如当Apache运行停止时,Systemctl自动重新启动Apache程序;Binfmp是二进制文件注册程序,用于注册应用程序(如Apache)的二进制文件,Dhcpd则是在应用运行中,动态分配IP地址的程序。需要说明的是,与应用程序相关的系统服务程序包括但不限于上述的Systemctl、Binfmp、Dhcpd程序,此处对于与应用程序相关的系统服务程序不作具体限制。
本发明在虚拟机中,配置Linux系统中Init进程的可执行文件,其中,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务,将用户需要的应用程序封装为应用容器,将与应用程序相关联的系统服务程序封装为系统服务容器,从而将应用运行过程中的应用程序及与其相关联的系统服务程序的存储路径固定化,从而简化了应用运行中的签名过程,保证应用程序的正常运行。
基于图1所述的实施例,对本发明基于图1所述的应用容器及系统服务容器,如何实现应用程序的保护做详细描述,请参阅图2,本发明实施例中一种应用程序的保护方法的另一个实施例,包括:
201、配置Linux系统中Init进程的可执行文件,可执行文件用于执行所述Init进程的初始任务及容器环境的初始化任务;
202、将需要运行的应用程序封装为应用容器;
203、将与所述应用程序相关联的系统服务程序封装为系统服务容器;
需要说明的是,本实施中的步骤201至203,与图1所述的实施例中的步骤101至103类似,此处不再赘述。
204、将可执行文件、应用容器及系统服务容器打包至虚拟机镜像中;
虚拟机镜像即为虚拟机的虚拟磁盘文件,虚拟机在启动过程中,首先从虚拟磁盘中加载并运行操作系统内核,内核从虚拟磁盘中加载并运行init进程的可执行文件,init进程初始化容器运行环境,从虚拟磁盘中加载系统服务容器和应用容器的容器镜像,运行系统服务容器和应用容器。
因此,要保证应用程序的正常启动及运行,需要将init进程的可执行文件、应用容器及系统服务容器一起打包至虚拟机镜像中,以保证虚拟机及应用程序的正常启动及运行。
205、控制虚拟机对应用程序及系统服务程序进行签名,并将签名写入虚拟机监控器中;
为了保证应用程序及系统服务程序在应用运行前的完整性,应用程序保护系统对应用程序及系统服务程序进行签名,并将签名写入虚拟机监控器中,以用于虚拟机监控器在应用启动运行前,根据此签名对应用程序及系统服务程序的完整性进行验证。
具体实现过程如下:哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。
所以本实施例中,应用程序保护系统在应用容器及系统服务容器中的应用程序及系统服务容器运行前,计算出应用程序及系统服务程序的哈希值,以哈希值的方式对应用程序及系统服务程序进行签名,并分别将应用程序及系统服务程序的哈希值写入虚拟机监控器中,以用于虚拟机监控器根据此哈希值对应用启动运行前,应用程序及系统服务程序的完整性进行验证。
若该签名(哈希值)没有发生变化,即应用程序及系统服务程序没有被篡改,否则,应用程序及系统服务程序被篡改。
需要说明的是,哈希算法只是验证程序完整性的一种算法,本实施例中的应用程序及系统服务程序的完整性也可以通过MD5算法来实现,对于本实施例中应用程序及系统服务程序的签名方式,本实施例中具体不做限制。
206、当虚拟机基于虚拟机镜像启动时,控制虚拟机监控器对签名进行验证,以用于对应用程序及系统服务程序的静态保护;
当虚拟机基于该虚拟机镜像启动时,应用程序保护系统控制虚拟机监控器再次对写入虚拟机监控器中的签名进行验证,以保证应用程序及系统服务程序在应用启动运行前的完整性,实现对应用程序及系统服务程序的静态保护。
对应于步骤205,即应用程序保护系统再次使用哈希算法对应用程序及系统服务程序的哈希值进行计算,并将该哈希值与步骤205中写入虚拟机监控器中的哈希值进行对比,若该哈希值发生变化,则应用程序及系统服务程序已被病毒或恶意程序进行篡改,若该哈希值保持不变,则该应用程序及系统服务程序的完整性未被破坏。
207、当虚拟机基于虚拟机镜像启动后,控制虚拟机监控器对虚拟机的地址空间切换实时监控,以用于对应用程序及系统服务程序的动态保护。
因为应用在运行中,下层的应用程序及系统服务程序中的依赖库可能是动态加载的,所以为了保证应用程序及系统服务程序在应用运行中的完整性,即在应用运行中不被病毒或恶意代码篡改,应用程序保护系统使得虚拟机监控对虚拟机的地址空间进行实施监控,以用于对应用程序及系统服务程序的动态保护。
具体实现过程如下:虚拟机中的应用程序在操作系统中运行时,每个应用程序都运行在与该应用程序绑定的地址空间中,所以当虚拟机切换至新的地址空间,即可判断有新的应用程序启动。
当虚拟机切换至新的地址空间时,虚拟机监控器即可通过mov-to-cr3指令,对虚拟机的地址空间进行截获,从而记录虚拟机中运行的每一个地址空间,从而记录虚拟机中运行的每一个应用程序,实现对虚拟机中应用程序的监控。
若虚拟机监控器监控到虚拟机中有新的应用程序运行时,即虚拟机监控器监控到虚拟机运行在未被记录的地址空间时,虚拟机监控器对该新应用程序的代码进行签名,并与预先存在虚拟机监控器的签名值(步骤205)进行比对,如果发现签名值不一致,即可以判断该应用程序是被病毒或恶意代码篡改的应用程序,继而使得应用程序保护系统对该应用程序进行拦截或发出警告;如果发现签名值一致,即可判断该应用程序是未被病毒或恶意代码篡改的应用程序,继而运行该应用程序运行。
同时,虚拟机监控器通过内存虚拟化保护机制,将虚拟机中已运行的应用程序(即签名验证通过的应用程序)的代码映射为只读,确保这些应用程序在签名验证通过之后不会被病毒或恶意代码篡改。
本发明在虚拟机中,配置Linux系统中Init进程的可执行文件,其中,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务,将需要运行的应用程序封装为应用容器,将与应用程序相关联的系统服务程序封装为系统服务容器,从而将应用运行过程中的应用程序及与其相关联的系统服务程序的存储路径固定化,从而简化了应用运行中应用程序及系统服务程序的签名过程。
其次,对在运行中的应用程序及系统服务程序,分别做运行前的签名验证保护及运行中的监控保护,增强了应用程序的安全性。
上面描述了本发明中的应用程序保护方法,下面来描述本发明中的应用程序保护系统,请参阅图3,本发明中的应用程序保护系统的一个实施例,包括:
配置单元301,用于配置Linux系统中Init进程的可执行文件,所述可执行文件用于执行所述Init进程的初始任务及容器环境的初始化任务;
第一封装单元302,用于将需要运行的应用程序封装为应用容器;
第二封装单元303,用于将与应用程序相关联的系统服务程序封装为系统服务容器。
需要说明的是,本实施例中各单元的作用与图1所述实施例中应用程序保护系统的作用类似,此处不再赘述。
本发明在虚拟机中,通过配置单元301配置Linux系统中Init进程的可执行文件,其中,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务,通过第一封装单元302将需要运行的的应用程序封装为应用容器,通过第二封装单元303将与应用程序相关联的系统服务程序封装为系统服务容器,从而将应用运行过程中的应用程序及与其相关联的系统服务程序的存储路径固定化,从而简化了应用运行中的签名过程,保证应用程序的正常运行。
为便于理解,下面详细描述本发明实施例中的应用程序保护系统,请参阅图4,本发明实施例中的应用程序保护系统的另一个实施例,包括:
配置单元401,用于配置Linux系统中Init进程的可执行文件,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务;
第一封装单元402,用于将需要运行的应用程序封装为应用容器;
第二封装单元403,用于将与应用程序相关联的系统服务程序封装为系统服务容器。
进一步,该系统还包括:
装配单元404,用于将可执行文件、应用容器及系统服务容器打包至虚拟机镜像中。
签名单元405,用于控制虚拟机对应用程序及系统服务程序进行签名,并将签名写入虚拟机监控器中。
验证单元406,用于在虚拟机基于虚拟机镜像启动时,控制虚拟机监控器对签名进行验证,以用于对应用程序及系统服务程序的静态保护。
监控单元407,用于在虚拟机基于虚拟机镜像启动后,控制虚拟机监控器对虚拟机的地址空间进行实时监控,以用于对应用程序及系统服务程序的动态保护。
需要说明的是,本实施例中各单元的作用与图2所述实施例中应用程序保护系统的作用类似,此处不再赘述。
本发明在虚拟机中,通过配置单元401配置Linux系统中Init进程的可执行文件,其中,可执行文件用于执行Init进程的初始任务及容器环境的初始化任务,通过第一封装单元402将需要运行的应用程序封装为应用容器,通过第二封装单元403将与应用程序相关联的系统服务程序封装为系统服务容器,从而将应用运行过程中的应用程序及与其相关联的系统服务程序的存储路径固定化,从而简化了应用运行中应用程序及系统服务程序的签名过程。
其次,对在运行中的应用程序及系统服务程序,通过验证单元406及监控单元407分别做运行前的签名验证保护及运行中的监控保护,增强了应用程序的安全性。
可以理解的是,本发明实施例中,应用程序保护系统还可以从硬件角度出发进行描述,本发明实施例的应用程序保护系统包括:处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各个方法实施例中基于应用程序保护系统操作的步骤,或者,处理器执行计算机程序时实现上述实施例中应用程序保护系统的各模块的功能,相同部分可参照前文,此处不再赘述。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在应用程序保护系统中的执行过程,具体可参照应用程序保护系统的各单元的说明,此处不再赘述。
其中,应用程序保护系统可包括但不仅限于处理器、存储器,本领域技术人员可以理解,该说明仅仅是应用程序保护系统的示例,并不构成对应用程序保护系统的限定,可以包括比该说明更多或更少的部件,或者组合某些部件,或者不同的部件,例如应用程序保护系统还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是应用程序保护系统的控制中心,利用各种接口和线路连接整个应用程序保护系统的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现应用程序保护系统的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据(比如补丁库)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种应用程序保护方法,其特征在于,应用于虚拟机,包括:
配置Linux系统中Init进程的可执行文件,所述可执行文件用于执行所述Init进程的初始任务及容器环境的初始化任务;
将需要运行的应用程序封装为应用容器;
将与所述应用程序相关联的系统服务程序封装为系统服务容器,其中,所述应用容器和所述系统服务容器使得所述应用程序以及与所述系统服务程序中的所述可执行文件及依赖库的路径固定化。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述可执行文件、所述应用容器及所述系统服务容器打包至虚拟机镜像中。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
控制所述虚拟机对所述应用程序及所述系统服务程序进行签名,并将所述签名写入虚拟机监控器中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述虚拟机基于所述虚拟机镜像启动时,控制所述虚拟机监控器对所述签名进行验证,以用于对所述应用程序及所述系统服务程序的静态保护。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述虚拟机基于所述虚拟机镜像启动后,控制所述虚拟机监控器对所述虚拟机的地址空间切换实时监控,以用于对所述应用程序及所述系统服务程序的动态保护。
6.根据权利要求1所述的方法,其特征在于,所述应用容器可从docker容器仓库中获取,所述系统服务容器根据Linux根文件系统构建。
7.根据权利要求4所述的方法,其特征在于,所述虚拟机基于所述虚拟机镜像启动包括:
所述虚拟机依次启动内核、所述Init进程、所述系统服务容器及所述应用容器。
8.一种应用程序保护系统,其特征在于,包括:
配置单元,用于配置Linux系统中Init进程的可执行文件,所述可执行文件用于执行所述Init进程的初始任务及容器环境的初始化任务;
第一封装单元,用于将需要运行的应用程序封装为应用容器;
第二封装单元,用于将与所述应用程序相关联的系统服务程序封装为系统服务容器,其中,所述应用容器和所述系统服务容器使得所述应用程序以及与所述系统服务程序中的所述可执行文件及依赖库的路径固定化。
9.根据权利要求8所述的系统,其特征在于,所述系统还包括:
装配单元,用于将所述可执行文件、所述应用容器及所述系统服务容器打包至虚拟机镜像中。
10.根据权利要求8或9所述的系统,其特征在于,所述系统还包括:
签名单元,用于控制虚拟机对所述应用程序及所述系统服务程序进行签名,并将所述签名写入虚拟机监控器中。
11.根据权利要求10所述的系统,其特征在于,所述系统还包括:
验证单元,用于在所述虚拟机基于所述虚拟机镜像启动时,控制所述虚拟机监控器对所述签名进行验证,以用于对所述应用程序及所述系统服务程序的静态保护。
12.根据权利要求11所述的系统,其特征在于,所述系统还包括:
监控单元,用于在所述虚拟机基于所述虚拟机镜像启动后,控制所述虚拟机监控器对所述虚拟机的地址空间进行实时监控,以用于对所述应用程序及所述系统服务程序的动态保护。
13.根据权利要求8所述的系统,其特征在于,所述应用容器可从docker容器仓库中获取,所述系统服务容器根据Linux根文件系统构建。
14.根据权利要求11所述的系统,其特征在于,所述所述虚拟机基于所述虚拟机镜像启动包括:
所述虚拟机依次启动内核、所述Init进程、所述系统服务容器及所述应用容器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710780711.9A CN107577937B (zh) | 2017-09-01 | 2017-09-01 | 一种应用程序保护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710780711.9A CN107577937B (zh) | 2017-09-01 | 2017-09-01 | 一种应用程序保护方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107577937A CN107577937A (zh) | 2018-01-12 |
CN107577937B true CN107577937B (zh) | 2021-05-04 |
Family
ID=61030708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710780711.9A Active CN107577937B (zh) | 2017-09-01 | 2017-09-01 | 一种应用程序保护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107577937B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532766B (zh) * | 2018-05-25 | 2023-09-08 | 华为技术有限公司 | 一种基于多容器的可信应用程序的处理方法及相关设备 |
CN109284112B (zh) * | 2018-09-28 | 2022-03-22 | 郑州云海信息技术有限公司 | 一种用于运行应用程序的方法和装置 |
CN111367599B (zh) * | 2018-12-26 | 2023-03-24 | 中兴通讯股份有限公司 | 一种软件分层管理系统 |
CN110069921B (zh) * | 2019-04-12 | 2021-01-01 | 中国科学院信息工程研究所 | 一种面向容器平台的可信软件授权验证系统及方法 |
CN110276194B (zh) * | 2019-06-21 | 2021-06-15 | 联想(北京)有限公司 | 信息处理方法、信息处理装置和电子设备 |
CN112051988B (zh) * | 2020-09-15 | 2024-10-25 | 北京达佳互联信息技术有限公司 | 模块处理方法、装置及服务器 |
CN113642007B (zh) * | 2021-08-30 | 2023-12-26 | 京东方科技集团股份有限公司 | 代码验证方法、可联网的终端设备及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484215A (zh) * | 2014-12-31 | 2015-04-01 | 青岛海信移动通信技术股份有限公司 | 一种应用安装方法、装置及智能终端 |
CN105069353A (zh) * | 2015-08-11 | 2015-11-18 | 武汉大学 | 一种基于Docker的可信容器安全加固方法 |
CN105354076A (zh) * | 2015-10-23 | 2016-02-24 | 深圳前海达闼云端智能科技有限公司 | 一种应用部署方法及装置 |
CN105511943A (zh) * | 2015-12-03 | 2016-04-20 | 华为技术有限公司 | 一种Docker容器运行方法和装置 |
CN106156611A (zh) * | 2015-03-25 | 2016-11-23 | 北京奇虎科技有限公司 | 智能手机应用程序的动态分析方法及系统 |
CN106598694A (zh) * | 2016-09-23 | 2017-04-26 | 浪潮电子信息产业股份有限公司 | 一种基于容器的虚拟机安全监测机制 |
CN106897611A (zh) * | 2017-03-03 | 2017-06-27 | 金光 | 无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用 |
-
2017
- 2017-09-01 CN CN201710780711.9A patent/CN107577937B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484215A (zh) * | 2014-12-31 | 2015-04-01 | 青岛海信移动通信技术股份有限公司 | 一种应用安装方法、装置及智能终端 |
CN106156611A (zh) * | 2015-03-25 | 2016-11-23 | 北京奇虎科技有限公司 | 智能手机应用程序的动态分析方法及系统 |
CN105069353A (zh) * | 2015-08-11 | 2015-11-18 | 武汉大学 | 一种基于Docker的可信容器安全加固方法 |
CN105354076A (zh) * | 2015-10-23 | 2016-02-24 | 深圳前海达闼云端智能科技有限公司 | 一种应用部署方法及装置 |
CN105511943A (zh) * | 2015-12-03 | 2016-04-20 | 华为技术有限公司 | 一种Docker容器运行方法和装置 |
CN106598694A (zh) * | 2016-09-23 | 2017-04-26 | 浪潮电子信息产业股份有限公司 | 一种基于容器的虚拟机安全监测机制 |
CN106897611A (zh) * | 2017-03-03 | 2017-06-27 | 金光 | 无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用 |
Also Published As
Publication number | Publication date |
---|---|
CN107577937A (zh) | 2018-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107577937B (zh) | 一种应用程序保护方法及系统 | |
US11385903B2 (en) | Firmware update patch | |
US11687645B2 (en) | Security control method and computer system | |
JP2021509200A (ja) | コンテナを更新するためのシステム及び方法 | |
US11886886B2 (en) | System and method for runtime synchronization and authentication of pre-boot device drivers for a rescue operating system | |
AU2020236629B2 (en) | Incremental decryption and integrity verification of a secure operating system image | |
CN114365099B (zh) | 防止计算环境中的历史模式不一致的推测性访问 | |
AU2020235010B2 (en) | Starting a secure guest using an initial program load mechanism | |
US11656864B2 (en) | Automatic application of software updates to container images based on dependencies | |
US20180096141A1 (en) | Malicious code avoidance using transparent containers | |
EP3959634B1 (en) | Secure initial program load | |
TWI822038B (zh) | 用於安全客戶之多部分元資料之客製化之電腦程式產品、電腦系統及電腦實施方法 | |
US20220308907A1 (en) | Injection and execution of workloads into virtual machines | |
US11726922B2 (en) | Memory protection in hypervisor environments | |
CN116661876B (zh) | 系统启动方法、文件生成方法、电子设备及服务器 | |
US20240338459A1 (en) | Automatic analysis of the exploitability of vulnerabilities of a software image | |
US20240020389A1 (en) | Fuzzing guided binary hardening |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |