0

I was watching Andreas Antonopoulos talk about security on youtube. I heard him say something about using the same public address multiple times could increase risk of your private key being cracked since the private key signs the output id.

I'm wondering if this applies to HD Keys as well?

i.e. imagine I create an HD Private Key. And then for each transaction I derive a child from that key. Would these child keys also be vunerable?

2
  • 2
    Does this answer your question? Is it safe to reuse a Bitcoin address? Oct 25 '21 at 18:23
  • @PieterWuille Mostly. But I'm wondering if this applies to HD wallets as well? Since the Private keys are derived from an HD key, would it be possible to crack the hd key if many derived private keys sign transactions? Oct 26 '21 at 1:34
1

I was watching Andreas Antonopoulos talk about security on youtube. I heard him say something about using the same public address multiple times could increase risk of your private key being cracked since the private key signs the output id.

I personally believe this is mostly a often-repeated belief that is taken out of context. In reality the only reason to not reuse keys is privacy.

While yes, it is true that technically speaking, one cannot start trying to crack the private key of a public key, as long as one only has a hash of that public key. That indeed means that for a P2PKH/P2SH/P2WPKH address, as long as it has never been spent from, there is a technical barrier that hurts potential attackers.

But this doesn't mean there is a vulnerability for keys which are known. The security assumption behind ECDSA is that one cannot compute private keys even if their public keys are revealed, and even if the attacker has access to a limitless amount of signatures created with that public key. Bitcoin's security is utterly reliant on the fact that keys cannot be cracked, and signatures cannot be forged, even in such settings. Furthermore, public keys are revealed, constantly. It is a false sense of security that not revealing public keys adds anything. I've written in more detail about that in this answer.

The P2TR (taproot) output type introduced by BIP341 (which will likely activate on Bitcoin mainnet mid-november 2021) in fact does not use public key hashing at all anymore. Outputs store a public key directly.

I'm wondering if this applies to HD Keys as well?

i.e. imagine I create an HD Private Key. And then for each transaction I derive a child from that key. Would these child keys also be vunerable?

First of all: there is no vulnerability whatsoever, in either case. It is at best a question of secure under current assumptions vs. even more secure.

In the case of separate keys generated by the same xpub, there is an additional difficulty for the attacker: they cannot even tell which addresses were generated by the same address unless the attacker has the xpub. If they do, there is a recent paper that suggests the provable security may be somewhat reduced. Note that provable security does not translate to actual security; no attack is known that can break anything with less than 2128 work, and it's unlikely such an attack can be found.

1
  • @peterwuille Thank you for the excellent in-depth answer Peter. Oct 26 '21 at 5:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.