CN111460516A - 基于非侵入式的数据保护方法、装置、终端及存储介质 - Google Patents
基于非侵入式的数据保护方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN111460516A CN111460516A CN202010574398.5A CN202010574398A CN111460516A CN 111460516 A CN111460516 A CN 111460516A CN 202010574398 A CN202010574398 A CN 202010574398A CN 111460516 A CN111460516 A CN 111460516A
- Authority
- CN
- China
- Prior art keywords
- specified
- data
- file
- parameter
- type file
- 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
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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- 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)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Storage Device Security (AREA)
Abstract
本公开提供了一种基于非侵入式的数据保护方法、装置、终端及存储介质,属于互联网技术领域。方法包括:生成用于在指定参数的参数值中插入字节码的字节码插桩子类;响应于对指定参数的参数值的读写操作,基于该字节码插桩子类在参数值中插入字节码。本公开通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
Description
技术领域
本公开涉及互联网技术领域,特别涉及一种基于非侵入式的数据保护方法、装置、终端及存储介质。
背景技术
在现代生活中,为了满足使用需求,很多用户会在终端内安装各种应用程序,例如,社交应用程序、支付应用程序、购物应用程序、导航应用程序等。由于这些应用程序在注册或使用过程中可能会获取到涉及用户隐私信息的数据,例如,手机号码、身份证号、银行卡账号和密码等,这些数据一旦被不法分子窃取可能给用户造成不必要的经济损失,因此,为了保护用户的隐私信息,需要对应用程序的数据进行保护。
相关技术在对应用程序的数据进行保护时,通常会将应用程序中涉及用户隐私信息的数据存储到应用程序的后台服务器,当因业务需求需要使用这些数据时,可通过互联网从后台服务器中获取这些数据。
然而,由于网络环境比较复杂,当网络状况不佳时,应用程序可能无法从后台服务器获取到所需数据,导致应用程序的功能无法实现,甚至影响应用程序的正常使用。且存储在后台服务器中的数据也存在被窃取的风险,一旦被窃取,用户的隐私信息将被泄露。
发明内容
本公开实施例提供了一种基于非侵入式的数据保护方法、装置、终端及存储介质,在网络状态不佳时也能实现对应用程序的数据保护。所述技术方案如下几方面的内容。
一方面,提供了一种基于非侵入式的数据保护方法,所述方法包括:
获取待保护的应用程序的源文件;
将所述应用程序的源文件进行转换处理,得到第一指定类型文件;
重写用于对所述第一指定类型文件进行修改的指定接口;
基于重写的指定接口,将所述第一指定类型文件在读写场景下的输出修改为保护后的数据;
基于所述重写的指定接口对所述第一指定类型文件中的参数进行解析,得到待保护的指定参数;
根据所述指定参数,生成用于在所述指定参数的参数值中插入字节码的字节码插桩子类;
将所述字节码插桩子类嵌入到所述第一指定类型文件中,得到第二指定类型文件;
将所述第二指定类型文件转换为可执行的第三指定类型文件;
响应于对所述第三指定类型文件中指定参数的参数值的读写操作,在所述指定参数的参数值中插入字节码,输出保护后的参数值。
另一方面,提供了一种基于非侵入式的数据保护装置,所述装置包括:
获取模块,用于获取待保护的应用程序的源文件;
转换模块,用于将所述应用程序的源文件进行转换处理,得到第一指定类型文件;
重写模块,用于重写用于对所述第一指定类型文件进行修改的指定接口;
修改模块,用于基于重写的指定接口,将所述第一指定类型文件在读写场景下的输出修改为保护后的数据;
解析模块,用于基于所述重写的指定接口对所述第一指定类型文件中的参数进行解析,得到待保护的指定参数;
生成模块,用于根据所述指定参数,生成用于在所述指定参数的参数值中插入字节码的字节码插桩子类;
嵌入模块,用于将所述字节码插桩子类嵌入到所述第一指定类型文件中,得到第二指定类型文件;
所述转换模块,还用于将所述第二指定类型文件转换为可执行的第三指定类型文件;
插入模块,用于响应于对所述第三指定类型文件中指定参数的参数值的读写操作,在所述指定参数的参数值中插入字节码,输出保护后的参数值。
另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现一方面所述的基于非侵入式的数据保护方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现一方面所述的基于非侵入式的数据保护方法。
另一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面的各种可选实现方式中提供的方法。
本公开实施例提供的技术方案带来的有益效果是:通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
本公开实施例提供的方法,对于应用程序运行过程中产生的涉密数据,通过在这些数据中插入字节码,使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的内容,因而能够对使用应用程序过程中产生的数据进行保护。
本公开实施例提供的方法,对于开发过程中数据库中的数据结构以及配置数据,通过在这些数据中插入字节码,同样使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的结构,因而能够对应用程序开发过程中产生的数据进行保护。
本公开实施例提供的方法,开发人员在开发过程中无论使用任何编程语言、任何数据库均可在未更改业务代码的情况下,对业务代码进行非侵入式的加解密,从而达到数据保护的目的。
本公开实施例提供的方法,采用插桩方式无需hook数据操作,即可实现对数据的保护,极大缓解因权限问题造成的运行异常。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种基于非侵入式的数据保护方法所涉及的实施环境;
图2是本公开实施例提供的一种数据保护框架的示意图;
图3是本公开实施例提供的一种字节码插桩位置的示意图;
图4是本公开实施例提供的一种基于非侵入式的数据保护方法流程图;
图5是本公开实施例提供的一种基于非侵入式的数据保护方法流程图;
图6是本公开实施例提供的一种字节码插桩的流程图;
图7是本公开实施例提供的一种字节码插桩插件的实现过程的流程图;
图8是本公开实施例提供的一种鉴权流程图;
图9是本公开实施例提供的一种基于非侵入式的数据保护装置的结构示意图;
图10示出了本公开一个示例性实施例提供的终端的结构框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
可以理解,本公开实施例所使用的术语“每个”、“多个”及“任一”等,多个包括两个或两个以上,每个是指对应的多个中的每一个,任一是指对应的多个中的任意一个。举例来说,多个词语包括10个词语,而每个词语是指这10个词语中的每一个词语,任一词语是指10个词语中的任意一个词语。
在执行本公开实施例之前,首先对本公开实施例涉及的名词进行解释。
非侵入式是相对侵入式而言的,非侵入式能够将应用程序客户端的功能应用到操作系统框架中,还能够为应用程序客户端的实现框架提供接口,且非侵入式的代码能够迁移到其他框架中。
插桩:将一段代码通过某种策略插入到另一段代码中,或替换另一段代码。这里所述的代码包括源代码和字节码,本公开实施例中的插桩为字节码插桩。
IDE(Integrated Development Environment,集成开发环境):用于提供应用
程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。IDE集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
Content Provider:为安卓系统四大组件之一,用于为不同的应用程序之间的数据共享提供统一的接口。
Chrome DevTools:为一套内嵌在chrome浏览器内部的Web编写和调试工具。DevTools提供给Web开发人员深入地访问浏览器内部和Web应用程序的机会,能够有效地跟踪布局问题,设置JavaScript断点,以及进行javascript代码的优化。
Transform API(Application Programming Interface,应用程序接口):为将.class文件转换成.dex文件之前预留的接口,在该接口中可以通过插件形式来修改.class文件。
Apply方法:能够拦截其他对象的方法,并继承所拦截对象的属性。
App Extension:用于扩展应用程序的自定义功能和内容,当用户与其他应用程序或者系统进行交互时可以应用App Extension。
接下来对本公开实施例涉及的云安全和数据库内容进行介绍。
云安全(Cloud Security) 是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1、云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2、安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3、云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
DBMS(Database Management System,数据库管理系统)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。DBMS可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible Markup Language,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(Structured Query Language,结构化查询语言)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本公开实施例提供了一种基于非侵入式的数据保护方法所涉及的实施环境,参见图1,该实施环境包括终端。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端中安装有应用程序,该应用程序包括应用层、适配层、加密层及文件存储层等。
其中,应用层为应用程序中数据的主要调用者,可为开发人员提供应用程序开发所需的IDE,还可向用户提供预览及编辑等服务。应用层可以接收开发人员或用户写入的数据,开发人员一般在应用程序的编译期写入数据,用户一般在应用程序的运行期写入数据。应用层对开发人员来说,通常是可见的,因而在编译期开发人员可对数据库表结构进行创建及更改,或者对Content Provider等名字及路径进行定义。在本公开实施例中,应用层主要提供用户鉴权服务,以满足系统完备性需求。
适配层对开发人员来说,也是可见的,开发人员可在该层固化字节码插桩任务,并通过字节码插桩方式为应用层提供本地数据读写的加解密能力。采用该方式,适配层能够隔离业务代码与本地数据的操作,将业务代码中的DB(Database,数据库)操作或SharedPreference操作进行非浸入式拦截并插入字节码。对于数据库操作而言,业务代码可以使用Sqlite原生API操作数据,也可以使用ROOM(Real-time Object-OrientedModeling,实时对象模型)框架封装下API操作数据,还可以使用第三方封装的API操作数据。由于开发人员可以灵活使用各种第三方数据库框架进行数据处理,无需对需要加密的数据进行预先埋点,即可一键接入集成本公开实施例的数据保护框架,因而能在高效保护数据安全的同时,兼顾运行环境的兼容性。
在计算机领域,字节码插桩主要针对.class文件,该.class文件可由开发人员对.java源文件、.kt源文件等源文件转换后得到。参见图3,插桩点的位置为.class文件之后且.dex文件之前。本公开实施例通过将源文件转换成的.class文件中插入适配的字节码,可实现对应用程序中数据的保护。
数据加密层主要为适配层提供数据加解密服务,能够对适配层拦截的数据快速进行加密或解密。
文件存储层主要用于存储数据。
基于图2,本公开实施例提供的基于非侵入式的数据保护的流程包括以下步骤。
预先在适配层固化字节码插桩任务。
在数据读取场景下,终端从文件存储层获取数据,并在数据解密层对数据进行解密,该解密过程包括对应用程序上下文内数据进行解密和采用IDE等工具进行解密。终端将解密后的数据发送至适配层,适配层的拦截器拦截解密后的数据,并在数据中插入字节码,将插入字节码后的数据发送至应用层。如果应用程序处于编译期,则可基于适配层发送的数据进行编码,该编码过程包括Assemble任务和Provider定义等。如果应用程序处于运行期,则将数据直接提供给用户。
在数据写入场景下,适配层获取用户或开发人员输入的数据,并在获取的数据中插入字节码,拦截器拦截插入字节码后的数据,并将拦截到的数据发送至数据加密层,数据加密层对该数据进行加密,并将加密后的数据发送至文件存储层,由文件存储层进行存储。
本公开实施例提供了一种基于非侵入式的数据保护方法,参见图4,本公开实施例提供的方法流程包括以下步骤。
401、获取待保护的应用程序的源文件。
402、将应用程序的源文件进行转换处理,得到第一指定类型文件。
403、重写用于对第一指定类型文件进行修改的指定接口。
404、基于重写的指定接口,将第一指定类型文件在读写场景下的输出修改为保护后的数据。
405、基于重写的指定接口对第一指定类型文件中的参数进行解析,得到待保护的指定参数。
406、根据指定参数,生成用于在指定参数的参数值中插入字节码的字节码插桩子类。
407、将字节码插桩子类嵌入到第一指定类型文件中,得到第二指定类型文件。
408、将第二指定类型文件转换为可执行的第三指定类型文件。
409、响应于对第三指定类型文件中指定参数的参数值的读写操作,在指定参数的参数值中插入字节码,输出保护后的参数值。
本公开实施例提供的方法,通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
本公开实施例提供的方法,对于应用程序运行过程中产生的涉密数据,通过在这些数据中插入字节码,使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的内容,因而能够对使用应用程序过程中产生的数据进行保护。
本公开实施例提供的方法,对于开发过程中数据库中的数据结构以及配置数据,通过在这些数据中插入字节码,同样使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的结构,因而能够对应用程序开发过程中产生的数据进行保护。
本公开实施例提供的方法,开发人员在开发过程中无论使用任何编程语言、任何数据库均可在未更改业务代码的情况下,对业务代码进行非侵入式的加解密,从而达到数据保护的目的。
本公开实施例提供的方法,采用插桩方式无需hook数据操作,即可实现对数据的保护,极大缓解因权限问题造成的运行异常。
在本公开的另一个实施例中,将字节码插桩子类嵌入到第一指定类型文件中,得到第二指定类型文件,包括:
将字节码插桩子类注册为第一指定类型文件中的字节码插桩插件,得到第二指定类型文件。
在本公开的另一个实施例中,将字节码插桩子类注册为第一指定类型文件中的字节码插桩插件,得到第二指定类型文件,包括:
预定义字节码插桩子类在第一指定类型文件中对应的插件;
重写用于继承所拦截对象的属性的对象继承方法;
基于重写的对象继承方法,将字节码插桩子类对应的插件注册到用于为应用程序提供扩展功能的应用扩展程序中;
通过为注册到应用扩展程序中的字节码插桩子类对应的插件确定插件范围,将字节码插桩子类注册为第一指定类型文件中的字节码插桩插件。
在本公开的另一个实施例中,在指定参数的参数值中插入字节码之前,还包括:
根据应用程序的读写类型,对字节码插桩操作进行鉴权;
响应于通过对字节码插桩操作的鉴权,执行在指定参数的参数值中插入字节码的操作。
在本公开的另一个实施例中,应用程序的读写类型为系统外读写,根据应用程序的读写类型,对字节码插桩操作进行鉴权,包括:
获取对应用程序内文件进行校验得到的文件校验值;
响应于文件校验值与预设数值相匹配,确定通过对字节码插桩操作的鉴权。
在本公开的另一个实施例中,应用程序的读写类型为系统内读写,根据应用程序的读写类型,对字节码插桩操作进行鉴权,包括:
获取应用程序安装包的签名信息;
根据应用程序安装包的签名信息,确定应用程序安装包的打包次数;
响应于应用程序安装包的打包次数为一次,且指定文件内的签名信息与预设签名信息相匹配,确定通过对字节码插桩操作的鉴权。
在本公开的另一个实施例中,在指定参数的参数值中插入字节码之后,还包括:
根据当前执行操作的用户标识,确定对保护后的参数值的读写权限。
在本公开的另一个实施例中,响应于对第三指定类型文件中指定参数的参数值的读写操作,在指定参数的参数值中插入字节码,包括:
响应于对第三指定类型文件中指定参数的参数值的读操作,采用预先存储的私钥对指定参数的参数值进行解密,在解密后的参数值中插入字节码。
在本公开的另一个实施例中,响应于对第三指定类型文件中指定参数的参数值的读写操作,在指定参数的参数值中插入字节码之后,还包括:
响应于对第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对保护后的参数值进行加密。
在本公开的另一个实施例中,响应于对第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对保护后的参数值进行加密,包括:
响应于对第三指定类型文件中指定参数的参数值的写操作,且保护后的参数值为实参数据,采用公钥对保护后的参数值进行加密。
在本公开的另一个实施例中,响应于对第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对保护后的参数值进行加密,包括:
响应于对第三指定类型文件中指定参数的参数值的写操作,且保护后的参数值为包含在实参数据中的字符串数据,获取字符串数据所属语句;
从语句中获取指定字段值;
采用公钥对指定字段值进行加密。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本公开实施例提供了一种基于非侵入式的数据保护方法,参见图5,本发明实施例提供的方法流程包括以下步骤。
501、终端获取待保护的应用程序的源文件。
其中,待保护的应用程序可以为涉及到用户隐私信息的应用程序,例如,社交应用程序、支付应用程序、购物应用程序、导航应用程序等。应用程序的源文件为应用程序的开发人员编写的文件,该源文件包括应用程序的全部数据。
502、终端将应用程序的源文件进行转换处理,得到第一指定类型文件。
其中,第一指定类型文件可以为将应用程序的源文件转换后的全部文件,例如,所有的.class文件;第一指定类型文件还可以为将应用程序的源文件转换后的部分文件,例如,SQLiteDatabase.class文件、SharedPreference.class文件等。
503、终端重写用于对第一指定类型文件进行修改的指定接口。
其中,指定接口为将第一指定类型文件转换为第一指定类型文件之前用于对第一指定类型文件进行修改的接口,该指定接口可以为Transform API。
以指定接口为Transform API为例,终端重写Transform API时,可在自定义的groovy目录下新建一个groovy类,该 groovy类能够实现抽象方法和TransformAPI方法。
504、终端基于重写的指定接口,将第一指定类型文件在读写场景下的输出修改为保护后的数据。
第一指定类型文件的原输出为未经保护的数据,终端基于重写的指定接口,修改第一指定类型文件的输出,避免未经保护数据输出数据,从而达到了保护用户隐私信息的目的。
505、终端基于重写的指定接口对第一指定类型文件中的参数进行解析,得到待保护的指定参数。
终端基于重写的指定接口对第一指定类型文件中的参数进行解析时,可将第一指定类型文件转化为类节点,并处理类节点,进而将类节点转化为字节组输出。通过对第一指定类型文件中的参数进行解析,可得到待保护的指定参数,该指定参数为涉及到用户隐私信息的数据对应的参数,包括数据库的表字段等。
考虑到第一指定类型文件的数量可能为多个,在对第一指定类型文件进行解析之前,可遍历第一指定类型文件。在一种可能的实现方式中,为了全面保护应用程序的数据,终端可在遍历第一指定类型文件时,拦截所有的第一指定类型文件。在另一种可能的实现方式中,由于第一指定类型文件中有些数据可能并未涉及到用户的隐私信息,因而终端在遍历第一指定类型文件时,可拦截涉及用户的隐私信息的第一指定类型文件,例如,SQLiteDatabase.class、SharedPreference.class。
506、终端根据指定参数,生成用于在指定参数的参数值中插入字节码的字节码插桩子类。
其中,字节码插桩子类用于在第一指定类型文件的指定参数的参数值中插入字节码,该字节码插桩子类可以为Transform子类,例如,LocalDataTransform子类,所插入的字节码一般为无实际意义的字符。
基于对第一指定类型文件解析得到的指定参数,终端根据该指定参数,可生成用于在指定参数的参数值中插入字节码的字节码插桩子类。以第一指定类型文件为.class文件,指定接口为Transform API为例,插桩代码以Android Gradle Plugin中的TransformAPI为基础,主要实现代码在LocalDataTransform中。该子类以源文件转换的.class文件为输入,并通过ASM(Automatic Storage Management,自动存储管理)对字节码进行修改,以实现字节码插桩。字节码插桩分为两部分:分别为插件部分和ASM部分。其中,插件部分的代码目录存放在src/main/groovy中,ASM部分的代码目录存放在src/main/java中。在生成字节码插桩子类时,可通过重写Transform API,在自定义的groovy目录下新建一个groovy类,并继承Transform API,groovy类能够实现抽象方法和TransformAPI方法。
参见图6,终端获取应用程序的源文件,并对应用程序的源文件进行转换处理,得到第一指定类型文件(例如,.clss文件)。终端重写指定接口,并修改第一指定类型文件的输出,删除第一指定文件的原输出,使得修改后的输出为保护后的数据。考虑到无论是否引用第三方数据库,最终都可通过调用Android原生的数据库操作类(类名为SQLiteDatabase)来操作数据库,因而终端遍历第一指定类型文件,拦截SQLiteDatabase.class文件和SharedPreference.class文件,并对SQLiteDatabase.class和SharedPreference.class文件进行解析,进而将SQLiteDatabase.class和SharedPreference.class文件转化为ClassNode,并将ClassNode转化为字节组输出。通过对SQLiteDatabase.class文件和SharedPreference.class文件解析,可得到Insert、InserOrThrow、execSQL、query、putInt、 putLong、putFloat,、getInt、getLong、 getFloat等参数,并基于这些参数,生成能够在SQLiteDatabase.class文件中Insert、InserOrThrow、execSQL、query等参数的参数值以及SharedPreference.class文件中putInt、 putLong,、putFloat,、getInt、getLong、 getFloat等参数的参数值中插入字节码的字节码插桩子类。
507、终端将字节码插桩子类嵌入到第一指定类型文件中,得到第二指定类型文件。
终端可通过将字节码插桩子类注册为字节码插桩插件,将字节码插桩子类嵌入到第一指定类型文件中,得到第二指定类型文件。终端在将字节码插桩子类注册为字节码插桩插件时,可预定义字节码插桩子类在第一指定类型文件中对应的插件,并重写对象继承方法,基于重写的对象继承方法,将字节码插桩子类对应的插件注册到应用扩展程序中,进而通过为注册到应用扩展程序中的字节码插桩子类对应的插件确定插件范围,将字节码插桩子类注册为第一指定类型文件中的字节码插桩插件。其中,对象继承方法用于继承所拦截的对象的属性,该对象继承方法可以为apply方法。应用扩展程序用于为应用程序提供扩展功能,该应用扩展程序可以为APPExtension。
参见图7,终端定义字节码插桩子类在第一指定类型文件中的字节码插桩插件(例如,LocalDataTransform插件),该插件能够继承所拦截的对象的属性。接着,终端重写对象继承方法(例如,apply方法),并将定义的插件注册到应用扩展程序(例如,APPExtension)中,进而为该插件确定插件范围(例如,TransformManager.SCOPE_FULL_PROJECT)。采用该方法可将自定义的字节码插桩子类注册成为字节码插桩插件(例如,gradle插件)。
508、终端将第二指定类型文件转换为可执行的第三指定类型文件。
终端对第二指定类型文件进行编译,将第二指定类型文件转换为第三指定类型文件。该第三指定类型文件为操作系统上的可执行的文件,例如,.dex文件。
509、响应于对第三指定类型文件中指定参数的参数值的读写操作,终端根据应用程序的读写类型,对字节码插桩操作进行鉴权。
其中,应用程序的读写类型包括系统内读写和系统外读写。应用程序的读写类型主要根据用户或开发人员所使用的终端确定,通常用户或技术人员使用的终端为PC(Personal Computer,个人计算机)时,应用程序的读写类型为系统外读写,通常用户或技术人员使用的终端为安装应用程序的智能手机、平板电脑等时,应用程序的读写类型为系统内读写。
对于PC端而言,应用层可采用加密算法生成一对公钥和私钥,公钥用于数据加密层对数据进行加密,私钥可保存在应用程序的后台服务器或者由开发人员保存,对于私钥的保存位置可根据具体业务确定。在PC端场景下,可通过Device File Explorer或者Chrome DevTools等PC端工具读取数据,所读取的数据主要是数据库表结构,而所进行的操作主要是创建及更改数据库表结构,因而该场景下主要保护的是数据结构。
对于安装应用程序的终端而言,可通过应用程序读写数据,在该场景下主要保护的是数据内容。在对数据进行保护时,可将应用程序分为实际应用程序和辅助应用程序,实际应用程序和辅助应用程序共享同一个sharedUserId,实际应用程序拥有完全的数据读写权限,能够读写文件存储层存储的本地持久化数据,辅助应用程序拥有数据读权限,能够读取文件存储层存储的本地持久化数据。
终端根据应用程序的读写类型,对字节码插桩操作进行鉴权时,包括以下两种情况。
第一种情况、应用程序的读写类型为系统外读写。
针对该种情况,终端可提取应用程序安装包或其他文件的摘要信息进行二次哈希计算,得到文件校验值,并将文件校验值与预设数值进行匹配,响应于文件校验值与预设数值相匹配,确定通过对字节码插桩操作的鉴权。其中,预设数值可根据校验精度确定。
当然,除了采用该种方式进行鉴权外,还可以采用其他方式,例如jks文件的AS签名等。
第二种情况、应用程序的读写类型为系统内读写。
针对该种情况,终端可获取应用程序安装包的签名信息,并根据应用程序安装包的签名信息,确定应用程序安装包的打包次数,并获取指定文件内的签名信息,该指定文件可以为.so文件等,将指定文件的签名信息与预设签名信息进行匹配,响应于应用程序安装包的打包次数为一次,且指定文件内的签名信息与预设签名信息相匹配,确定通过对字节码插桩操作的鉴权。
510、响应于通过对字节码插桩操作的鉴权,终端在指定参数的参数值中插入字节码,输出保护后的参数值。
在一种可能的实现方式中,响应于对第三指定类型文件中指定参数的参数值的读操作,终端可从应用程序的文件存储层中获取指定参数的参数值,并采用预先存储的私钥对该参数值进行解密,得到解密后的参数值,并将解密后的参数值发送至应用程序的适配层,在适配层中终端基于字节码插桩插件,在解密后的参数值中插入字节码。
在另一种可能的实现方式中,响应于对第三指定类型文件中指定参数的参数值的写操作,终端采用数据加密层中预先存储的公钥对保护后的参数值进行加密,并将加密后的参数值存储到应用程序的文件存储层中。
由于写入的数据可能有多种形式,可能为实参数据,也可能为实参数据中的字符串数据。对于实参数据可直接加密;对于实参数据中的字符串数据,不能直接加密,需要进行语法解释后,获取插入或更新的数据的原始值然后进行加密。
基于上述内容,响应于对第三指定类型文件中指定参数的参数值的写操作,当保护后的参数值为实参数据,终端采用公钥对保护后的参数值进行加密;当保护后的参数值为包含在实参数据中的字符串数据,终端获取字符串数据所属语句,并从语句中获取指定字段值,该指定字段值包括数据库表字段名和增删改查的数据值等,进而采用公钥对指定字段值进行加密。
在本公开的另一个实施例中,为了更好地保护应用程序的数据,终端还将根据当前执行操作的用户标识,确定对保护后的参数值的读写权限。如果当前执行操作的用户标识为合法用户标识,则确定对保护后的参数值具有读写权限,此时可采用数据加密层对保护后的参数值进行解密,并采用合法隧道从数据加密层读取解密后的参数值,还可采用合法隧道将保护后的参数值发送至数据加密层,数据加密层对保护后的数据进行加密,并将加密后的数据发送至文件存储层,由文件存储层进行存储;如果当前执行操作的用户标识为非法用户标识,则确定对保护后的参数值具有读权限,此时可采用非法隧道从数据加密层获取未解密的保护后的参数值。
对于本公开实施例中的鉴权功能,下面将以图8为例进行说明。
响应于接收到的对第三指定类型文件的读写操作,根据用户或技术人员使用终端类型,确定对应用程序的读写类型,如果为操作系统外读写,则采用文件管理器读取数据,并对字节码插桩操作进行鉴权;如果为操作系统内读写,且为应用程序内读写,则对字节码插桩操作进行鉴权。在通过对字节码插桩操作的鉴权后,判断用户或技术人员的用户标识是否为合法用户标识,如果为合法用户标识,则采用合法隧道从数据加密层读取解密后的数据,并采用合法隧道将保护后的数据发送至数据加密层进行加密;如果为非合法用户标识,则采用非法隧道从数据加密层读取加密的数据。
通常持久化到本地的数据主要有两种:以SQLite数据库形式存在的.db文件,以及以Key-Value健值对形式保存的各种.xml文件(如SharedPreference等)。如果用户取得了终端的Root权限,或者应用程序本身被设置为可调式状态(Debuggable),则可以获取持久化到本地的数据。采用本公开实施例通过在数据中插入字节码,在数据被窃取后依然为无实际可见含义的字符。
需要说明的是,上述步骤503、步骤504、步骤505、步骤506、步骤507、步骤510可由应用程序的适配层触发终端执行,步骤501、步骤502、步骤508、步骤509可由应用程序的应用层触发终端执行。
本公开实施例提供的方法,通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
本公开实施例提供的方法,对于应用程序运行过程中产生的涉密数据,通过在这些数据中插入字节码,使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的内容,因而能够对使用应用程序过程中产生的数据进行保护。
本公开实施例提供的方法,对于开发过程中数据库中的数据结构以及配置数据,通过在这些数据中插入字节码,同样使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的结构,因而能够对应用程序开发过程中产生的数据进行保护。
本公开实施例提供的方法,开发人员在开发过程中无论使用任何编程语言、任何数据库均可在未更改业务代码的情况下,对业务代码进行非侵入式的加解密,从而达到数据保护的目的。
本公开实施例提供的方法,采用插桩方式无需hook数据操作,即可实现对数据的保护,极大缓解因权限问题造成的运行异常。
参见图9,本公开实施例提供了一种基于侵入式的数据保护装置,该装置包括:
获取模块901,用于获取待保护的应用程序的源文件;
转换模块902,用于将应用程序的源文件进行转换处理,得到第一指定类型文件;
重写模块903,用于重写用于对第一指定类型文件进行修改的指定接口;
修改模块904,用于基于重写的指定接口,将第一指定类型文件在读写场景下的输出修改为保护后的数据;
解析模块905,用于基于重写的指定接口对第一指定类型文件中的参数进行解析,得到保护后的指定参数;
生成模块906,用于根据指定参数,生成用于在指定参数的参数值中插入字节码的字节码插桩子类;
嵌入模块907,用于将字节码插桩子类嵌入到第一指定类型文件中,得到第二指定类型文件;
转换模块902,还用于将第二指定类型文件转换为可执行的第三指定类型文件;
插入模块908,用于响应于对第三指定类型文件中指定参数的参数值的读写操作,在指定参数的参数值中插入字节码,输出保护后的参数值。
在本公开的另一个实施例中,嵌入模块907,用于将字节码插桩子类注册为第一指定类型文件中的字节码插桩插件,得到第二指定类型文件。
在本公开的另一个实施例中,嵌入模块907,用于预定义字节码插桩子类在第一指定类型文件中对应的插件;重写用于继承所拦截对象的属性的对象继承方法;基于重写的对象继承方法,将字节码插桩子类对应的插件注册到用于为应用程序提供扩展功能的应用扩展程序中;通过为注册到应用扩展程序中的字节码插桩子类对应的插件确定插件范围,将字节码插桩子类注册为第一指定类型文件中的字节码插桩插件。
在本公开的另一个实施例中,该装置还包括:
鉴权模块,用于根据应用程序的读写类型,对字节码插桩操作进行鉴权;
插入模块,用于响应于通过对字节码插桩操作的鉴权,在指定参数的参数值中插入字节码。
在本公开的另一个实施例中,应用程序的读写类型为系统外读写,鉴权模块,用于获取对应用程序内文件进行校验得到的文件校验值;响应于文件校验值与预设数值相匹配,确定通过对字节码插桩操作的鉴权。
在本公开的另一个实施例中,应用程序的读写类型为系统内读写,鉴权模块,用于获取应用程序安装包的签名信息;根据应用程序安装包的签名信息,确定应用程序安装包的打包次数;响应于应用程序安装包的打包次数为一次,且指定文件内的签名信息与预设签名信息相匹配,确定通过对字节码插桩操作的鉴权。
在本公开的另一个实施例中,该装置还包括:
确定模块,用于根据当前执行操作的用户标识,确定对保护后的参数值的读写权限。
在本公开的另一个实施例中,插入模块,用于响应于对第三指定类型文件中指定参数的参数值的读操作,采用预先存储的私钥对指定参数的参数值进行解密,在解密后的参数值中插入字节码。
在本公开的另一个实施例中,该装置还包括:
加密模块,用于响应于对第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对插入字节码后的参数值进行加密。
在本公开的另一个实施例中,加密模块,用于响应于对第三指定类型文件中指定参数的参数值的写操作,且保护后的参数值为实参数据,采用公钥对保护后的参数值进行加密。
在本公开的另一个实施例中,加密模块,用于响应于对第三指定类型文件中指定参数的参数值的写操作,且保护后的参数值为包含在实参数据中的字符串数据,获取字符串数据所属语句;从语句中获取指定字段值;采用公钥对指定字段值进行加密。
综上所述,本公开实施例提供的装置,通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
本公开实施例提供的装置,对于应用程序运行过程中产生的涉密数据,通过在这些数据中插入字节码,使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的内容,因而能够对使用应用程序过程中产生的数据进行保护。
本公开实施例提供的装置,对于开发过程中数据库中的数据结构以及配置数据,通过在这些数据中插入字节码,同样使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的结构,因而能够对应用程序开发过程中产生的数据进行保护。
本公开实施例提供的装置,开发人员在开发过程中无论使用任何编程语言、任何数据库均可在未更改业务代码的情况下,对业务代码进行非侵入式的加解密,从而达到数据保护的目的。
本公开实施例提供的装置,采用插桩方式无需hook数据操作,即可实现对数据的保护,极大缓解因权限问题造成的运行异常。
图10示出了本公开一个示例性实施例提供的终端1000的结构框图。该终端1000可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的非侵入式的数据保护方法。
在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、显示屏1005、摄像头1006、音频电路1007、定位组件1008和电源1009中的至少一种。
外围设备接口1003可被用于将I/O(Input /Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在终端1000的侧边框和/或显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在显示屏1005的下层时,由处理器1001根据用户对显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014可以与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制显示屏1005的显示亮度。具体地,当环境光强度较高时,调高显示屏1005的显示亮度;当环境光强度较低时,调低显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本公开实施例提供的终端,通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
本公开实施例提供的终端,对于应用程序运行过程中产生的涉密数据,通过在这些数据中插入字节码,使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的内容,因而能够对使用应用程序过程中产生的数据进行保护。
本公开实施例提供的终端,对于开发过程中数据库中的数据结构以及配置数据,通过在这些数据中插入字节码,同样使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的结构,因而能够对应用程序开发过程中产生的数据进行保护。
本公开实施例提供的终端,开发人员在开发过程中无论使用任何编程语言、任何数据库均可在未更改业务代码的情况下,对业务代码进行非侵入式的加解密,从而达到数据保护的目的。
本公开实施例提供的终端,采用插桩方式无需hook数据操作,即可实现对数据的保护,极大缓解因权限问题造成的运行异常。
本公开实施例提供了一种计算机可读存储介质,该计算机可读存储介质可以是非暂态的。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory, RAM)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以图4或图5所示的基于非侵入式的数据保护方法。
本公开实施例提供的计算机可读存储介质,通过将嵌入字节码插桩子类的第一指定类型文件转换为可执行的第三指定类型文件,并在对第三指定类型文件中指定参数的参数值进行读写操作时,在参数值中插入字节码。由于无需将数据存储到服务器,因而在网络环境较差时,能够获取到所需数据,确保了应用程序顺利运行,且在数据中插入字节码后,数据原本的内容被破坏,即便被窃取,也无法获取到原来的数据内容,因而保护了用户隐私信息的安全。
本公开实施例提供的计算机可读存储介质,对于应用程序运行过程中产生的涉密数据,通过在这些数据中插入字节码,使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的内容,因而能够对使用应用程序过程中产生的数据进行保护。
本公开实施例提供的计算机可读存储介质,对于开发过程中数据库中的数据结构以及配置数据,通过在这些数据中插入字节码,同样使得这些数据对外处于不可见状态,即便被窃取也无法查看到这些数据原本的结构,因而能够对应用程序开发过程中产生的数据进行保护。
本公开实施例提供的计算机可读存储介质,开发人员在开发过程中无论使用任何编程语言、任何数据库均可在未更改业务代码的情况下,对业务代码进行非侵入式的加解密,从而达到数据保护的目的。
本公开实施例提供的计算机可读存储介质,采用插桩方式无需hook数据操作,即可实现对数据的保护,极大缓解因权限问题造成的运行异常。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (14)
1.一种基于非侵入式的数据保护方法,其特征在于,所述方法包括:
获取待保护的应用程序的源文件;
将所述应用程序的源文件进行转换处理,得到第一指定类型文件;
重写用于对所述第一指定类型文件进行修改的指定接口;
基于重写的指定接口,将所述第一指定类型文件在读写场景下的输出修改为保护后的数据;
基于所述重写的指定接口对所述第一指定类型文件中的参数进行解析,得到待保护的指定参数;
根据所述指定参数,生成用于在所述指定参数的参数值中插入字节码的字节码插桩子类;
将所述字节码插桩子类嵌入到所述第一指定类型文件中,得到第二指定类型文件;
将所述第二指定类型文件转换为可执行的第三指定类型文件;
响应于对所述第三指定类型文件中指定参数的参数值的读写操作,在所述指定参数的参数值中插入字节码,输出保护后的参数值。
2.根据权利要求1所述的方法,其特征在于,所述将所述字节码插桩子类嵌入到所述第一指定类型文件中,得到第二指定类型文件,包括:
将所述字节码插桩子类注册为所述第一指定类型文件中的字节码插桩插件,得到所述第二指定类型文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述字节码插桩子类注册为所述第一指定类型文件中的字节码插桩插件,得到所述第二指定类型文件,包括:
预定义所述字节码插桩子类在所述第一指定类型文件中对应的插件;
重写用于继承所拦截对象的属性的对象继承方法;
基于重写的对象继承方法,将所述字节码插桩子类对应的插件注册到用于为所述应用程序提供扩展功能的应用扩展程序中;
通过为注册到应用扩展程序中的所述字节码插桩子类对应的插件确定插件范围,将所述字节码插桩子类注册为所述第一指定类型文件中的字节码插桩插件。
4.根据权利要求1所述的方法,其特征在于,所述在所述指定参数的参数值中插入字节码之前,还包括:
根据所述应用程序的读写类型,对字节码插桩操作进行鉴权;
响应于通过对字节码插桩操作的鉴权,执行在所述指定参数的参数值中插入字节码的操作。
5.根据权利要求4所述的方法,其特征在于,所述应用程序的读写类型为系统外读写,所述根据所述应用程序的读写类型,对字节码插桩操作进行鉴权,包括:
获取对所述应用程序内文件进行校验得到的文件校验值;
响应于所述文件校验值与预设数值相匹配,确定通过对字节码插桩操作的鉴权。
6.根据权利要求4所述的方法,其特征在于,所述应用程序的读写类型为系统内读写,所述根据所述应用程序的读写类型,对字节码插桩操作进行鉴权,包括:
获取所述应用程序安装包的签名信息;
根据所述应用程序安装包的签名信息,确定所述应用程序安装包的打包次数;
响应于所述应用程序安装包的打包次数为一次,且指定文件内的签名信息与预设签名信息相匹配,确定通过对字节码插桩操作的鉴权。
7.根据权利要求1所述的方法,其特征在于,所述在所述指定参数的参数值中插入字节码之后,还包括:
根据当前执行操作的用户标识,确定对保护后的参数值的读写权限。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述响应于对所述第三指定类型文件中指定参数的参数值的读写操作,在所述指定参数的参数值中插入字节码,包括:
响应于对所述第三指定类型文件中指定参数的参数值的读操作,采用预先存储的私钥对所述指定参数的参数值进行解密,在解密后的参数值中插入字节码。
9.根据权利要求1所述的方法,其特征在于,所述响应于对所述第三指定类型文件中指定参数的参数值的读写操作,在所述指定参数的参数值中插入字节码之后,还包括:
响应于对所述第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对保护后的参数值进行加密。
10.根据权利要求9所述的方法,其特征在于,所述响应于对所述第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对保护后的参数值进行加密,包括:
响应于对所述第三指定类型文件中指定参数的参数值的写操作,且所述保护后的参数值为实参数据,采用所述公钥对所述保护后的参数值进行加密。
11.根据权利要求9所述的方法,其特征在于,所述响应于对所述第三指定类型文件中指定参数的参数值的写操作,采用预先存储的公钥对保护后的参数值进行加密,包括:
响应于对所述第三指定类型文件中指定参数的参数值的写操作,且所述保护后的参数值为包含在实参数据中的字符串数据,获取所述字符串数据所属语句;
从所述语句中获取指定字段值;
采用所述公钥对所述指定字段值进行加密。
12.一种基于非侵入式的数据保护装置,其特征在于,所述装置包括:
获取模块,用于获取待保护的应用程序的源文件;
转换模块,用于将所述应用程序的源文件进行转换处理,得到第一指定类型文件;
重写模块,用于重写用于对所述第一指定类型文件进行修改的指定接口;
修改模块,用于基于重写的指定接口,将所述第一指定类型文件在读写场景下的输出修改为保护后的数据;
解析模块,用于基于所述重写的指定接口对所述第一指定类型文件中的参数进行解析,得到待保护的指定参数;
生成模块,用于根据所述指定参数,生成用于在所述指定参数的参数值中插入字节码的字节码插桩子类;
嵌入模块,用于将所述字节码插桩子类嵌入到所述第一指定类型文件中,得到第二指定类型文件;
所述转换模块,还用于将所述第二指定类型文件转换为可执行的第三指定类型文件;
插入模块,用于响应于对所述第三指定类型文件中指定参数的参数值的读写操作,在所述指定参数的参数值中插入字节码,输出保护后的参数值。
13.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如权利要求1至11中任一项所述的基于非侵入式的数据保护方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1至11中任一项所述的基于非侵入式的数据保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574398.5A CN111460516B (zh) | 2020-06-22 | 2020-06-22 | 基于非侵入式的数据保护方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574398.5A CN111460516B (zh) | 2020-06-22 | 2020-06-22 | 基于非侵入式的数据保护方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111460516A true CN111460516A (zh) | 2020-07-28 |
CN111460516B CN111460516B (zh) | 2020-09-29 |
Family
ID=71683998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010574398.5A Active CN111460516B (zh) | 2020-06-22 | 2020-06-22 | 基于非侵入式的数据保护方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111460516B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287384A (zh) * | 2020-09-21 | 2021-01-29 | 长沙市到家悠享网络科技有限公司 | 配置文件生成方法、装置及存储介质 |
CN112528331A (zh) * | 2020-12-15 | 2021-03-19 | 杭州默安科技有限公司 | 隐私泄露风险的检测方法、设备及系统 |
CN113553040A (zh) * | 2021-07-20 | 2021-10-26 | 中国第一汽车股份有限公司 | 可见即可说识别功能的注册实现方法、装置、设备及介质 |
CN114996128A (zh) * | 2022-05-19 | 2022-09-02 | 青矩技术股份有限公司 | 基于asm框架的脚本处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918903A (zh) * | 2019-03-06 | 2019-06-21 | 西安电子科技大学 | 一种基于llvm编译器的程序非控制数据攻击防护方法 |
CN110059455A (zh) * | 2019-04-09 | 2019-07-26 | 北京迈格威科技有限公司 | 代码加密方法、装置、电子设备和计算机可读存储介质 |
CN110134400A (zh) * | 2019-04-02 | 2019-08-16 | 北京奇艺世纪科技有限公司 | 数据获取方法、装置、电子设备及计算机可读存储介质 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
CN111190573A (zh) * | 2018-11-14 | 2020-05-22 | 北京字节跳动网络技术有限公司 | 应用程序埋点方法、装置和电子设备 |
-
2020
- 2020-06-22 CN CN202010574398.5A patent/CN111460516B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190573A (zh) * | 2018-11-14 | 2020-05-22 | 北京字节跳动网络技术有限公司 | 应用程序埋点方法、装置和电子设备 |
CN109918903A (zh) * | 2019-03-06 | 2019-06-21 | 西安电子科技大学 | 一种基于llvm编译器的程序非控制数据攻击防护方法 |
CN110134400A (zh) * | 2019-04-02 | 2019-08-16 | 北京奇艺世纪科技有限公司 | 数据获取方法、装置、电子设备及计算机可读存储介质 |
CN110059455A (zh) * | 2019-04-09 | 2019-07-26 | 北京迈格威科技有限公司 | 代码加密方法、装置、电子设备和计算机可读存储介质 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287384A (zh) * | 2020-09-21 | 2021-01-29 | 长沙市到家悠享网络科技有限公司 | 配置文件生成方法、装置及存储介质 |
CN112528331A (zh) * | 2020-12-15 | 2021-03-19 | 杭州默安科技有限公司 | 隐私泄露风险的检测方法、设备及系统 |
CN113553040A (zh) * | 2021-07-20 | 2021-10-26 | 中国第一汽车股份有限公司 | 可见即可说识别功能的注册实现方法、装置、设备及介质 |
CN113553040B (zh) * | 2021-07-20 | 2022-12-02 | 中国第一汽车股份有限公司 | 可见即可说识别功能的注册实现方法、装置、设备及介质 |
CN114996128A (zh) * | 2022-05-19 | 2022-09-02 | 青矩技术股份有限公司 | 基于asm框架的脚本处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111460516B (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111460516B (zh) | 基于非侵入式的数据保护方法、装置、终端及存储介质 | |
Do et al. | Is the data on your wearable device secure? An Android Wear smartwatch case study | |
CN110245144B (zh) | 协议数据管理方法、装置、存储介质及系统 | |
US10073985B2 (en) | Apparatus and method for trusted execution environment file protection | |
CN110687821B (zh) | 基于区块链的智能家居控制系统及方法 | |
WO2017034312A1 (en) | Apparatus and method for trusted execution environment based secure payment transactions | |
CN111340482B (zh) | 冲突检测方法、装置、节点设备及存储介质 | |
CN112417425A (zh) | 设备认证方法、装置、系统、终端设备及存储介质 | |
US11943256B2 (en) | Link detection method and apparatus, electronic device, and storage medium | |
WO2020125134A1 (zh) | 自定义模型防篡改方法、装置、终端设备及存储介质 | |
CN107959727B (zh) | 网页与客户端之间进行通讯的方法及装置 | |
CN109558734A (zh) | 一种堆栈安全性的检测方法及装置、移动设备 | |
CN110826103A (zh) | 基于区块链的文档权限处理方法、装置、设备及存储介质 | |
CN111404991A (zh) | 获取云服务的方法、装置、电子设备及介质 | |
CN111523136A (zh) | 应用程序的权限管理方法、装置、设备及存储介质 | |
US20220335107A1 (en) | Method for Processing Application Program and Related Product | |
CN108537040B (zh) | 电信诈骗木马程序拦截方法、装置、终端及存储介质 | |
CN111062323A (zh) | 人脸图像传输方法、数值转移方法、装置及电子设备 | |
CN111339181B (zh) | 区块存储方法、装置、节点设备及存储介质 | |
CN113392410B (zh) | 接口安全性检测方法、装置、计算机设备及存储介质 | |
CN115495169A (zh) | 数据获取、页面生成方法、装置、设备及可读存储介质 | |
Park et al. | Design and implementation of trusted sensing framework for IoT environment | |
CN113742757A (zh) | 数据访问方法、装置、设备及可读存储介质 | |
CN111666581A (zh) | 数据保护方法、装置、设备及介质 | |
KR20210026233A (ko) | 디바이스 리소스에 대한 접근을 제어하기 위한 전자 장치 및 그의 동작 방법 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40026176 Country of ref document: HK |