主流加密方式和工具比较

相关术语

缩写全称描述
CryFSCryFS一种安全的文件加密的工具
Fuse框架Filesystem In UserSpace一个实现在用户空间的文件系统框架
looploop像块设备一样访问一个文件
dev-mapperdevice mapperLinux内核提供的块设备映射框架

加密方式现状

在Linux上有较多加密方式,比如基于FUSE框架、堆栈式文件系统、设备映射等,以下将对各种加密方式进行阐述。

在这里插入图片描述

图-1 加密位置示意图

如上图所以,各个加密方式的区别实质上就是加密位置的不同。加密位置大致分为三类,图中标识为1的是堆栈式文件系统层,标识为2的是dev-mapper层,标识为3的是FUSE框架。

三种加密方式的实现原理有所不同,以下进行逐个说明:

  • 基于FUSE框架实现加密

    不同于其它加密方式,该方式需要基于框架接口在用户态自己实现一套文件系统,FUSE涉及三个模块:

    – FUSE内核模块<内核态>

    LibFuse模块<用户态>

    – 用户实现模块<用户态>
    在这里插入图片描述

    图-2 FUSE框架原理图

    如上图所示,FUSE内核模块实现了VFS虚拟文件系统接口,从上层接收文件操作请求,传递给在用户态的LibFuseLibFuse再传递给应用程序。文件系统应用实现了框架接口,最终以后台进程的形式维护加密系统,该方式具有代表性的实现是CryFS

    <优点>

    基于Fuse框架实现方式自由度较高,可以按要求创建指定大小的块,调用第三方或自己实现加密算法,可以添加文件操作日志等。因为脱离于内核,所以可以实现跨平台。总之,可以根据具体需求进行定制化开发。

    <缺点>

    通过该方式加密可能会造成除数据加解密以外的其它问题,因为通过该方式的实现需要重写一套文件系统,如果在实现时未遵循通用准则或发生错误,则在获取文件信息时可能会出现不正确的情况。

    此外,根据调研,基于此方式实现的文件系统效率大大低于ext4等文件系统,特别是如果针对文件元数据进行加密后,删除1G文件会等待数秒的时间。

  • 堆栈式文件系统加密

    堆栈式文件系统实现在已有的文件系统之上,在用户写入数据之前获取原始数据,并进行加密处理;在读取硬盘数据时进行解密处理再传递给上层,对用户来说文件的操作完全不受影响。该方案中具有代表性的实现是eCryptfsEncFS

在这里插入图片描述

图-3 堆栈式文件系统层级图

<优点>

堆栈式文件系统存在于VFS和文件系统之间,该方式不会修改已存在的文件系统,且相较于块加密来说,并不需要预先创建空间,可以在运行时动态扩容;在运行速度方面要高于通过Fuse加密,所有数据是存放在Block里面,复制、删除文件效率都较Fuse快很多。

<缺点>

文件存取效率方面要低于块加密。

基于该方式实现的工具普遍不具备对文件目录、文件大小加密等功能,可能让攻击者进行目录对比,判断出存储内容。

  • 块设备加密

    块设备加密是运行在文件系统层之下,确保写入特定块设备的所有内容均已加密。用这种方式加密意味着就算整个块设备处于脱机状态,它的硬盘内容看起来就是一堆随机数据,没有办法确定里面的文件内容。

    该方式比较有代表性的实现是dm-crypt和VeraCrypt
    在这里插入图片描述

    图-4 Device mapper层级图

    <优点>

    块设备加密位置靠近底层,不关注加密内容,效率相较于其它加密方式要高很多,且不会改变原来的文件系统,不存在兼容性问题。

    <缺点>

    基于块设备加密需要预先创建一个固定大小的分区或loop文件,该方式决定了其无法进行加密空间的动态扩展,缺少灵活性,且在使用前需要等待分区或loop文件的建立,较为耗时。

    预先分配还会存在一个资源浪费的问题,比如预分配了10G的空间但是实际使用的只有10M,在多用户的情况下该问题更为明显。

下表对三种加密方式进行了比较:

