Hi Adam,
Author of X509 patch (for Apptainer) here.
I drop some comments to fuel the discussion.
Signing images with X509 practically consists of two discrete steps:
- Use the signer certificate to sign the image.
- Validate that the signer's certificate is trustworthy (signed by a trusted entity, is not expired, and is not revoked).
The former is straightforward.
The latter, as described in RFC
https://datatracker.ietf.org/doc/html/rfc5280, requires inspecting the "IssuingCertificateURL" of the signer
and recursively download and validate all the certificates in the signing chain (e.g., Root CA -> Institute CA -> Lab CA -> User Certificate).
For a long time, the certificates were expected to be in the PEM format, described in RFC
https://www.rfc-editor.org/rfc/rfc1423.html.
However, some PEM-related interfaces are being deprecated from Golang's crypto libraries lately (e.g.,
https://pkg.go.dev/crypto/x509).
The only remaining PEM-related interface requires the system certificates (e.g.,/etc/ssl) to be in PEM format. This is reasonable as it would break existing installations.
If I understand correctly, DSSE is an alternative solution to PEM, and in-toto attestations are an alternative to x509.
However, none of them are RFC-based, so I wonder if the slow-moving HPC community is likely to adopt them.
Additionally, I do not see in-toto attestations to support online revocation checks.
Without these checks, there is no way to protect sif images against malicious (e.g., leaked) certificates.
To conclude, the question is, "do we need online revocation checks or not ?"
If we do *NOT* need it, DSSE + in-toto should be ok.
if we need it, the PEM + X509 is the industry standard and we should follow it.
Cheers,
Fotis