主题:移动应用(安卓应用)隐私政策分析
PolicyLint & PoliCheck
我认为,在安卓/移动应用的隐私政策分析或一致性分析这个主题下,有两个里程碑式的工作:
- PolicyLint: B. Andow et al., “PolicyLint: Investigating Internal Privacy Policy Contradictions on Google Play,” presented at the 28th USENIX Security Symposium (USENIX Security 19), 2019, pp. 585–602. Available: PolicyLint: Investigating Internal Privacy Policy Contradictions on Google Play | USENIX
- PoliCheck: B. Andow et al., “Actions Speak Louder than Words: {Entity-Sensitive} Privacy Policy and Data Flow Analysis with {PoliCheck},” presented at the 29th USENIX Security Symposium (USENIX Security 20), 2020, pp. 985–1002. Available: Actions Speak Louder than Words: Entity-Sensitive Privacy Policy and Data Flow Analysis with PoliCheck | USENIX
第一篇工作(PolicyLint)核心点是运用NLP技术做:隐私政策文本——> (actor, action, data object, entity) 4元组集合。
For example, “We [actor] share [action] personal information [data object] with advertisers [entity].”
对应元组:<We, share, personal information, advertisers>
这个4元组的中间表示在当时应该是很有效的。但是在几年后的今天,已经显得比较冗余了——很多工作已经抛开了'action'这一项——换言之,这篇工作定义的很多动词,比如'share' 'not share' 'collect' 都被统一为了'collect'。毕竟应用在客户端获取数据以后,它在服务端做的事情是不可预知的,它有能力和任意实体分享。
而 actor和entity这两个名词也显得冗余。
实际上,PolicyLint 在当时提出的 IR 现在逐渐演化为了:<entity, data, purpose> 默认是 entity 'collect' data for xxx purpose. (purpose相关的工作之一是Consistency analysis of data-usage purposes in mobile apps)。
第一、二篇工作是同一个作者。第二篇工作PoliCheck在 PolicyLint的基础上,通过运用基于 AppCensus的动态分析技术,获取应用在运行时产生的数据流信息,然后对比数据流信息和PolicyLint产生的四元组,完成移动应用的隐私一致性分析。
难以复现和重用
USENIX要求投稿者公开项目源码,因此这两份工作的代码在github上都能找到:
然而,不幸的是,我发现这个项目是基于Python 2.7 和 spacy==2.0.12,而python 2.7 早已停止维护,且在执行 docker build的时候,spacy下载模型的过程极为折磨。我试图用 python 2to3 工具将 python 2.7的代码迁移到 python3,但是 2to3 做不到完全等价的转换,还需要手动检查、校正,成本实在太高了。
而且PoliCheck 是基于AppCensus做的数据流分析,而 AppCensus 的分析服务是闭源、商业付费的,因此也重用 PoliCheck方法的困难度也较大。
发现PoliGraph
在翻 PrivacyPolicyAnalysis 的issue 时,我发现了一位老哥 Cui Hao的评论,顺着github账号看到他的工作 PoliGraph,无论是创新度,再到实现、文档都非常非常非常好,同时 PoliGraph 的效果也胜过 PolicyLint。
他的博客也很有趣。在看论文、找相关工作的过程中,发现这些曾经同样挫折过、奋斗过的前辈,看到他们生活的点点滴滴或者种种思考、努力,是一个非常惊喜的事。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。