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

In addition to PeeringDB OAuth, propose that RPKI can also be used #4

Open
job opened this issue Dec 11, 2023 · 4 comments
Open

In addition to PeeringDB OAuth, propose that RPKI can also be used #4

job opened this issue Dec 11, 2023 · 4 comments

Comments

@job
Copy link
Member

job commented Dec 11, 2023

RFC 9323 specifies a mechanism for Autonomous System holders to issue a signature over an arbitrary SHA256 message digest, then in turn, Relying Parties can verify this signature against the global RPKI.

This means that the Initiator and the Receiver can perform a challenge/response procedure based on the RPKI - which is cryptographically stronger than relying on PeeringDB's OAuth infrastructure.

The Initator and the Receiver can establish an arc of trust by having the Initator signal an arbitrary SHA256 hash over which the Receiver must produce a RPKI-RSC signature; the receiver can challenge the Initator in a similar manner. Once both parties have signed the other-party's challenge, both parties know that each party possesses access to private keys associated with the Autonomous Systems on both sides.

@caguado
Copy link
Collaborator

caguado commented Dec 15, 2023

+1 on RFC9323 (or RTA too) to bind API requests to ASN holdership.

I would build on top of that to, instead of a dynamic challenge/response chain of trust between parties as I understand it, use the RSC/RTA to bind the INRs to a OAuth2 issuer via their well-known discovery point (RFC8414). This would allow to:

  • reuse current identity management solutions based on bearer tokens for async validation
  • maintain attestation of individual caller identities on API requests as well as the capability to constrain access to parts of the API defined in this doc via usual scopes or other claims
  • extend the integrity checks to the entire API call payload, beyond reliance on a TLS transport, for proof of possession and HTTP signing when those become standard (e.g. RFC9449)

I would also defer this to a separate RFC process that builds atop this doc and now gather consensus on the peering API using a bespoke authz implementation.

@job
Copy link
Member Author

job commented Dec 15, 2023

The RTA proposal was abandoned by the working group. There are no implementations.

@jramseyer
Copy link
Collaborator

I like the idea of splitting it into two proposals, or having authentication be a "future work" part of this RFC.

Trying to tackle both the idea of a machine-to-machine peering API, and machine-to-machine API network verification seems like two related projects. We could put them all into one RFC, but I worry that we risk distracting ourselves in one or the other, and achieving neither. If you think it would be appropriate, I would propose we submit

  • peering API, with "future work" or "proposed discussion" around authentication and different options
  • (second) send an amendment or second RFC around API authentication for network configuration
    If you think it would be more appropriate just to file one, larger, RFC, please let me know and we can rescope.

@job
Copy link
Member Author

job commented Dec 21, 2023

Id stick it in one larger doc, that way people have a complete spec to look at.

jramseyer added a commit that referenced this issue Jan 11, 2024
Security Considerations, one typo.

Adding a section on Security Considerations.
Since we are still in discussions around security considerations for the API, I left this one somewhat ambiguous.  

This is by no means perfect, but now we have something.  Trying to get the draft into a minimal reasonable state before we submit for March.

from discussions in:
#6
#4
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

No branches or pull requests

3 participants