Fagsnakk fra Cappelen Damm

XMRWallet on Tails OS: Setting Up the Most Paranoid Monero Wallet Configuration Possible

A journalist investigating financial crimes, a researcher tracking state surveillance, or a dissident managing funds across borders faces a specific problem: standard cryptocurrency wallet practices leave traces. Even privacy-focused wallets can be vulnerable when used on persistent operating systems, where temporary files, browser caches, memory snapshots, and system logs accumulate. The combination of XMRWallet and Tails OS addresses this at the architectural level by eliminating permanent storage and rebuilding the environment from scratch after each session. But the tools alone do not guarantee security. Proper deployment requires understanding what each layer protects, what it does not, and which user habits can undermine the entire design.

Tails OS is a Debian-based distribution designed to route all traffic through Tor, leave no digital traces after shutdown, and provide a reproducible environment for sensitive work. XMRWallet is a non-custodial Monero wallet that reconstructs cryptographic keys locally from either a recovery seed or an encrypted wallet file, never storing passwords or keys on servers. Together, they form a workflow where session state evaporates, private keys never touch disk in plaintext, and network identity remains separated from wallet activity. The result is not perfect paranoia—such a thing is neither achievable nor necessary—but it is the highest practical standard for users whose threat model demands it.

Tails OS boot screen and XMRWallet interface demonstrating the integration of Tor routing with non-custodial wallet key derivation

Why Tails OS changes the threat model for Monero storage

Standard operating systems—Windows, macOS, Linux—retain artifacts. Swap files page memory to disk. Browser history accumulates. System logs record network connections. Application caches store temporary data. If a device is physically compromised, seized, or infected, forensic tools can recover fragments of past activity. Tails OS eliminates this category of risk by running entirely in RAM and clearing it on shutdown. No persistent storage means no forensic recovery of previous sessions. Each boot loads a fresh copy of the operating system from encrypted USB or DVD, and shutdown wipes the working memory.

For a Monero wallet, this separation is particularly valuable because it isolates wallet activity from persistent system state. A user can synchronize blockchain data, send transactions, and check balances in one session, then shut down knowing that the wallet’s network activity, temporary keys, and transaction details have been erased from RAM. The recovery seed or encrypted wallet file remains encrypted and stored offline (not on the Tails device itself). The next session begins without any knowledge of previous activity. This creates a ceiling on what an attacker can learn from examining the device: they cannot recover wallet state because it was never saved.

The mechanism also protects against certain classes of malware. Persistent rootkits and keyloggers require persistent storage to survive reboots. If malware infects the running Tails session, it can observe activity during that session, but it cannot establish a foothold for the next boot. This does not mean Tails is immune to malware—a sufficiently targeted exploit could compromise a session—but it means the attacker cannot simply wait for the user to return and resume surveillance. Every boot is a new environment.

The practical implication is that session-based security becomes the relevant unit rather than device-based security. A user’s threat model changes from «keep this device clean forever» to «keep this session uncompromised for the time I need to use it.» That is a lower bar in some ways—one session is easier to monitor than a device for months—but also a higher bar in others: an attacker has only one window before all evidence vanishes.

Obtaining and verifying Tails before the first boot

The Tails distribution can be downloaded from the official website, but the download itself requires verification. An attacker who can intercept the ISO file could inject malware that would persist throughout every session. Tails provides cryptographic signatures and checksums specifically to prevent this. Before writing the ISO to USB, the user should verify the download against the published signatures using GPG. This requires a working GPG installation on a separate, trusted system—not Tails itself, which has not yet been booted.

The process involves downloading the ISO, the signature file, and the Tails team’s GPG keys. The user then runs a command such as `gpg –verify tails-*.iso.asc` to validate that the signature matches the downloaded file. If GPG reports a good signature from the Tails team’s key, the download is authentic. If the signature does not verify, or if GPG raises warnings, the ISO should be discarded and the download repeated from a different network or at a different time. This step cannot be skipped or deferred. A compromised ISO used in subsequent sessions would defeat the entire architecture.

Writing the verified ISO to USB requires tools such as Balena Etcher (on Windows or macOS) or `dd` (on Linux). The user should disconnect all other external drives to prevent accidental overwriting, then write the ISO and immediately verify the write using a checksum. Some USB drives support hardware write-protect switches; enabling this after writing prevents accidental modification. The USB becomes a bootable Tails installer and can be stored securely offline until needed.

