Mutliple qubes machines? how to securely sync?

Summary

How do you work on multiple devices with different levels of trust in a usable way?

Description

I have a desktop and two laptops.
One laptop runs Ubuntu and the other ones qubes.
The desktop is running very smoothly but sometimes I want to use my less performant laptop sitting somewhere else.
On the ubuntu machine i can not use qubes, as I can only use secure boot there and as qubes kernel is not signed, i can not boot it there.
I have trouble thinking about how to sync my two machines or even other devices especially secrets. Some thoughts of mine are duplicating data between those machines such that I can seemlessly fulfill my work using either one or using some remote solution such that there is always only a singleton instance of a work environment and I do not need to worry about syncing.
Also of course I have a smart phone and I also have a need to sync secrets with that.
How do you handle this synchronization problem?
Being only bound to one device is already a kind of a challenge, as qubes supports us basically splitting our environment in different ways, but then also sharing environments on different devices running different trustworthy os, is another beast.

SSH? You could use your smooth desktop from the comfort of your less performant laptop (or Qubes, with the benefit of split-ssh).

1 Like

This is not really a Qubes problem, although using Qubes does bring
some added complications.

As has been suggested, you could use SSH, or sshfs, to make data
available between the different machines. That could work quite nicely
between all the machines, and the obvious thing would be to keep the
base data on the desktop. This will leave the issue of how to get that
data on to the roaming laptop.
rsync is a neat solution to keep data synced between machines and/or
qubes. If you want to make this work between qubes on the separate
machines, then you will have to open ports on sys-net and pass the
traffic down to the target qube.
I have a simple script here
that will do this or you.

If you want to sync a number of qubes within the same domain, then
rather than run each separately, you could sync to a target
“aggregator” qube, and make the data available from there to the
individual qubes. It is not difficult to make this work, and it has the
advantage that you can also back up all the data from a security domain by
backing up just one qube.

Another approach that you could take would be to use something like
syncthing. I have a solution packaged with salt here,
and an automated solution that you install in dom0 using task-manager
This will create a sys-syncthing qube, and allow you to syncthing over
qrexec from other qubes.

I cant help with the smart phone, but I believe that syncthing is
available for android.

I never presume to speak for the Qubes team. When I comment in the Forum or in the mailing lists I speak for myself.
1 Like

If you don’t like to sync / multiply data, just use a single common storage backend (cloud, USB stick, SD card, external hard drive, …) with encryption.

Obviously all of the shared data should be in a single Qube to match your remaining infrastructure (all of it is available to one ubuntu machine so IMHO it doesn’t make much sense to split it in Qubes OS).

For multiple Qubes OS machines I wrote qcrypt [1] a while back. Essentially it splits your storage backend into the matching Qubes OS domains and can auto-attach them whenever you start the respective Qube.
IMO it’s pretty much what a Qubes OS storage domain should do (but then I’m biased as I’m the author).

[1] GitHub - 3hhh/qcrypt: multilayer encryption tool for Qubes OS

1 Like

Btw I just randomly hit into an article mentioning the use of end-to-end encrypted messengers such as Signal, Telegram etc. with multi device support to share data across multiple devices:
You send data to yourself, thus making it available on all devices.
Might be an option for small amounts of data.

2 Likes