Hello!
New JSON Schema
We have news! We have been working on a new updated JSON schema for public Log lists to use, and we are now ready to share it with the CT community to get your feedback and make any resulting tweaks and changes before starting to use it! You can find the new schema at https://www.gstatic.com/ct/log_list/v2_beta/log_list_schema.json.
We have also uploaded an example Log list based on the new schema to https://www.gstatic.com/ct/log_list/v2_beta/log_list_example.json. This list includes only a handful of Logs, and is simply intended as an example of what the format of a Log list using the new schema might look like.
What will the new schema be used for?
The idea is that it will eventually replace the one at https://www.gstatic.com/ct/log_list/log_list_schema.json, and both https://www.gstatic.com/ct/log_list/all_logs_list.json and https://www.gstatic.com/ct/log_list/log_list.json will be re-generated based on the new schema. However, before that happens we will have both the new and the old versions hosted on gstatic for a period of time, to allow anyone who currently uses these lists to migrate over to the new schema.
In addition to this, we have also discussed this new schema with Apple, as they too want an updated schema that they could use to publish the list of Logs their software uses.
While there are a few tweaks to structure, and some new basic info fields, the biggest addition in the new schema is the introduction of a 'state' field. We envisage each UA that enforces CT publishing their own log list based on this schema, where the state they attribute to a Log is based on the state of the Log with respect to that UA. As such, the states currently in the list have been designed to represent a set of generic states that would be applicable across UAs.
The state machine and meanings of the states
+------------------------+
| |
| V
PENDING ---> QUALIFIED ---> USABLE ---> FROZEN------+
| | | | | | |
| | | | | V |
| | +--------|---+---> RETIRED |
| | | | V
+-----------+------------+-----------+------> REJECTED
PENDING: The Log has requested inclusion in the Log list distributor’s trusted Log list, but has not yet been accepted. A PENDING Log does not count as ‘currently qualified’, and does not count as ‘once qualified’.
QUALIFIED: The Log has been accepted by the Log list distributor, and added to the CT checking code used by the Log list distributor. A QUALIFIED Log counts as ‘currently qualified’.
USABLE: SCTs from the Log can be relied upon from the perspective of the Log list distributor. A USABLE Log counts as ‘currently qualified’.
FROZEN: The Log is trusted by the Log list distributor, but is read-only, i.e. has stopped accepting certificate submissions. A FROZEN Log counts as ‘currently qualified’.
RETIRED: The Log was trusted by the Log list distributor up until a specific retirement timestamp. A RETIRED Log counts as ‘once qualified’ if the SCT in question was issued before the retirement timestamp. A RETIRED Log does not count as ‘currently qualified’.
REJECTED: The Log is not and will never be trusted by the Log list distributor. A REJECTED Log does not count as ‘currently qualified’, and does not count as ‘once qualified’.
Keeping these high-level descriptions in mind, each UA may wish to further specify exactly what each state will encompass wrt them (for example, in Chrome, PENDING covers from when an inclusion bug is submitted, to having monitoring started, to passing monitoring, through to actually being added to the Chrome codebase). We welcome feedback about potential modifications to these descriptions and any points that could be made clearer!
What would a typical log lifecycle look like?
A normal Log lifecycle:
PENDING --> QUALIFIED --> USABLE --> RETIRED
PENDING --> QUALIFIED --> USABLE --> FROZEN --> RETIRED
A Log fails to meet policy requirements after being accepted by the Log list distributor:
PENDING --> QUALIFIED --> RETIRED
PENDING --> QUALIFIED --> USABLE --> RETIRED
PENDING --> QUALIFIED --> USABLE --> FROZEN --> RETIRED
A Log fails to meet policy requirements before being accepted by the Log list distributor:
PENDING --> REJECTED
(this list is not exhaustive)
What do these states mean for other actors in the CT ecosystem?
CAs: Do not embed or otherwise rely upon SCTs from a Log until it is USABLE.
Monitors: Monitoring should begin, and is valuable, as soon as a Log is PENDING.
What do we need from you, the CT community?
We would really appreciate it if you could go and take a look at the new schema, and let us know what you think! Let the discussion begin!
Hi Kat,Just been looking at this new schema as I'm implementing certificate transparency on Android.So far I have a couple of questions regarding "state".Firstly, should this be marked as "required" in the schema? Wasn't sure with jsonschema if 'oneOf' indirectly makes this required.
Secondly, from a user agents perspective when verifying an SCT would we then do the following:PENDING, REJECTED -> An SCT associated with this log server would be treated as untrustedQUALIFIED, USABLE, FROZEN -> Validate SCT against this (any timestamp okay)RETIRED -> Validate SCT against this if it was issued before the state timestamp, otherwise SCT is untrusted
Also, what is the timeframe for rolling out the new schema?
Many thanks,Matt Dolan
--
You received this message because you are subscribed to the Google Groups "certificate-transparency" group.
To unsubscribe from this group and stop receiving emails from it, send an email to certificate-transp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/certificate-transparency/47b76ebf-7485-4e15-82c2-b58f5f8add92%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to certificate-transparency+unsub...@googlegroups.com.
Hi Kat,Just wondering what the status is of the v2 schema. Is this `2.0.beta2` version finalised and when will it likely be adopted?Thanks,Matt
On Friday, January 4, 2019 at 4:48:29 PM UTC, Kat Joyce wrote:
Hi everyone,A quick update on the new Log list JSON schema:After all of the feedback we received at the CT policy days in November, we have been working with interested parties to make some changes to the schema, which can now be seen at https://www.gstatic.com/ct/log_list/v2_beta/log_list_schema.json, with a dummy example list based on this schema at https://www.gstatic.com/ct/log_list/v2_beta/log_list_example.json.Specifically, the changes that were made are:- to change the 'operators' and 'logs' fields to arrays (they were previously maps/dictionaries)- to change 'description' from an array to a string- to add top-level 'version' field- to re-name 'frozen' to 'readonly'If anyone has any more feedback on the schema, please do get in touch! We'll keep everyone informed of finalization plans when we get there :)Thanks!Kat
On Tue, Oct 23, 2018 at 4:42 PM Kat Joyce <katj...@google.com> wrote:
Hi Matt,Thank you for your questions! Responses inline below.Kat
To view this discussion on the web visit https://groups.google.com/d/msgid/certificate-transparency/e2710a80-3710-4acf-b208-decf1c371fff%40googlegroups.com.