Booting Tails and establishing secure network connectivity

The first boot requires changing the device’s BIOS or UEFI settings to boot from the USB drive rather than the internal hard drive. On most laptops, this involves holding a function key during startup (often F12, F2, or Esc, depending on the manufacturer) to access the boot menu. Once Tails begins loading, the user encounters the Tails Greeter, which allows configuration of network settings, additional software, and a shutdown mechanism called the «Panic Button» that immediately powers down the system without flushing data to disk—a nuclear option for sudden threats.

Network connectivity in Tails routes through Tor by default. All traffic leaving the device is encrypted and bounced through multiple Tor relays, obscuring the user’s IP address and making surveillance of network activity significantly harder. However, this does not mean the network connection is invisible to the user’s ISP or network administrator: they can see that Tor traffic is being used, they cannot see the destinations or contents. For users in countries where Tor is blocked or heavily monitored, Tails supports bridges—alternate entry points to the Tor network that are not publicly listed—and obfuscation proxies that make Tor traffic look like normal HTTPS.

The user should consider whether their threat model requires bridge mode before connecting. If network monitoring is likely, bridges should be configured before attempting to connect. If the threat is more localized—device seizure, malware on a shared network—standard Tor may be sufficient. The Tails Greeter makes this choice explicit rather than hiding it in preferences menus. Once the user confirms the network settings and proceeds, the system finishes booting and displays the desktop, which resembles a standard Linux environment with application menus and a taskbar.

Installing and accessing XMRWallet within Tails

XMRWallet is accessed through a web browser rather than being installed as a traditional application. This design keeps the wallet code separate from the operating system, reducing the risk that a system update could interfere with wallet functionality. The user opens Firefox (which comes pre-installed in Tails) and navigates to the XMRWallet URL. Because Firefox traffic routes through Tor, the connection is encrypted and the user’s IP address is not exposed to the server. The server logs may record connection activity, but they cannot determine the user’s real location or ISP.

Once the page loads, the user encounters the XMRWallet login interface, which offers two paths. The first is importing a recovery seed—a 25-word passphrase that deterministically generates the private view key and spend key needed to access a Monero wallet. The second is uploading an encrypted wallet file protected by a password. Neither method sends the seed or decrypted wallet to the server. Instead, the XMRWallet login process reconstructs the keys entirely in the browser using JavaScript, ensuring that sensitive material never leaves the device.

For a user setting up a fresh wallet, the procedure begins with creating a new recovery seed within XMRWallet. The interface generates a 25-word seed and displays it on screen. The user should write this seed on physical paper using a pen, not print it (a printer may store copies) and not type it into any other device. The paper should be stored in a secure location separate from the computer being used. For highly sensitive workflows, the user might create multiple copies and distribute them across different physical locations, accepting the risk of loss in exchange for protection against single-point-of-failure seizure.

Once the seed is secured offline, the user should not proceed immediately to send transactions. Instead, the wallet should be created, the first session closed, and a new Tails session booted from scratch. The user then re-enters the seed (from the physical backup) and verifies that the wallet reconstructs correctly with the same addresses and balance information. This test confirms that the seed is correct and will allow wallet recovery if the device or browser malfunctions. Skipping this step risks discovering the backup is defective only when recovery is critical.

Blockchain synchronization and transaction security in ephemeral sessions

Once the wallet is imported, XMRWallet begins synchronizing with the Monero blockchain. This process downloads blocks and scans them locally to identify transactions belonging to the wallet. The synchronization can use either a local Monero node (if the user is running one on the same Tails instance) or a remote node operated by a third party or the user themselves. The choice affects privacy: a local node does not leak which addresses the wallet controls, but requires additional storage and setup. A remote node is faster but reveals block requests to the node operator, which could theoretically be analyzed to infer transaction patterns.

For maximum security in a Tails environment, a remote node is typically appropriate because the entire session is ephemeral anyway. The node operator cannot correlate the current session’s requests with the user’s identity or past activity because each Tails boot is a new Tor circuit with a new exit IP. The operator sees requests from a rotating pool of Tor exit nodes and cannot track them back to the same person. However, the user should understand this limitation: within a single session, the node can observe which blocks are being requested and potentially infer some information about the wallet’s activity.

