It sounds like the primary dilemma hasn't been resolved, though.
Essentially, we have three seemingly incompatible goals:
(1) Do not perform complex operations on untrusted data in dom0.
(2) Do not delegate critical operations to AppVMs.
(3) Do not require initial copying of the entire backup blob to dom0.
And the additional requirement:
(4) Do not require Qubes-specific tools to recover plaintext from the
backup.
(1) requires that we verify the integrity and authenticity of the backup
before decrypting it in dom0, since failure to do so exposes us to DoS
attacks (or worse). (2) means that we can't delegate the tasks of
verification or decryption to any AppVM (incl. any DispVM), since any
attack which could compromise dom0 could also compromise the AppVM,
which could in turn pass compromised data to dom0. Therefore, it must be
performed in dom0. In conjunction with (1), this entails that the backup
blob must be verified (in dom0) before any complex operations are
performed on it. (3) rules out solutions which require an amount of free
disk space in dom0 equal to or greater than the total size of the backup
blob. (4) is not part of the dilemma proper, but constrains the tools
which can be used to those which are not Qubes-specific. This is so that
recovery from the backup is possible in the event that no trusted Qubes
system is available.
Outcomes:
(A) We achieve (2) and (3), only if we forego (1).
(B) We achieve (1) and (3), only if we forego (2).
(C) We achieve (1) and (2), only if we forego (3).
Summary of Outcomes:
(A): Stream from AppVM --> dom0 decryption --> dom0 verification.
(B): Local access from AppVM --> AppVM verification --> dom0 decryption.
(C): Copy to dom0 --> dom0 verification --> dom0 decryption.
If this is truly an accurate description of the dilemma, and if it is
truly a dilemma (i.e. there is no way out; we must choose one of the
three outcomes), then the obvious choice from a security perspective is
(C), since this is the only outcome of the trio in which we're not
sacrificing security (instead, we're sacrificing disk space).
However, it seems like there should be a way out. For example, could we
in theory eliminate the need to worry about (1) in the following sort of
scenario? Imagine that you have two identical physical machines ready to
be restored from your backup blob. The first machine is sacrificial. On
the first machine, you do as much parsing or even decryption of the blob
in dom0 as you want. You then attempt to verify its integrity. If an
attacker has tampered with your blob, then dom0 is now compromised. If
not, then you can become sure that the blob is verified. Only if you're
sure of the blob's integrity do you then confidently restore from the
blob on the second machine. Or is the problem that dom0 might be
compromised without our having any way to tell that it is? In that case,
this sort of "disp dom0 clone" idea won't work.
Last point (unrelated to this, but on-topic): I strongly agree with
Marek's endorsement of a symmetric cipher for encrypting the backup (the
obvious choice is AES), but perhaps you're planning on giving the user a
choice about this anyway.
Reason 1: The primary purpose of a backup is so that a single user is
able to recover important data in the event of loss. Therefore, there's
no need to use a public key to encrypt this data. (Of course, a backup
*can* be shared or sent to someone else, but then it's probably more
accurate to call it something other than a "backup.")
Reason 2: Backups can and typically *should* be stored or duplicated
offsite, which typically means that they will be stored on servers
outside the user's control (which, we should assume, makes these servers
untrusted). This means that they can be copied without the user's
knowledge, stored elsewhere, analyzed, and brute forced for an
indefinite period of time. It's becoming increasingly clear that
asymmetric ciphers will be considerably less secure than symmetric
ciphers against potential advances in quantum computing as time goes
on.[1][2][3][4][5][6] Furthermore, the data stored in a whole-system
backup is likely to be sensitive for a longer period of time than, e.g.,
a public-key encrypted email, which makes it more critical to do what we
can to maintain backup confidentiality for as long as possible.
[1] Peter W. Shor. 1995. "Polynomial-Time Algorithms for Prime
Factorization and Discrete Logarithms on a Quantum Computer".
[2] Daniel J. Bernstein, Johannes Buchmann, Erik Dahmen (eds.) 2009.
/Post-quantum cryptography/.
[3] Daniel J. Bernstein. 2009. "Cost analysis of hash collisions: Will
quantum computers make SHARCS obsolete?".
[4] Daniel J. Bernstein. 2010. "Grover vs. McEliece".
[5]
http://www.pqcrypto.org
[6]
https://www.schneier.com/blog/archives/2008/10/quantum_cryptog.html