You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
release: sign sealed NPU kernel set manifests (authenticity on top of confidentiality) #574
Follow-up from #548 (closed as not planned): the NPU kernels stay sealed (<set>/layout.json + <set>/layer1_*/layer1.elf
with the 1BPKCRYP magic, ONEBIT_KCRYPT_REQUIRE_SEALED=1, package_checks refusing anything else under npu/kernels).
That keeps confidentiality, which is the part the owner's rule requires.
What is missing is authenticity: today the only thing that says a set is ours is the sealing itself — a set re-sealed
by a different key, or a set swapped for another one that also decrypts, is not distinguishable by the shipped engine
beyond the key check. Signing the sealed set's manifest on top of encryption closes that without giving anything up: the
kernels stay ciphertext, and the signature only covers the manifest (and through the manifest's digests, the ciphertext
files).
Sketch, so whoever picks it up starts in the right place:
manifest per set, listing every shipped file with its sha256 of the ciphertext; manifest.sig is an Ed25519
signature over the manifest, verified by the engine (the loader lives in the private NPU runtime, which holds only the
release public key);
scripts/package-linux.sh / scripts/weekly.shpackage_checks: a sealed set must also carry a manifest that lists
exactly the files packed, and a set without one fails the package;
os/mini/release-check.sh: an on-stick row that every file under /data/npu/kernels is sealed and listed in its
set's signed manifest;
scripts/lemond-onebit.sh: keep ONEBIT_KCRYPT_REQUIRE_SEALED=1 and add whatever the loader names for "manifest
required" once the private runtime has it — a public flag that nothing reads is worse than none (that is what npu: kernel sets now ship with a signed manifest instead of sealing #548
shipped).
Sequencing: this needs the private NPU runtime (and possibly the kernel-set release flow) to land first, and the pin bumps
in the same window; the public side cannot verify a signature it has no key or format for. #548's own attempt is worth
reading for the shape of the packaging checks, but it replaced sealing rather than adding to it.
No deadline; this is a hardening item for a later pin, not a release blocker.
Activity
Sealed NPU kernel sets: sign a manifest of their ciphertext (#574) (#615
os: the stick's data partition carries the sealed sets' manifest and …
os: the stick's data partition carries the sealed sets' manifest and …
os: the stick's data partition carries the sealed sets' manifest and …
weekly: sign the sealed NPU kernel sets between build and package (#648)