比较项块设备加密堆栈式文件系统加密基于Fuse加密
加密对象块设备文件文件
加密数据存储容器硬盘或分区 / 一个作为 loop device的文件已经存在于现有文件系统上的目录已经存在于现有文件系统上的目录
与文件系统的关系运行于文件系统层之下,不用关心存储数据内容运行于已有的文件系统层之上, 在读写的时候自动进行加/解密处理基于框架接口自己实现了一套文件系统
文件元数据(文件个数、大小等)被加密否 (文件名和目录名可以加密)是否加密取决于具体实现
可以加密整块设备或分区
可以在不用预分配的前提下进行使用
可以在不访问块设备的前提下进行加密,例如NFS或Samba共享,云存储等

加密工具现状

基于FUSE框架实现的加密工具最具代表性的就是CryFS,这里不再赘述。以下将针对基于其它加密方式实现的工具进行介绍:

  • EncFS

    EncFS的使用非常类似CryFS,都是创建基础目录和挂载目录,将文件的真实数据存放在基础目录中。但根据Taylor Hornby的安全审核,Encfs的当前实施存在漏洞或可能容易受到多种攻击。 例如,具有对加密数据具有读/写访问权限的攻击者可能会降低随后加密的数据的解密复杂性,而不会被合法用户注意到,或者可能会使用时序分析来推断信息。

    EncFS还有一个比较严重的问题,它不会对文件的目录结构和大小进行加密,攻击人员可以根据目录结构和文件大小进行比对,猜测加密的内容。

  • eCryptfs

    该工具比EncFS效率稍高,工作在内核空间,但没有完整性检查,和EncFS一样,没有对文件目录结构进行加密。

  • gocryptfs

    gocryptfs是用go语言开发的一套加密方式,它的灵感来自于EncFS,没有已知的安全漏洞,安全性较高,并得到EncFS开发人员的推荐。

    缺点和EncFS一样,没有对文件目录结构进行加密。

  • VeraCrypt

    该工具是一款免费开源跨平台的实时磁盘文件加密工具,它是基于知名的开源加密工具 TrueCrypt 项目衍生而来。

    缺点是不支持完整性检查,非root权限不能创建或者销毁存储容器,并且不支持动态扩容,在易用性上不如其它加密工具。

下表对各工具进行了对比:

比较项CryFSgocryptfsEncFSeCryptfsVeraCrypt
支持局部数据修改yesyesyesyesno
没有已知的安全风险yesyesnoyesyes
加密元数据和文件大小yesnononoyes
加密目录结构yesnononoyes
支持动态扩容yesyesyesyesno
不用预分配容器yesyesyesyesno

【小结】

经过分析比较,适用于本地加密并且具备动态扩容的加密方式为堆栈式加密和FUSE加密,但是堆栈式文件系统的普遍问题是没有对文件的元数据进行加密。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
csdnvip是一种加密方式,它主要用于保护CSDN(中国最大的IT社区)VIP会员信息和数据的安全。这种加密方式使用了多种技术和算法来保证数据的机密性和完整性。 首先,csdnvip使用了对称加密算法,例如AES(Advanced Encryption Standard)和DES(Data Encryption Standard)。对称加密算法使用相同的密钥进行加密和解密,因此只有持有密钥的人才能解密数据。这种方式能够提供较高的加密速度和较低的计算成本。 其次,csdnvip还使用了非对称加密算法,例如RSA(Rivest-Shamir-Adleman)和ECC(Elliptic Curve Cryptography)。非对称加密算法使用一对密钥(公钥和私钥)来进行加密和解密,其中公钥用于加密数据,私钥用于解密数据。这种方式能够提供更高的安全性,因为私钥只有在需要解密时才会使用,并且私钥通常存储在安全的地方。 此外,csdnvip还使用了哈希函数来保证数据的完整性。哈希函数用于将任意长度的数据转换为固定长度的哈希值,这个过程是不可逆的。csdnvip在传输数据之前会对数据进行哈希运算,并将哈希值和数据一起发送给接收方。接收方收到数据后,会再次进行哈希运算,并将结果与接收到的哈希值进行比较,以验证数据的完整性。 综上所述,csdnvip加密方式采用了对称加密、非对称加密和哈希函数等多种技术来保护VIP会员信息和数据的安全。通过这些加密措施,csdnvip能够有效防止数据的泄露和篡改,确保会员的隐私和权益得到有效保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值