Closed Viserius closed 3 years ago
Hi @Viserius you're right, the hash is on the public ledger. But anyone who is not party to the tx (ie they are not in the privacy group or privateFor) will get an empty result from the /receive
method when they query their Orion instance. You can't query other Orion instances unless you have the matching private key.
The diagram on this page might help explain - it's the same flow for GoQuorum/Tessera and Besu/Orion and Besu/Tessera. https://docs.goquorum.consensys.net/en/stable/Concepts/Privacy/PrivateTransactionLifecycle/
Hi macfarla, you mention you cannot query another Orion instance unless you have the private key. In my experiment, I found that the only information required for receiving a transaction is the public hash. In other words, the receive endpoint returns the private data to anyone who provides the marker hash (public data) from what I've seen. The image below shows the Postman query I created, as well as the returned results. In this image, you see that only a key (= public hash of priv tx) is required to fetch the decrypted (but encoded) response.
You can protect the Orion node (and Tessera, which is the replacement for Orion) with TLS mutual authentication. This can be configured in the config file for Orion (and Tessera).
And yes, you are right! If you can call the receive and you know the hash you can retrieve the private transaction. You have to limit access to the port, e.g. by using mutual authenticated TLS or other methods.
Let me know if you're happy with these answers and I'll close the issue @Viserius - and as a reminder we're moving from Orion to Tessera so this project is no longer under active development
Thanks! I am fine with closing.
As far as I know, Orion nodes do not provide any form of access control. As a result, private data can be obtained by virtually anyone that can open a connection to the Orion node. The following flow explains the issue.
Even though the data returned is the private transaction and not state, the smart contract creation transaction is recorded in the same way. Thus, by fetching everything, i.e. the smart contract creation tx and all consecutive txs, one can reconstruct the entire state of a private group. Since orion nodes may be part of multiple partially overlapping groups and connect using peer discovery, the entire network is able to find their network addresses by default (so hiding them behind a firewall does not work in many cases).