CN111832053A - 一种基于应用程序的透明加解密方法和系统 - Google Patents
一种基于应用程序的透明加解密方法和系统 Download PDFInfo
- Publication number
- CN111832053A CN111832053A CN202010668356.8A CN202010668356A CN111832053A CN 111832053 A CN111832053 A CN 111832053A CN 202010668356 A CN202010668356 A CN 202010668356A CN 111832053 A CN111832053 A CN 111832053A
- Authority
- CN
- China
- Prior art keywords
- file
- virtual
- calling
- encrypted
- function
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提出了一种基于应用程序的透明加解密方法和系统,所述系统包括:文件系统调用拦截层,虚拟文件系统层和文件系统调用层;文件系统调用拦截层基于hook技术拦截系统libc库中指定的I/O函数,以接收应用程序的文件访问请求并进入所述虚拟文件系统层;虚拟文件系统层基于所述文件类型决策是否对文件进行加解密处理,如果需要对文件加解密,则调用加解密接口对数据进行加解密;文件系统调用层用于接收所述虚拟文件系统层的调用并进入内核,在内核态通过内核虚拟文件系统接口操作真实文件,将文件系统调用层传递的加密数据写入文件或读出加密数据到文件系统调用层。本发明的透明加解密方案确保终端用户正常工作的同时,不会感觉到加解密过程的存在。
Description
技术领域
本发明涉及数据保护技术领域,尤其涉及一种基于应用程序的透明加解密方法和系统。
背景技术
随着移动互联网的飞速发展和全球普及,智能终端集商务娱乐功能于一体,成为人们日常生活中不可或缺的组成部分,与此同时形形色色的应用软件也如雨后春笋般涌现,满足人们日常工作、学习和生活的需要。但是,伴随着移动互联网的飞速发展和智能终端的广泛普及,恶意应用代码传播活动日益猖獗,技术手段不断革新,严重威胁网络和用户的安全。然而,现今移动应用商店缺乏统一审核标准,应用程序良莠不齐,越来越多的黑客借助审核不严的应用商店传播恶意代码,并且智能终端由于自身的安全缺陷,对于用户敏感数据的安全保护不足。总而言之,移动智能终端用户个人敏感数据安全保护刻不容缓。
智能终端主流的操作系统有Android、iOS、Windows Phone、BlackBerry以及Symbian,其中Android平台是手机开放联盟开发的目前最为流行的移动操作系统平台,所占市场份额最大、研究最热。基于Android平台的手机文件加密技术也日趋成熟,“文件加密”、“金山隐私保险箱”、“加密短信”等加密应用已得到了Android手机用户的广泛使用。该类加密软件主要为用户态的应用,用于保护用户隐私的照片、视频、短信、文件、文件夹等。但是,使用该类软件对文件进行加密的时候,用户首先要选取需要加密的文件,然后对该文件设置密码,加密软件再根据用户设定的密码,对指定的文件进行加密。而当用户需要对该文件进行明文读取的时候,则需要用户再次输入密码,加密软件再根据密码解密文件,在操作上具有一定的复杂性。
发明内容
为了解决上述问题,有必要提供一种基于应用程序的透明加解密方法和系统。
本发明第一方面提出一种基于应用程序的透明加解密方法,所述方法包括以下步骤:
接收应用程序的文件访问请求;
通过系统本地层接口调用操作系统libc库函数中指定的I/O函数来操作文件;
通过虚拟文件系统基于Hook技术拦截操作系统的I/O函数;
由所述虚拟文件系统判断真实的文件的文件类型,根据所述文件类型执行相应决策:
当所述文件类型为加密文件时,执行决策:调用加解密接口对文件内容进行加解密处理;
当所述文件类型为忽略文件时,执行决策:无需对此文件进行加解密处理;
否则执行决策:在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;
继续调用操作系统的I/O函数来操作文件。
基于上述,所述虚拟文件系统通过虚拟文件描述符VFD和虚拟文件VF来操作真实的文件;
所述虚拟文件描述符VFD与真实的文件描述符FD一一对应,所述虚拟文件系统保存文件描述符FD与虚拟文件描述符VFD的对应关系,每打开一次文件,则会创建一个虚拟文件描述符VFD,关闭文件时销毁虚拟文件描述符VFD对象;
所述虚拟文件VF与真实的文件相对应,每个文件对应多个文件描述符FD;每个虚拟文件VF对象会被多个虚拟文件描述符VFD对象引用;虚拟文件VF对象中保存真实的文件路径;虚拟文件VF持有操作加密文件和临时文件的对象,虚拟文件VF通过加密文件或临时文件去读写文件;虚拟文件系统保存虚拟文件VF和真实的文件路径的对应关系,当所有的文件操作结束后,会清除相应的对应关系记录。
基于上述,调用加解密接口对文件内容进行加解密处理,具体包括:
从加密文件的头部读出密钥密文;
调用加解密接口,通过安全模块采用根密钥对所述密钥密文进行解密处理,得到密钥明文;
如果需要对文件内容进行加密处理,则重新调用加解密接口,并通过安全模块采用所述密钥明文对所述文件内容进行加密处理;
如果需要对文件内容进行解密处理,则重新调用加解密接口,并通过安全模块采用所述密钥明文对所述文件内容进行解密处理。
进一步的,应用程序的文件访问请求为对文件的写请求,执行:
通过系统本地层接口调用操作系统的Open函数来打开文件;
通过虚拟文件系统基于Hook技术拦截Open函数,并基于Hook open函数进入Hook open流程,根据文件类型解密打开文件或者直接打开文件;
通过系统本地层接口调用操作系统的Write函数来对文件进行写操作;
通过虚拟文件系统基于hook技术拦截Write函数,并基于hook write函数进入Hookwrite流程,根据文件类型对文件进行加密写操作或直接进行写操作;
通过系统本地层接口调用操作系统的Close函数来关闭文件;
通过虚拟文件系统基于Hook技术拦截Close函数,并基于Hook close函数进入Hookclose流程,直至关闭文件。
进一步的,应用程序的文件访问请求为对文件的读请求,执行:
通过系统本地层接口调用操作系统的Open函数来打开文件;
通过虚拟文件系统基于Hook技术拦截Open函数,并基于Hook open函数进入Hook open流程,根据文件类型解密打开文件或者直接打开文件;
通过系统本地层接口调用操作系统的Read函数来对文件进行读操作;
通过虚拟文件系统基于Hook技术拦截Read函数,并基于Hook read函数进入Hook read流程,根据文件类型对文件进行加密写操作或直接进行写操作;
通过系统本地层接口调用操作系统的Close函数来关闭文件;
通过虚拟文件系统基于Hook技术拦截Close函数,并基于Hook close函数进入Hookclose流程,直至关闭文件。
基于上述,所述Hook open流程具体包括:
步骤1-1,调用Open函数打开文件,获得文件描述符FD;
步骤1-2,判断文件是否打开,是否已启动加密进程,是否存在加密路径,如果均满足,则进入步骤1-4,否则判定该文件属于忽略文件类型,直接进入步骤1-3;
步骤1-3,正常返回文件描述符FD,并结束流程;
步骤1-4,基于文件描述符FD创建一个虚拟文件描述符VFD;
步骤1-5,通过文件路径查找对应的虚拟文件VF,如果未查找到,则进入步骤1-6,如果查找到,则进入步骤1-19;
步骤1-6,判断文件大小Size是否等于0,如果等于0,则进入步骤1-7,如果大于0,则进入步骤1-13;
步骤1-7,设置虚拟文件系统的状态为临时文件;
步骤1-8,创建虚拟文件VF对象;
步骤1-9,创建临时文件对象;
步骤1-10,创建临时文件;
步骤1-11,生成随机数作为密钥明文,并调用加解密接口,通过安全模块加密所述密钥明文,得到密钥密文;
步骤1-12,将所述密钥密文以及头信息写入临时文件,并进入步骤1-19;
步骤1-13,设置虚拟文件系统的状态为加密文件;
步骤1-14,创建虚拟文件VF对象;
步骤1-15,创建加密文件对象;
步骤1-16,读取加密文件头信息,并从中提取密钥密文;
步骤1-17,调用加解密接口,通过安全模块解密所述密钥密文,得到密钥明文;
步骤1-18,创建文件代码对象,配置文件加密参数,并进入步骤1-19;
步骤1-19,由虚拟文件描述符VFD保存虚拟文件VF的智能指针对象;
步骤1-20,将虚拟文件描述符VFD和文件描述符FD保存到全局VFDSet中;
步骤1-21,返回文件描述符FD,并结束流程。
基于上述,所述Hook write流程具体包括:
步骤2-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤2-2,如果查找到,则进入步骤2-3;
步骤2-2,调用操作系统自带的Write函数对文件进行写操作,并结束流程;
步骤2-3,通过虚拟文件描述符VFD查找获得虚拟文件VF对象;
步骤2-4,调用虚拟文件VF的Vwrite函数,如果不能成功调用,则进入步骤2-5,如果能够成功调用,则进入步骤2-15;
步骤2-5,判断虚拟文件系统VFS的状态,如果为加密文件,则进入步骤2-6,如果为临时文件,则进入步骤2-10;
步骤2-6,调整文件偏移量,跳过加密文件头,直接定位到加密文件的文件内容部分;
步骤2-7,调用加密文件的Write函数向所述文件内容部分写入数据;
步骤2-8,调用文件代码的加解密接口通过安全模块对写入数据进行加密处理,得到数据密文;
步骤2-9,调用操作系统的Write函数将数据密文写入真实的文件中,并进入步骤2-15;
步骤2-10,调用文件代码的加解密接口通过安全模块对数据明文进行加密处理,得到数据密文,调用操作系统的Write函数将数据密文写入临时文件,同时将数据明文写入真实的文件中;
步骤2-11,判断写入真实的文件的字节数是否等于或超过预设字节阈值,如果是,则进入步骤2-12,如果否,则进入步骤2-15;
步骤2-12,判断真实的文件的文件类型是否属于加密文件类型,如果是,则进入步骤2-13,如果否,则直接调用操作系统的Write函数将数据明文写入真实的文件中,并进入步骤2-15;
步骤2-13,将临时文件中的内容替换到真实的文件中,并删除临时文件;
步骤2-14,切换虚拟文件系统VFS的状态为加密文件,并进入步骤2-15;
步骤2-15,返回Write结果,并结束流程。
基于上述,所述Hook read流程具体包括:
步骤3-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤3-2,如果查到,则进入步骤3-3;
步骤3-2,调用操作系统自带的Read函数对文件进行读操作,并结束流程;
步骤3-3,通过虚拟文件描述符VFD查找获得虚拟文件VF对象;
步骤3-4,调用虚拟文件VF的Vread函数,如果不能成功调用,则进入步骤3-5,如果能够成功调用,则进入步骤3-9;
步骤3-5,调整文件偏移量,跳过加密文件头,直接定位到加密文件的文件内容部分;
步骤3-6,调用加密文件的Read函数读取加密文件;
步骤3-7,调用操作系统的Read函数读取真实的文件中的数据密文;
步骤3-8,调用文件代码的加解密接口通过安全模块对所述数据密文进行解密,得到数据明文;
步骤3-9,返回Read结果,并结束流程。
基于上述,所述Hook close流程具体包括:
步骤4-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤4-2,如果查找到,则进入步骤4-3;
步骤4-2,调用操作系统自带的Close函数,关闭真实的文件;
步骤4-3,从全局VFDSet中删除虚拟文件描述符VFD的记录信息;
步骤4-4,判断虚拟文件VF引用计数是否等于0,如果等于0,则进入步骤4-5,如果大于0,则直接进入步骤4-12;
步骤4-5,调用虚拟文件VF的Vclose函数;
步骤4-6,判断虚拟文件系统VFS的状态,如果为临时文件,则进入步骤4-7,如果为加密文件,则直接进入步骤4-10;
步骤4-7,调用临时文件的Close函数,关闭临时文件;
步骤4-8,判断真实的文件的文件类型是否属于加密文件类型,如果是,则将临时文件中的内容替换到真实的文件中,并进入步骤4-9,如果否,则直接进入步骤4-9;
步骤4-9,删除临时文件;
步骤4-10,删除虚拟文件VF对象,并进入步骤4-11;
步骤4-11,释放虚拟文件描述符VFD对象;
步骤4-12,调用操作系统自带的Close函数关闭真实的文件,并结束流程。
本发明第二方面还提出一种基于应用程序的透明加解密系统,包括:文件系统调用接口拦截层,虚拟文件系统层和文件系统调用层;
所述文件系统调用接口拦截层,基于hook技术拦截系统libc库函数中指定的I/O函数,以接收应用程序的文件访问请求并进入所述虚拟文件系统层;
所述虚拟文件系统层,判断真实的文件的文件类型,根据所述文件类型执行相应决策:当所述文件类型为加密文件时,执行决策:调用加解密接口对文件内容进行加解密处理;
当所述文件类型为忽略文件时,执行决策:无需对此文件进行加解密处理;
否则执行决策:在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;
所述文件系统调用层,用于接收所述虚拟文件系统层的调用并进入内核,在内核态通过内核虚拟文件系统接口操作真实文件,将文件系统调用层传递的加密数据写入文件或读出加密数据到文件系统调用层。
本发明的加解密过程相对透明,对应用产生的文件,保存的时候加密存盘,打开的时候解密打开。而终端用户正常工作时不会感觉到加解密过程的存在。本发明透明加解密方案的实现原理相当于是在系统I/O调用层之上增加了一层代理层,代理所有对文件的操作。代理层需要维护文件的加解密状态,由于一个物理文件可能会被打开多次,操作系统分配多个不同的文件描述符FD,因此代理层还需要维护物理文件与多个文件描述符FD的映射关系,以及多线程情况下,全局数据的访问处理。
本发明通过对文件进行分类,并针对不同的文件类型执行不同的决策;文件类型为加密文件时,调用加解密接口对文件内容进行加解密处理;文件类型为忽略文件时,无需对此文件进行加解密处理;对于无法判断真实的文件的文件类型的,则在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;通过上述方案实现对所有类型文件的透明加解密处理,防止因为无法判断真实的文件的文件类型而不对文件进行家寂灭
本发明使用流加密方式对文件加解密,即一个文件对应一个随机的密钥明文,进而能够形成以文件为单位的细粒度加解密方案。同时本发明还将密钥密文存储在被加密文件的头部信息中,在对文件中的数据进行加解密处理时,需要调用安全模块对密钥密文进行解密以得到密钥明文,再通过密钥明文对数据进行加解密处理,在实现以文件为单位的细粒度加解密方案的同时,进一步保护每个文件对应的密钥明文。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明一种基于应用程序的透明加解密方法的流程图;
图2示出了本发明一种基于应用程序的透明加解密系统的基本框架图;
图3示出了本发明基于文件的Write加密流程图;
图4示出了本发明Hook open的流程图;
图5示出了本发明Hook write的流程图;
图6示出了本发明基于文件的Read解密流程图;
图7示出了本发明Hook read的流程图;
图8示出了本发明Hook close的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了本发明一种基于应用程序的透明加解密方法的流程图。
如图1所示,本发明第一方面提出一种基于应用程序的透明加解密方法,所述方法包括以下步骤:
接收应用程序的文件访问请求;
通过系统本地层接口调用操作系统libc库函数中指定的I/O函数来操作文件;
通过虚拟文件系统基于Hook技术拦截操作系统的I/O函数;
由所述虚拟文件系统判断真实的文件的文件类型,根据所述文件类型执行相应决策:
当所述文件类型为加密文件时,执行决策:调用加解密接口对文件内容进行加解密处理;
当所述文件类型为忽略文件时,执行决策:无需对此文件进行加解密处理;
否则执行决策:在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;
继续调用操作系统的I/O函数来操作文件。
根据本发明的实施例,所述文件类型包括以下两种类型:加密文件和忽略文件。
虚拟文件系统是通过判断文件的类型来决定是否需要加密,文件类型写在文件的开头。
当判断所述文件类型为加密文件时,则应用程序操作文件时,需要由虚拟文件系统调用加解密接口对文件进行加解密处理。具体的,需要加解密处理的加密文件类型至少包括UTF-8 Unicode (with BOM) 文本、Microsoft Office文件、Zip文件、PDF文件、JPEG图片数据、PNG图片数据。
当判断所述文件类型为忽略文件时,则说明此文件无需进行加解密处理,且虚拟文件系统不作任何处理,由操作系统本身的文件系统进行操作。
然而,对于创建一个新文件这种情况,由于文件Size为0,则此时无法判断真实文件的文件类型。故,此时需要在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;并将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;等写入真实的文件中的字节数等于预设字节阈值后,再去判断真实的文件的文件类型。
以预设字节阈值等于100字节为例,当写入真实的文件中的字节数大于或等于100个字节时,判断真实的文件的文件类型是否属于加密文件类型,若属于则将临时文件中的内容替换到真实的文件中,并将临时文件删除,同时切换虚拟文件系统VFS的状态为加密文件,继续执行加密文件对应的决策;若不属于,则直接将数据写入真实的文件中,并删除临时文件,下次对该文件进行读写请求时,所述虚拟文件系统会判断该文件为忽略文件;
当数据写入完成且写入字节数小于100字节时,则在关闭文件时,进一步判断真实的文件的文件类型是否属于加密文件类型,若属于,则将临时文件中的内容替换到真实的文件中,并将临时文件删除,下次对该文件进行读写请求时,所述虚拟文件系统会判断该文件为加密文件;若不需要加密,则直接删除临时文件,下次对该文件进行读写请求时,所述虚拟文件系统会判断该文件为忽略文件。
图2示出了本发明一种基于应用程序的透明加解密系统的基本框架图。
如图2所示,所述透明加解密系统包括:文件系统调用接口拦截层,虚拟文件系统层和文件系统调用层;
所述文件系统调用接口拦截层,基于hook技术拦截系统libc库函数中指定的I/O函数,以接收应用程序的文件访问请求并进入所述虚拟文件系统层;
所述虚拟文件系统层,判断真实的文件的文件类型,根据所述文件类型执行相应决策:当所述文件类型为加密文件时,执行决策:调用加解密接口对文件内容进行加解密处理;当所述文件类型为忽略文件时,执行决策:无需对此文件进行加解密处理;否则执行决策:在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;
所述文件系统调用层,用于接收所述虚拟文件系统层的调用并进入内核,在内核态通过内核虚拟文件系统接口操作真实文件,将文件系统调用层传递的加密数据写入文件或读出加密数据到文件系统调用层。
在实际应用中,应用层对文件的操作是通过Libc库中的open/read/write这些I/O函数操作手机存储系统,应用层通过JNI调用Linux系统的I/O函数操作文件,在Native层增加了代理层即虚拟文件系统,拦截Libc的open/read/write等I/O函数。这样当应用层有文件I/O操作时,都会先走到虚拟文件系统层,虚拟文件系统层决策是否需要对文件加密/解密,然后调用加解密接口对数据进行加密/解密,最终再调用系统I/O函数,操作系统文件系统。
具体的,虚拟文件系统拦截的libc库函数至少包括:faccessat、__openat、fchmodat、fchownat、renameat、fstatat64、__statfs、__statfs64、mkdirat、mknodat、truncate、linkat、readlinkat、unlinkat、symlinkat、utimensat、__getcwd、chdir、execve、kill、vfork、access、stat、lstat、fstatat、close、read、write、__mmap2、munmap、pread64、pwrite64、fstat、__llseek、lseek、ftruncate64、sendfile、sendfile64、dup、dup3以及fcntl。
根据本发明的实施例,所述虚拟文件系统通过虚拟文件描述符VFD和虚拟文件VF来操作真实的文件;
所述虚拟文件描述符VFD与真实的文件描述符FD一一对应,所述虚拟文件系统保存文件描述符FD与虚拟文件描述符VFD的对应关系,每打开一次文件,则会创建一个虚拟文件描述符VFD,关闭文件时销毁虚拟文件描述符VFD对象;
所述虚拟文件VF与真实的文件相对应,每个文件对应多个文件描述符FD;每个虚拟文件VF对象会被多个虚拟文件描述符VFD对象引用;虚拟文件VF对象中保存真实的文件路径;虚拟文件VF持有操作加密文件和临时文件的对象,虚拟文件VF通过加密文件或临时文件去读写文件;虚拟文件系统保存虚拟文件VF和真实的文件路径的对应关系,当所有的文件操作结束后,会清除相应的对应关系记录。
需要说明的是,本发明的虚拟文件系统通过虚拟文件描述符VFD和虚拟文件VF来操作真实的文件,不会直接操作真实的文件描述符FD。虚拟文件描述符VFD中会保存虚拟文件VF对象的引用,虚拟文件描述符VFD通过虚拟文件VF的读写函数来操作真实的文件。
进一步的,上述步骤4中,调用加解密接口对文件内容进行加解密处理,具体包括:
从加密文件的头部读出密钥密文;
调用加解密接口,通过安全模块采用根密钥对所述密钥密文进行解密处理,得到密钥明文;
如果需要对文件内容进行加密处理,则重新调用加解密接口,并通过安全模块采用所述密钥明文对所述文件内容进行加密处理;
如果需要对文件内容进行解密处理,则重新调用加解密接口,并通过安全模块采用所述密钥明文对所述文件内容进行解密处理。
具体的,密钥明文是一串16字节的随机数,每一个文件都会生成一个随机的密钥明文。虚拟文件系统会在加密文件开头写入加密头信息,其中加密头信息包含密钥密文,所述密钥密文是由安全模块的根密钥对密钥明文进行加密得到的。本发明可以通过调用SM4加解密接口对密钥明文进行加密,然后将密钥密文保存到加密文件的加密头信息中。解密的时候从加密文件的加密头信息中读出密钥密文,并调用SM4加解密接口解密后,拿到密钥明文,然后使用该密钥明文对文件进行解密。
进一步的,如图3所示,应用程序的文件访问请求为对文件的写请求时,执行:
通过系统本地层接口调用操作系统的Open函数来打开文件;
通过虚拟文件系统基于Hook技术拦截Open函数,并基于Hook open函数进入Hook open流程,根据文件类型解密打开文件或者直接打开文件;
通过系统本地层接口调用操作系统的Write函数来对文件进行写操作;
通过虚拟文件系统基于hook技术拦截Write函数,并基于hook write函数进入Hookwrite流程,根据文件类型对文件进行加密写操作或直接进行写操作;
通过系统本地层接口调用操作系统的Close函数来关闭文件;
通过虚拟文件系统基于Hook技术拦截Close函数,并基于Hook close函数进入Hookclose流程,直至关闭文件。
如图4所示,所述Hook open流程具体包括:
步骤1-1,调用Open函数打开文件,获得文件描述符FD;
步骤1-2,判断文件是否打开,是否已启动加密进程,是否存在加密路径,如果均满足,则进入步骤1-4,否则判定该文件属于忽略文件类型,直接进入步骤1-3;
步骤1-3,正常返回文件描述符FD,并结束流程;
步骤1-4,基于文件描述符FD创建一个虚拟文件描述符VFD;
步骤1-5,通过文件路径查找对应的虚拟文件VF,如果未查找到,则进入步骤1-6,如果查找到,则进入步骤1-19;
步骤1-6,判断文件大小Size是否等于0,如果等于0,则进入步骤1-7,如果大于0,则进入步骤1-13;
步骤1-7,设置虚拟文件系统的状态为临时文件;
步骤1-8,创建虚拟文件VF对象;
步骤1-9,创建临时文件对象;
步骤1-10,创建临时文件;
步骤1-11,生成随机数作为密钥明文,并调用加解密接口,通过安全模块加密所述密钥明文,得到密钥密文;
步骤1-12,将所述密钥密文以及头信息写入临时文件,并进入步骤1-19;
步骤1-13,设置虚拟文件系统的状态为加密文件;
步骤1-14,创建虚拟文件VF对象;
步骤1-15,创建加密文件对象;
步骤1-16,读取加密文件头信息,并从中提取密钥密文;
步骤1-17,调用加解密接口,通过安全模块解密所述密钥密文,得到密钥明文;
步骤1-18,创建文件代码对象,配置文件加密参数,并进入步骤1-19;
步骤1-19,由虚拟文件描述符VFD保存虚拟文件VF的智能指针对象;
步骤1-20,将虚拟文件描述符VFD和文件描述符FD保存到全局VFDSet中;
步骤1-21,返回文件描述符FD,并结束流程。
如图5所示,所述Hook write流程具体包括:
步骤2-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤2-2,如果查找到,则进入步骤2-3;
步骤2-2,调用操作系统自带的Write函数对文件进行写操作,并结束流程;
步骤2-3,通过虚拟文件描述符VFD查找获得虚拟文件VF对象;
步骤2-4,调用虚拟文件VF的Vwrite函数,如果不能成功调用,则进入步骤2-5,如果能够成功调用,则进入步骤2-15;
步骤2-5,判断虚拟文件系统VFS的状态,如果为加密文件,则进入步骤2-6,如果为临时文件,则进入步骤2-10;
步骤2-6,调整文件偏移量,跳过加密文件头,直接定位到加密文件的文件内容部分;
步骤2-7,调用加密文件的Write函数向所述文件内容部分写入数据;
步骤2-8,调用文件代码的加解密接口通过安全模块对写入数据进行加密处理,得到数据密文;
步骤2-9,调用操作系统的Write函数将数据密文写入真实的文件中,并进入步骤2-15;
步骤2-10,调用文件代码的加解密接口通过安全模块对数据明文进行加密处理,得到数据密文,调用操作系统的Write函数将数据密文写入临时文件,同时将数据明文写入真实的文件中;
步骤2-11,判断写入真实的文件的字节数是否等于或超过预设字节阈值,如果是,则进入步骤2-12,如果否,则进入步骤2-15;
步骤2-12,判断真实的文件的文件类型是否属于加密文件类型,如果是,则进入步骤2-13,如果否,则直接调用操作系统的Write函数将数据明文写入真实的文件中,并进入步骤2-15;
步骤2-13,将临时文件中的内容替换到真实的文件中,并删除临时文件;
步骤2-14,切换虚拟文件系统VFS的状态为加密文件,并进入步骤2-15;
步骤2-15,返回Write结果,并结束流程。
进一步的,如图6所示,应用程序的文件访问请求为对文件的读请求,执行:
通过系统本地层接口调用操作系统的Open函数来打开文件;
通过虚拟文件系统基于Hook技术拦截Open函数,并基于Hook open函数进入Hook open流程,根据文件类型解密打开文件或者直接打开文件;
通过系统本地层接口调用操作系统的Read函数来对文件进行读操作;
通过虚拟文件系统基于Hook技术拦截Read函数,并基于Hook read函数进入Hook read流程,根据文件类型对文件进行加密写操作或直接进行写操作;
通过系统本地层接口调用操作系统的Close函数来关闭文件;
通过虚拟文件系统基于Hook技术拦截Close函数,并基于Hook close函数进入Hookclose流程,直至关闭文件。
如图7所示,所述Hook read流程具体包括:
步骤3-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤3-2,如果查到,则进入步骤3-3;
步骤3-2,调用操作系统自带的Read函数对文件进行读操作,并结束流程;
步骤3-3,通过虚拟文件描述符VFD查找获得虚拟文件VF对象;
步骤3-4,调用虚拟文件VF的Vread函数,如果不能成功调用,则进入步骤3-5,如果能够成功调用,则进入步骤3-9;
步骤3-5,调整文件偏移量,跳过加密文件头,直接定位到加密文件的文件内容部分;
步骤3-6,调用加密文件的Read函数读取加密文件;
步骤3-7,调用操作系统的Read函数读取真实的文件中的数据密文;
步骤3-8,调用文件代码的加解密接口通过安全模块对所述数据密文进行解密,得到数据明文;
步骤3-9,返回Read结果,并结束流程。
如图8所示,所述Hook close流程具体包括:
步骤4-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤4-2,如果查找到,则进入步骤4-3;
步骤4-2,调用操作系统自带的Close函数,关闭真实的文件;
步骤4-3,从全局VFDSet中删除虚拟文件描述符VFD的记录信息;
步骤4-4,判断虚拟文件VF引用计数是否等于0,如果等于0,则进入步骤4-5,如果大于0,则直接进入步骤4-12;
步骤4-5,调用虚拟文件VF的Vclose函数;
步骤4-6,判断虚拟文件系统VFS的状态,如果为临时文件,则进入步骤4-7,如果为加密文件,则直接进入步骤4-10;
步骤4-7,调用临时文件的Close函数,关闭临时文件;
步骤4-8,判断真实的文件的文件类型是否属于加密文件类型,如果是,则将临时文件中的内容替换到真实的文件中,并进入步骤4-9,如果否,则直接进入步骤4-9;
步骤4-9,删除临时文件;
步骤4-10,删除虚拟文件VF对象,并进入步骤4-11;
步骤4-11,释放虚拟文件描述符VFD对象;
步骤4-12,调用操作系统自带的Close函数关闭真实的文件,并结束流程。
本发明的加解密过程相对透明,对应用产生的文件,保存的时候加密存盘,打开的时候解密打开。而终端用户正常工作时不会感觉到加解密过程的存在。本发明透明加解密方案的实现原理相当于是在系统I/O调用层之上增加了一层代理层,代理所有对文件的操作。代理层需要维护文件的加解密状态,由于一个物理文件可能会被打开多次,操作系统分配多个不同的文件描述符FD,因此代理层还需要维护物理文件与多个文件描述符FD的映射关系,以及多线程情况下,全局数据的访问处理。
本发明使用流加密方式对文件加解密,即一个文件对应一个随机的密钥明文,进而能够形成以文件为单位的细粒度加解密方案。同时本发明还将密钥密文存储在被加密文件的头部信息中,在对文件中的数据进行加解密处理时,需要调用安全模块对密钥密文进行解密以得到密钥明文,再通过密钥明文对数据进行加解密处理,在实现以文件为单位的细粒度加解密方案的同时,进一步保护每个文件对应的密钥明文。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种基于应用程序的透明加解密方法,其特征在于,包括以下步骤:
接收应用程序的文件访问请求;
通过系统本地层接口调用操作系统libc库函数中指定的I/O函数来操作文件;
通过虚拟文件系统基于Hook技术拦截操作系统的I/O函数;
由所述虚拟文件系统判断真实的文件的文件类型,根据所述文件类型执行相应决策:
当所述文件类型为加密文件时,执行决策:调用加解密接口对文件内容进行加解密处理;
当所述文件类型为忽略文件时,执行决策:无需对此文件进行加解密处理;
否则执行决策:在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;
当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;
当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;
继续调用操作系统的I/O函数来操作文件。
2.根据权利要求1所述的一种基于应用程序的透明加解密方法,其特征在于,所述虚拟文件系统通过虚拟文件描述符VFD和虚拟文件VF来操作真实的文件;
每打开一次真实的文件,则分配一个文件描述符FD,并基于所述文件描述符FD创建一个虚拟文件描述符VFD,关闭文件时销毁所述虚拟文件描述符VFD对象;
所述虚拟文件VF用于保存真实的文件路径;每个虚拟文件VF对象被多个虚拟文件描述符VFD对象引用;虚拟文件VF持有操作加密文件和临时文件的对象,通过加密文件或临时文件去读写文件;
所述虚拟文件系统保存文件描述符FD与虚拟文件描述符VFD、虚拟文件VF和真实的文件路径的对应关系,当对真实的文件的所有操作结束后,清除所述虚拟文件系统中相应的对应关系记录。
3.根据权利要求1所述的一种基于应用程序的透明加解密方法,其特征在于,调用加解密接口对文件内容进行加解密处理,具体包括:
从加密文件的头部读出密钥密文;
调用加解密接口,通过安全模块采用根密钥对所述密钥密文进行解密处理,得到密钥明文;
如果需要对文件内容进行加密处理,则重新调用加解密接口,并通过安全模块采用所述密钥明文对所述文件内容进行加密处理;
如果需要对文件内容进行解密处理,则重新调用加解密接口,并通过安全模块采用所述密钥明文对所述文件内容进行解密处理。
4.根据权利要求1所述的一种基于应用程序的透明加解密方法,其特征在于,应用程序的文件访问请求为对文件的写请求,执行:
通过系统本地层接口调用操作系统的Open函数来打开文件;
通过虚拟文件系统基于Hook技术拦截Open函数,并基于Hook open函数进入Hook open流程,根据文件类型解密打开文件或者直接打开文件;
通过系统本地层接口调用操作系统的Write函数来对文件进行写操作;
通过虚拟文件系统基于hook技术拦截Write函数,并基于hook write函数进入Hookwrite流程,根据文件类型对文件进行加密写操作或直接进行写操作;
通过系统本地层接口调用操作系统的Close函数来关闭文件;
通过虚拟文件系统基于Hook技术拦截Close函数,并基于Hook close函数进入Hookclose流程,直至关闭文件。
5.根据权利要求1所述的一种基于应用程序的透明加解密方法,其特征在于,应用程序的文件访问请求为对文件的读请求,执行:
通过系统本地层接口调用操作系统的Open函数来打开文件;
通过虚拟文件系统基于Hook技术拦截Open函数,并基于Hook open函数进入Hook open流程,根据文件类型解密打开文件或者直接打开文件;
通过系统本地层接口调用操作系统的Read函数来对文件进行读操作;
通过虚拟文件系统基于Hook技术拦截Read函数,并基于Hook read函数进入Hook read流程,根据文件类型对文件进行加密写操作或直接进行写操作;
通过系统本地层接口调用操作系统的Close函数来关闭文件;
通过虚拟文件系统基于Hook技术拦截Close函数,并基于Hook close函数进入Hookclose流程,直至关闭文件。
6.根据权利要求4或5所述的一种基于应用程序的透明加解密方法,其特征在于,所述Hook open流程具体包括:
步骤1-1,调用Open函数打开文件,获得文件描述符FD;
步骤1-2,判断文件是否打开,是否已启动加密进程,是否存在加密路径,如果均满足,则进入步骤1-4,否则判定该文件属于忽略文件类型,直接进入步骤1-3;
步骤1-3,正常返回文件描述符FD,并结束流程;
步骤1-4,基于文件描述符FD创建一个虚拟文件描述符VFD;
步骤1-5,通过文件路径查找对应的虚拟文件VF,如果未查找到,则进入步骤1-6,如果查找到,则进入步骤1-19;
步骤1-6,判断文件大小Size是否等于0,如果等于0,则进入步骤1-7,如果大于0,则进入步骤1-13;
步骤1-7,设置虚拟文件系统的状态为临时文件;
步骤1-8,创建虚拟文件VF对象;
步骤1-9,创建临时文件对象;
步骤1-10,创建临时文件;
步骤1-11,生成随机数作为密钥明文,并调用加解密接口,通过安全模块加密所述密钥明文,得到密钥密文;
步骤1-12,将所述密钥密文以及头信息写入临时文件,并进入步骤1-19;
步骤1-13,设置虚拟文件系统的状态为加密文件;
步骤1-14,创建虚拟文件VF对象;
步骤1-15,创建加密文件对象;
步骤1-16,读取加密文件头信息,并从中提取密钥密文;
步骤1-17,调用加解密接口,通过安全模块解密所述密钥密文,得到密钥明文;
步骤1-18,创建文件代码对象,配置文件加密参数,并进入步骤1-19;
步骤1-19,由虚拟文件描述符VFD保存虚拟文件VF的智能指针对象;
步骤1-20,将虚拟文件描述符VFD和文件描述符FD保存到全局VFDSet中;
步骤1-21,返回文件描述符FD,并结束流程。
7.根据权利要求4所述的一种基于应用程序的透明加解密方法,其特征在于,所述Hookwrite流程具体包括:
步骤2-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤2-2,如果查找到,则进入步骤2-3;
步骤2-2,调用操作系统自带的Write函数对文件进行写操作,并结束流程;
步骤2-3,通过虚拟文件描述符VFD查找获得虚拟文件VF对象;
步骤2-4,调用虚拟文件VF的Vwrite函数,如果不能成功调用,则进入步骤2-5,如果能够成功调用,则进入步骤2-15;
步骤2-5,判断虚拟文件系统VFS的状态,如果为加密文件,则进入步骤2-6,如果为临时文件,则进入步骤2-10;
步骤2-6,调整文件偏移量,跳过加密文件头,直接定位到加密文件的文件内容部分;
步骤2-7,调用加密文件的Write函数向所述文件内容部分写入数据;
步骤2-8,调用文件代码的加解密接口通过安全模块对写入数据进行加密处理,得到数据密文;
步骤2-9,调用操作系统的Write函数将数据密文写入真实的文件中,并进入步骤2-15;
步骤2-10,调用文件代码的加解密接口通过安全模块对数据明文进行加密处理,得到数据密文,调用操作系统的Write函数将数据密文写入临时文件,同时将数据明文写入真实的文件中;
步骤2-11,判断写入真实的文件的字节数是否等于或超过预设字节阈值,如果是,则进入步骤2-12,如果否,则进入步骤2-15;
步骤2-12,判断真实的文件的文件类型是否属于加密文件类型,如果是,则进入步骤2-13,如果否,则直接调用操作系统的Write函数将数据明文写入真实的文件中,并进入步骤2-15;
步骤2-13,将临时文件中的内容替换到真实的文件中,并删除临时文件;
步骤2-14,切换虚拟文件系统VFS的状态为加密文件,并进入步骤2-15;
步骤2-15,返回Write结果,并结束流程。
8.根据权利要求5所述的一种基于应用程序的透明加解密方法,其特征在于,所述Hookread流程具体包括:
步骤3-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤3-2,如果查到,则进入步骤3-3;
步骤3-2,调用操作系统自带的Read函数对文件进行读操作,并结束流程;
步骤3-3,通过虚拟文件描述符VFD查找获得虚拟文件VF对象;
步骤3-4,调用虚拟文件VF的Vread函数,如果不能成功调用,则进入步骤3-5,如果能够成功调用,则进入步骤3-9;
步骤3-5,调整文件偏移量,跳过加密文件头,直接定位到加密文件的文件内容部分;
步骤3-6,调用加密文件的Read函数读取加密文件;
步骤3-7,调用操作系统的Read函数读取真实的文件中的数据密文;
步骤3-8,调用文件代码的加解密接口通过安全模块对所述数据密文进行解密,得到数据明文;
步骤3-9,返回Read结果,并结束流程。
9.根据权利要求4或5所述的一种基于应用程序的透明加解密方法,其特征在于,所述Hook close流程具体包括:
步骤4-1,通过文件描述符FD查找对应的虚拟文件描述符VFD,如果未查到,则判定该文件属于忽略文件类型,直接进入步骤4-2,如果查找到,则进入步骤4-3;
步骤4-2,调用操作系统自带的Close函数,关闭真实的文件;
步骤4-3,从全局VFDSet中删除虚拟文件描述符VFD的记录信息;
步骤4-4,判断虚拟文件VF引用计数是否等于0,如果等于0,则进入步骤4-5,如果大于0,则直接进入步骤4-12;
步骤4-5,调用虚拟文件VF的Vclose函数;
步骤4-6,判断虚拟文件系统VFS的状态,如果为临时文件,则进入步骤4-7,如果为加密文件,则直接进入步骤4-10;
步骤4-7,调用临时文件的Close函数,关闭临时文件;
步骤4-8,判断真实的文件的文件类型是否属于加密文件类型,如果是,则将临时文件中的内容替换到真实的文件中,并进入步骤4-9,如果否,则直接进入步骤4-9;
步骤4-9,删除临时文件;
步骤4-10,删除虚拟文件VF对象,并进入步骤4-11;
步骤4-11,释放虚拟文件描述符VFD对象;
步骤4-12,调用操作系统自带的Close函数关闭真实的文件,并结束流程。
10.一种基于应用程序的透明加解密系统,其特征在于,包括:文件系统调用接口拦截层,虚拟文件系统层和文件系统调用层;
所述文件系统调用接口拦截层,基于hook技术拦截操作系统libc库函数中指定的I/O函数,以接收应用程序的文件访问请求并进入所述虚拟文件系统层;
所述虚拟文件系统层,判断真实的文件的文件类型,根据所述文件类型执行相应决策:
当所述文件类型为加密文件时,执行决策:调用加解密接口对文件内容进行加解密处理;
当所述文件类型为忽略文件时,执行决策:无需对此文件进行加解密处理;
否则执行决策:在虚拟文件系统中创建临时文件,并调用加解密接口生成密钥密文,写入临时文件头部;将数据明文写入真实的文件中,将数据明文加密后写入临时文件中;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型属于加密文件类型时,将临时文件中的内容替换到真实的文件中,删除临时文件,并将所述文件类型修改为加密文件,继续执行加密文件对应的决策;当写入真实的文件中的字节数大于等于预设字节阈值且文件类型不属于加密文件类型时,继续执行忽略文件对应的决策,并删除临时文件;
所述文件系统调用层,用于接收所述虚拟文件系统层的调用并进入内核,在内核态通过内核虚拟文件系统接口操作真实文件,将文件系统调用层传递的加密数据写入文件或读出加密数据到文件系统调用层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010668356.8A CN111832053A (zh) | 2020-07-13 | 2020-07-13 | 一种基于应用程序的透明加解密方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010668356.8A CN111832053A (zh) | 2020-07-13 | 2020-07-13 | 一种基于应用程序的透明加解密方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111832053A true CN111832053A (zh) | 2020-10-27 |
Family
ID=72899859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010668356.8A Withdrawn CN111832053A (zh) | 2020-07-13 | 2020-07-13 | 一种基于应用程序的透明加解密方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111832053A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112560068A (zh) * | 2020-12-28 | 2021-03-26 | 山东云缦智能科技有限公司 | 一种Android程序存储加密的方法 |
CN112966301A (zh) * | 2021-03-05 | 2021-06-15 | 深圳市联软科技股份有限公司 | 免人工改造的业务应用文件管理系统、读写及打开方法 |
CN114745495A (zh) * | 2021-01-07 | 2022-07-12 | 北京小米移动软件有限公司 | 图像生成方法、装置及存储介质 |
-
2020
- 2020-07-13 CN CN202010668356.8A patent/CN111832053A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112560068A (zh) * | 2020-12-28 | 2021-03-26 | 山东云缦智能科技有限公司 | 一种Android程序存储加密的方法 |
CN114745495A (zh) * | 2021-01-07 | 2022-07-12 | 北京小米移动软件有限公司 | 图像生成方法、装置及存储介质 |
CN114745495B (zh) * | 2021-01-07 | 2023-06-23 | 北京小米移动软件有限公司 | 图像生成方法、装置及存储介质 |
CN112966301A (zh) * | 2021-03-05 | 2021-06-15 | 深圳市联软科技股份有限公司 | 免人工改造的业务应用文件管理系统、读写及打开方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111832053A (zh) | 一种基于应用程序的透明加解密方法和系统 | |
US9680876B2 (en) | Method and system for protecting data flow at a mobile device | |
CN104331644B (zh) | 一种智能终端文件的透明加解密方法 | |
US8141159B2 (en) | Method and system for protecting confidential information | |
CN103403669B (zh) | 使app变得安全的方法和防止app损坏设备的方法 | |
CN103023875B (zh) | 一种账户管理系统及方法 | |
US20120304310A1 (en) | Secure execution of unsecured apps on a device | |
CN103106372A (zh) | 用于Android系统的轻量级隐私数据加密方法及系统 | |
CN101853363A (zh) | 一种文件保护方法及系统 | |
CN103020531A (zh) | Android智能终端运行环境可信控制方法及系统 | |
CN109325355A (zh) | 基于虚拟磁盘的移动终端数据安全存储方法 | |
CN103390026A (zh) | 一种移动智能终端安全浏览器及其工作方法 | |
CN108509802A (zh) | 一种应用程序数据防泄密方法和装置 | |
CN105975867B (zh) | 一种数据处理方法 | |
CN112417484A (zh) | 资源文件保护方法、装置、计算机设备和存储介质 | |
US20040139317A1 (en) | Methods for improved security of software applications | |
CN102207914A (zh) | 装载应用程序的硬件加密tf卡 | |
CN105453104B (zh) | 系统保护用文件安全管理装置和管理方法 | |
Kandukuru et al. | Android malicious application detection using permission vector and network traffic analysis | |
CN108763401A (zh) | 一种文件的读写方法及设备 | |
Hall et al. | An assured deletion technique for cloud-based IoT | |
CN106254364A (zh) | 一种多网络隔离环境下的计算机桌面服务访问装置及方法 | |
CN109065077B (zh) | 加密光盘制作方法和装置 | |
CN111143879A (zh) | 一种Android平台SD卡文件保护方法、终端设备及存储介质 | |
CN108388792A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201027 |