Skip to content

SeedConceal is a simple set of tools to generate a wallet seed phrase (random or deterministic), obscure an existing seed phrase, and reveal obscured seed phrases

License

Notifications You must be signed in to change notification settings

rarioj/seedconceal

Repository files navigation

SeedConceal

SeedConceal is a simple set of tools to: generate a wallet seed phrase (either random or deterministic); obscure an existing seed phrase; and reveal obscured seed phrases.

Requirements

Usage

git clone https://github.com/rarioj/seedconceal.git
cd seedconceal
composer install

Disable your internet connection before generating, obscuring, or revealing seed phrases.

By creating an air-gapped system, you can guarantee that your operating system will not interact with anything on the internet. You can reenable the internet once your seed phrases are securely stored.

Web Mode

SeedConceal Web Mode

cd php/web
php -S localhost:9000

Open a web browser and then go to http://localhost:9000/.

CLI Mode

SeedConceal CLI Mode

cd php/cli
php generate.php
php obscure.php
php reveal.php

Follow the interactive prompt for each tool.

Tools

Generate

This tool generates a valid seed phrase for a wallet using a deterministic or random approach. Only use this tool if you plan to create a new wallet or divulge a deterministic wallet mnemonic by entering all the parameters.

When generating a new wallet, leaving the passphrase field blank will use PHP's secure random_bytes() function.

With a deterministic approach, please understand the risk of generating this type of wallet. See the Speed Optimizations in Bitcoin Key Recovery Attacks paper. Unlike traditional Brain wallet which hashes a passphrase to generate an entropy, SeedConceal will hash, XOR, salt, and iterate the entered passphrase. The intent is to conceal your seed phrase by not remembering the 12/24 words mnemonic, but by remembering your private passphrase, password, and salt.

Ensure the passphrase used is unique, private, and never been exposed on the internet. Using a password will reduce the attack vector by XOR-ing it with a hashed passphrase. The hash salt and the number of iterations are essential when revealing the original mnemonic.

Obscure

This tool can obscure your existing wallet mnemonic by securing it with a password, splitting it into multiple seed phrases, and translating it to other languages. Use this tool if you plan to conceal an existing seed phrase.

  • Securing with password: Using a password will add additional security measures by XOR-ing private key and the hashed password. The hash salt and the number of iterations are critical when revealing the original seed phrase.

  • Splitting seed phrase: You can split an existing mnemonic into multiple seed phrases. The order of the generated seed phrases does not matter as long as you have all the mnemonic pieces. PHP's secure random_bytes() function is used to produce the combined XOR-ed values. The same seed phrase will generate a different set of split mnemonics every time.

  • Translating seed phrases: You can translate obscured seed phrases into different languages. A standard set of alternative languages besides English is available. See BIP39 section for more information.

Reveal

This tool does the opposite of obscure. It reveals translated, split, and password-protected seed phrases. All parameters used when obscuring mnemonic are required when revealing the original seed phrase (which includes hash salt, number of iterations, and password).

Examples

Example 1: Generating a deterministic seed phrase

Parameters:

  • Passphrase: I love Bitcoin
  • Salt: satoshi nakamoto
  • Iteration: 10000
  • Password: ObscureMe!

Generated seed phrase:

garden arrest fossil illness bunker foot olive tray grunt cushion original replace general spy happy render scene easy field oven tonight poverty divide economy

Example 2: Obscuring an existing seed phrase

Parameters:

  • Seed phrase: garden arrest fossil illness bunker foot olive tray grunt cushion original replace general spy happy render scene easy field oven tonight poverty divide economy
  • Password: ObscureMe!
  • Salt: genesis block
  • Iteration: 25000
  • Split into: 4
  • Language: random

Generated seed phrases:

mueble línea huerta parar tenso picar ciprés centro uno babor casco imitar posible anemia hueso paquete brillo tijera sartén pelar farol vehículo alga funda

phone country grant cute fine once neither plunge subway envelope firm electric refuse satoshi armor virtual enable absent rookie fun practice name eyebrow between

こふん せつりつ ねんかん はんしゃ ざつおん はいけん ほこる おうべい にっき ぴったり じどう しみん はんぼうき しゃれい せんとう やめる えがく うやまう すわる ごがつ うなぎ ねむい たぶん くいず

眉 屋 仗 凱 冊 它 妹 番 闢 預 讀 針 況 泛 和 告 剝 取 三 選 障 口 趨 恢

BIP39

BIP39 describes the implementation of a mnemonic code or mnemonic sentence, a group of easy-to-remember words, for the generation of deterministic wallets.

You can add custom wordlists and then register it as a new language in the php/config.php file. Please ensure to back up your custom configuration file if you do so. Custom wordlists must follow the rules and recommendations described on this page.

Wordlists files available:

Libraries

Check out my Starname profile and buy me a ☕ or 🍺.

About

SeedConceal is a simple set of tools to generate a wallet seed phrase (random or deterministic), obscure an existing seed phrase, and reveal obscured seed phrases

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages