Skip to content

Extend security model against host compromise threats (a.k.a. "append-only and its friends")Β #5041

@makkarpov

Description

@makkarpov

Currently, restic threat model assumes that host which is being backed up is fully trusted; that assumption is reasonable. For certain backends, there is a support for an append only mode, which helps in preventing compromised hosts from deleting their own uncompromised backups (i.e. during ransomware attacks). However, current implementation of append only mode has several (documented) drawbacks:

  • Enforcement of append-only backend policy does not provide security by itself: you have to notice documentation lines about how to use certain commands properly.
  • You need to have a separate (trusted) host to perform repository management such as backup rotation. This host needs to know your repository password, and therefore has full access to your data. It is impossible to run a shared server to perform management, but still keep your data unreadable to that server.

This feature request aims to improve such append only scenarios by allowing to further shift enforcement of certain invariants to the backend servers, and by separating encryption keys so that server is able to manage the repository without seeing the actual data. It also allows to make a snapshot without knowing the decryption keys, so that malicious client cannot retrospectively steal files that are now deleted from the host system, but are still present in backups. It naturally addresses the problem of master key rotation.

restic security model is extended with the following properties:

  • Assuming that backend server is running in a secure mode, adversary who compromises the host system cannot retroactively publish a snapshot which will trick restic forget into deletion of valid data.
  • Adversary who has access to management key can read only basic snapshot metadata such as creation time. Stored data is not readable.

I understand that this is a very fundamental change. It complicates restic key management model considerably, it adds another corner case to the restic code, all for an attempt to solve an ill-posed problem of obtaining secure backups out of untrusted hosts. This issue is more of a discussion rather than a direct feature request, at least for the time being. I would like to hear maintainer's feedback on the whole idea, whether they consider these costs and complications to be justified at all.

[outdated and misleading technical details removed, new details are to be presented in a separate document]

Did restic help you today? Did it make you happy in any way?

Sure it did. restic is the best backup tool that I know.

Metadata

Metadata

Assignees

No one assigned

    Labels

    misc: repository formatissues requiring repository format changestype: discussionundecided topics needing supplementary input

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions