FAQ: What's the relationship between SeedTool, KeyTool and HD-wallet related BIPs? #17
ChristopherA
started this conversation in
General & Announcements
Replies: 1 comment
-
LGTM |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
SeedTool: Entropy and Master Seeds
SeedTool is focused on taking raw entropy and reliably and safely turning it into a specific form we call a Master Seed (sometimes itself called entropy because it too is random, but we believe this is the wrong name for it). Master Seeds need to be able to be secured offline, which is is why it supports export to BIP-39 and to the emerging SSKR (Shamir Secret Key Recovery) standards, and via UR self-describing formats. Master Seeds need to be in a form that can be used as input by various Hierarchical Deterministic (HD) schemes for creating child keys.
SeedTool leverages a number of open source libraries for all wallets that create or use Master Seeds, thus also is intended as a reference tool to exercise the features of those libraries.
KeyTool & Bitcoin BIPS
KeyTool takes Master Seeds (sometimes called entropy by libraries like LibWally) and converts them into a Master Key (a private key plus a chain code secret), and then derives from that child trees of private keys. For bitcoin's secp256k1 that is effectively BIP-32. But there are other standards for specific ways of defining that tree, in particular legacy bitcoin-core, electrum wallets, and other popular legacy wallets, the BIP-44, BIP-32, BIP-32, and BIP-84, and an unwritten BIP48 for how keys work with hardware keys. Keytool handles those "conventions" as well, that include cointype, sub-account, etc. metdata. It also supports export of child keys in a variety of formats, in particular various *prv/*pub text formats and UR self-describing formats.
Like SeedTool this app is a reference app to allow testing of key derivation libraries.
KeyTool & Other Standards
Other blockchains use Master Seeds as well, as evidenced by the fact that Ledger & Trezor demonstrate support of securing keys for them. But it isn't clear if they create the Master Seed the same way, or if they use a different technique. And we know that they can't use the same BIP-32 math while using 25519 curves to create child keys, and that there are at least two specs for how to do this, but I'm not sure which are in production. Finally, we don't know the "conventions" within the 25519 blockchain wallet community for cointype, sub-account and other metadata.
Trezor & Ledger are can also use Master Seeds to create GPG and SSH keys, we should document how they do that. I also would like us to be able to derive keys for use with Tor hidden onion servers and v3 client certificates.
Anywhere a current hardware wallet can take a Master Seed and use it to create keys for a cryptographic protocol, KeyTool should eventually be able to do it.
/cc: @wolfmcnally - can you comment on this for technical accuracy
/cc: @shannona - after some review this is a candidate for a FAQ answer in this repository
Beta Was this translation helpful? Give feedback.
All reactions