--
You received this message because you are subscribed to the Google Groups "Certificate Transparency Policy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ct-policy+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/ct-policy/bcfca3d1-7547-4dc4-b43d-7bf1549f6815%40app.fastmail.com.
--
My two small rappli: maybe we should have guidance for client authors noting that if one just want the names, but do not care if they actually are valid that they can use this path and if they actually care about the cryptographic part that they use that properly.
As a thought, it might be useful to put this API endpoint on a different URL, where different rate limiting policies can apply. I imagine that operators with a good load balancer can do this anyhow, based on the path, but for some it might be useful to be able deploying on a separate hostname altogether.
I think this endpoint may (ab)used by CT users that only want to monitor about certificates of their own domain, by only monitoring this normally than lookup main tiles only when they see domain they care about: but unlike full ct client this doesn't ensure certificate named by it didn't created, because this name tiles are not cryptographically bind to tree, so ct log can skip any name they want, right? This looks like major footgun and feels like what most of name-only clients are trying to do. I think this tile need to bind to main tree some way, for example as an entry in main tile. so it can verified by full monitor that they didn't skiped name in it to be actually used.
Perhaps to signal that this is not cryptographically bound or part of the proper API, we could just make it be newline separated dnsNames?
We could remove the index? It's easy to reconstruct, but I guess there's no point in making it easy to map back to the specific log entry.
Hi all,
First up, thanks to Filippo for your awareness. We all benefit from you looking at the bigger picture to spot this usage pattern. I can see why this makes sense for a log operator to host, but I have concerns across a few dimensions.
If this goes into the Static CT spec as an optional extension, that’s a bit funky, but I can see the argument. I’d personally prefer to see this API take shape in its own separate spec, but there’s initial overhead to that. It does make versioning easier in the future though.
My main concern is that while it may be listed as optional, in reality, it may become enforced via policy, or simply peer pressure. This proposal was discussed on Slack with the observation that “it only works if all production Static CT logs expose it, or lazy clients will just use the ubiquitous option”. If this is true, then any log operator turning up a Static CT log will be the black sheep if they choose not to implement this “optional” API.
CT is the poster child for transparency. Newcomers to transparency often take the stance that if CT does it, then it’s the right approach. I’ve spent countless hours over my time in transparency telling people that “yes CT uses SCTs, but that doesn’t mean you should, and here’s why...”. I worry about the message that this sends out to the wider transparency community, especially as Static CT is touted as CT redone with modern best practices.
Such a change seems likely to embolden those that are liable to believe that “verifiable logs always tell the truth, so you don’t need to verify them”.
It’s great to see that the content of the response has been slimmed down since the original proposal. However, this has a flip-side. Imagine if in 6 months, we spot a high usage from people needing to know about the Issuer, perhaps to train AI models to look for unusual issuance patterns. The contents of the proposed TrimmedEntry wouldn’t allow such users to do this, so they would need to fall back on the full tiles. Would we then version up the Static CT spec to add new fields to this response body? Versioning this and rolling it out across log operators and clients seems like a challenge.
Clients harvesting SANs from logs will need to have a fresh copy of all current CT logs, which means somehow acquiring a copy of the OTLL. Either they pull directly from, e.g. Chrome, or the client library maintainer needs to propagate changes into the library. We’ve seen problems with staleness and brittleness from these kinds of dependencies before.
The consumer library then needs to determine which API to invoke on the log. Does this mean that the OTLL needs to publish a field to indicate whether this optional API is available?
The consumer then needs to poll every log on the policy, knowing that every cert will appear in multiple logs (potentially in both the pre-cert and final cert form). This is more duplicate data, though the cost is at least spread across the ecosystem.
In my eyes, the correct approach is that one or more actors step up to effectively run a SAN announcement service. There are already actors that consume all of the logs (e.g. monitors), and so have the data to do this. They would also be able to effectively de-dupe the same cert in multiple logs, and between the pre- and final-cert forms.
I like this because it maintains the verifiable properties further down the pipe, and addresses all of the concerns I’ve outlined above.
There is one downside however: finding one or more parties to host such a service. The cynic in me understands that you probably considered this, ruled it out, and thus made your proposal that logs should run the service. However, I still have a spark of optimism, and maybe someone will come forward and allow my optimism to grow.
Cheers,
Martin
--
Hi Martin,Thank you for thinking this through.I think the first two concerns boil down to "we don't want this to be too official" and I agree. How about we make the "specification" just a Markdown file in the Sunlight repository, with a non-normative link from c2sp.org/static-ct-api, which specifies it should not be emulated?
About the ubiquity requirement, I realized after making that comment that the client can just fallback to data tiles, and that's what I implemented in UnauthenticatedTrimmedEntries.
In general, we also need to figure out better ways to guide new transparency ecosystems than by correcting them after they emulate CT. Even without this, Static CT is not a good example, with its SCTs and extra data, as you said.
The latter two concerns, as well as the proposal, seem to boil down to "we can do better than this" and we definitely can! I don't think it's worth it though. This is a targeted optimization to hopefully offload clients that are not the primary concern of the CT ecosystem. This line of thought might be worth a week of our collective time, but I don't think it'd be worth a month. No amount of optimism will convince me that a sustainable, reliable public collating service can be stood up in less than a month.As to discovery specifically, these clients are already using all_logs.json, so they already have the monitoring prefix. Remember we don't really care about breaking these clients, so I don't think that's a problem.To sum up, this was a timeboxed performance optimization exercise. If the consensus is that #43 is a net negative, I will drop it and probably not think about those clients again soon. Otherwise, I will merge it as-is or with minor tweaks at the end of this week. If in six months it turns out to be (or become) useless, we'll just turn it off.I obviously can't dispose of anyone else's time, so if someone else disagrees and thinks it's worth dedicating more resources to a proper solution, I am also happy to turn this off once that proper solution exists.