安卓文件加密 (File-Based Encryption, FBE) 加密算法--AES-256-XTS

2024-08-27 15:52

本文主要是介绍安卓文件加密 (File-Based Encryption, FBE) 加密算法--AES-256-XTS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


标签: File-Based Encryption加密算法; AES-256-XTS;

安卓文件加密 (File-Based Encryption, FBE) 加密算法详解

1. 什么是文件加密(FBE)?

文件加密(File-Based Encryption, FBE)是Android在7.0(Nougat)及更高版本中引入的一种加密机制,它允许不同的文件使用不同的加密密钥进行加密。与全盘加密(Full-Disk Encryption, FDE)不同,FBE提供了更细粒度的加密控制,使得某些文件可以在设备启动后仍保持加密状态,直到用户解锁设备。

2. FBE的加密算法

在FBE中,Android使用了先进的加密算法和密钥管理机制,以确保数据的安全性。以下是FBE使用的主要加密算法和相关技术:

  1. AES加密算法

    • **AES(Advanced Encryption Standard)**是FBE的核心加密算法。具体来说,Android使用AES-256-XTS模式来加密文件数据。这种模式提供了强大的数据保护,防止常见的攻击,如模式分析攻击。
    • AES-256-XTS:这个算法是基于块密码的对称加密,使用256位密钥长度,并结合了XTS模式以增强加密的安全性。XTS(XEX-based Tweaked CodeBook mode with ciphertext stealing)是一种特别适合磁盘加密的模式,它通过“tweak”值确保同一个密钥和明文在不同位置的加密结果不同,从而防止某些形式的攻击。
  2. 文件加密密钥(FEK)

    • 每个文件在FBE中都有一个唯一的文件加密密钥(File Encryption Key,FEK)。这个密钥用于加密和解密该文件的数据,确保即使是同一文件系统中的不同文件,它们的加密结果也是不同的。
    • 文件加密密钥本身使用密钥加密密钥(Key Encryption Key,KEK)加密。这样即使FEK被暴露,攻击者也无法直接解密文件内容。
  3. 密钥加密密钥(KEK)

    • KEK用于加密和解密FEK。KEK是从主密钥派生而来的,而主密钥通常由用户的认证凭据(如PIN、密码、指纹)保护。
    • Android使用了fscrypt模块来管理这些密钥。fscrypt确保在用户解锁设备时自动解密相应的密钥,并在锁屏或设备重启后重新加密这些密钥。
  4. 分区密钥管理

    • 在FBE中,不同的文件可能使用不同的密钥,取决于文件所属的用户和保护级别。Android支持多个密钥,以分别保护设备上不同分区的数据。例如:
      • CE密钥(Credential Encrypted Key):这种密钥依赖用户的凭证(如PIN或密码)解锁。它在设备启动后加密,直到用户首次解锁设备。
      • DE密钥(Device Encrypted Key):这种密钥与设备绑定,即使设备未解锁,这些文件仍然可以被访问(如系统日志、设备配置文件等)。
3. 密钥派生和管理
  • 密钥派生函数:Android使用基于用户凭证和设备硬件信息的密钥派生函数(如PBKDF2、scrypt等)来生成用于解锁设备的密钥。这些密钥用于解密存储在设备上的敏感信息,如FEK和KEK。

  • 可信执行环境(TEE):在支持的设备上,Android使用可信执行环境(Trusted Execution Environment, TEE)来安全存储和管理密钥。TEE通过硬件隔离的方式确保密钥不会被未经授权的应用或系统部分访问。

4. FBE的优势
  • 细粒度加密:FBE允许不同文件和目录具有不同的加密状态,提供更灵活的加密策略。例如,系统可以在设备启动时访问某些文件,而用户数据在解锁之前仍保持加密状态。

  • 用户分离:FBE支持多用户环境,确保每个用户的数据由独立的加密密钥保护,即使在共享设备上也能确保数据隔离。

  • 增强的安全性:通过结合AES-256-XTS和高级密钥管理机制,FBE为Android设备提供了更高的安全性,尤其是在应对物理攻击和未授权访问时。

5. 总结

Android的文件加密(FBE)引入了更为灵活和安全的加密机制,使用AES-256-XTS加密算法来确保文件数据的机密性。通过独立的文件加密密钥、密钥加密密钥以及密钥管理策略,FBE能够在细粒度上保护用户数据,同时支持多用户场景和不同的文件加密策略。这种设计极大提升了Android设备的数据安全性,使得即使设备落入他人之手,也能有效防止数据泄露。



作者简介:https://shimo.im/docs/rp3OVwxle2fJn7Am/
上海徐汇
2024年8月27日


这篇关于安卓文件加密 (File-Based Encryption, FBE) 加密算法--AES-256-XTS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112114

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

Open a folder or workspace... (File -> Open Folder)

问题:vscode Open with Live Server 时 显示Open a folder or workspace... (File -> Open Folder)报错 解决:不可以单独打开文件1.html ; 需要在文件夹里打开 像这样

android java.io.IOException: open failed: ENOENT (No such file or directory)-api23+权限受权

问题描述 在安卓上,清单明明已经受权了读写文件权限,但偏偏就是创建不了目录和文件 调用mkdirs()总是返回false. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_E

ja-netfilter的前世今生和非对称加密的欺骗原理

文章目录 ja-netfilter起源官网插件插件配置文件插件的综合应用更多用法 非对称加密欺骗原理非对称加密和数字证书激活过程和欺骗手段分析代码示例第一步:生成自签名证书脚本第二步:使用自签名证书对产品激活信息进行签名 样例数据样例激活码(注:用于代码演示,直接粘贴到JetBrains 家 IDE 中无法完成激活!不用试,肯定提示无效,无法激活!!)样例power.conf(配合ja-ne

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu