FBE 与FDE学习总结

(168) 2024-01-12 18:01:02

1、本文档简述

1.1、定义:

Full-disk encryption (FDE) 全盘加密android4.0引入

File-based encryption (FBE) 文件级加密 android7.0引入

1.2、学习目标:

1、熟悉 linux 加密/解密,挂载流程,工具使用

2、熟悉android加密/解密,挂载流程。

2、预备知识

2.1、加密技术

https://www.cnblogs.com/redcoatjk/p/3822585.html 按作用不同,文件加密和数字签名技术主要分为数据传输、数据存储、数据完整性的鉴别以及密钥管理技术4种。

1、数据传输加密技术是对传输中的数据流加密,常用的方法有线路加密和端对端加密两种。

2、数据存储加密技术目的是防止在存储环节上的数据失密,可分为密文存储和存取控制两种。

3、数据完整性鉴别技术是对介入信息的传送、存取、处理的人的身份和相关数据内容进行验证,达到保密的要求。

4、密钥管理技术是数据的加密技术通常是运用密钥对数据进行加密,这就涉及到了密钥的管理问题。

2.2、典型加密算法

2.2.1、基于“消息摘要”的主要算法

MD5、sha.1,主要特点密文固定长度、稍有改变密文完全不同、无法数据还原。所以用于验证数据的完整性。android中的使用例子OTA包传输使用的MD5,OTA差分升级使用的SHA256,DM-verity使用的HASH算法。

MD5算法原理https://blog.csdn.net/sinat_27933301/article/details/79538169

2.2.2、“对称/非对称密钥”加密算法

对称算法:DES算法,RC算法,AES算法,主要特点加密可逆,加密解密使用相同密钥。全盘加密,文件级加密使用的一般是AES算法。

非对称算法:RSA算法,主要特点是加密解密使用不同密钥。

公钥加密,私钥解密(加密传输);私钥签名,公钥验签(确认发送方,也可验证完整性,可以用于OTA包签名,secure boot,Verify boot,应用签名)。

https://www.jianshu.com/p/3331467d139f

签名、加密、证书的基本原理和理解 https://www.cnblogs.com/Caersi/p/6720789.html

AES算法原理https://blog.csdn.net/gulang03/article/details/81175854

RSA算法原理https://blog.csdn.net/u014044812/article/details/80866759

2.3、Linux加密工具

2.3.1对称算法

全盘加密

全盘加密工具使用https://blog.csdn.net/zhongbeida_xue/article/details/78550712#t18

示例

fallocate -l 1G  ./luks.vol  //创建大文件

cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 10000 luksFormat ./luks.vol //加密

cryptsetup luksOpen ./luks.vol yectest //创建解密映射连接

ls /dev/mapper/

mkfs.ext4 /dev/mapper/yectest //给该块/文件创建文件系统

mkdir /mnt/yectest 

mount /dev/mapper/yectest /mnt/yectest//挂载文件系统

df -hT

修改文件

umount /mnt/yectest //卸载

cryptsetup close yectest //关闭映射连接

文件系统加密

原理 https://www.kernel.org/doc/html/latest/filesystems/fscrypt.html

文件级加密工具使用https://blog.csdn.net/zm_jack/article/details/78894980

示例

sudo apt-get install ecryptfs-utils //安装控件

sudo mount -t ecryptfs real_path ecryptfs_mounted_path //以文件加密方式挂载文件

修改文件

sudo umount -t ecryptfs ecryptfs_test //卸载

以不同方式再挂载并修改文件

sudo mount -t ecryptfs real_path ecryptfs_mounted_path //以文件加密方式挂载文件

1、输入不同参数或密码

2、叠加加密

查看keys

cat /proc/keys | grep 

个人总结全盘加密和文件系统加密区别:

1、全盘加密只有一个密码,该密码正确解密后才可使用。文件级加密密码或参数不正确时也能挂载,如果之前加密的keyring存在,则可以读取文件,不存在则不能读取;写入时以新参数加密方式写入;

2、全盘加密磁盘上是已加密数据,看不到文件系统的,流程上是就需要先创建解密映射,然后挂载出文件系统(如果该磁盘不存在文件系统,只是bin文件就不需要再挂载了)。文件级加密已经存在文件系统,直接映射解密。

THE END

发表回复