JuiceFS 数据加密原理[亲测有效]

JuiceFS 数据加密原理[亲测有效]JuiceFS 作为分布文件系统,每天与海量的数据打着交道,因此数据的安全性尤为关键,今天就来介绍一下 JuiceFS 在数据加密方面所做的努力。 传输中数据加密 JuiceFS 在网络上传输时会对数

JuiceFS 数据加密原理

JuiceFS 作为分布文件系统,每天与海量的数据打着交道,因此数据的安全性尤为关键,今天就来介绍一下 JuiceFS 在数据加密方面所做的努力。

传输中数据加密

JuiceFS 在网络上传输时会对数据进行加密,以防止未经授权的用户窃听网络通信。

JuiceFS 客户端始终使用 HTTPS 把数据上传到对象存储服务,以下情况除外:

  • 使用内部端点上传至阿里云 OSS
  • 使用内部端点上传至 UCloud US3

静态数据加密

JuiceFS 支持静态数据加密,即在上传到对象存储之前对数据进行加密。在这种情况下,存储在对象存储中的数据将会被加密,这可以在对象存储本身被破坏时有效地防止数据泄露。

JuiceFS 在客户端加密中采用了行业标准的加密方式(AES-GCM 和 RSA)。加密和解密是在 JuiceFS 客户端进行的。用户唯一需要做的是在 JuiceFS 挂载时提供一个私人密钥或密码,并像普通文件系统一样使用它。它对应用程序是完全透明的。

注意:在客户端缓存的数据是不加密的。不过,只有 root 用户或所有者可以访问这些数据。如果要把缓存的数据也加密,你可以把缓存目录放在一个加密的文件系统或块存储中。

加密和解密方法

必须为每个加密的文件系统创建一个全局 RSA 密钥 M。在对象存储中保存的每个对象都将有自己的随机对称密钥 S。数据用对称密钥 S 进行 AES-GCM 加密,S 用全局 RSA 密钥 M 进行加密,RSA 密钥使用用户指定的口令进行加密。

JuiceFS 数据加密原理[亲测有效]

数据加密的详细过程如下:

  • 在写入对象存储之前,数据块会使用 LZ4 或 ZStandard 进行压缩。
  • 为每个块生成一个随机的 256 位对称密钥 S 和一个随机种子 N
  • 基于 AES-GCM 使用 SN 对每个块进行加密。
  • 使用 RSA 密钥 M 对对称密钥 S 进行加密得到密文 K
  • 将加密后的数据、密文 K 和随机种子 N 组合成对象,然后写入对象存储。

数据解密的步骤如下:

  • 读取整个加密对象(它可能比 4MB 大一点)。
  • 解析对象数据得到密文 K、随机种子 N 和被加密的数据。
  • 用 RSA 密钥解密 K,得到对称密钥 S
  • 基于 AES-GCM 使用 SN 解密数据得到数据块明文。
  • 对数据块解压缩。

密钥管理

在启用加密功能时,RSA 密钥的安全是极其重要的。如果密钥被泄露,可能会导致数据泄露。如果密钥丢失,那么所有的加密数据都将丢失,而且无法恢复。

当使用 juicefs format 创建一个新卷时,可以通过 --encrypt-rsa-key 参数指定 RSA 私钥来启用静态加密,该私钥将会被保存到 Redis。当私钥被密码保护时,可以使用环境变量 JFS_RSA_PASSPHRASE 来指定密码。

使用方法:

生成 RSA 密钥

$ openssl genrsa -out my-priv-key.pem -aes256 2048

在格式化时提供该密钥

$ juicefs format --encrypt-rsa-key my-priv-key.pem META-URL NAME

注意:如果私钥受密码保护,在执行 juicefs mount 时应使用 JFS_RSA_PASSPHRASE 来指定该密码。

性能

