2024- zhanglulu
本文总阅读量次,本站总访问量次
隐私合规框架技术方案0627bak
引言
背景
随着国家相关部门《关于开展 APP 违法违规收集使用个人信息专项治理的公告、《App 违法违规收集使用个人信息行为认定方法》等相关条款的是正式实施,工信部、网信办、银监局,通信管理局等相关机构对应用的隐私合规监管力度呈逐渐增大的态势。监管对象逐渐扩大、监管通报成为常态。
所以,企业自身具备隐私合规自建能力成为了必要选项,为企业应用的合规问题提供技术支撑。
此文档针对安卓系统。
为了满足日益严格的隐私合规监管要求,并避免被相关监管部门通报,企业亟需建立一整套自身的隐私合规能力。
本方案是从技术上能最大限度的提前发现和感知问题、修复问题,避免被相关部门、机构通报。
术语解释
- 敏感 API:客户端涉及到用户敏感信息的系统 API 方法,例如:IP 地址、MAC 地址等。
- CI:持续集成(CI)是一种软件开发实践,开发人员频繁地将代码变更集成到共享代码库中。每次提交后,系统自动执行构建和测试,以尽早发现并解决集成问题,提高软件质量,确保代码始终保持可部署状态
- Transform:Android Gradle 工具从 1.5.0-beta1 版本开始,包含了 Transform API,它允许第三方插件在将编译后的类文件转换为 dex 文件之前对 .class 文件进行操作。
- ASM:Java 中的 ASM 是一个非常流行的 Java 字节码操纵和分析框架。它由 ObjectWeb 社区开发,用于直接修改现有类或动态生成类,都在 Java 的二进制字节码层次上。ASM 提供了一些核心组件和丰富的 API,可以用来读取、写入、修改、和生成 Java 字节码。
- XPath:XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它被广泛应用于各种 XML 技术中,包括 XSLT 和 XQuery。在 Java 中,XPath 也是一个重要的组件,用于在 XML 文档中进行高效的数据抽取和查询。
概要设计
现阶段,隐私合规技术性问题主要是三大类:
- 隐私政策声明不全面的问题,包括三方 SDK 及其调用敏感 API ;【这个地方,使用报告中的描述较好一些】
- 敏感 API 调用频率问题,超出业务需要、前后台静默等【这个地方,使用报告中的描述较好一些】
通过动态、静态扫描方式可以实现对隐私合规技术性问题的无死角排查。
实现原理
静态扫描,即通过在编译期扫描安装包的方式(通过 ASM 读取字节码文件进行分析),可以扫描自身或者三方 SDK 对系统敏感 API 的调用情况以及安卓清单文件的声明情况,从而准确的补充隐私政策文件中的相关声明。
支持灵活配置,包括:敏感 API 的配置、三方 SDK的映射配置、清单文件扫描配置等。
静态扫描主要解决以下几个问题:
- 隐私政策中声明三方 SDK 不够全面的问题
- 隐私政策中声明的自身使用或者三方 SDK 使用的敏感 API 不够全面的问题
- 清单文件(AndroidManifest.xml)权限声明情况扫描(包括自启动、浮窗权限等)
- 清单文件(AndroidManifest.xml)组件(Activity、Services、BroadcastReceiver、ContentProvider)导出(export)情况扫描
动态扫描,即在编译期通过 ASM 对敏感 API 的调用进行替换,实现了在运行时对敏感 API 的监控,进而收集到相关的调用堆栈以判定调用来源(自身或者三方 SDK)。
动态扫描主要解决以下几个问题:
- 应用运行时自身或者三方 SDK 使用敏感 API 的情况,包括前后台静默获取的场景
- 应用运行时自身或者三方 SDK 使用敏感 API 的频次问题
流程设计
静态扫描流程设计:
静态扫描是在代码编译期通过扫描 APK 文件,将扫描结果与隐私政策文件进行比对,输出合规扫描报告,根据报告情况进行告警,通知相关干系人进行下一步处置。
动态扫描流程设计: