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

Implement Support for using JSON Web Signatures for OSCAL JSON Artifacts #245

Closed
david-waltermire opened this issue Oct 3, 2018 · 13 comments
Labels
enhancement LoE: Large Scope: Modeling Issues targeted at development of OSCAL formats User Story wontfix

Comments

@david-waltermire
Copy link
Contributor

david-waltermire commented Oct 3, 2018

User Story:

As an OSCAL JSON content creator, I need to be able to use a JSON Web Signature (JWS) (RFC7515 to provide integrity and source authentication over OSCAL artifacts I produce.

Goals:

  1. Document a general approach on how JWS can be used to sign an OSCAL JSON artifact. This documentation will be in markdown and integrated into the OSCAL documentation site.
  2. Identify and document as user stories any interoperability or technical issues that need to be addressed to provide a complete solution to this user story.
  3. Provide examples of a signed OSCAL JSON catalog, profile, and implementation (if possible at the time this user story is addressed. If signing an implementation is not possible, document a user story to do this in the future.
  4. Demonstrate signing and validating OSCAL JSON artifacts using open source tooling or create a user story for doing this.

Dependencies:

None

Acceptance Criteria

  1. Use of signature algorithms must follow NIST cryptographic guidelines (e.g., FIPS 186-4, FIPS 180-4, FIPS 202).
  2. Documentation on the OSCAL usage of JWS must be sufficient for interoperable implementation.
  3. Examples illustrate signed OSCAL JSON artifacts that can be verified using open source tooling.
@trevor-vaughan
Copy link

@david-waltermire-nist Can there be a mapping of the tool to the associated 140-2 certification to meet the requirements in the mentioned guidelines?

@anweiss
Copy link
Contributor

anweiss commented Oct 4, 2018

There should be a mention of JWE in here as well since both JWS and JWE are often used together. Also, FWIW, the JWS payload doesn't necessarily have to be JSON ... could even be XML ... CC @wendellpiez

@anweiss
Copy link
Contributor

anweiss commented Oct 8, 2018

oscalkit now has preliminary support for JWS via docker-archive/oscalkit#5. It supports the following signing algorithms: RS256, RS384, RS512, PS256, PS384, PS512, HS256, HS384, HS512, ES256, ES384, ES512 and EdDSA.

@anweiss
Copy link
Contributor

anweiss commented Oct 11, 2018

Also, @david-waltermire-nist are JWS and XMLDSIG our only options for signing under consideration? Given the new supply chain risk management guidelines introduced in 800-37 Rev 2., should we not also consider additional frameworks/approaches to signing? Thinking The Update Framework (TUF) or others? I foresee the process by which OSCAL "implementation" artifacts are maintained and updated as being relatively similar to the overall systems development lifecycle and software update process.

Relates to #249

@anweiss
Copy link
Contributor

anweiss commented Oct 12, 2018

@david-waltermire-nist here's another interesting approach that aims to address a number of JOSE's shortcomings -> https://github.com/paragonie/paseto (https://paseto.io/). Here's the IETF I-D as well -> https://tools.ietf.org/html/draft-paragon-paseto-rfc-00

@iMichaela
Copy link
Contributor

11/08/2018

@david-waltermire-nist is working on this issue.

@david-waltermire
Copy link
Contributor Author

11/15/2018

@anweiss is working on getting feedback from team members. Will develop some examples of using JWS in the next week or so. @david-waltermire-nist suggested to also look at the JWS security considerations as input into how to restrict use of JWS for our application.

@anweiss
Copy link
Contributor

anweiss commented Dec 6, 2018

FWIW, I've got JWS signing support baked into oscalkit. See https://github.com/opencontrol/oscalkit#signing-oscal-json-with-jws. It uses the go-jose library.

@anweiss
Copy link
Contributor

anweiss commented Dec 6, 2018

Also FWIW, we use OpenPGP for signing CNAB bundle.json bundles. See https://github.com/deislabs/cnab-spec/blob/master/105-signing.md#signing-the-bundlejson. It's a similar use case for what we're trying to do here for signing OSCAL JSON.

@brian-ruf
Copy link
Contributor

12/20/2018 PR #278 requires review.

@anweiss
Copy link
Contributor

anweiss commented Feb 1, 2019

@david-waltermire-nist FWIW, CNAB is moving away from OpenPGP in favor of TUF and In-Toto for signing CNAB bundles. See cnabio/cnab-spec#82. IMO, worth taking a look at since CNAB bundles are merely JSON; very similar use case to ours.

@anweiss
Copy link
Contributor

anweiss commented Feb 21, 2019

@david-waltermire-nist some additional context here re. using something like TUF. What we haven't really discussed is the notion of "storing" OSCAL artifacts, either centralized or decentralized. Something like TUF is designed around centralized storage ... aka, store and sign the artifacts in some sort of public/private repository that folks push/pull content to/from.

This then begs the question, how do we envision folks managing their OSCAL artifacts? This of course depends on the use case. Developers and more technical folks may elect to write and manage OSCAL in XML/JSON directly and manage (store and sign) these artifacts using version control. They may also have disparate OSCAL artifacts that reside anywhere. In the case where OSCAL is used via a tool that abstracts the underlying XML/JSON, then the tool/product must have a way of storing and signing the OSCAL under the hood. There's even the ambitious scenario where the products/services/systems themselves may emit and sign their own OSCAL which is embedded into the product/service/system.

So lots of different "operational" questions, for lack of a better word, that I think we may have to have guidance around in order to define a signing strategy that addresses many use cases.

@david-waltermire david-waltermire added this to the OSCAL 1.0 M2 milestone May 8, 2019
@david-waltermire david-waltermire added the Scope: Modeling Issues targeted at development of OSCAL formats label May 8, 2019
@nikitawootten-nist
Copy link
Contributor

Signature solutions such as XMLDSig and JWS have merit but add additional complexity and could break format conversion guarantees. The team's general guidance in the past has been to use envelope solutions (sending a signature file separately, etc) rather then relying on format-specific inline signatures.

Closing this for now.

@nikitawootten-nist nikitawootten-nist closed this as not planned Won't fix, can't repro, duplicate, stale Apr 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement LoE: Large Scope: Modeling Issues targeted at development of OSCAL formats User Story wontfix
Projects
None yet
Development

No branches or pull requests

6 participants