TLS、HTTPS 和 AES-256 在现代 CPU 中的实现非常高效。因此,启用加密功能对文件系统的性能影响并不大。RSA 算法相对较慢,特别是解密过程。建议在存储加密中使用 2048 位 RSA 密钥。使用 4096 位密钥可能会对读取性能产生重大影响。

总结

文件系统加密技术几乎可以适用于任何基于文件系统的数据库存储加密需求,本文从原理出发到实际操作如何生成并使用密钥,详细介绍了 JuiceFS 对数据加密解密的过程 。未来,JuiceFS 将持续努力为您的数据安全保驾护航。

推荐阅读:知乎 x JuiceFS:利用 JuiceFS 给 Flink 容器启动加速

如有帮助的话欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5603.html

(0)
上一篇 2023-05-02
下一篇 2023-05-02

相关推荐

  • php替代品_工具镊子

    php替代品_工具镊子phpMyAdmin是管理MySQL数据库最流行的Web界面。但也有许多其他的工具,我们可代替phpMyAdmin的使用。通过本文,我想向你提供的phpMyAdmin的替代品清单。 1. Admin…

    2023-03-18
    160
  • MinGW与gdb调试,MinGW中没有gdb.exe解决办法[通俗易懂]

    MinGW与gdb调试,MinGW中没有gdb.exe解决办法[通俗易懂]MinGW(Minamalist GNU For Windows)是个精简的C/C++编译器,它实际上是将经典的开源C语言编译器GCC移植到了Windows下,并且包含了Win32API,因此可以将…

    2023-04-08
    165
  • 解决Python或Java环境无法正常运行的问题

    解决Python或Java环境无法正常运行的问题Python是一门高级的动态解释性编程语言,但有时会遇到Python环境无法正常运行的问题。下面将从以下几个方面进行阐述:

    2024-02-17
    109
  • 华为P40系列搭载HMS应用体验感很赞呀!你们觉得呢?「建议收藏」

    华为P40系列搭载HMS应用体验感很赞呀!你们觉得呢?「建议收藏」华为P40系列搭载HMS应用体验感挺赞,最近发现华为智慧助手真心好用,能绑定多个手机号码,查看多平台购物的快递信息,对我这种剁手党来说很方便,不用每个平台切换查找信息了,还有智能取件提醒不怕错过每一…

    2023-03-06
    157
  • Python zipfile模块使用指南

    Python zipfile模块使用指南随着计算机存储技术的日益发展,我们存储在硬盘中的数据越来越多,这些数据可能是文本、图像、音频或者其他形式的数据。而压缩和解压缩文件是常见的操作方法,它们可以有效地节省硬盘存储空间,也让文件的传输更加方便。Python的zipfile模块提供了一种简单的方式来处理.zip格式的文件,我们可以使用Python zipfile模块来实现对压缩包的操作。

    2024-07-25
    38
  • mysql按日期做曲线图统计,如果当天没有数据则日期不全、补全日期

    mysql按日期做曲线图统计,如果当天没有数据则日期不全、补全日期侵删。不足之处请谅解。 工作中遇到的问题: 不会就百度,多百度几次总会有自己需要的。比如这个曲线统计,我也是借用了博客里的各位大大,然后按照自己项目需求做的,页面给前端怼数据去就行,下面是步骤 1,用

    2023-02-12
    136
  • MySQL企业级备份[通俗易懂]

    MySQL企业级备份[通俗易懂][TOC] 1.数据库管理员的两大工作核心 1.1.能够让数据安全得到保护 所谓的数据安全,最容易被人误以为是只有数据丢失,其实还包括数据被脱库、泄密等方面。 1.2.能7 24小时提供服务 数据库具

    2023-03-01
    127
  • 利用Python Dictionary实现高效数据存储和检索

    利用Python Dictionary实现高效数据存储和检索Python提供了很多内置的数据结构,其中Dictionary(字典)是一个非常有用的数据结构,它可以用来存储任意数量、任意类型的数据,并且可以通过key来实现O(1)的时间复杂度进行数据的查找、插入和删除操作。

    2023-12-15
    120

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注