#bip-39 #shamir #secret-sharing #bitcoin #rust-lang #slip-0039

app slip39

SLIP-0039 兼容的秘密共享工具

2 个版本

0.1.1 2020年1月30日
0.1.0 2019年9月27日

#7 in #bip39

GPL-3.0-or-later

27KB
304

slip39-rust

Rust compilation results

SLIP-0039 兼容的秘密共享工具

目录

安装

目前我们不提供二进制版本,但在安装rust并检出仓库后,您可以为您的平台创建二进制文件。在Unix上,以下步骤可能给您一些启发

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
...
$ rustc --version
rustc 1.37.0 (eae3437df 2019-08-13)
$ cargo --version
cargo 1.37.0 (9edd08916 2019-08-02)
$ git clone https://github.com/Internet-of-People/slip39-rust.git
...
$ cd slip39-rust
$ cargo install --path . --force
$ slip39 --version
slip39 0.1.0

使用方法

获取帮助

本README.md中的大部分内容是从工具中的实际帮助编译而成的。

$ slip39 --help
...
$ slip39 split --help
...

生成主密钥并将其分割成部分

SLIP-0039定义了2级分割:主密钥分割成组密钥,然后这些密钥再进一步分割成成员密钥。您可以定义每个组所需和总成员数,还可以定义恢复主密钥所需的组数。

# The example from the specification
$ slip39 generate --password "morpheus" --bits 256 --required-groups 2 --group 1of1 --group 1of1 --group 3of5 --group 2of6
{
  "group_count": 4,
  "group_threshold": 2,
  "groups": [
    {
      "member_threshold": 1,
      "member_count": 1,
      "shares": [
        {
          "group_index": 1,
          "member_index": 1,
          "mnemonic": "transfer flea acrobat romp anatomy leader axis impulse premium junction salt type smith maximum class clogs ruler talent alpha exchange alien total debut early presence skunk mixed platform dramatic provide center pumps year"
        }
      ]
    },
    {
      "member_threshold": 1,
      "member_count": 1,
      "shares": [
        {
          "group_index": 2,
          "member_index": 1,
          "mnemonic": "transfer flea beard romp always loyalty grasp adequate wildlife petition identify duke fake umbrella explain various uncover diploma wits volume sprinkle enjoy seafood prevent welcome voting elevator flame coastal charity detailed timely antenna"
        }
      ]
    },
    {
      "member_threshold": 3,
      "member_count": 5,
      "shares": [
        {
          "group_index": 3,
          "member_index": 1,
          "mnemonic": "transfer flea ceramic round ajar magazine clogs ending listen cover flip sack anxiety hunting shaft fatal again alien union express vexed grin database smoking rhyme carve again valid idle smoking toxic clock nervous"
        },
        {
          "group_index": 3,
          "member_index": 2,
          "mnemonic": "transfer flea ceramic scatter aunt mortgage fancy admit clothes slavery rebuild isolate dough scout explain usual evoke filter tracks strategy kitchen wits slavery fatal elite grant spray regret iris device season intend blessing"
        },
        {
          "group_index": 3,
          "member_index": 3,
          "mnemonic": "transfer flea ceramic shaft avoid pajamas literary budget duckling recover living critical axle graduate scramble glimpse afraid glimpse orange seafood subject fridge frequent quantity require merit umbrella guest trial starting email amuse flip"
        },
        {
          "group_index": 3,
          "member_index": 4,
          "mnemonic": "transfer flea ceramic skin agree revenue vanish funding orbit frequent have mixed category slim elegant ruin evening debris move eyebrow fancy segment rhythm debut enemy true drift ceramic unwrap demand grasp forget spirit"
        },
        {
          "group_index": 3,
          "member_index": 5,
          "mnemonic": "transfer flea ceramic snake ajar blanket froth promise mountain public news infant toxic broken purchase velvet idea educate mineral alive ecology umbrella expand wrist erode infant mule makeup rumor veteran faint spark literary"
        }
      ]
    },
    {
      "member_threshold": 2,
      "member_count": 6,
      "shares": [
        {
          "group_index": 4,
          "member_index": 1,
          "mnemonic": "transfer flea decision roster alive frequent flash enjoy flash arena hazard disease walnut overall finger paper papa silent software capture company royal trend necklace romp sympathy trash merit surface exotic analysis tadpole curious"
        },
        {
          "group_index": 4,
          "member_index": 2,
          "mnemonic": "transfer flea decision scared auction pitch mandate ivory trip episode speak activity crisis slavery prize species listen grasp believe webcam racism sheriff beaver category drove bracelet answer easy season fantasy remember stick client"
        },
        {
          "group_index": 4,
          "member_index": 3,
          "mnemonic": "transfer flea decision shadow agency depict victim drove material enjoy acne evaluate frozen dismiss regret eclipse fluff soul example spirit public space adjust lily critical maiden detect friar very ranked overall salon amuse"
        },
        {
          "group_index": 4,
          "member_index": 4,
          "mnemonic": "transfer flea decision sister argue season counter adequate debris adjust reject improve marvel hawk element demand knit laden mental deny cinema surface western dream sprinkle elite sprinkle march unkind pipeline daisy science acne"
        },
        {
          "group_index": 4,
          "member_index": 5,
          "mnemonic": "transfer flea decision smug actress scholar angel realize elbow formal reunion rebound agency mustang mortgage august easy distance upstairs marathon remove thumb clay skunk alive ranked epidemic amuse nylon duckling empty length guilt"
        },
        {
          "group_index": 4,
          "member_index": 6,
          "mnemonic": "transfer flea decision spew ambition decorate squeeze magazine zero cargo airline medal standard scatter hunting kidney golden multiple depend hearing credit unfair swimming inform welfare lawsuit plot stilt losing civil view living genre"
        }
      ]
    }
  ]
}

分割现有密钥(十六进制或BIP-0039

# Nothing prevents you to use a single member share if you like that better :)
$ slip39 split --password "morpheus" --entropy "shell view flock obvious believe final afraid caught page second arrow predict" --group 1of1
{
  "group_count": 1,
  "group_threshold": 1,
  "groups": [
    {
      "member_threshold": 1,
      "member_count": 1,
      "shares": [
        {
          "group_index": 1,
          "member_index": 1,
          "mnemonic": "location recover academic academic easel false playoff galaxy process strategy exercise forecast yoga union execute herd problem luck dynamic already"
        }
      ]
    }
  ]
}

检查成员份额

$ slip39 inspect --mnemonic "location recover academic academic easel false playoff galaxy process strategy exercise forecast yoga union execute herd problem luck dynamic already"
{
  "identifier": 17239,
  "iterations": 0,
  "group_threshold": 1,
  "group_index": 1,
  "member_threshold": 1,
  "member_index": 1
}

贡献

请随意在此仓库中打开问题并发送pull请求。通过发送贡献,您同意将您的更改的所有知识产权转让给巴拿马的去中心化社会基金会,该基金会拥有此代码的版权。

依赖关系

~11MB
~196K SLoC