APFS文件系统科普贴

以下所有文字描述及截图均基于macOS10.13.6(17G65)

  1. APFS简介

    APFS是apple在WWDC2016跟随ios13一起发布的新一代文件系统,用以取代年龄比xp还大的HFS+(HFS Extend)文件系统。当升级到以下系统版本时会自动转换已有文件系统到apfs:macOS10.13,iOS 10.3, tvOS 10.2,watchOS 3.2。当然考虑到iOS10.3不支持32位设备,所以iphone5及之前的老设备都没机会享受这种待遇了。在macOS里面看到的大概是下图这样:
  2. APFS是个容器,多个卷共享存储空间

    这种设计与其他文件系统都不同,倒与lvm或者ldm的设计原理类似但又有区别。从上图我们可以看到这个APFS的容器一共53.48G,被4个卷共享空间(shared by 4 volumes),展示在界面上的只有一个卷叫APFS,放到火眼证据分析中解析可以看到4个卷:
    默认安装10.13系统并且选择磁盘选择格式化为apfs类型时,系统默认生成四个卷:

    APFS:这个名称不一定叫APFS,在系统安装界面会提示用户输入这个卷名,用于存放系统和用户数据。
    Preboot:如果启用了FileVault加密会通过这个分区启动系统。(加密问题比较复杂,后面会详细说)
    VM:交换分区,开机后会挂载在/private/var/vm。
    Recovery:进入macOS的recovery模式,比如可以用来清除用户密码。

    在APFS这个容器中,最多支持100个apfs卷,所有卷共享容器空间,但内容互相独立,这种独立包括文件系统的属性。通过磁盘管理可以动态的在APFS容器中添加或者删除apfs格式的卷(在这里其他的文件系统都是不被支持的),所允许创建的卷类型如下:
    从上图可以看出APFS卷创建时有2个选择:大小写是否敏感,是否加密。默认情况下是大小写不敏感(Case insensitive)和不加密。
    大小敏感:主流的linux文件系统都是大小写敏感的,比如ext系列,xfs之类。这意味在在同一文件夹下允许存在只有大小写不同的两个文件。文件系统不会搞混。
    是否加密:APFS设计时就考虑了安全性,所以把加密做到了文件系统这个层级,后面详细聊APFS加密问题。
  3. APFS的Copy-On-Write机制
    Copy On Write机制提供了很多的优点,无论是在数据安全性还是文件写入性能方面。所以Copy On Wite特性也被运行到了很多技术场合,最为熟知的是qcow镜像,同样vhd的差分镜像与vmware的snapshot也有类似的味道在里面。APFS的很多功能也依赖于Copy On Write特性。
    比如APFS的Time Machine和写文件。设想现在有一个1G的大文件,需要修改这个文件的第1个字节。那么传统的做法一般是把文件修改写在磁盘上同样位置。但是如果保存过程中发生的某种错误,那么这个文件就被永久损毁了,所以会存在数据的不一致性这种风险。而Copy On Write的做法是分配一个新的block块将数据写入,再将旧的数据块标记为未使用。这样做既可以提高性能,又可以降低错误率。
    单独要说的是APFS的复制功能。从Copy On Write原则看,文件的复制并没有改变文件的内容,所以APFS的做法是分配一个新的block块将原文件的元数据(文件名,权限,内容所在块之类信息)复制过去,这样做完后连内容所在块都不用调整,还是指向原来文件内容。所以这就是网上一直传闻的在APFS文件系统中复制文件并且不额外占用空间的原因。

  4. APFS加密的开启和关闭
    对于想额外添加加密卷则直接在磁盘管理中执行增加卷的操作并选择为加密即可。
    同样,关闭加密功能操作与开启操作几乎一致。
    对于已安装好系统的macOS,想开启系统卷的加密功能采用下列方法:
    系统偏好设置-> 安全与隐私 -> 点按锁按钮以更改 -> 开启FileVault


4.APFS的FileVault加密
HFS+ 没有原生的加密支持。为了达到数据的安全性,HFS+ 卷采用 CoreStorage 加密层进行包裹。CoreStorage 是一个逻辑卷管理系统,可以在数据块层次对卷中的数据进行加密。当我们对CoreStorage 中的加密卷进行“解锁”的时候,会生成一个新的逻辑卷设备,其中包含整个已解密的文件系统,包括卷中以连续块方式存在的未分配空间。如果我们对这个逻辑设备进行镜像,就会得到接加密卷的所有处于解密状态的块数据(包括未分配的数据块)。
APFS 在文件系统级别对数据进行加密。以卷为单位进行加密。“解锁” APFS 卷也不会生成特殊的处于解密状态的块设备。所以取证分析工具必须能够提供APFS卷的解密能力,而且在FileVault加密开启的情况,一定需要对目标设备做全盘镜像。

APFS采用了基于块单位的XTS-AES-128加密操作。想解密块数据除了需要提供加密块数据还需要提供128bit的卷加密秘钥,二级加密密钥,加密盐值(大部分情况是加密数据所在的块编号,但并不全是)。如果提供了用户密码或者recovery秘钥,目前火眼可以正确解密APFS并且处理大小写问题。(弹出窗口给出卷名提示输入密码)
  1. 关于APFS的数据恢复
    对于未加密的APFS卷,可以直接扫描出未分配簇各种恢复手段各显神通不影响。
    对于加密的APFS卷,扫描出未分配簇后存在以下问题:
    (1). 无法得知这个未分配簇属于哪个卷,即使知道所有卷的密码,不同的卷的卷秘钥与二级秘钥都不相同。而且无法尝试,因为基于AES加密的特性,是无法判断解密数据的正确性的。
    (2).假设第一个问题已经搞定了,无法得知准确的加密盐值。
    所以对加密APFS卷做数据恢复难度相当大。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 3,859评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,141评论 0 9
  • 今天抽到的是星币III 抽到的时候我就会心一笑了。我也不知道为什么,就觉得三个人的状态或者三这个数字特别符合我现在...
    塔罗师cat阅读 100评论 0 0
  • 蓝雪夜阅读 210评论 0 0