Qubes OS
Background
The Qubes operating system configures a set of virtual machines for different purposes such as:- personal
- Your personal email, browsing etc
- work
- Work email etc
- vault
- a VM without network access, where gpg-keys and/or keepass credentials are stored.
- sys-net provides networking to all other (network-enabled) machines
- sys-firewall handles firewall rules
- sys-usb handles USB devices, and can map usb-devices to certain qubes.
Setup
There are two ways that this can be achieved: integrated via Qubes or integrated via networking. 1. Qubes Integrated Qubes provides a facility for inter-qubes communication via qrexec. A qube can request to make a cross-qube RPC request to another qube. The OS then asks the user if the call is permitted.
Server

target
qubes, we need to define the RPC service.
/home/user/.clef/.clef.ipc
socket via e.g nc -U /home/user/.clef/clef.ipc
, but the reason for sending the request data over HTTP instead of IPC is for the ability to forward HTTP headers.
To enable the service:
Client
On the client qube, a listener is required to receive the request from the Dapp, and proxy it.Testing
To test the flow, with debian-work as the target:

Pros and cons
The benefits of this setup are:- This is the qubes-os intended model for inter-qube communication,
- and thus benefits from qubes-os dialogs and policies for user approval
- The qubes-gpg-client must forward the http request via RPC to the target qube. When doing so, the proxy will either drop important headers, or replace them.
- The Host header is most likely localhost
- The Origin header must be forwarded
- Information about the remote ip must be added as a X-Forwarded-For. However, Clef cannot always trust an XFF header, since malicious clients may lie about XFF in order to fool the http server into believing it comes from another address.
- Even with a policy in place to allow RPC calls between caller and target, there will be several popups:
- One qubes-specific where the user specifies the target vm
- One clef-specific to approve the transaction