Sending transactions follows a similar pattern. The user constructs a transaction within XMRWallet—specifying the recipient address and amount—and the wallet signs the transaction using the spend key. The signed transaction is broadcast to the Monero network and propagated through peers. The network cannot decrypt the transaction to determine the sender, amount, or recipient because Monero’s ring signature and stealth address construction hide these details. However, the act of broadcasting still occurs over Tor, and the transaction is publicly visible on the blockchain as a Monero transaction (though its details remain private).

Session expiration is automatic in Tails. The user can set a timeout in the Tails Greeter, after which the system automatically powers down. Alternatively, the user can initiate shutdown manually by clicking the shutdown button in the Tails menu. Upon shutdown, RAM is not flushed to disk—it simply loses power. The wallet session, any cached balance information, and any temporary browser state are lost permanently. The next boot presents a fresh Tails environment with no knowledge of the previous session’s activity.

Password-free login and the encrypted wallet file alternative

XMRWallet’s password-free wallet design means users do not authenticate to a server using usernames and passwords in the traditional sense. Instead, they authenticate to their own wallet using cryptography. A recovery seed is inherently «yours» because it is a secret that only you possess. An encrypted wallet file is similarly yours because only someone with the password can decrypt it. This architecture eliminates entire categories of attack: no server database of hashed passwords can be breached, no account lockout mechanism can be used to deny access, and no credential stuffing can compromise the wallet.

For users who prefer not to manage a recovery seed, or who want additional security through a second factor of knowledge (the password), the encrypted wallet file method is viable. The user generates a wallet within XMRWallet, then exports it as an encrypted file. This file is encrypted locally using AES-256 with a user-provided password. The encrypted file is then downloaded and stored offline—ideally on a USB drive or printed as a QR code on paper. To restore the wallet, the user uploads the encrypted file to a new XMRWallet session and enters the password. The wallet decrypts locally and reconstructs the keys.

The encrypted file approach has both advantages and disadvantages compared to the recovery seed. An advantage is that someone who obtains the file cannot use it without the password; a stolen seed phrase is immediately exploitable. A disadvantage is that the encrypted file is tied to the specific backup, whereas a seed phrase can always be re-imported to any compatible Monero wallet software. If the encrypted file is corrupted or lost, and the password is complex enough to resist brute-force attempts on an offline copy, the wallet may be unrecoverable. The seed phrase is more universal but requires higher security in its storage and transport.

Post-session practices and opsec discipline

The technical security of Tails and XMRWallet is substantial, but it depends entirely on the user’s operational practices. Several habits can undermine the entire setup. First, the user should never type the recovery seed into any non-Tails device, document it in cloud storage, send it via email, or photograph it with a connected device. The seed phrase is the equivalent of the private key and must be treated accordingly. Second, the user should not use Tails for other activities on the same session as wallet management. Opening social media, email, or other services that might identify the user could link the anonymous Tails session to the user’s real identity.

Third, the user should not rely on Tails’ automatic session expiration alone. If multiple sessions are needed, each should be shut down and the device rebooted between them, rather than leaving Tails running and returning to it later. This ensures that memory from the previous session is completely flushed. Fourth, the user should verify that the recovery seed or encrypted wallet file is actually recoverable before relying on it. A single test restoration in a fresh Tails session is worth hours of prevention against the discovery that the backup is defective when recovery is urgent.

Fifth, the user should consider the threat posed by the USB drive itself. If the drive is seized or lost, a determined attacker could attempt to extract the Tails image or examine any residual data. Encrypting the USB drive using LUKS (the Linux Unified Key Setup encryption standard) adds a layer of protection, though the encryption itself must be provided by the user—Tails does not encrypt the USB automatically. For maximum security, the USB drive should be stored in a physically secure location, and multiple copies should be distributed across different locations if catastrophic loss would be unacceptable.

Sixth, the user should understand that Tor and Tails do not protect against targeted malware or remote exploitation. If an attacker can gain code execution on the running Tails system—through a browser exploit, a zero-day vulnerability, or physical access—they can observe the wallet activity during that session and potentially extract the recovery seed or encrypted wallet file before it is entered. The protections offered by Tails are primarily against forensic recovery and persistent compromise, not against active, targeted attacks during the session itself. Users with extreme threat levels should consider additional measures such as hardware wallets or air-gapped signing procedures.

Networking isolation and monitoring considerations

