3.8 KiB
Absolutely — let's think this through step by step. The goal is a bootable authority host image that’s offline, deterministic, and ready to handle domain admission, DAM signing, SOPS bundles, and PER generation. Here's a blueprint for assembling it.
1. Base OS
-
Choose a minimal Debian/Ubuntu or SystemRescue-based environment.
- Needs basic POSIX tools, filesystem utilities, and networking disabled (offline by default).
-
Install essential tools only:
bash,coreutils,tar,gzip,xz,find,sha256sumsopsbinary for offline bundle handlinggitoptional, for versioning tools inside the image
-
Disable unnecessary daemons (
sshd,cron) for security.
2. Filesystem Layout
Create the ENC-ASL-AUTH-HOST structure inside the image:
/asl-auth-host/
├─ /domains/ # domain stores
├─ /tools/ # binaries
├─ /env-claims/ # environment snapshot hashes
└─ /sops-bundles/ # encrypted bundles
-
Use read-only overlay for system files
-
Persistent storage can be mounted as
/domainsor/store(ZFS, ext4, or Btrfs) -
Optionally, set up ZFS pools for:
/domains/<domain-id>/store/domains/<domain-id>/snapshots
-
The image itself is immutable — only mounted storage is written to.
3. Tools to Include
-
asl-auth-host binary — main authority program
-
asl-rescue binary — optional rescue support for SystemRescue-style data intake
-
sops — offline encryption/decryption of bundles
-
Optional helper scripts:
make-dam.sh— create DAM artifactssign-bundle.sh— sign SOPS bundlesverify-env.sh— calculate env-claims
4. Boot Configuration
-
Boot kernel options:
- Mount persistent storage for
/domains(ZFS, ext4, etc.) - Mount overlay read-only system (
/tools,/env-claims,/sops-bundles)
- Mount persistent storage for
-
Auto-start a shell or interactive prompt for offline operation.
-
Optional: menu for:
- Create new domain
- Sign DAM / issue certificates
- Prepare SOPS bundle
- Rescue/import artifacts
5. Domain Initialization
When first booting:
-
Generate root key pair for the domain.
-
Optionally generate DAM signer keys.
-
Create the domain directory:
/domains/<domain-id>/ ├─ store/ ├─ log/ ├─ snapshots/ ├─ certs/ ├─ policies/ └─ dam/ -
Initialize empty log, empty store, and environment claim file:
/env-claims/<snapshot-id>.claim -
Seed the domain with common domain reference, if applicable.
6. Certificates and Policies
- Root keys must be encrypted at rest.
- DAMs signed using offline authority host root keys.
- Policies included in
/domains/<domain-id>/policies/. - All signed artifacts stored in
/sops-bundles/for delivery.
7. Optional Persistence
-
If you want the host bootable from USB:
- Overlay FS (SquashFS or ISO) for system binaries
- Writable ZFS/Btrfs/EXT4 for
/domainsand/sops-bundles
-
This allows the system to remain fully offline but store persistent artifacts.
8. Recommended Approach
-
Immutable image for the offline host (SquashFS or ISO)
-
Writable storage for domains (
/mnt/pool) or USB disk -
Use ZFS datasets for:
- Block storage
- Snapshots of logs & store
-
Pre-load binaries for deterministic PER generation, DAM signing, and rescue scripts.
-
Environment claims stored and optionally signed before any DAM operation.
If you want, I can write a concrete build script outline (e.g., Debian-based ISO with overlay + ZFS pools + included binaries + directory structure), so you have a starting point to actually produce the bootable auth host image.
Do you want me to do that next?