I would like a valid Bitcoin address (derived from a private key created by rolling a pair of hexadecimal dice 32 times) to be the private key of any private / public cryptography. So if I encrypt a message with this public key, I can then decrypt the same message with the Bitcoin address. Is this possible?

  • $\begingroup$ The question is unclear, because it does not tell if "possible" implies safe. I thus vote to close it. $\endgroup$ – fgrieu Aug 28 '19 at 18:57

Yes, why would it not be possible?

You could, for instance, use the hybrid ECIES scheme to do this. ECIES employs ECDH to derive a symmetric key to encrypt / decrypt. The ECDSA and ECDH keys are fortunately identical, so performing ECIES with the BitCoin key pair should not pose a problem.

In the Bitcoin scheme it is possible to derive the public key again from the signature, if I'm not mistaken, but there is nothing preventing you from deriving the same public key directly from the private key and storing it elsewhere.

So that takes care of the technicalities. However, generally you should try and avoid reusing the same key (pair) for multiple purposes, if just to avoid exposure of the private key. Key management quickly becomes a nightmare when keys are reused.

For more information about the security, see this answer from poncho. If it makes poncho nervous it should definitely make you nervous as well.

  • $\begingroup$ You could derive a new private key and thus key pair from the existing one using a KDF. That's a one way function, so it is impossible to find the private key without the original one. That way you have a separate key pair, and you can choose yourself if you want to regenerate the private key or store it. And any mathematical connection between the ECDSA and ECDH would be lost - if there ever was one. $\endgroup$ – Maarten Bodewes Jul 11 '19 at 12:24
  • $\begingroup$ A clearer expression of the question is this. Since a Bitcoin Cryptographic pair (ECC) uses an private key generated first randomly. Some cryptography does not allow the user to pick either key: the key pairs are generated together and cannot be chosen. For a Bitcoin address (derived from a private key), why can I simply ignore its derivation and input this address as a new private key for a new ECC pair. Then I can encrypt any message with the new public part and decrypt the message with the private part which is actually the original bitcoin private key. $\endgroup$ – Don Licciardello Jul 12 '19 at 12:49

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