EncFS

✍ dations ◷ 2025-06-08 22:53:20 #EncFS

EncFS是一个基于FUSE的加密文件系统(英语:cryptographic filesystem),为自由软件。通过它可以将任意目录作为存储空间来透明地加密并存储文件。

挂载一个EncFS文件系统涉及到两个目录:源目录和挂载点。挂载点中的每个文件都是加密存储在源目录中的一个与之对应的文件。挂载点中的文件呈现未加密的样子,对应源目录中已加密的文件。源目录中会加密文件名。

文件通过卷密钥加密,卷密钥可以存储在加密的源目录之内或之外。有一个密码机制用于解密该密钥。

与其他磁盘加密软件(英语:disk encryption software)相比,EncFS因在主机上单独存储每个被加密的文件而具有一些优势。

EncFS可在多个平台上使用,而eCryptfs与Linux内核绑定

EncFS在底层文件系统之上实现了数据腐烂(英语:Data rot)(bitrot)检测

EncFS不存在占用固定大小的“卷”——加密的目录占用的空间随着挂载点中的文件增加而增加,也随着文件被删除而缩小。

EncFS的加密目录可以位于普通的文件服务器上(通过NFS、SSHFS等),并且可以使用普通的文件系统工具(例如Rsync)高效地进行镜像和备份。

挂载点中的某些目录可能存在于其他的物理设备上。

文件同步、云存储等备份软件可以只备份源目录中已变更的文件。

数据损坏发生时,更不易波及多个文件。损坏也更可控,可能通过文件系统级别的维护工具来修复某些数据损坏。磁盘加密系统遭遇数据异常损坏时可能遭遇更多意外情况。

因为加密的文件仍基于底层文件系统来存储,某些操作系统优化机制仍然奏效,例如传递Trim命令来帮助提升固态硬盘的性能。不过dm-crypt也支持这一点。

支持文件的随机访问,无需解密整个被加密的卷。

EncFS也存在一些缺点。

挂载的EncFS目录与容纳源目录的文件系统享有相同的能力与限制。

因加密原因,EncFS产生的加密文件的文件名会比原始文件名长。因此,EncFS不能存储长度接近文件系统的文件名长度上限的文件名。大多数文件系统的一般文件名限制为255个字节,这种情况下EncFS最多支持190个字节的文件名。

尽管文件名和文件数据被加密,但任何有权访问源目录的人都可看到加密的文件系统内有多少文件、文件的权限、文件的大致大小,以及上次访问和上次修改文件的时间。

2014年2月进行的付费安全审计中发现了多个潜在的漏洞。给出的结论是:

EncFS is probably safe as long as the adversary only gets one copy of the ciphertext and nothing more. EncFS is not safe if the adversary has the opportunity to see two or more snapshots of the ciphertext at different times. EncFS attempts to protect files from malicious modification, but there are serious problems with this feature.

如果对手只能看到一版被加密的内容,EncFS可能是安全的。如果对手能看到密文在不同时间的两版或更多版本,则EncFS不安全。EncFS在尝试避免文件免遭恶意修改,但该功能存在严重问题。

EncFS 1.8的公告包括数项基础设计变更,以回应上次的审计中提出的安全问题。尽管如此,这些安全漏洞仍受到关注。

在新建EncFS卷时,有数个用来自定义文件系统的选项,以满足不同需求。

EncFS可使用若干种存在于系统中各加密库内的加解密算法。Blowfish和AES通常可用。

可以为支持“可变密钥长度”的密码算法选择密钥长度(keySize)。

每个文件均以块的形式加密,有选项控制这些块的大小。每次读取单个字节时,必须解密包含它的整个块。同样,每次写入都需要解密对应块、更改内容并重新加密。

默认的块大小1024(字节)足以满足大多数用途。

源目录中的文件名可以存储为明文、加密块或流模式加密。块模式在一定程度上掩盖了文件名长度,而流模式的文件名会尽可能短,这在某些文件系统中可能节省一些存储空间。

启用此选项后,加密文件名所用的初始化向量取自文件的父目录——这将使两个同名但位于不同目录的文件具有不同的加密后文件名。

如果重命名目录,则其中包含的所有文件和目录都需要重新加密其文件名,这可能花费不少时间和资源。如果经常重命名含有大量子项目的目录,则应该禁用此选项。

启用此选项后,每个文件都使用一个随机的8字节初始化向量来加密,该向量存储在源目录的加密文件中。如果禁用此选项,则每个文件都使用相同的初始化向量来加密,可能使卷密钥更容易被破解。

