Should the trust anchor be validated #125
Replies: 1 comment 4 replies
-
Excellent question!
Yes, that's true. RFC 5280 doesn't even define trust anchors as certificates; they're just name<>pubkey pairs for the purpose of validation, and that binding is trusted by fiat. Any further restrictions such as expiry dates, issuance policy constraints etc. are (by definition!) out of scope for the purposes of path validation according to the RFC 5280 trust model. Of course that doesn't prevent any particular implementation from going beyond RFC 5280. When trust anchors are sourced from self-signed certificates, there are some "reasonable defaults" that can be added to the path validation parameters; see e.g. RFC 5937. I've taken some steps towards that in my As far as revocation is concerned: trust roots, by definition, are not subject to revocation. After all, who would issue such a revocation? The authority can't do that by itself; the signature on the CRL would be effectively unverifiable. A CRL asserting "my issuer's certificate is revoked" is kind of similar to the liar's paradox. So, TL;DR: In the traditional RFC 5280 trust model, the answer to your question is "no". Of course, that trust model can be augmented, but for document signing that's not as obvious as it may seem. Especially expiry dates for root certs are weird. I'm working on adding some of that extra richness, but there's work to be done on AdES validation first. Side note: all of this is much, much simpler in a setting like TLS, where connection lifetimes are very short compared to certificate lifetimes, so rejecting out-of-date roots is kind of the obvious thing to do. With document signatures we don't have that kind of luxury. |
Beta Was this translation helpful? Give feedback.
-
This is a question about pyhanko_certvalidator.
When running
_validate_path
It looks like the code does not do any validation on the trust anchor. This includes expiry time and CRL checking. Is this expected behaviour? The same issue exists in the original certvalidator should I raise the issue there as well?Related code from
validate.py
:I can see how managing trust anchors is the responsibility of the system administrator and in most cases this will be handled by the maintainers of the operating system. However I can also see how many who handle their own trust roots would not understand or care to do a good job at it.
Maybe there is something I do not understand myself well enough.
Beta Was this translation helpful? Give feedback.
All reactions