Ethan Kosakovsky [ARCHIVE] on Nostr: 📅 Original date posted:2020-03-20 📝 Original message:I think my proposal can be ...
📅 Original date posted:2020-03-20
📝 Original message:I think my proposal can be summarized simply:
1. get a child private key, hmac it and get entropy bits.
2. Use that entropy to feed BIP39 to make a new mnemonic seed
Bitcoin Core hdseed is a private key, so we can also do the same steps here
1. get a child private key, hmac it and get entropy bits.
2. Use that entropy to create a WIF to become the key for hdseed in Bitcoin Core.
I standardize this by using paths (like BIP44/49)
m/SEED'/BIP39'/index'
m/SEED'/CORE'/index'
index allows me to generate multiple childs for that type.
Ethen
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Friday, March 20, 2020 6:34 PM, Ethan Kosakovsky <ethankosakovsky at protonmail.com> wrote:
> Pavol,
>
> Yes thank you. I find abstracts hard, I will try again.
>
> Currently I need a separate BIP30 for many of my wallets. I cant have one master seed for all my wallets because some are less safe than others and storing the master in each environment will increase the chance it could be compromised (e.g. hot environments). I cant export a hardened xprv from my main BIP32 keychain and import it to my JM/Android wallet because they dont support it. There's also a usability issue there since xprvs are not easy to type.
>
> e.g.
>
> 1. Join Market server (online)
> 2. Lightning node (online)
> 3. Trezor (offline)
> 4. Smartphone wallet with coffee money (online) (and no HWW support)
> 5. Bitcoin Core (doesn't use BIP39 at all)
>
> I cannot use the same BIP39 seed across all these services. 1,2,4,5 are effectively hot wallets.
>
> The problem is BIP39. BIP32 is fine but the backup process is not human friendly. It would have been better to simply serialize 128 or 256 bits of entropy into words like BIP39 does and be done with it. After that, it's all deterministic anyway. Instead BIP39 tries to ensure pseudorandom entropy by hash-stretching the initial entropy.
>
> We can already export keychains from BIP32, as xprvs, but there is also no easy way to make as a human readable/typeable like BIP39 mnemonics. Most wallets don't allow you to import an xprv anyway, but again, good luck typing it.
>
> What we are left with is an ecosystem that widely implements BIP39, so practically speaking if I want to use multiple wallets and cannot share an existing seed with that device, I need separate 12 or 24 word mnemonics. That's 5 times the complexity to store than one (in my case). I need a new cryptosteel. If I have two different geological locations for backup, it's hard to add more, since I need to travel. The whole point of BIP32 was one master key would rule them all - set up once, back up once and it's done. BIP39 was simply to make it human friendly to write down the seed on paper.
>
> The easy solution as I see it is have one BIP39 mnemonic as my "master root key". From there it makes a BIP32 keychain and I can deterministically create child BIP39 seeds by taking a hardened path, using the private key as entropy ENT to create a new BIP39 mnemonic. If I do it this way I can have one initial backup, and if I need more wallets with a different seed, I can do it without worrying about backups. I'm future proof this way.
>
> Ethan
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Friday, March 20, 2020 5:29 PM, Pavol Rusnak stick at satoshilabs.com wrote:
>
>
> > On 20/03/2020 16:44, Ethan Kosakovsky via bitcoin-dev wrote:
> >
> > > I would like to present a proposal for discussion and peer review
> >
> > I read your proposal twice and I still don't know what kind of problem
> > are you trying to solve.
> > This should be obvious from the "Abstract" and it's bad if it's not.
> >
> > Best Regards / S pozdravom,
> > Pavol "stick" Rusnak
> > CTO, SatoshiLabs
Published at
2023-06-07 18:23:23Event JSON
{
"id": "1dd4ea0e620522844f0e9fb77c2c186fad2505c355e90a59a65992154129163b",
"pubkey": "8d211cc7df6def1244467d5fdde0470b7bca8ee9206c2b06303c0ebed8b1ba2e",
"created_at": 1686162203,
"kind": 1,
"tags": [
[
"e",
"089ad8e72a4f7918072b7c48eeea37ede22c2fa8b65982f4fb5f1c3e3dff5107",
"",
"root"
],
[
"e",
"3a80457c3dbbbff786f5c552b290680fa983419031c5e7eb4db717bb3c13a868",
"",
"reply"
],
[
"p",
"8d211cc7df6def1244467d5fdde0470b7bca8ee9206c2b06303c0ebed8b1ba2e"
]
],
"content": "📅 Original date posted:2020-03-20\n📝 Original message:I think my proposal can be summarized simply:\n\n1. get a child private key, hmac it and get entropy bits.\n2. Use that entropy to feed BIP39 to make a new mnemonic seed\n\nBitcoin Core hdseed is a private key, so we can also do the same steps here\n\n1. get a child private key, hmac it and get entropy bits.\n2. Use that entropy to create a WIF to become the key for hdseed in Bitcoin Core.\n\nI standardize this by using paths (like BIP44/49)\n\nm/SEED'/BIP39'/index'\nm/SEED'/CORE'/index'\n\nindex allows me to generate multiple childs for that type.\n\nEthen\n\n‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐\nOn Friday, March 20, 2020 6:34 PM, Ethan Kosakovsky \u003cethankosakovsky at protonmail.com\u003e wrote:\n\n\u003e Pavol,\n\u003e\n\u003e Yes thank you. I find abstracts hard, I will try again.\n\u003e\n\u003e Currently I need a separate BIP30 for many of my wallets. I cant have one master seed for all my wallets because some are less safe than others and storing the master in each environment will increase the chance it could be compromised (e.g. hot environments). I cant export a hardened xprv from my main BIP32 keychain and import it to my JM/Android wallet because they dont support it. There's also a usability issue there since xprvs are not easy to type.\n\u003e\n\u003e e.g.\n\u003e\n\u003e 1. Join Market server (online)\n\u003e 2. Lightning node (online)\n\u003e 3. Trezor (offline)\n\u003e 4. Smartphone wallet with coffee money (online) (and no HWW support)\n\u003e 5. Bitcoin Core (doesn't use BIP39 at all)\n\u003e\n\u003e I cannot use the same BIP39 seed across all these services. 1,2,4,5 are effectively hot wallets.\n\u003e\n\u003e The problem is BIP39. BIP32 is fine but the backup process is not human friendly. It would have been better to simply serialize 128 or 256 bits of entropy into words like BIP39 does and be done with it. After that, it's all deterministic anyway. Instead BIP39 tries to ensure pseudorandom entropy by hash-stretching the initial entropy.\n\u003e\n\u003e We can already export keychains from BIP32, as xprvs, but there is also no easy way to make as a human readable/typeable like BIP39 mnemonics. Most wallets don't allow you to import an xprv anyway, but again, good luck typing it.\n\u003e\n\u003e What we are left with is an ecosystem that widely implements BIP39, so practically speaking if I want to use multiple wallets and cannot share an existing seed with that device, I need separate 12 or 24 word mnemonics. That's 5 times the complexity to store than one (in my case). I need a new cryptosteel. If I have two different geological locations for backup, it's hard to add more, since I need to travel. The whole point of BIP32 was one master key would rule them all - set up once, back up once and it's done. BIP39 was simply to make it human friendly to write down the seed on paper.\n\u003e\n\u003e The easy solution as I see it is have one BIP39 mnemonic as my \"master root key\". From there it makes a BIP32 keychain and I can deterministically create child BIP39 seeds by taking a hardened path, using the private key as entropy ENT to create a new BIP39 mnemonic. If I do it this way I can have one initial backup, and if I need more wallets with a different seed, I can do it without worrying about backups. I'm future proof this way.\n\u003e\n\u003e Ethan\n\u003e\n\u003e ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐\n\u003e On Friday, March 20, 2020 5:29 PM, Pavol Rusnak stick at satoshilabs.com wrote:\n\u003e\n\u003e\n\u003e \u003e On 20/03/2020 16:44, Ethan Kosakovsky via bitcoin-dev wrote:\n\u003e \u003e\n\u003e \u003e \u003e I would like to present a proposal for discussion and peer review\n\u003e \u003e\n\u003e \u003e I read your proposal twice and I still don't know what kind of problem\n\u003e \u003e are you trying to solve.\n\u003e \u003e This should be obvious from the \"Abstract\" and it's bad if it's not.\n\u003e \u003e\n\u003e \u003e Best Regards / S pozdravom,\n\u003e \u003e Pavol \"stick\" Rusnak\n\u003e \u003e CTO, SatoshiLabs",
"sig": "014a47064b2ea4288ab273dfb2343b428157bad1d271b9bbc45e97e2ec69c3eed5e44f79f074be4f087e74bfd8774329510a86effc9a801f2f5925fa8482a548"
}