If I choose to use a webwallet such as mymonero.com or connect to a Monero node run by someone else to make transactions, what are the unique privacy and security concerns I will face (compared to if I was running my own full node)?
What privacy or security trade offs are associated with not running your own full node?
Hey you tech heaven guys im living in germany and need to verify my wallet wit limited lte, how cann ic connect to a rmeote node with monero cli ? tells me every time that nodes i try are not trusted nodes.– magnuszzMay 12, 2021 at 8:28
Remote nodes are marked non-trusted by default.– dEBRUYNE ♦May 12, 2021 at 14:23
Using a third party node has drawbacks in two main categories: privacy, and performance.
When you refresh your wallet, the daemon sends blocks and transactions to your wallet, which then inspects each transaction to see if you received any monero. If you did, the wallet will, at least currently, ask the daemon for more information about that transaction (technically, the global indices of the outputs for that transaction). This lets the node know that at least one of the outputs in that transaction is yours.
Note that this is about to change,This is now fixed, and global indices will be are sent with all blocks as soon as https://github.com/moneromooo-monero/bitmonero/commit/30203f11f1581deec214e5a45ead36ac35c3a316 is merged. The result is that the daemon can not tell anymore which transactions contain inputs to the wallet.
When you send a transaction, the wallet will request fake outputs to mix with from the node. Thus, the node will know which output in a ring signature is the real one once you send the transaction: it's the one it did not supply. If the daemon did by chance supply your output, then it won't know, however. This is pretty easy to change (just request twice as many fake outputs, and pick locally),
but is not done yet. This is now done: the wallet selects the outputs it wants, so the daemon only knows that one of them is the real one, but not which, which is the same as any blockchain observer can know.
Some less used commands also leak information to the node: the rescan_spent command will send the daemon a list of your outputs, to know which ones are considered spent on the blockchain. For this reason, this command is disabled by default when you are using a remote node (see the --trusted-daemon option in simplewallet).
Starting mining in the wallet tells the daemon your standard address (to get the block reward). This should not be done on a remote node, but I include this for completeness.
Performance wise, using a node that's not local is just slower. Not only is the node on the internet, but other people may also be using it at the same time, compounding the slowdown.
Another issue you might want to mention is that running your own node intermittently, just when you are making transactions, allows correlation between your IP address and your transactions. Tor or Kovri could help with this; or use an always-on node. Oct 13, 2016 at 16:38
I couldn't get this part: "just request twice as many fake outputs, and pick locally". Doesn't the daemon know anyway which output in the ring is the one it didn't send to the wallet?– kenshi84Nov 2, 2016 at 15:12
It knows. That's why this is now changed so the wallet picks which outputs to use, and asks for them. Including its own. Nov 2, 2016 at 16:32
I figured this post by smooth should be linked somewhere here. May 11, 2017 at 11:08
Patches have been made to limit the information leak to a remote node. It does not know what inputs you control, and it does not know what blocks your receiving transactions are from. However, there are still some concerns:
The remote node knows your IP address, and it can associate each transaction you send to the node with your IP address. The Monero network is vulnerable to this attack currently, except it is much worse for a remote node. Instead of assigning a high probability to the origin node when you send a transaction with a full node, this remote node has complete certainty this transaction came from you. The only way to hide this to a remote node is by connecting to Tor or using a trusted VPN to connect to this remote node.
The remote node can learn some information about you with timing analysis. If you only connect to the node when you expect to receive a transaction, for instance, it can try and guess what transactions are coming in to you.
Performance-related: a client connected to a remote node still needs to download all the blocks to scan them for transactions, and the client does not contribute to the network. So it places a large load on the network nodes, reducing performance for everyone.
Web wallets are easy to use. You literally go to the website, click create account, and in a few seconds you are ready to go. This clearly appeals to most users because simplicity is very important. Running your own node can take up to a day to sync depending on your internet connection and hard drive speed, which many first-time users do not have the patience for.
There are a few issues with web wallets. Basically, you are putting your trust in someone else. If the owner of mymonero.org shut the site down or stole your login credentials, for instance, then there is little you can do about it. If someone else hacks the web wallet's servers and the keys are not encrypted/deleted correctly, this attacker can take your information. Luckily, mymonero.org is run by a core developer and the chances of losing your XMR are slim, but even the person who runs the site suggests not using it for significant amounts. For historical significance, I would suggest looking at the MtGox scandal that happened with Bitcoin.
2I'd somehow managed to totally forget about the mymonero bit when replying, thanks :) Jul 19, 2016 at 21:55
1Mymonero.com can only see your view key, so that is all that can be leaked. An attacker needs your spend key to steal funds. Additionally, you can recover your wallet from your mnemonic seed, even if the service goes down.– PyRulezAug 18, 2016 at 14:29
@PyRulez While true, the user needs to trust MyMonero to delete these keys that it generates for you. Other than trust, there is no way of knowing that these are properly deleted.– sgpAug 18, 2016 at 14:38
@JustinEU4 they don't generate your spend key, your browser does. So you only have to trust yourself.– PyRulezAug 18, 2016 at 14:40
@PyRulez My apologies. MyMonero still generates the mnemonic seed though, which can be used to generate the private key. The greater point still stands.– sgpAug 18, 2016 at 14:54
Maybe this point isn't about privacy or security, but something more fundamental: by not running your own node, you give up your chance to verify that the whole thing is in a valid state. You're trusting others (the remote node operator, the web wallet operator, block explorers, mining pools, exchanges, etc) to know that all the transactions in the network are valid, with no double spends and no XMR minted out of thin air.
Maybe this is OK in practice for now, but what happens if we take this to an extreme? If there exist only a handful of full nodes run by special entities with rich resources, and most users simply connect to their nodes remotely to make transactions, then it could be possible that these entities running full nodes collude together to make any invalid transactions look like valid. At that point, Monero will be not much different from fiat currency fully controlled by central banks.
Running full node is essential for not trusting anyone but yourself and math.