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

Download history 32/week @ 2024-03-11 36/week @ 2024-03-18 36/week @ 2024-03-25 72/week @ 2024-04-01 29/week @ 2024-04-08 31/week @ 2024-04-15 86/week @ 2024-04-22 62/week @ 2024-04-29 53/week @ 2024-05-06 39/week @ 2024-05-13 50/week @ 2024-05-20 34/week @ 2024-05-27 20/week @ 2024-06-03 46/week @ 2024-06-10 66/week @ 2024-06-17 44/week @ 2024-06-24

每月下载量 180次
meta-secret-core中使用

MIT许可证

36KB
477

Rust中的Shamir秘密共享

Build Status Coverage Status Docs

sss-rs包含对我的Shamir秘密共享库的Rust绑定。此库允许用户将秘密数据分割成多个不同的份额。拥有其中一些或全部份额,可以恢复原始秘密。(寻找命令行界面?

一个例子是一个啤酒酿造厂,该厂有一个存放他们珍贵超级秘密配方的保险库。这家酿造厂的5位董事会成员不相信其他人足够好,不会秘密闯入保险库并将配方卖给竞争对手。因此,他们把代码分割成5份,允许使用4份来恢复原始代码。现在他们可以确保大多数员工会知道保险库何时被打开,但他们仍然可以在一名员工在国外或在家生病时打开保险库。

安装

[dependencies]
shamirsecretsharing = "0.1"

用法

秘密始终以长度为64项的&[u8]切片的形式提供。使用create_shares函数从一段秘密数据生成份额,之后可以使用combine_shares将份额合并。

份额始终为113字节长。create_sharescombine_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