#文件共享 #下载 #ed25519 #x25519 #服务器 #链接

app rshare

使用Rust编写的文件共享程序

3 个版本

使用旧的 Rust 2015

0.1.16 2017年6月10日
0.1.15 2017年6月9日
0.1.14 2017年6月8日

#1806 in 密码学

GPL-3.0 许可证

78KB
1.5K SLoC

Rshare

使用Rust编写的文件共享程序。

使用SHA_2_512的ed25519提供完整性,使用X25519的AES_256_GCM提供隐私。

支持的平台

基本的x86_64指令集或更好。

Linux

Linux 2.6或更高版本,建议3.17或更高版本。

Windows

64位,七或更高版本。

安装

使用您的包管理器安装

Arch Linux

Rshare在AUR中。 链接

下载预编译的二进制文件

从这里下载最适用的二进制文件这里

从源代码编译

  1. 安装Git
  2. 遵循这里的说明。
  3. 运行 git clone https://github.com/cedenday/rshare.git
  4. 运行 cd rshare

从存储库安装

运行 cargo install --force rshare

Linux

  1. 安装ClangMusl
  2. 运行 ./build_linux.sh

用法

测试服务器IPv6: 2601:184:300:500::3612

测试服务器IPv4: 73.143.75.225

测试链接:文件名:sintel.mkv。链接:p8e-_-NggAAFKC3-715NfNnfDdJLrhesiT9_vnOfefrsp7-aLix-KNTX_PEfTL2z02aDBsHuZwA=

简单示例

机器一

[test-one@test-one ~]$ rshare -q -s 2601:184:300:500::3612
> create /home/test-one/Documents/linux-4.11.2.tar.xz
4msKqmNmgAAFKJ3_3WPq5u-L9mxtsLezEtL7vzYudt931mZvR8YAg0u2M3OE2-xuttw91w0A

机器二

[test-two@test-two ~]$ rshare -q -s 2601:184:300:500::3612
> download /home/test-two/Downloads/linux-4.11.2.tar.xz 4msKqmNmgAAFKJ3_3WPq5u-L9mxtsLezEtL7vzYudt931mZvR8YAg0u2M3OE2-xuttw91w0A
> status 4msKqmNmgAAFKJ3_3WPq5u-L9mxtsLezEtL7vzYudt931mZvR8YAg0u2M3OE2-xuttw91w0A
3/3

内部工作原理

创建

使用create命令时会发生什么

  1. 生成ed25519密钥对和64位nonce。
  2. 将部分数量、上述密钥对的公钥和上述nonce编码到链接中。
  3. Rayon 用于遍历文件的部分。每个部分都会附加上述的nonce和该部分的索引。然后使用SHA_2_512进行散列,并使用上述密钥对进行签名。
  4. 上一步的结果被写入持久存储作为元数据。

下载

使用 download 命令时会发生什么

  1. 将链接的公钥和nonce添加到当前下载列表中。
  2. 每15秒,没有高数量部分广告的密钥会被发送到输入的服务器,以从连接到该服务器的对等方获取更多广告。
  3. 每秒随机选择一个想要的广告以启动密钥交换。使用 X25519 进行密钥协商,使用 HKDF 进行已协商密钥的提取和扩展,链接nonce用作共享信息。
  4. 部分使用AES_256_GCM加密,由发送方交换的密钥,并由接收方解密。
  5. 使用链接的公钥验证接收到的SHA_2_512散列。
  6. 使用验证的散列检查部分数据的完整性。
  7. 将部分数据和其元数据写入磁盘。

贡献

  1. 分叉此仓库。
  2. 为您的更改创建一个分支。
  3. 添加一些提交;不要覆盖您的Git历史。
  4. 创建一个拉取请求。

许可

LICENSE

依赖关系

~42MB
~787K SLoC