Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avencera/splitmonic
Split your BIP39 mnemonic phrase using shamir secret sharing
https://github.com/avencera/splitmonic
backup bip39 bip39-mnemonic-codes bitcoin crypto hacktoberfest
Last synced: about 2 months ago
JSON representation
Split your BIP39 mnemonic phrase using shamir secret sharing
- Host: GitHub
- URL: https://github.com/avencera/splitmonic
- Owner: avencera
- License: apache-2.0
- Created: 2021-04-13T13:41:15.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-05-09T14:14:19.000Z (8 months ago)
- Last Synced: 2024-10-13T01:09:44.992Z (3 months ago)
- Topics: backup, bip39, bip39-mnemonic-codes, bitcoin, crypto, hacktoberfest
- Language: Rust
- Homepage:
- Size: 5.14 MB
- Stars: 9
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# splitmonic - [![Mean Bean CI](https://github.com/avencera/splitmonic/workflows/Mean%20Bean%20CI/badge.svg)](https://github.com/avencera/splitmonic/actions?query=workflow%3A%22Mean+Bean+CI%22)
Split your BIP39 mnemonic phrase using shamir secret sharing
![](assets/splitmonic_explain.jpg)
## Install
Install using homebrew (mac and linux):
`brew install avencera/tap/splitmonic`
or
Install from a github release:
`curl -LSfs https://avencera.github.io/splitmonic/install.sh | sh -s -- --git avencera/splitmonic`
or
Download a release directly from github: [github.com/avencera/splitmonic/releases](https://github.com/avencera/splitmonic/releases)
## Usage
**_Warning: For security reasons, I do not recommend using this on your daily use computer. I personally run this on a Raspberry PI Zero which is never connected to the
internet._**### Split using TUI
To split your phrase I recommend you use the terminal user interface (TUI). The TUI helps you correctly
type your phrase with autocomplete and error checking.`splitmonic split --interactive`
![](assets/split_interactive.gif)
### Split using CLI
```
splitmonic-split 0.1.0
Split you're mnemonic into multiple split phrasesUSAGE:
splitmonic split [FLAGS] --mnemonicFLAGS:
-h, --help Prints help information
-i, --interactive use the interactive TUI
-V, --version Prints version information
```You can also use the CLI directly, ex:
```shell
splitmonic split --mnemonic "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art"
```### Combine using TUI
... coming soon ... if you're interested let me know: https://github.com/avencera/splitmonic/issues/3,
### Combine using CLI
```
splitmonic-combine 0.1.0
Combine you're split phrases into your original mnemonicUSAGE:
splitmonic combine [FLAGS] [OPTIONS] --all-split-phrases ... --split-phrase-files ...FLAGS:
-h, --help Prints help information
-i, --interactive use the interactive TUI
-V, --version Prints version informationOPTIONS:
-s, --all-split-phrases ... 3 of 5 split phrases
-f, --split-phrase-files ... list of files containing your split phrases
-1, --split-phrases-1 ... first split phrase [aliases: sp1]
-2, --split-phrases-2 ... second split phrase [aliases: sp2]
-3, --split-phrases-3 ... third split phrase [aliases: sp3]
```You can combine using the files that the TUI spit out
```shell
splitmonic combine -f phrases_1_of_5.txt phrases_5_of_5.txt phrases_2_of_5.txt
```Or buy passing them in directly
```shell
splitmonic combine --sp1="gun, dismiss, area, ability, laptop, live, ignore, love, ride, deposit, upset, enemy, start, leopard, domain, exile, talent, enroll, north, position, talk, hope, script, parent, tongue, ride, pepper, brisk" , --sp2="..." --sp3="..."
```Or a combination
```shell
splitmonic combine -f phrases_2_of_5.txt phrases_3_of_5.txt --sp1="gun, dismiss, area, ability, laptop, live, ignore, love, ride, deposit, upset, enemy, start, leopard, domain, exile, talent, enroll, north, position, talk, hope, script, parent, tongue, ride, pepper, brisk"
```## What?
A small program that takes you're 24 word BIP39 mnemonic code and generates 5 more phrases, each
28 words long.Using any **3 of these 5 phrases** you can recreate your original 24 word mnemonic code
## Why?
The main purpose of this program is to make your paper backups more secure. If you store your
mnemonic code somewhere, that piece of paper is a single point of failure. If an attacker gets
access to that one piece of paper they now have access to all your bitcoin.With splitmonic an attacker would need to get access to a minimum of 3 of your backups to steal your
bitcoin.Another advantage of splitmonic is that it allows you to make your backups more durable. Since you only
need 3 of 5 phrases to recreate the original, even if you lost or destroyed 2 of your phrases you could
still recover your original code using the remaining 3.## FAQ
**Q. Aren't I not supposed to NEVER type my secret mnemonic into the computer?**
**A.** Yes, that is a bad idea. You're computer could be compromised and someone could steal all your bitcoin. And if you use the CLI your phrase will stick around in your zsh/bash history file. So at least delete that. You could use something like the RPI zero and then destroy it afterwards.
![](assets/rpi_zero.jpg)**Q. Why wouldn't I just use multi-signature?**
**A.** You definitely could, but using multi-signature can be a hassle. With splitmonic you can use
you current single signature hardware wallet as you normally do, while making your backups more
secure.**Q. Why wouldn't I just use SLIP39?**
**A.** If you have hardware wallet that is compatible with SLIP39, then ya you should probably use that instead
**Q. If someone finds 1 or 2 of my splitmonic phrases can they guess my original phrase?**
**A.** No. Splitmonic uses [shamir secret sharing](https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing)
to split your phrase. Your splitmonic phrases are **NOT** a subset of your original phrase.## Acknowledgements
- [Nebulosus/shamir](https://github.com/Nebulosus/shamir) - most of the code for the shamir secret sharing algorithm if from this library
- [summa-tx/bitcoins-rs](https://github.com/summa-tx/bitcoins-rs) - the code for the BIP39 word list was inspired from this library
- [jesseduffield/horcrux](https://github.com/jesseduffield/horcrux) - for the idea for the diagram