Hey! I’m working on a monero wallet (Unnamed Monero Wallet or xmruw for short), that supports offline signing and view-only mode on mobile devices, and I’ve figured that it would be a good idea to add support for QubesOS.
The idea behind offline signing is to have one device that doesn’t have access to the internet and one device that is allowed to connect to the internet. The offline device is responsible for storing private key and signing transactions, while the online device is responsible for talking to the network directly.
Using setup like this protects users from accidentally leaking their wallet private keys by ensuring that they are never stored in an online environment.
How does that differ from having a single dedicated online qube for monero wallet? By using that approach your security could potentially be broken in few ways
- dom0 getting hacked into
- software installed the online wallet qube contains a bug that can be used to extract private key
- security flaw in monero code itself would allow to retrieve the private key (bug in the protocol leading to extraction of private key)
- security flaw in the UI (monero-gui, feather, cake desktop, etc.) that would lead to the leak of the private key
While all of the things are very unlikely to happen, and didn’t happen to me for last 2 years of using such setup for my monero-gui, there are quite a few ways to break the security of such setup considering the fact that finding a critical bug in a system is more likely to be a matter of when rather than if.
So how does offline + online setup differ?
- dom0 getting hacked into - no way to protect against this.
software installed the online wallet qube contains a bug that can be used to extract private key- the bug would neede to be activated locally, without the internet in offline qube to leak the private qube, and if it would happen in online qube then only view-only secret key could be leaked, which wouldn’t lead to loss of funds.security flaw in monero code itself would allow to retrieve the private key (bug in the protocol leading to extraction of private key)same as above, offline wallet doesn’t connect to any external services.security flaw in the UI (monero-gui, feather, cake desktop, etc.) that would lead to the leak of the private key- same as above
This setup minimizes the attack vector that is available to the attacker by moving private keys to an offine qube.
How does this affect user experience? Everything is intuitive and require minimal extra effort from the user (just copying unsigned transaction to offline qube and signed transaction to online qube (+outputs/key images but that’s too technical and the process is exactly the same)).
Demo on how transaction sending works can be seen here: https://xmruw.net/assets/videos/qubesos/stage6.mp4
Installation instructions are available here: xmruw - Unnamed Monero Wallet (both video and written)
Let me know what do you think about this kind of setup and tell me if there are any kind of issues that I should fix or things that I could improve. I’m looking forward to your feedback.