65.9K
CodeProject 正在变化。 阅读更多。
Home

基于 eCryptfs 的 Android 数据安全解决方案

2016年1月14日

CPOL

4分钟阅读

viewsIcon

18259

我将描述一种基于 eCryptfs (eCryptfs.org) 的敏感数据安全实施新方法。

Intel® Developer Zone 提供跨平台应用程序开发工具和操作指南、平台和技术信息、代码示例以及同行专业知识,以帮助开发人员进行创新并取得成功。加入我们的 Android物联网Intel® RealSense™ 技术Windows 社区,下载工具,访问开发套件,与志同道合的开发人员分享想法,并参与黑客马拉松、竞赛、路演和本地活动。

移动设备上的数据威胁是一个严重的问题。不仅 Android 开发人员致力于安全性,许多应用程序开发人员也在发布前努力确保用户数据的安全。我将描述一种基于 eCryptfs ( eCryptfs.org ) 的敏感数据安全实施新方法。

现有解决方案

目前有多种解决方案来保护用户数据。图 1 将这些解决方案按不同层级进行了分类。

图 1:当前一些解决方案的 3 个层级
  1. 内核级别
    Android* OS 自 3.0 版本起支持全盘加密 (FDE)。这是一种内核级别的解决方案。FDE 是使用加密密钥对 Android* 设备上的所有用户数据进行编码的过程。设备加密后,所有用户创建的数据在写入磁盘之前都会自动加密,所有读取操作在将数据返回给调用进程之前都会自动解密。普通开发人员无需了解它;如果用户在手机上使用它,他们可以在解锁设备之前复制保护所有数据。
  2. Android* 框架级别
    在此级别,需要 root 权限。Hook 是一种确保需要保护的应用程序能够轻松传输/保存数据的重要方法。
  3. 应用程序级别
    大多数当前的安全解决方案都处于应用程序级别。开发人员有许多现有库可供使用,例如 OpenSSL、secureSqlite 等。开发人员可以使用现有库来确保适当的加密和安全。

eCryptfs 简介

eCryptfs 是一个符合 POSIX 标准的企业级堆叠加密文件系统,适用于 Linux*。它将加密元数据存储在每个文件的头部,因此加密后的文件可以跨主机复制。文件将使用 Linux* 内核密钥环中的相应密钥进行加密。除了加密文件本身已有的信息外,无需保留任何其他额外信息。

eCryptfs 被广泛使用,它是 Ubuntu 加密主目录的基础,原生集成在 Google 的 ChromeOS* 中,并透明地嵌入了多个网络附加存储 (NAS) 设备中。

基于 eCryptfs 的解决方案架构

使用 eCryptfs 时,加密和解密是自动进行的。图 2 显示了拟议解决方案的架构。

图 2:拟议的(基于 eCryptfs 的)解决方案架构

如您所见,通过 Linux* 内核中的 eCryptfs,我们可以添加一个服务来响应所有操作。该服务接收使用它的应用程序的命令,并将请求发送给 VOLD(Android*[2] 中的 Volume Daemon)以实现实际操作。

发送给 VOLD 的请求包括:

  • 创建安全目录
  • 锁定安全目录 – VOLD 将卸载挂载点
  • 解锁安全目录 – VOLD 将目录挂载到一个挂载点,然后应用程序可以轻松地将数据放入挂载点。内核将自动加密/解密数据。
  • 删除安全目录
  • 恢复安全目录
  • 更改密码

如图 3 所示,我们可以对该解决方案进行分类并将其插入新的层级。

图 3:此拟议解决方案的对应层级

创建您自己的系统

图 4:拟议的(基于 eCryptfs 的)解决方案更改

图 4 中显示的红色块表示实施 eCryptfs 解决方案的更改。

  1. 确保 Linux* 内核具有 eCryptfs 支持。
  2. 添加实用程序以支持 eCryptfs 以及 VOLD 中的 eCryptfs 接口。
  3. 添加主服务,包括供应用程序使用的库。
  4. 添加必要的 SELinux 策略,以确保它可以在新系统中正常工作。

您可以在参考文献部分的第三个链接中找到集成补丁。

摘要

eCryptfs 是 Linux* 内核中的一项安全功能。我们在 Android* 中实施安全存储服务的方​​法基于此 eCryptfs 文件系统。集成到系统中后,开发人员可以在他们的应用程序中轻松使用它,内核将负责加密和解密。

参考

[1] FDE: https://aosp.org.cn/devices/tech/security/encryption/

[2] VOLD: http://vold.sourceforge.net/

[3] 集成补丁:https://github.com/catalinionita/Ecryptfs-Tools-for-Android

关于作者

张力是 Intel® 软件和解决方案事业部 (SSG) 开发者关系部门移动企业赋能团队的应用工程师。他专注于 Android* 应用程序。

© . All rights reserved.