启用此选项可加强文件系统的安全性,但每个文件会多占用8个字节。

使文件数据的初始化向量派生自文件名的初始化向量链。相同数据但不同文件名或目录的文件将加密成不同的样子。

如此,此模式启用时重命名文件需要文件的随机初始化向量被文件名初始化向量链中的更改抵消,或者重新编码数据。 EncFS的作者选择了前一种方法,因为快得多,尤其是对于大文件。

使编码依赖于完整的路径名。因此重命名或移动文件将需要重新编码。不支持硬链接。

存储每个加密块的校验和,使EncFS能检测到加密文件的损坏或修改。校验和 (blockMACBytes)为8个字节,并可选择向每个块添加最多8个额外字节的随机数据 (blockMACRandBytes),以防止相同未加密数据的两个块有相同的校验和。因为必须在读取数据(验证完整性)与写入数据(更新校验和)时计算每个块的校验和,此选项会带来大量CPU开销。

相关

  • DNA引发酶引发酶(英语:primase,或译为引子酶,引物酶)是指在DNA复制的起始阶段合成单链RNA引物的RNA聚合酶,引物合成后,DNA聚合酶会沿着引物继续合成单链DNA(延伸),此后RNA引物片段会被外切酶5'
  • 市县列表云南省县级行政区列表列出中华人民共和国云南省当前下辖的所有县级行政区。截止2018年8月,云南省辖有8地级市、8自治州、16县级市、17市辖区、67县和29自治县,共16个地级行政
  • 鲁伯特姆氧化反应鲁伯特姆氧化反应(Rubottom氧化),是硅烯醇醚被间氯过氧苯甲酸(mCPBA)氧化为硅基保护的α-羟基酮的反应。mCPBA将双键环氧化,然后发生分子内重排,生成两性离子3,最后氧原子亲核进攻硅
  • 兑姓兑姓,读duì,一个中国姓氏,人数较少,一说“队姓”,一说本姓“锐姓”。传商朝西伯侯姬昌(后周文王)造八卦,其中“兑”卦指西方,亦指泽。西周中央军称为“王兑”,表所在西方,有将士以军队
  • 凯斯里辛格普尔凯斯里辛格普尔(Kesrisinghpur),是印度拉贾斯坦邦Ganganagar县的一个城镇。总人口13152(2001年)。该地2001年总人口13152人,其中男性6919人,女性6233人;0—6岁人口2057人,其中男1144
  • 马克·费侯马克·费侯(Marc Ferro,1924年12月24日-)是一位法国历史学家,致力于20世纪初期的欧洲历史,专门研究俄罗斯和苏联历史以及电影史。他是法国社会科学高等学院社会科学研究主任,是法国
  • 安德斯·贝林·布雷维克安德斯·贝林·布雷维克(挪威语:Anders Behring Breivik,1979年2月13日-)是2011年7月22日发生的2011年挪威爆炸和枪击事件之行凶者。在此次恐怖袭击中,挪威奥斯陆市中心首相办公室
  • 能量宝石《能量宝石》(日语:パワーストーン,英语:Power Stone,港台译作“力石战士”,又译作“力量之石”、“威力之石”)是卡普空于1999年制作的3D格斗游戏。2000年推出续作《能量宝石2》。
  • 吸血鬼之避世–血族《吸血鬼之避世-血族》(英语:Vampire: The Masquerade–Bloodlines)是一款2004年发售的PC平台的角色扮演游戏。该游戏由Troika Games公司基于Source引擎制作,动视公司发售,故事背景取材于白狼游戏发布的《黑暗世界》之《吸血鬼之避世潜藏》。故事线开放,有主线与支线任务的设定。游戏采用第1人称和第3人称视角,允许玩家扮演Camarilla的6个吸血鬼家族或独立的Gangrel家族的一个成员,玩家会在洛杉矶里调查一系列关于安卡兰石棺的事件。在黑暗世界里,吸血鬼分为
  • 超级海洋超级海洋的定义为,至少比现今太平洋大的海洋,通常环绕着一个超大陆。由于海域表层的洋流,可以通畅地从东往西流动,因此超大陆的东侧气候,将比西侧更温暖。超大陆内部的气温变化将更为激烈,将导致强烈的季风。但关于超级海洋的相关知识仍是未知。此外,哥伦比亚大陆与更早期的乌尔大陆,应该也由超级海洋环绕着。