Documentation: Qubes Torvm (Qubes-Tor)
Documentation: Qubes Torvm (Qubes-Tor)
org/doc/privacy/torvm/
Documentation
Known issues:
Service doesn’t start without (even empty) user torrc (https://groups.google.com/d/msg
/qubes-users/fyBVmxIpbSs/R5mxUcIEZAQJ)
By default, any AppVM using the TorVM as its NetVM will be fully torified, so even applications that are not
Tor aware will be unable to access the outside network directly.
Moreover, AppVMs running behind a TorVM are not able to access globally identifying information (IP
address and MAC address).
Due to the nature of the Tor network, only IPv4 TCP and DNS traffic is allowed. All non-DNS UDP and IPv6
traffic is silently dropped.
If you are interested TorVM, you may find the Whonix gateway template (https://www.qubes-os.org
/doc/templates/whonix/) in Qubes a more usable and robust solution for creating a torifying traffic
proxy.
Warning + Disclaimer
1. Qubes TorVM is produced independently from the Tor(R) anonymity software and carries no
guarantee from The Tor Project about quality, suitability or anything else.
2. Qubes TorVM is not a magic anonymizing solution. Protecting your identity requires a change in
behavior. Read the “Protecting Anonymity” section below.
3. Traffic originating from the TorVM itself IS NOT routed through Tor. This includes system updates to
1 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
the TorVM. Only traffic from VMs using TorVM as their NetVM is torified.
Installation
1. (Optional) If you want to use a separate vm template for your TorVM
2. In dom0, create a proxy vm and disable unnecessary services and enable qubes-tor
qvm-create -p torvm
qvm-service torvm -d qubes-netwatcher
qvm-service torvm -d qubes-firewall
qvm-service torvm -e qubes-tor
5. Configure an AppVM to use TorVM as its NetVM (for example a vm named anon-web)
8. Start the TorVM and any AppVM you have configured to be route through the TorVM
9. From the AppVMs, verify torified connectivity, e.g. by visiting
https://check.torproject.org .
Troubleshooting
2 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
4. You may need to manually create the private data directory and set its permissions:
Usage
Applications should “just work” behind a TorVM, however there are some steps you can take to protect
anonymity and increase performance.
Protecting Anonymity
The TorVM only purports to prevent the leaking of two identifiers:
1. WAN IP Address
2. NIC MAC Address
This is accomplished through transparent TCP and transparent DNS proxying by the TorVM.
The TorVM cannot anonymize information stored or transmitted from your AppVMs behind the TorVM.
Time zone
User names and real name
Name+version of any client (e.g. IRC leaks name+version through CTCP)
Metadata in files (e.g., exif data in images, author name in PDFs)
License keys of non-free software
3 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
Further Reading
Tor Browser should now work correctly in your AnonVM when launched via the shortcut you just created.
4 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
Performance
In order to mitigate identity correlation TorVM makes use of Tor’s new stream isolation feature
(https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/171-separate-streams.txt). Read
“Threat Model” below for more information.
However, this isn’t desirable in all situations, particularly web browsing. These days loading a single web
page requires fetching resources (images, javascript, css) from a dozen or more remote sources.
Moreover, the use of IsolateDestAddr in a modern web browser may create very uncommon HTTP
behavior patterns, that could ease fingerprinting.
Additionally, you might have some apps that you want to ensure always share a Tor circuit or always get
their own.
For these reasons TorVM ships with two open SOCKS5 ports that provide Tor access with different stream
isolation settings:
/usr/lib/qubes-tor/torrc
You can override these settings in your TorVM, or provide your own custom settings by appending them to:
/rw/config/qubes-tor/torrc
Threat Model
TorVM assumes the same Adversary Model as TorBrowser (https://www.torproject.org/projects
/torbrowser/design/#adversary), but does not, by itself, have the same security and privacy requirements.
5 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
Proxy Obedience
The primary security requirement of TorVM is Proxy Obedience.
Client AppVMs MUST NOT bypass the Tor network and access the local physical network, internal Qubes
network, or the external physical network.
Without stream isolation, all traffic from different activities or “identities” in different applications (e.g., web
browser, IRC, email) end up being routed through the same tor circuit. An adversary could correlate this
activity to a single pseudonym.
TorVM uses the default stream isolation settings for transparently torified traffic. While more paranoid
options are available, they are not enabled by default because they decrease performance and in most
cases don’t help anonymity (see this tor-talk thread (https://lists.torproject.org/pipermail/tor-talk/2012-
May/024403.html))
By default TorVM does not use the most paranoid stream isolation settings for transparently torified traffic
due to performance concerns. By default TorVM ensures that each AppVM will use a separate tor circuit
( IsolateClientAddr ).
For more paranoid use cases the SOCKS proxy port 9049 is provided that has all stream isolation options
enabled. User applications will require manual configuration to use this socks port.
Future Work
Integrate Vidalia
Create Tor Browser packages w/out bundled tor
Use local DNS cache to speedup queries (pdnsd)
Support arbitrary DNS queries (https://tails.boum.org/todo/support_arbitrary_dns_queries/)
Fix Tor’s openssl complaint
6 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
Acknowledgements
Qubes TorVM is inspired by much of the previous work done in this area of transparent torified solutions.
Notably the following:
Privacy Guides
Search Qubes-OS.org
Using DuckDuckGo… Go!
Tour
Screenshots (/screenshots/)
Research (/research/)
Architecture (/doc/architecture/)
Getting Started
Downloads (/downloads/)
Compatible Hardware (/compatible-hardware/)
Try on Live USB (/downloads/#qubes-live-usb-alpha)
7 of 8 02/13/2016 04:51 PM
TorVM | Qubes OS Project https://www.qubes-os.org/doc/privacy/torvm/
Help
Documentation (/doc/)
Users' FAQs (/doc/user-faq/)
Devs' FAQs (/doc/devel-faq/)
Mailing Lists (/doc/mailing-lists/)
Report a Bug (/doc/reporting-bugs/)
StackExchange (https://stackexchange.com/search?q=qubes)
News
Announcements (/news#announcements)
Releases (/doc/releases/)
Press (/news#press)
Twitter (https://twitter.com/QubesOS)
Statistics (/counter/)
Team
Partners (/partners/)
Security (/security/)
Donate
Bitcoin (/donate#bitcoin)
Qubes OS
8 of 8 02/13/2016 04:51 PM