6个版本
使用旧的Rust 2015
0.1.5 | 2021年3月26日 |
---|---|
0.1.4 | 2019年11月1日 |
0.1.3 | 2019年9月2日 |
0.1.1 | 2017年8月5日 |
在密码学分类中排名第1229
每月下载量 180次
在meta-secret-core中使用
36KB
477 行
Rust中的Shamir秘密共享
sss-rs
包含对我的Shamir秘密共享库的Rust绑定。此库允许用户将秘密数据分割成多个不同的份额。拥有其中一些或全部份额,可以恢复原始秘密。(寻找命令行界面?)
一个例子是一个啤酒酿造厂,该厂有一个存放他们珍贵超级秘密配方的保险库。这家酿造厂的5位董事会成员不相信其他人足够好,不会秘密闯入保险库并将配方卖给竞争对手。因此,他们把代码分割成5份,允许使用4份来恢复原始代码。现在他们可以确保大多数员工会知道保险库何时被打开,但他们仍然可以在一名员工在国外或在家生病时打开保险库。
安装
[dependencies]
shamirsecretsharing = "0.1"
用法
秘密始终以长度为64项的&[u8]
切片的形式提供。使用create_shares
函数从一段秘密数据生成份额,之后可以使用combine_shares
将份额合并。
份额始终为113字节长。create_shares
和combine_shares
都返回一个Result<_, SSSError>
类型。错误仅会在提供无效参数时发生。当提供有效参数时,这些函数将始终返回Ok(_)
。在参数无效的情况下,错误将能够告诉你出了什么问题。
use shamirsecretsharing::*;
// Create a some shares over the secret data `[42, 42, 42, ...]`
let data = vec![42; DATA_SIZE];
let count = 5;
let treshold = 4;
let mut shares = create_shares(&data, count, treshold).unwrap();
// Lose a share (for demonstrational purposes)
shares.remove(3);
// We still have 4 shares, so we should still be able to restore the secret
let restored = combine_shares(&shares).unwrap();
assert_eq!(restored, Some(data));
// If we lose another share the secret is lost
shares.remove(0);
let restored2 = combine_shares(&shares).unwrap();
assert_eq!(restored2, None);
变更日志
版本0.1.1
- 移除一个意外的侧信道,该侧信道允许一个具有访问精确时间通道的参与攻击者在执行
combine_shares
期间迭代猜测份额。
版本 0.1.5
- 该库以前用于链接到我用C编写的
sss
库。从本版本开始,整个库仅用Rust编写。 - 功能标志
have_libsodium
已弃用。 - 现在所需的最低rustc版本是 1.44.0。
问题
请随意创建一个问题或通过我GitHub关联的电子邮箱发邮件给我。
依赖项
~0.8–1.1MB
~20K SLoC