CN115758356A - 一种对Android应用实施可信静态度量的方法、存储介质及设备 - Google Patents
一种对Android应用实施可信静态度量的方法、存储介质及设备 Download PDFInfo
- Publication number
- CN115758356A CN115758356A CN202211457085.7A CN202211457085A CN115758356A CN 115758356 A CN115758356 A CN 115758356A CN 202211457085 A CN202211457085 A CN 202211457085A CN 115758356 A CN115758356 A CN 115758356A
- Authority
- CN
- China
- Prior art keywords
- application
- measurement
- file
- reference value
- service
- 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
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种对Android应用实施可信静态度量的方法、存储介质及设备,首先确定应用类型和应用度量文件,在安装阶段,应用先进行合法性认证,通过认证后,在可信基准库中创建应用初始化信息,然后继续安装流程。完成安装后,使用度量算法生成应用安装路径下度量文件的基准值,更新写入可信基准库。在需要度量的应用启动运行前,首先在可信基准库中查找到此应用的基准值,再计算应用安装路径下度量文件的度量值,对比所述度量值和基准值。最后根据判断机制,判定该应用的可信性,决定是否启动运行。能够保证Android应用在每次启动运行前的合法性和完整性,提升Android系统中对应用的安全防护能力,有效防止应用被篡改。
Description
技术领域
本发明涉及移动应用安全技术领域,具体涉及一种对Android应用实施可信静态度量的方法、存储介质及设备。
背景技术
近年来,移动应用安全事件频发,据相关机构统计,2021年全球近四分之一的企业组织均发生过移动或物联网数据泄露事件。据国际安全机构Check Point Research在2021年4月发布的《全球威胁指数》报告显示,十三款Android应用暴露了包括社交信息、电子邮件、账户密码和图片照片在内的多项个人隐私数据,受影响用户数量多达1亿。海量移动应用在为用户提供便利的同时,极大地加剧了数据安全风险。如何有效防范移动互联网存在的安全威胁,已经成为当前应用厂商、研究机构和政府相关部门关注的重点内容。
当前针对移动应用的安全防护措施主要以应用加固技术手段为主,通过对程序文件加壳加密,防范应用被破解、反编译、调试、篡改、冒充、二次打包等。除此之外,还有应用安全检测、漏洞扫描、分发渠道监测,以及一些专业场景下的安全解决方案,如安全SDK、应用签名认证等。但是,以上方式仅在一定程度上满足了应用启动运行前的安全要求,无法保证应用在长期使用过程中的安全性。可信计算中的度量机制是解决上述问题的一个主要方法,能够实现对应用程序进行静态完整性度量,保证应用程序的可信启动。
国内外基于可信度量机制实现的相关解决方案,大多应用在网络系统和服务端应用,缺少针对移动应用的度量方案。
发明内容
针对现有技术的不足,本发明旨在提供一种对Android应用实施可信静态度量的方法、存储介质及设备。
为了实现上述目的,本发明采用如下技术方案:
一种对Android应用实施可信静态度量的方法,包括如下步骤:
S1、确定应用类型:需进行静态度量的应用类型包括预装应用和三方应用,系统内置应用不参与度量;
S2、确定应用的度量文件:度量文件包括应用安装路径下的镜像文件base.apk和lib目录下的所有库文件,不包括oat目录下临时过渡编译的各类变种字节码文件;
S3、安装应用:在Android系统的PMS服务中执行应用认证服务,对应用APK文件进行合法性认证,如果未通过认证,则阻止应用安装,如果通过认证,将应用的初始化信息更新写入到可信基准库,初始化信息包括应用标识和占位数据;继续执行后续安装流程,完成安装后,使用应用度量算法计算度量文件的基准值,根据应用标识,将基准值更新写入到可信基准库中,并更新认证记录和度量记录;
S4、启动需要度量的应用时,在Android系统的AMS服务中执行应用度量服务,使用应用度量算法计算应用的度量文件当前的度量值,根据应用标识,在可信基准库中查找此应用的基准值,对比度量值与基准值,如果结果一致,则启动运行应用,否则禁止应用运行,并给出相关安全风险提示。
进一步地,更新应用时,在Android系统的PMS服务中执行应用认证服务,对应用APK文件进行合法性认证,通过认证后进行覆盖安装,并重新生成基准值,覆盖可信基准库中此应用的原基准值。
进一步地,卸载应用时,Android系统PMS服务执行卸载流程,卸载完成后,删除可信基准库中此应用的基准值,同时删除认证记录和度量记录中此应用的数据。
进一步地,应用度量服务中使用文件分块分组多任务处理的文件度量算法,Android系统虚拟机中每次读入1个分组,利用线程池,在计算单元并发计算1个分组中的多个文件分块,并按照后续顺序执行其他分组,合入最终结果。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
本发明还提供一种Android终端设备,包括处理器和存储器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序时,实现上述方法。
本发明的有益效果在于:
本发明以可信计算主动免疫体系为基础,从应用度量角度出发,通过对移动应用组成结构、加载运行机制等方面进行研究分析,利用可信度量机制、判定机制和可信基准库,联合完成对宿主基础软件系统应用的安全防护,保证应用运行时的代码完整性。
本发明能够保证Android应用在每次启动运行前的合法性和完整性,提升Android系统中对应用的安全防护能力,有效防止应用被篡改,可落地性强,效果显著,填补了当前移动安全领域应用静态度量实现方案的空白,解决了移动应用在启动运行过程中存在的安全机制缺失的问题。同时,本发明的静态度量算法,通过将应用文件分块分组多任务处理,能够有效解决内存溢出和计算耗时的问题,进一步提升了计算效率。
附图说明
图1为本发明实施例1方法的总体技术架构图;
图2为本发明实施例1方法中应用类型的分类示意图;
图3为本发明实施例1方法应用中参与度量的文件范围示意图;
图4为本发明实施例1方法应用认证安装流程图;
图5为本发明实施例1方法应用启动度量流程图;
图6为本发明实施例1方法文件度量算法实施示意图;
图7为本发明实施例2中样例应用安装流程图;
图8为本发明实施例2中样例应用篡改启动流程图。
具体实施方式
以下将结合附图对本发明作进一步的描述,需要说明的是,本实施例以本技术方案为前提,给出了详细的实施方式和具体的操作过程,但本发明的保护范围并不限于本实施例。
实施例1
本实施例提供一种对Android应用实施可信静态度量的方法,如图1所示,主要思路是首先确定应用类型和应用度量文件,在安装阶段,应用先进行合法性认证,通过认证后,在可信基准库中创建应用初始化信息,然后继续安装流程。完成安装后,使用度量算法生成应用安装路径下度量文件的基准值,更新写入可信基准库。在需要度量的应用启动运行前,首先在可信基准库中查找到此应用的基准值,再计算应用安装路径下度量文件的度量值,对比所述度量值和基准值。最后根据判断机制,判定该应用的可信性,决定是否启动运行。
Android应用静态度量的总体技术架构如图1所示,包括两条业务主线和两个组件服务,所有处理逻辑都在Android操作系统的框架层运行。两条主线即应用的安装与启动,贯穿Android操作系统的PMS服务和AMS服务。两个组件服务即应用认证服务和应用度量服务,其中认证服务主要用于校验应用的合法性,此服务参考应用签名验签机制设计实现,可定制化程度较高,通过认证服务后可根据应用信息计算生成基准值。应用度量服务主要用于计算应用度量值和基准值。
所述对Android应用实施可信静态度量的方法包括如下步骤:
S1、确定应用类型:如图2所示,需进行静态度量的应用类型包括预装应用和三方应用,系统内置应用不参与度量;
S2、确定应用的度量文件:如图3所示,度量文件包括应用安装路径下的镜像文件base.apk和l ib目录下的所有库文件,不包括oat目录下临时过渡编译的各类变种字节码文件;
S3、安装应用:如图4所示,在Android系统的PMS服务中执行应用认证服务,对应用APK文件进行合法性认证,如果未通过认证,则阻止应用安装,如果通过认证,将应用的初始化信息更新写入到可信基准库,初始化信息包括应用标识和占位数据;继续执行后续安装流程,完成安装后,使用应用度量算法计算度量文件的基准值,根据应用标识,将基准值更新写入到可信基准库中,并更新认证记录和度量记录;
S4、启动需要度量的应用时,如图5所示,在Android系统的AMS服务中执行应用度量服务,使用应用度量算法计算应用的度量文件当前的度量值,根据应用标识,在可信基准库中查找此应用的基准值,对比度量值与基准值,如果结果一致,则启动运行应用,否则禁止应用运行,并给出相关安全风险提示。
进一步地,在本实施例中,更新应用时,在Android系统的PMS服务中执行应用认证服务,对应用APK文件进行合法性认证,通过认证后进行覆盖安装,并重新生成基准值,覆盖可信基准库中此应用的原基准值。
进一步地,在本实施例中,卸载应用时,Android系统PMS服务执行卸载流程,卸载完成后,删除可信基准库中此应用的基准值,同时删除认证记录和度量记录中此应用的数据。
进一步地,在本实施例中,应用度量服务中,使用文件分块分组多任务处理的文件度量算法,如图6所示,Android系统虚拟机中每次读入1个分组,利用线程池,在计算单元并发计算1个分组中的多个文件分块,并按照后续顺序执行其他分组,合入最终结果。
实施例2
本实施例使用程序实例验证实施例1所述方法的可行性。实验样机使用手机型智能终端,硬件参数属行业中上水平,样机系统应获得超级管理员权限,实验环境基于通用主流方法搭建,具有代表性。样机型号HUAWEI nova 8Pro,基于Android 10的EMUI 11操作系统,8GB+128GB存储,海思麒麟985处理器。
本实施例中实验应用选用百度地图开发者平台提供的Android版本样例应用,此应用为提供给广大开发者参考使用的样例,具有广泛使用性。APK应用文件大小93.4MB,包名为baidumapsdk.demo,此样例程序的安装文件总计7个,按照度量文件范围分析的结论,排除oat目录下的2个可执行文件,参与度量的应用文件包含5项。此应用已做自定义签名操作,配合应用认证服务中的合法性验证。样例应用安装流程如图7所示,包括以下步骤:
步骤1:确定样例APK应用类型为三方应用,应参与度量校验;
步骤2:确定样例APK应用的待度量文件,包括1个apk文件base.apk,4个库文件liblocSDK8b.so、l ibgnustl_shared.so、l ibBaiduMapSDK_base_v7_5_3.so、libBaiduMapSDK_map_v7_5_3.so;
步骤3:开始安装APK文件,在Android系统的PMS服务中执行应用认证服务,系统Framework框架层PackageManagerService类的preparePackageLI方法中,调用认证服务接口;
步骤4:通过合法性认证,初始化应用信息至基准库,在实验环境下查看可信基准库文件。对数据进行加密处理,以“KEY=VALUE”格式存储每条应用的数据,其中,“=”为分割标识,“KEY”为应用标识,“VALUE”为应用的初始化信息或基准值,本实施例中使用应用的包名信息作为唯一标识;
步骤5:继续执行preparePackageLI方法中系统后续的安装逻辑,直至安装完成;
步骤6:对步骤2中所述的5个度量文件,调用应用度量方法接口,计算合并结果,作为此应用的基准值;
步骤7:根据应用标识查找基准库中此应用信息,将步骤6生成的基准值更新写入基准库;
步骤8:启动应用,在未对应用进行任何篡改处理的情况下,正常启动应用,符合预期。
验证应用被篡改后的度量效果,如图8所示样例应用篡改后的启动流程,样例应用共包含5个参与度量的文件,可对任意文件进行篡改,方式包括修改文件、删除文件和增加文件等,均可达到篡改应用的目的。篡改方法中使用了Android调试桥工具(Android DebugBridge,adb),此工具和命令可对Android系统下的文件进行操作。
(1)篡改方式1修改文件,包括以下步骤:
步骤1:修改base.apk文件,使用adb pul l命令将base.apk文件拉出,使用编辑工具打开文件,在文件任意位置插入非法字符;
步骤2:使用adb push命令将修改后的base.apk推入至原目录下,覆盖原始文件;
步骤3:启动应用,在基准库中查找此应用的基准值为8f499cba3d0c8e81xxxxx;
步骤4:在Android系统的AMS服务中执行应用度量服务,系统Framework框架层ActivityStarter类的startActivity方法中,调用应用度量接口;
步骤5:计算应用文件度量值为c0ced913e567a01aa1dxxxxxx;
步骤6:校验比对度量值与基准值,结果不一致,判定未通过;
步骤7:禁止应用启动运行,并给出系统提示“应用存在安全风险禁止启动运行”。
(2)篡改方式2删除文件,包括以下步骤:
步骤1:删除一个库文件,以超级管理员权限进入应用安装l ib目录;
步骤2:执行删除命令,将动态库l iblocSDK8b.so删除;
步骤3:启动应用,在基准库中查找此应用的基准值为8f499cba3d0c8e81xxxxx;
步骤4:在Android系统的AMS服务中执行应用度量服务,系统Framework框架层ActivityStarter类的startActivity方法中,调用应用度量接口;
步骤5:计算应用文件度量值为b41ee6b02d550a85cd9 xxxxxx;
步骤6:校验比对度量值与基准值,结果不一致,判定未通过;
步骤7:禁止应用启动运行,并给出系统提示“应用存在安全风险禁止启动运行”。
(3)篡改方式3增加文件,包括以下步骤:
步骤1:增加一个非法库文件;
步骤2:使用命令adb push,将此l ibtest-error.so文件推入至l ib目录下;
步骤3:启动应用,在基准库中查找此应用的基准值为8f499cba3d0c8e81xxxxx;
步骤4:在Android系统的AMS服务中执行应用度量服务,系统Framework框架层ActivityStarter类的startActivity方法中,调用应用度量接口;
步骤5:计算应用文件度量值为44b2525abc104935822xxxxxx;
步骤6:校验比对度量值与基准值,结果不一致,判定未通过;
步骤7:禁止应用启动运行,并给出系统提示“应用存在安全风险禁止启动运行”。
对于本领域的技术人员来说,可以根据以上的技术方案和构思,给出各种相应的改变和变形,而所有的这些改变和变形,都应该包括在本发明权利要求的保护范围之内。
Claims (6)
1.一种对Android应用实施可信静态度量的方法,其特征在于,包括如下步骤:
S1、确定应用类型:需进行静态度量的应用类型包括预装应用和三方应用,系统内置应用不参与度量;
S2、确定应用的度量文件:度量文件包括应用安装路径下的镜像文件base.apk和lib目录下的所有库文件,不包括oat目录下临时过渡编译的各类变种字节码文件;
S3、安装应用:在Android系统的PMS服务中执行应用认证服务,对应用APK文件进行合法性认证,如果未通过认证,则阻止应用安装,如果通过认证,将应用的初始化信息更新写入到可信基准库,初始化信息包括应用标识和占位数据;继续执行后续安装流程,完成安装后,使用应用度量算法计算度量文件的基准值,根据应用标识,将基准值更新写入到可信基准库中,并更新认证记录和度量记录;
S4、启动需要度量的应用时,在Android系统的AMS服务中执行应用度量服务,使用应用度量算法计算应用的度量文件当前的度量值,根据应用标识,在可信基准库中查找此应用的基准值,对比度量值与基准值,如果结果一致,则启动运行应用,否则禁止应用运行,并给出相关安全风险提示。
2.根据权利要求1所述的方法,其特征在于,更新应用时,在Android系统的PMS服务中执行应用认证服务,对应用APK文件进行合法性认证,通过认证后进行覆盖安装,并重新生成基准值,覆盖可信基准库中此应用的原基准值。
3.根据权利要求1所述的方法,其特征在于,卸载应用时,Android系统PMS服务执行卸载流程,卸载完成后,删除可信基准库中此应用的基准值,同时删除认证记录和度量记录中此应用的数据。
4.根据权利要求1所述的方法,其特征在于,应用度量服务中使用文件分块分组多任务处理的文件度量算法,Android系统虚拟机中每次读入1个分组,利用线程池,在计算单元并发计算1个分组中的多个文件分块,并按照后续顺序执行其他分组,合入最终结果。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法。
6.一种Android终端设备,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序时,实现权利要求1-4任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211457085.7A CN115758356A (zh) | 2022-11-16 | 2022-11-16 | 一种对Android应用实施可信静态度量的方法、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211457085.7A CN115758356A (zh) | 2022-11-16 | 2022-11-16 | 一种对Android应用实施可信静态度量的方法、存储介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115758356A true CN115758356A (zh) | 2023-03-07 |
Family
ID=85333695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211457085.7A Pending CN115758356A (zh) | 2022-11-16 | 2022-11-16 | 一种对Android应用实施可信静态度量的方法、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115758356A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117970907A (zh) * | 2024-04-01 | 2024-05-03 | 西安热工研究院有限公司 | 可信dcs控制器可信功能测试方法、电子设备、存储介质 |
-
2022
- 2022-11-16 CN CN202211457085.7A patent/CN115758356A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117970907A (zh) * | 2024-04-01 | 2024-05-03 | 西安热工研究院有限公司 | 可信dcs控制器可信功能测试方法、电子设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
McCamant et al. | Quantitative information flow as network flow capacity | |
Smalley et al. | Security enhanced (se) android: bringing flexible mac to android. | |
Octeau et al. | Effective {Inter-Component} communication mapping in android: An essential step towards holistic security analysis | |
CN107679393B (zh) | 基于可信执行环境的Android完整性验证方法和装置 | |
US8316448B2 (en) | Automatic filter generation and generalization | |
Weber et al. | A software flaw taxonomy: aiming tools at security | |
US7337291B2 (en) | Software memory access control | |
Mai et al. | Verifying security invariants in ExpressOS | |
US20060112241A1 (en) | System, method and apparatus of securing an operating system | |
CN110263545B (zh) | 一种基于Android系统的启动过程完整性度量检测方法 | |
CN108763951B (zh) | 一种数据的保护方法及装置 | |
CN105760787B (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
US20050198507A1 (en) | Import address table verification | |
CN111638936A (zh) | 一种基于内置安全体系结构的虚拟机静态度量方法和装置 | |
CN104778410A (zh) | 一种应用程序完整性验证方法 | |
CN115758356A (zh) | 一种对Android应用实施可信静态度量的方法、存储介质及设备 | |
Jia et al. | Programmable system call security with ebpf | |
JP4526383B2 (ja) | 実行可能なコードを格納するタンパーエビデントな取り外し可能な媒体 | |
Lim et al. | Unleashing unprivileged ebpf potential with dynamic sandboxing | |
Hei et al. | Two vulnerabilities in Android OS kernel | |
CN112287357A (zh) | 一种针对嵌入式裸机系统的控制流验证方法与系统 | |
CN114818012B (zh) | 基于白名单列表的Linux文件完整性度量方法 | |
CN112214769B (zh) | 基于SGX架构的Windows系统的主动度量系统 | |
CN109165509A (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
Gorski III et al. | {FReD}: Identifying File {Re-Delegation} in Android System Services |
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 |