Tails’ routing of all traffic through Tor is valuable, but the user should understand what it does and does not hide. Tor encrypts traffic and routes it through multiple relays, so the destination server cannot determine the user’s IP address, and ISPs or network operators cannot see what specific websites or services are being accessed. However, they can observe that Tor traffic is occurring, which itself may be a signal of interest in a monitored environment. Additionally, Tor protects only the network layer. If the user types an identifier like an email address or username into the wallet page, that information is still sent to the server in plaintext (though Tor encrypts the tunnel it travels through).

For transaction broadcasting, Monero’s privacy mechanisms are independent of Tor. Tor hides which IP address is broadcasting the transaction, but the transaction itself is visible on the Monero network. Monero’s ring signatures and stealth addresses hide the sender, amount, and recipient from being linked together, but an observer analyzing timing and transaction patterns could potentially infer some information. For the most paranoid setup, the user might wait several minutes or hours between constructing a transaction and broadcasting it, or might broadcast from a different Tails session on a different network, to further obscure the connection between the act of creating the transaction and the appearance of the corresponding transaction on the blockchain.

The user should also consider whether the choice of remote Monero node introduces risks. Some node operators publish statistics about node connections, and academic researchers have attempted to correlate network timing to identify wallet addresses. For maximum paranoia, the user should consider running a local Monero node on the same Tails instance, which eliminates the intermediary entirely. This requires more storage and synchronization time but provides complete privacy for blockchain queries. Alternatively, the user could run a Monero node on a separate, isolated device (also running Tails) and connect the wallet device to it over a local network interface, further separating the wallet from the broader network.

Verifying XMRWallet’s integrity in a Tails session

The XMRWallet interface is served from a web server, and although Tor encrypts the connection, the user should verify that the server being accessed is legitimate. XMRWallet is open-source, and the code can be reviewed on GitHub, but the code served to the browser in a given session might differ from the published source. An attacker who compromises the web server, intercepts the connection despite Tor, or poisons a DNS lookup could serve malicious code that steals the recovery seed or decrypts wallet files to a remote server.

To mitigate this, the user can use browser developer tools (Firefox’s Inspector, accessible via right-click and «Inspect Element») to review the page source and identify the JavaScript code being executed. For users without coding expertise, this is not a practical verification method, but for security researchers or technical users, comparing the served code against the published source code can identify discrepancies. Alternatively, the user can download the XMRWallet code and run it locally by opening the HTML file in the browser directly, bypassing any server. This requires downloading the entire codebase, but it eliminates dependence on server availability or integrity.

A simpler risk reduction is to use XMRWallet only on a Tails instance that has been freshly booted from a verified USB, has no persistent connection to the internet except through Tor, and is being used only for the wallet session. These environmental controls reduce the likelihood of successful malware injection or server compromise going undetected. Combining these practices with code review or local operation further hardens the setup.

Frequently asked questions

Why use XMRWallet on Tails instead of a dedicated hardware wallet?

Hardware wallets provide excellent security for key storage because the private key never leaves the device and signing occurs in a secure enclave. However, they add complexity and cost, and they require a separate device to interface with. Tails plus XMRWallet provides strong security for users who cannot access or afford hardware wallets, and it offers complete ephemeralness—after shutdown, there is no persistent trace of the session. The trade-off is that the running Tails system is potentially vulnerable to session-specific attacks, whereas a hardware wallet protects keys even if the connected computer is compromised.

If I forget my recovery seed password, can XMRWallet help me recover it?

No. XMRWallet is a non-custodial wallet, meaning it stores no passwords, seeds, or wallet data on its servers. The recovery seed is yours alone to protect. If you lose the seed, there is no recovery mechanism short of restoring from a backup copy. This is why writing down and storing the seed securely offline before sending any funds is critical. Test the restoration process in a new Tails session to verify the seed works before relying on it.

Can law enforcement access my wallet if my Tails USB is seized?

If the USB is seized and analyzed, authorities cannot recover wallet history or past sessions because all data is held in RAM and erased on shutdown. However, if you have not encrypted the USB drive itself, forensic tools might recover the Tails image or any non-critical data. More importantly, if you are forced to divulge your recovery seed or wallet password, authorities can then access your wallet. The security of Tails is against forensic recovery and persistent surveillance, not against coercion or targeted attacks during an active session.

XMRWallet on Tails OS: Setting Up the Most Paranoid Monero Wallet Configuration Possible

Hold deg oppdatert på Fagsnakk