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文件就不需要再挂载了)。文件级加密已经存在文件系统,直接映射解密。