Skip to content

Support Tails OS with persistent storage, firmware verification and Tails system verification #2218

Open

Description

@gaspar-ilom

I would like to boot a Tails OS USB drive from Heads with

  • a) Tails persistent storage
  • b) TOTP/HOTP verification of Heads firmware
  • c) and verification of the Tails system partition (no separate /boot partition).

Verification of the persistent storage partition on the USB drive is a non-goal as it will change during each usage.

As dual boot seems another complex story (https://tails.net/support/faq/index.en.html#permanent-install) let’s reduce it to Tails only without an internal hard drive.

Regarding Tails there are two options:

  1. Putting ISO + detached signature on a USB drive and create or mimic a persistent storage to achieve a) and c). TOTP/HOTP verification would have to become independent of a /boot partition to achieve b).
  2. Regular installation of Tails on a USB drive with persistent storage and treating it like an internal drive during Heads boot to store and find the primary handle hash, the HOTP counter, hashes signature etc.

In case 1. it is currently not possible to just load the ISO and create a persistent storage. I didn’t manage to manually create/copy an existing persistent storage and open it either.
Thus we would have to find a hack to create and open a persistent storage when booting from a verified Tails ISO. Anyway, we would still have to find a place to store the primary handle hash and the HOTP counter. Maybe in the TPM? (#1260)

In case 2. we would need Heads to treat an external drive as an internal one as discussed here #1873 (comment). But even then Tails installed writing e.g. an .img file with dd does not have a separate /boot partition. Also, I have not yet tested how Tails reacts to storing extra kexec_*.txt files under / in the system partition.
2. has the advantage that the Tails USB would be completely bootable from a non-Heads machine, which is currently not the case with a USB that contains an ISO and a detached signature, but is not bootable.

Why does Heads actually expect a separate /boot partition? Would it be an option to write all the kexec_*.txt files on the system partition? This partition by design should not change barring Tails updates.

I considered installing Tails on an internal drive but the FAQ discourages it:
https://tails.net/support/faq/index.en.html#permanent-install

I am motivated to put work into this, incl. Into the related issues such as getting rid of the dependency of TOTP/HOTP verification on a /boot partition.

Before I get started I would like to get some feedback and ideas on what seems to be the most promising approach.

Activity

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