Android 权限的一个类型系统模型

作者 | 陈泓旭
整理 | 编程语言 Lab
陈泓旭 华为可信实验室高级工程师,南洋理工大学博士。研究领域是程序分析、软件安全、编程理论等。
视频回顾:
Android 权限的一个类型系统模型


本文主要和大家分享一下我读博期间做的和类型系统相关一篇文章,发表在 CSF 2018 上的工作 (https://ieeexplore.ieee.org/document/8429307),合作者包括深圳大学的许智武老师,以及我当时的两位导师 Alwen Tiu 和 Yang Liu。这个工作主要是利用类型系统来静态检查 Android 系统上可疑的信息泄露,它的一个主要优势是我们可以对独立的 Android app 进行类型检查以确认它没有带来任何可能导致信息泄露的安全隐患。
原文的标题是 “A Permission-Dependent Type System for Secure Information Flow Analysis” ,首先简单解释一下。

  1. 我们分析的是信息流问题:即在一个系统里信息从一个变量传递到另一个变量的安全性。最典型的是信息泄露问题:一个高机密性的变量 (可标识为 H H H),被错误地赋值给一个低机密性的变量 (可标识为 L L L),导致攻击者可以通过观察机密性低的变量内容而了解到高机密的信息。
  2. 这里的类型 (Type) 和编程语言使用的结构类型 (structural type) 不一样:结构类型是通常意义下我们使用的类似 int,String,Object 这样的类型;而我们这里讨论的是和这些类型独立并存的另一套体系,它用于标识变量 (数据) 的机密性等级。区别于结构类型,它一般被称为安全类型(security type)。
  3. 这里定义的类型是依赖于权限 (permission-dependent) 的。从类型系统理论来看,这对应的是结构类型中的依赖类型(dependent type,类型由 term 来决定)。需要说明的是,安全类型系统可以不考虑权限;但如果没有它那么类型系统的实用性会降低。在我们分析的 Android 信息流模型里,考虑权限对判断是否存在信息泄露至关重要。

Pokémon GO的一个小例子

我们先来看一下 Android apps 信息流安全的具体场景。

在这里插入图片描述

这是一个叫 Pokémon GO 的一个 Android 应用,在 2017 年左右是一个比较火的游戏,能对现实世界中出现的宝可梦进行探索捕捉、战斗以及交换。基于这款游戏的特征,它可以获取用户的联系人信息、和手机的位置信息,它可以使用手机的拍照功能,它可以向 Twitter, LINE 等 app 传送数据,它可以向互联网发送一些信息,同时它还可以从存储卡中读取或写入相关信息。这些信息有很多是敏感的,比如用户联系人信息,如果被其他 app 所获取或被上传到网络上,会严重侵犯用户的隐私。因此,需要有一种机制来保护敏感的信息不被泄露。Android 是通过 manifst 文件中指定 app 所需要的权限,在执行时我们检查当前 app 是否已经拥有该权限。

信息流安全的一点理论

为了讨论如何利用安全类型系统来解决 Android 的信息流问题,我们先看一下一些相关理论。

我们一般给变量加下标来表征变量的机密性等级。不同的机密性等级在偏序关系 ( < < <) 之下形成数学意义上的格 (lattice)。为方便描述,我们使用仅包含 H , L {H,L} H,L 两个元素且 L < H L<H L<H 的格来简化我们的描述。那么, x H x_H xH 表明 x x x 是一个机密性高(high) 的变量,其包含了仅可以被获得授权的主体访问的敏感信息;而 y L y_L yL 表明 y y y 是一个机密性低 (low) 的变量,它可以被任何主体访问。这里的 H H H L L L,在这里就被称作安全类型。我们先来看两个例子。

int x H ​ x_H​ xH;

int y L y_L yL;

y L : = x H y_L := x_H yL:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值