I suspect this is a continuation of the fingerprint issue Matthew was writing about a couple of months(?) ago.
EDIT: This post https://nondeterministic.computer/@mjg59/111456696748600420
https://blackwinghq.com/blog/posts/a-touch-of-pwn-part-i/ is some very nice research, with some terrifying takeaways: 1) Microsoft developed a secure communications path between the OS and any biometric devices 2) One vendor used the same backing store for both the secure and insecure path, allowing enrollment of fingerprints via the insecure path that were then trusted in the secure path 3) Another vendor used their own fucked up TLS-based implementation rather than the Microsoft one 4) *Microsoft* didn't use their own protocol
@mjg59 @hyc
I know you already dismissed SEV, but https://github.com/project-oak/oak seems vaguely related?
This is a VM inside the main OS, but the binary inside the TEE is available over grpc.
@mjg59 I don't think it's in a usable state yet (at least for x86 hosts, according to their FAQ), but I think seL4-as-hypervisor would fit the bill otherwise from my understanding
cf. https://docs.sel4.systems/projects/sel4/frequently-asked-questions.html#how-good-is-sel4-at-supporting-virtual-machines
& https://sel4.systems/About/seL4-whitepaper.pdf
@mjg59 So basically "a programmable HSM" like a less-locked-down version of apple's secure enclave? I honestly think trying to achieve secure isolation on the same CPU as the rest of the OS is a fool's game, and the only way to ensure isolation is to physically isolate things onto independent cores via a mailbox interface.
(I've wanted something similar for literally ever...)
@mjg59 To be sure I understand, you want a small VM and a big VM. The big VM gets all the hardware minus whatâs needed to run the hypervisor and the small VM. Communications between the big VM and the small VM are strictly controlled in both directions such that neither can interfere with the other.
What sort of thing are you trying to do with this small VM?
This sounds kind of like what a TPM is for, or maybe a BMC/SMC/LOM.
@mjg59 So the small VM would own the physical link to the biometric reader, then provide its own attestation about the biometric readerâs attestation it was presented an authentic biometric?
Hmm. Iâm not sure I know of a way to do that in software. Decent biometric readers should already use asymmetric keys, though. It should be possible to get a secure element like a TPM or smart card to only unlock a stored key when presented with a valid signature from the readerâs private key.
@mjg59 Thatâs what Iâm getting at: decent biometric readers should already use asymmetric keys. You may not be able to hook that directly to an off-the-shelf TPM, though I thought some had firmware allowing them to trust external public keys for exactly this reason. Might require writing custom RoT firmware like Oxide has done.
A guest can never keep a secret from the hypervisor under which it runs. The host always has full control over the guest, including the ability to inspect and change stack frames. At that point, youâre guaranteed to have a single piece of software which can get at both the clear key material from the small VMâs RAM and the data the key controls from the big VM.
Assuming thatâs what youâre trying to prevent, I donât know of any software system I would trust to provide sufficient isolation between the guests, even at a theoretical level. Computer-in-a-computer stuff like a TPM is it.