Skip to content

[QUESTION / FEATURE-REQUEST] borg2: way to deduplicate across entities, without those being able to decrypt and/or alter/delete other entitiy's data #10524

Open

Description

@mirko

I tried to make the title as generic as possible with the idea not to fall for the classic "X-Y-problem"-trap.

Let me narrow it down to an example: I have several hosts I want to backup. Currently they're treated as independent / isolated repos on the backend. I use SFTP as backend, and every host to be backed up has different access credentials and a different path on the backup host to write in. Hence, no host can access backup data of another host, nor can it alter/delete/prune that data.

In order to allow deduplication across hosts, that of course would have to be weakened. I read that I can create different keys - one key per host in my case - which all still allow writing into the same backup repository and got already excited; however, those different keys still seem to have the same permissions and only unlock the same master encryption key behind, allowing all keys again having access to all data (correct?).

Now I'm thinking if there is a way to achieve that (or a tolerable) degree of isolation with deduplication at all or whether the two are mutually exclusive.

Thinking this technically, for host A figuring out the chunk of data to be backed up already exists in the backup backend (e.g. initially from host B), it only needs to compare its checksum. That info would need to be shared across all hosts. As a consequence, this meta-data (checksum) needs to be available unencrypted - or encrypted with all host specific keys. Adding a key would then probably mean re-encrypting all that metadata. Since those checksums can be re-created, a compromised host purging such data (for all hosts) wouldn't be that bad. Although, it would probably disrupt backup operation for the other hosts. At least that could probably be monitored and the disruptive host identified. What would be worse: altering the data without anyone noticing. But I'm already focusing and wandering into a way too specific direction based on way too many (wrong) assumptions.
Then we have the pruning issue, whereas host A might have initially written chunk X, then also used by host B, then not anymore by host A and meanwhile retired, and now also not used by host B anymore, hence needs pruning - by whoever.

Is that technically possible and if yes, is that possible with the current borg2 architecture and if yes, is the borg-project willing to consider that?

Activity

  1. RonnyPfannschmidt commented on Oct 13, 2026

    @RonnyPfannschmidt
    Contributor

    the common mechanism for that is shared key and append only mode for the hosts that back up - pruning would be managed from somewhere else

  2. mirko commented on Oct 13, 2026

    @mirko
    Author
    1. the common mechanism for that is shared key and append only mode for the hosts that back up - pruning would be managed from somewhere else

    Thanks, could you elaborate what "shared key" means here exactly? would every host be able to access other host's backup data or not?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions