#provider #remote #hash #tor #channel #storage #byte

未维护 bin+lib 迈莫

只是另一个存储

3 个版本

0.0.3 2022年2月11日
0.0.2 2022年2月11日
0.0.1 2022年2月11日

#99#tor

每月 47 次下载

Unlicense

325KB
964

迈莫

只是另一个存储

Crates.io License: Unlicense Lines of code

Tree being struck by lightning (royalty-free stock photo from pixabay)

  • 远程存储:通过 Tor 向远程存储提供商开放存储通道
  • 轻量级:使用基于 Blake3 的哈希、验证流和加密算法进行平台优化
  • 本地文件可以被删除:定期验证远程存储的数据
  • 远程文件可以被检索:可以证明文件在远程存在并将其发送回来
  • 低写入放大:存储的字节仅略微大于读取的字节

注意! 这是一种实验性、可能危险的技术,尚未经过审计!

显著的依赖项

路线图

0.0.1 - 实验

  • Bao 编码
  • Bao 验证
  • Bao 提取

0.0.2 - 文件存储

  • Sled 用于路径查找
  • file SQL
    • 模式
    • 插入
    • 查询
  • Maimo 数据 文件夹中编码文件,并将它们存储在配置的存储卷中
  • 解码配置的存储卷中存储的文件,并将它们恢复到 Maimo 数据 文件夹
  • 验证文件的随机片段(考虑到文件大小各异)
  • 显示编码文件列表
  • 路径在 sqlite 中索引(路径、文件名、文件大小、创建和修改日期、文件哈希)
  • 可以存储多个文件

0.0.3 - Crate & 测试

  • 将所有 CLI 命令导出为函数
  • 为 crate 添加了序列集成测试
  • 需要更多的文档和测试

0.0.4 - Tor 网络

  • 生成 Onion v3 地址
  • peer SQL
    • 模式
    • 插入
    • 查询
  • 通过 Tor 隐藏服务打开并接收 TCP 套接字

0.0.5 - 认证加密

  • 使用 Onion v3 地址在存储客户端和存储提供商之间进行身份验证
  • 使用 Blake3 键控哈希作为 MAC
  • 文件使用 XChaCha8Blake3Siv 认证加密进行加密
    • 注意! 实验性加密!
  • 使用 RNG 的 CSPRNG
  • 使用随机填充而不是零填充
  • 从内存中删除私钥后的零化

0.1.0 - 概念验证

目标:一个可以在远程存储提供商上使用Tor压缩、加密和存储数据的存储客户端。存储客户端可以定期检查数据是否仍然存在于远程存储提供商上,并且与仅一个本地32字节Blake3哈希值一致,而无需完整的本地引用副本,允许客户端删除其本地数据,相信它可以在以后完整地检索它。然后,存储客户端可以从不存储提供商检索数据并在磁盘上对其进行解码。

  • 存储客户端可以通过Tor打开与存储提供商的存储通道
    • 存储提供商生成Onion v3地址以供存储客户端在带外使用
    • 存储客户端生成自己的Onion v3地址
    • 在Tor隐藏服务上从存储客户端到存储提供商建立了TCP套接字
  • 存储客户端可以在存储提供商上存储数据
    • 存储客户端可以向其节点提供指定路径以存储远程数据
    • 数据使用Bao编码,使用Blake3散列,并通过Tor电路上的TCP套接字传输
    • Blake3哈希值保留在本地
    • 可选:删除本地数据
  • 存储客户端可以定期验证他们发送的数据是否仍然存在并且随着时间的推移是一致的
    • 存储客户端从存储提供商随机偏移量请求4KB数据块
    • 存储客户端将4KB数据块与同一偏移量的本地Bao Blake3哈希值进行比较
  • 存储客户端可以通过存储通道从存储提供商检索数据
    • 数据写入指定路径的磁盘
  • 文件使用zstd字典压缩进行压缩
  • 可以从存储提供商检索单个文件
  • 可以删除文件
  • 可以覆盖文件,旧版本仍然可检索
  • 可以配置旧版本的数目
  • 提供嵌入式库,附带文档
  • 支持大量文件的并行处理

0.1.1

  • 支持复杂的卷和存储布局

未来

在基本功能存在之后,还计划添加更多令人兴奋的功能,包括Start9 Embassy和Umbrel上的应用程序!

依赖关系

~46MB
~747K SLoC