Android P 安全行为变更

安全行为变更

Android P 引入了若干可提升应用和运行应用的设备安全性的行为变更。 本页面介绍对第三方应用开发者最重要的平台变更,需要他们牢记在心。

影响所有应用的行为变更

无论应用的目标平台版本如何,Android P 添加的若干功能均可令应用的安全性得到改善。

新增的 APK 密钥轮转

Android P 添加了对 APK Signature Scheme v3 的支持。该架构提供的选择可以在其签名块中为每个签名证书加入一条轮转证据记录。 应用可以通过将 APK 文件过去的签名证书链接到现在签署应用时使用的证书,使用新签名证书来签署应用。

除了可以使用新签名,您仍可使用旧签名证书来签署应用。 这样一来,用户就可以将应用安装在运行 Android 8.1(API 级别 27)的设备上,或者运行的 Android 版本较低,不支持更改签名证书的设备上。

传输层安全协议 (TLS) 实现变更

系统的传输层安全协议 (TLS) 实现在 Android P 中经历了若干次变更:

  • 如果 SSLSocket 的实例在创建时连接失败,现在系统会引发 IOException 而非 NullPointerException。
  • SSLEngine 类现在可正常处理出现的任何 close_notify 提醒。

更严格的 Seccomp 过滤器

我们对可供应用使用的系统调用做了进一步限制。 应用不受影响,但前提是应用使用 Bionic 内容库,并且不直接进行系统调用。

对 ChaCha20 流式传输加密的支持

Android 平台现在提供 RFC 7539 中所述的 ChaCha20 加密实现, {: .external-link}既有纯粹的流式传输加密形式 ChaCha20/None/NoPadding,也有 ChaCha20 + Poly1305 AEAD 形式 ChaCha20/Poly1305/NoPadding。

旧版加密支持

附带 Keymaster 4 的 Android P 设备支持三重数据加密算法(简称三重 DES)。 如果您的应用与需要三重 DES 的旧版系统进行互操作,请使用这种加密来加密敏感凭据。

影响以 Android P 为目标平台的应用的行为变更

Android P 添加的若干功能可改善应用的安全性,但仅当应用以 Android P 为目标平台时,才能获得这些改善。

默认情况下启用网络传输层安全协议 (TLS)

如果您的应用以 Android P 为目标平台,则默认情况下 isCleartextTrafficPermitted() 函数返回 false。 因此,如果您的应用需要为特定域名启用明文,您需要在应用的网络安全性配置中将 cleartextTrafficPermitted 显式地设置为 true。

按进程分设基于网络的数据目录

在 Android P 中,为改善应用稳定性和数据完整性,应用无法再让多个进程共用同一 WebView 数据目录。 此类数据目录一般存储 Cookie、HTTP 缓存以及其他与网络浏览有关的持久性和临时性存储。

在大多数情况下,您的应用只应在一个进程中使用 android.webkit 软件包中的类,例如 WebView 和 CookieManager。 例如,您应该将所有使用 WebView 的 Activity 对象移入同一进程。 您可以通过在应用的其他进程中调用 disableWebView(),更严格地执行“仅限一个进程”规则。 该调用可防止 WebView 在这些其他进程中被错误地初始化,即使是从依赖内容库进行的调用也能防止。

如果您的应用必须在多个进程中使用 WebView 的实例,则必须先利用 WebView.setDataDirectorySuffix() 函数为每个进程指定不同的数据目录后缀,然后再在该进程中使用 WebView 的给定实例。 该函数会将每个进程的网络数据放入其在应用数据目录内自己的目录中。

注:即使您使用 setDataDirectorySuffix(),系统也不会跨应用的进程界限共享 Cookie 以及其他网络数据。 如果应用中的多个进程需要访问同一网络数据,您需要自行在这些进程之间复制数据。 例如,您可以调用 getCookie() 和 setCookie(),在不同进程之间手动传送 Cookie 数据。

以应用为单位的 SELinux 域名

以 Android P 为目标平台的应用无法再利用可全球访问的 Unix 权限与其他应用共享数据。 此变更可改善 Android 应用沙盒的完整性, {: .external-link}具体地讲,就是要求应用的私有数据只能由该应用访问。
要与其他应用共享文件,请使用 content provider或外部存储空间内的共享空间。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,765评论 25 709
  • Android P 在加强app安全方面,推出了一些变动。本篇主要介绍对于一些第三方app开发者,需要牢记在心的变...
    GhostInMatrix阅读 1,267评论 0 1
  • 2014-9-8 18:21 在梦里经常梦到小时候住过的地方,也一直想过去看看,说说念念很多次,也一直未能如愿。今...
    博美之爱阅读 5,301评论 1 1
  • 最初看到这个影片名字,其实是不感兴趣的,心想还不知道是怎么意淫出来的这么一个主题呢。吸引我进入影院的是坐公交车介绍...
    蜗牛倩阅读 344评论 0 0
  • 共享要解决谁的问题? 资源是有限的,也是“无穷的”。有限是相对于使用的紧张度,无穷是相对于使用的闲置度来讲。共享就...
    哒哒luada阅读 102评论 0 0