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
docs(guest-agent): correct the v0 spec where it did not match the code
Six corrections from an adversarial pass over the spec against the
implementation. Two of them would have misled a verifier:
`TdxQuote` builds report data as hash(prefix || ":" || content), not
hash(prefix || content) -- the agent supplies the colon, so `prefix` is
the tag alone and the default is `app-data`, which is what the response
echoes back. The spec said the default was `app-data:`, so a caller who
set it explicitly would have digested `app-data::` and produced a quote
nothing verifies, and a verifier reading the formula would compute the
wrong 64 bytes for any custom prefix. The proto's own comment said the
same thing and is corrected with it; comments are outside the frozen
digest and `frozen_surface` still passes.
"One secret, two curves" was three. `Tappd.DeriveKey` runs the identical
HKDF -- same `RATLS` salt, same bare-`path` info -- and reads the result
as a P-256 scalar, handed back as a PKCS#8 PEM. The mitigation the
section offered (encode the algorithm into `path`) separates the two
`GetKey` curves from each other but not from `Tappd.DeriveKey`, which
derives the same secret from the same string. Say so.
The rest are smaller: the signature-chain vector is not the only
committed vector in the document (report data has two, cited 286 lines
later); `GetTlsKey`'s random seed goes through the same HKDF step before
it is a scalar; `Verify` with `data` under 16 bytes answers 200 with
`valid: false` rather than erroring; `Tappd` is in the `dstack_guest`
package like the other two; and the three never-released methods are
named instead of counted.
0 commit comments