Stream Confidentiality

+1 vote

Hi,

Please my original understanding of using streams to send confidential data, was to make use of the public key and private key of the address in the multichain wallet, rather than creating a new key-pair as shown in the tutorial (http://www.multichain.com/developers/stream-confidentiality/). Is my approach feasible or must the application create new key pairs for the address?

P.S I haven't actually tried doing my approach, just thinking of how it would be.

R.

asked Feb 17, 2017 by Rosevelt

1 Answer

0 votes

There are two problems with using the public/private keys for blockchain addresses in order to achieve confidentiality for stream data:

  1. A blockchain address is not actually a public key, it's a hash of the public key. So you need to get the public key itself. It will be in the blockchain if an output belonging to that address has ever been spent (even if with zero native currency or assets) but there's no current API for extracting it.
  2. The ECDSA cryptography method is for creating digital signatures and can't immediately be used for public key encryption. See discussion here: http://crypto.stackexchange.com/questions/14662/using-ecdsa-keys-for-encryption
So yes, it is doable, but it's not very easy. There is also a common view that each key should only be used for one purpose. That's why our tutorial uses fresh keys instead.
answered Feb 18, 2017 by MultiChain
...