cncf / tag-security

🔐CNCF Security Technical Advisory Group -- secure access, policy control, privacy, auditing, explainability and more!
https://tag-security.cncf.io
Other
2.08k stars 518 forks source link

[Presentation] Rekor tamper-resist ledgar #467

Closed lumjjb closed 3 years ago

lumjjb commented 3 years ago

Title: What is the title of your presentation?

Introduction to Rekor project

Speakers: Who will be presenting this? List names/github IDs of presenters.

@lukehinds @dlorenc @bobcallaway

Description: Describe in a short paragraph what the presentation is about.

https://github.com/projectrekor/rekor-server

Rekor's goals are to provide an immutable tamper resistant ledger of metadata generated within a software project or supply chain. Rekor would enable software maintainers and build systems to submit signed digests to an immutable record. Other parties can then query said metadata to enable them to make informed decisions on trust and nonrepudiation of an object's lifecycle, based on signed metadata stored within a tamper proof binary (merkle) tree.

Time: How long will the presentation take? (estimate)

40 mins

Availability: What is the availability times of the speakers to present the topic? Meeting times are listed on the landing page.

Aiming for sometime in January

TO DO

lukehinds commented 3 years ago

Server and code are consolidated into this repo now: https://github.com/projectrekor/rekor

joshuagl commented 3 years ago

I'd like to understand how Rekor compares to/differs from https://github.com/transparencylog/tl ?

lukehinds commented 3 years ago

I'd like to understand how Rekor compares to/differs from https://github.com/transparencylog/tl ?

Sorry for late reply.

We spoke a fair amount with Brandon Philips about his project and the direction we both had planned..

With transparencylog/tl the key capture points are the URL and an associated artefact (digest). It provides a wget / curl style tool to both retrieve the artefact , perform a look up in the TL and check its digest. For rekor we don't have a specific use case, we are a backend as such with an open API - we record configurable manifests / provenance data and make this data easily used by application developers (so an app like transparencylog/tl could be an app that uses rekor) - more on this later.

So further to the above rekor provides what we term plug-able types (provenance layouts). Users can then create their own provenance formats to capture what is important to them . The only requirement that we have is everything sent to rekor is somehow signed, so this way we have non-repudiation. Example layouts could be in-toto, sbom , OCI etc (Santiago from in-toto is seeking to collaborate with us and is advising post-grads to work on rekor)

{
    "type": "my_type",
    "version": "0.1",
    "spec": "https://github.com/example/specs/my_spec.txt",
    "body": {
        "URL": "https://example/release/my_release.tar.gz",
        "SHA": "83jfj8we89903uhejw88…",
        "PublicKey": {
            "type": "minisign",
            "version": "v1",
            "body": {
                "signature": "foo"
            }
        },
        "Signature": "SIGNATURE",
        "ExtraData": {
            "type": "my-extra-data",
            "version": "bar",
            "body": {
                "build-system": "foo",
                "compiler-version": "bar"
            }
        }
   }
}

body would allow someone to set their own provenance fields - rekor would then map this to a plug-able type which can then extract the version and the body and make entries into the transparency log.

So key to this, is that Rekor itself does not drive a specific use case like transparencylog/tl. It seeks to make it easier to implement a running transparency log and extend it to work with the data they feel needs capturing. The project provides an openapi making it relatively simple to interface with a transparency log without having to code inclusion proofs, signed tree heads yada, yada. They can just call simple rekor apis (add, get, verify etc).

A running log can then be openly used by other systems as a source of truth...

To give one of few examples, someone could create a website (like haveibeenpwned.com) - where users can submit their public key and email address. This site can then monitor a log(s) for entries of signed "things" - if they see a registered user's public key appear in the t-log, the site emails the user. The user then may well just delete the email "meh, I just made a release of acme project, tell me something I don't know!", however there may be instances where they have not signed a certain artefact, which could then be indicative of a stolen key. Another example, an ex maintainer(s) key(s), aka might pop up and sign a release and perform a targeted attack. This is similar in a way to certificate transparency, signed certificates are logged to the certificate transparency log and Google , Facebook etc monitor for instances of certs being signed against their domain(s).

So with rekor, it is not trying to be an attestor or arbiter of trust - it's just a point of truth so to say. There is also no concept of good entries or bad entries (in fact bad entries are useful). So rekor does not seek to be a system like TUF or notary as such, it''s a transparent immutable data hub that other systems can monitor and make useful to them. Its also built upon a TL which is been put through its paces already (google/trillian), so the path to being production grade is substantially reduced.

lukehinds commented 3 years ago

One thing I should point out, we are not seeking inclusion into the CNCF (although its not been out ruled), we are more wanting to talk with SMEs in the open source community to gather feedback and foster discussions around possible collaboration.

lumjjb commented 3 years ago

@lukehinds how does January 13 or 20th sound?

lukehinds commented 3 years ago

@lukehinds how does January 13 or 20th sound?

works for me, tagging @dlorenc and @bobcallaway

dlorenc commented 3 years ago

20th is better for me.

lumjjb commented 3 years ago

ok putting this in for 20th @lukehinds @bobcallaway @dlorenc

lumjjb commented 3 years ago

@lukehinds @bobcallaway @dlorenc Can we add a link to the slides/slack here? Thanks!

lukehinds commented 3 years ago

slack: https://join.slack.com/t/projectrekor/shared_invite/zt-kw84i368-cclDHDUrqBr97oOree_kog

slides (apologies for the unruly url): https://docs.google.com/presentation/d/e/2PACX-1vSrZbZNPy946Z8tXMJrSUBL87zXm2bP6ISMxZnS_DuA3PS3TRxTctLMTBpMZeXT2fWVBfqV4KTxQ6Z2/pub?start=false&loop=false&delayms=5000

anvega commented 3 years ago

@lukehinds I can't seem to access the slides. Is the deck shared as public?

lukehinds commented 3 years ago

sorry about this @anvega , can you try this one https://docs.google.com/presentation/d/e/2PACX-1vRbK6ywcihdclXWphk4wHsByUpc4IRy8JG8Af2F3CfutbTRV22xZ0K0fbSe6zy8np8FkvXY19lzP6TA/pub?start=false&loop=false&delayms=3000

lumjjb commented 3 years ago

Presented - closing