Skip to content
/ psst Public

A monero polyseed secret sharing tool using Shamir's Secret Sharing Scheme

License

Notifications You must be signed in to change notification settings

Unkn8wn69/psst

Repository files navigation

Logo by MX Graphics

Polyseed Secret Sharing Tool 🤫 (PSST)

Maintained Make a pull request License

CI Build Latest Release

Watch on GitHub Star on GitHub

XMR Donated

This is a python gui tool that can be used to backup a monero polyseed using shared secrets by using Shamir's Secret Sharing Scheme. It uses Trezors python-shamir-mnemonic to generate mnemonic phrases. To also lower the amount of words per mnemonic phrase it only saves the seed's indexes in the BIP-39 wordlist and by that lowering the amount of words to ~24 per share.

Motivation

In the realm of cryptocurrency, security is paramount, and it's often a personal responsibility. Traditional methods of storing seed phrases, even in multiple secure locations, have a critical vulnerability: if one location is breached, the entire wallet is at risk.

I've recently explored the effectiveness of Shamir's Secret Sharing Scheme, particularly for enhancing the security of seedphrases. Shamir Secret Sharing is a cryptographic method that allows a secret, such as a seedphrase, to be divided into multiple shares. The brilliance of this approach lies in its flexibility: the original secret can only be reconstructed when a predefined number of these shares are combined. This threshold mechanism ensures that the loss or compromise of a single share doesn’t expose the entire secret, significantly reducing the risk of a single point of failure.

It allows for a distributed and resilient form of protection. Additionally, users can employ advanced security measures like steganography to conceal these shares.

Disclaimer

Important: This tool should only be used in a secure, air-gapped environment, like TAILS

This project is in an early stage, and contributions are welcome.

Features & Roadmap

  • Working GUI
  • pre-built binaries
  • Generate a set of secret shares (multiple groups, master threshold etc.)
  • Direct integration with Trezor's shamir-mnemonic for streamlined processes
  • Passphrase protection
  • Ability to generate secret shares from arbitrary data.
  • Codebase enhancements for simplicity and clarity.

Installation

  1. Download the latest release from the repo

  2. Start the executable

  3. (Linux only) Adjust execution permissions of the file

    chmod +x psst

Building from source

  1. Clone this repo and move into the directory

    git clone https://github.com/Unkn8wn69/psst
    cd psst
    
  2. Install dependencies

    pip install click customtkinter pillow

    For externally managed environment on Arch:

    sudo pacman -S python-click python-customtkinter python-pillow

  3. Install python-shamir-mnemonic

    git clone https://github.com/trezor/python-shamir-mnemonic

  4. Start the tool

    python gui.py

  5. (Optional) Compile using PyInstaller

    pyinstaller --onefile --add-data "assets:assets" --add-data "wordlist.json:." --add-data "python-shamir-mnemonic/shamir_mnemonic:shamir_mnemonic" --paths=$(python -c "import customtkinter; print(customtkinter.__path__[0])") --hiddenimport PIL --hidden-import PIL._tkinter_finder --icon=assets/icon.ico --noconsole gui.py

Prerequisites for building from source

Credits

Donations

If you find this project useful, please consider donating to the following Monero address: (Or for other cryptos here)

xmrqr
89ZYSD9nyFxZS1zrZaB9Z4giuv776AeKTMXVRWPMkZDtau7wF2DCgqc1tH9zAVszPTP9XTSnhLT4rYUhW6oP8okeS56Jbdc

License

This project is released under the terms of the GPL 3.0 license. For more information, see the LICENSE file included in the repository.

About

A monero polyseed secret sharing tool using Shamir's Secret Sharing Scheme

Resources

License

Stars

Watchers

Forks

Languages