3 个版本
使用旧的 Rust 2015
0.1.16 | 2017年6月10日 |
---|---|
0.1.15 | 2017年6月9日 |
0.1.14 | 2017年6月8日 |
#1806 in 密码学
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中。 链接。
下载预编译的二进制文件
从这里下载最适用的二进制文件这里。
从源代码编译
从存储库安装
运行 cargo install --force rshare
。
Linux
用法
测试服务器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
命令时会发生什么
- 生成ed25519密钥对和64位nonce。
- 将部分数量、上述密钥对的公钥和上述nonce编码到链接中。
- Rayon 用于遍历文件的部分。每个部分都会附加上述的nonce和该部分的索引。然后使用SHA_2_512进行散列,并使用上述密钥对进行签名。
- 上一步的结果被写入持久存储作为元数据。
下载
使用 download
命令时会发生什么
- 将链接的公钥和nonce添加到当前下载列表中。
- 每15秒,没有高数量部分广告的密钥会被发送到输入的服务器,以从连接到该服务器的对等方获取更多广告。
- 每秒随机选择一个想要的广告以启动密钥交换。使用 X25519 进行密钥协商,使用 HKDF 进行已协商密钥的提取和扩展,链接nonce用作共享信息。
- 部分使用AES_256_GCM加密,由发送方交换的密钥,并由接收方解密。
- 使用链接的公钥验证接收到的SHA_2_512散列。
- 使用验证的散列检查部分数据的完整性。
- 将部分数据和其元数据写入磁盘。
贡献
- 分叉此仓库。
- 为您的更改创建一个分支。
- 添加一些提交;不要覆盖您的Git历史。
- 创建一个拉取请求。
许可
见 LICENSE。
依赖关系
~42MB
~787K SLoC