Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Log-Based Registry: phase 1 proposal #25

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

esoterra
Copy link
Collaborator

@esoterra esoterra commented Jul 20, 2022

Rendered

I've worked with @npmccallum and @lann to combine their sketches into a unified phase 1 proposal for a log-based registry. The Open Questions section contains a number of remaining decisions which should be discussed and either incorporated or determined to be out of the MVP scope.

References to "hash(es)" and "public keys" are intentionally ambiguous in the initial draft, resolving how these are represented is an open question (see topics "Hashing Scheme" and "Hash Indirection") as different design choices are available. As per our previous vote, the JOSE standard will be employed; JWKs and other JOSE features will be used where keys, signatures, and hashes are needed.

Discussions for open questions

@npmccallum
Copy link
Member

@Kylebrown9 @lann I'm just recording a thought that occurred to me for later discussion: what if we required the hash in the prev field to be the same hash used in the jws signature? This reduces the risk of accidental security downgrade (i.e. signing a JWS using ES512 but then creating a link using SHA256 has a total effective bit strength of only 256 bits). It would also mean we don't have to design a system to report the hash algorithm in prev since it is already reported in the JWS.

#### Effects
* Assigns role specified role to the specified key.

### Remove Role
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would make sense to collapse Assign and Remove into a single "Update Roles" type that can atomically update two keys. That might be easier on implementations than a server policy that requires batching different entries together.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there are enough use cases for batched publish that even if we did combine role modifications into one, we'd probably still need it.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requiring batching just for an implementation to be correct doesn't seem ideal to me. The only other example I can recall discussing was "require assigning some role to the operator at log init", but that policy could simply be "the second entry must assign a role to the operator".

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @npmccallum had some use cases in mind where this is a useful policy tool and I've heard some interest in batching together entries responding to an incident (e.g. CVE annotations, yanks, new releases).

Copy link
Collaborator

@lann lann Jul 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we have use-cases where multiple entries must be accepted atomically we should consider it as a feature that goes beyond "just a bunch of entries submitted together". For example, if the entries all have the same author, they really only need one signature (which would also prevent the registry from partially accepting the set of entries).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm definitely interested in exploring atomicity guarantees for entry batches.

Kyle Brown and others added 3 commits August 10, 2022 10:46
Formatting to make mdlint mostly happy
Remove mentions of using multiple hashes
Update proposal to reflect the current design
string version = 2;
// The time when this entry was created
// Format is ISO 8601 timestamp
string time = 3;
Copy link
Member

@rvolosatovs rvolosatovs Oct 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to if that's the standard approach. @lann thoughts?

string version = 2;
// The time when this entry was created
// Format is ISO 8601 timestamp
string time = 3;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above

ricochet pushed a commit to ricochet/SIG-Registries that referenced this pull request Oct 25, 2022
…ce#25)

* Make Cranelift meetings weekly now (and add agendas).

In our meeting today (2022-09-21) we discussed whether it made sense to
formalize the almost-weekly cadence we had been taking (which evolved
from an overflow-into-next-week scheme) into fully weekly. We agreed to
do so, and so this PR adds the remaining agendas for weekly meetings for
the rest of 2022 (except for Dec 28, when I believe most of us will be
on holidays).

* Update README as well.
Comment on lines +24 to +27
// The warg protocol version.
// Encoded using semver 2.0.
// Only legal value currently is "0.1.0".
string version = 2;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Semver is awkward for protocol versioning. I would stick to an unsigned int here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants