Skip to main content

Oblivious Credential State
draft-steele-spice-oblivious-credential-state-00

Document Type Active Internet-Draft (individual)
Author Orie Steele
Last updated 2024-01-13
RFC stream (None)
Intended RFC status (None)
Formats
Additional resources GitHub Repository
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-steele-spice-oblivious-credential-state-00
Secure Patterns for Internet CrEdentials                       O. Steele
Internet-Draft                                                 Transmute
Intended status: Informational                           13 January 2024
Expires: 16 July 2024

                       Oblivious Credential State
            draft-steele-spice-oblivious-credential-state-00

Abstract

   Issuers of Digital Credentials enable dynamic state or status checks
   through the use of dereferenceable identifiers, that resolve to
   resources providing herd privacy.  Privacy in such systems is
   determined not just from the size of the herd, and the cryptographic
   structure encoding it, but also from the observability of access to
   shared state.  This document describes a privacy preserving state
   management system for digital credentials based on Oblivious HTTP
   that addresses both data model and protocol risks associated with
   digital credentials with dynamic state.

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://OR13.github.io/draft-steele-spice-oblivious-credential-state/
   draft-steele-spice-oblivious-credential-state.html.  Status
   information for this document may be found at
   https://datatracker.ietf.org/doc/draft-steele-spice-oblivious-
   credential-state/.

   Discussion of this document takes place on the Secure Patterns for
   Internet CrEdentials Working Group mailing list
   (mailto:spice@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/spice/.  Subscribe at
   https://www.ietf.org/mailman/listinfo/spice/.

   Source for this draft and an issue tracker can be found at
   https://github.com/OR13/draft-steele-spice-oblivious-credential-
   state.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

Steele                    Expires 16 July 2024                  [Page 1]
Internet-Draft         Oblivious Credential State           January 2024

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 16 July 2024.

Copyright Notice

   Copyright (c) 2024 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Credential State  . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Identifier  . . . . . . . . . . . . . . . . . . . . . . .   4
       2.1.1.  Issuer's Credential State Resource  . . . . . . . . .   4
       2.1.2.  Mediator's Credential State Resource  . . . . . . . .   5
     2.2.  Resources . . . . . . . . . . . . . . . . . . . . . . . .   5
     2.3.  Processing Credential State Resources . . . . . . . . . .   5
     2.4.  Techniques  . . . . . . . . . . . . . . . . . . . . . . .   6
       2.4.1.  CRL Distribution Points . . . . . . . . . . . . . . .   6
       2.4.2.  Online Certificate Status Protocol  . . . . . . . . .   6
       2.4.3.  Bitmaps . . . . . . . . . . . . . . . . . . . . . . .   6
       2.4.4.  Cryptographic Accumulators  . . . . . . . . . . . . .   7
       2.4.5.  Bloom Filters . . . . . . . . . . . . . . . . . . . .   7
       2.4.6.  Transparency Services . . . . . . . . . . . . . . . .   7
   3.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   7
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   8

Steele                    Expires 16 July 2024                  [Page 2]
Internet-Draft         Oblivious Credential State           January 2024

   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .   9
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   Digitial Credentials often have a validity period, which indicates
   the time at which the claims become active for the subject according
   to the issuer, and the time at which the issuer specifies the claims
   are no longer to be considered asserted by the issuer.

   A typical example is a digital drivers license, which has an
   activation date, and an expiration date.

   When the activation date is in the past, and the expiration date is
   in the future, we consider the license to be valid at the current
   time.

   A verifier might wonder if such licenses are suspended or revoked,
   even if the validity period is acceptable.

   A common solution is to the issuer of the credential to provide a
   resource that reflects information about the state of the credential
   over time.

   Because issuer's track the presentation of digital credentials if a
   verifier where to ask the issuer about the state of a specific
   digital credential, it common to see credential states be merged into
   blocks, or herds, where an issuer can deliver the block to the
   verifier upon request, without learning which specific digital
   credential the verifier is interested in.

   Unfortunatly, the metadata associated with resolving credential state
   can leak time and location information about the presentation of
   credentials over time.

   This document addresses this risk by introducing a mediator which is
   trusted by the verifier.

2.  Credential State

   To simplify interpretation of resolution of credential state
   resources, this document uses the following aliases for the terms
   defined in [RFC9458].

   The Verifier's Software is the Oblivious HTTP Client.

   The Mediator's Credential State Resource is the Oblivious Relay
   Resource.

Steele                    Expires 16 July 2024                  [Page 3]
Internet-Draft         Oblivious Credential State           January 2024

   The Issuer's Gateway Resource is the Gateway Resource.

   The Issuer's Credential State Resource is the Target Resource.

   The critical privacy property is obtained by the verifier's client
   relying on the Mediator's Credential State Resource instead of
   Issuer's Credential State Resource.

   In order to achieve this property, while preserving the property that
   issuer's do not know which verifier's will be interested in dynamic
   state information associated with their credentials, the issuer
   includes the identifier for their Issuer's Credential State Resource
   in their credential claim sets, however the verifier rewrites this
   URL to be their Mediator's Credential State Resource before
   resolution.

   Editor note: is there a simpler solution here?

    .--------.         +----------+         .-------.
   | Verifier +<------>+ Mediator +<------>+ Issuer  |
    '--------'         +----------+         '-------'

2.1.  Identifier

   While many different protocol schemes can be used to identify
   resources, to improve interoperability and reduce attack surface,
   this document requires credential state resources to be identified
   with https URLS, as described in [WHATWG.URL].

   The following URI Templates, as described in [RFC6570] are required
   to improve interoperability and reduce the chances of degrading the
   privacy properties through the inclusion of extraneos information in
   the identifiers embedded in credentials.

   *  issuer MUST support internationalizaton considerations, as
      described in [WHATWG.URL], for example: 🏛️.example

   *  mediator MUST support internationalizaton considerations, as
      described in [WHATWG.URL], for example: 🚛.example

   *  resource-name MUST be a URN as described in [RFC4122], for
      example: urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

2.1.1.  Issuer's Credential State Resource

   https://{issuer}\
   /credential-states/{resource-name}

Steele                    Expires 16 July 2024                  [Page 4]
Internet-Draft         Oblivious Credential State           January 2024

   https://🏛️.example\
   /credential-states/urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

                Figure 1: Issuer Credential State Resources

2.1.2.  Mediator's Credential State Resource

   https://{issuer}.{mediator}\
   /credential-states/{resource-name}

   https://🏛️.example.🚛.example\
   /credential-states/urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

               Figure 2: Mediator Credential State Resources

2.2.  Resources

   Credential state resources typically rely on a similar content type
   as the credentials that require them.

   Mixing different content types for credentials and their state,
   increases implementation costs and harms interoperability.

   The credential state resource MUST be secured with the same content
   type that was used to secure the digital credential that has dynamic
   state.

   For example, a JSON Web Token, [RFC7519] based digital credential
   must rely on a [RFC7519] based credential state resource.

   There are many different content types that can be used to secure
   digital credentials, this document does not require a specific
   content type to be used.

   The Accept header MUST be supported, and the application/cose content
   type SHOULD be supported.

2.3.  Processing Credential State Resources

   Validation of the digital credential state MUST occur after
   verification.

   Validation of the digital credential validity period MUST occur
   before credential state checks.

   Implementers are cautioned that concepts like "suspended" or
   "revoked" are interpretted differently and used differently by
   issuers.

Steele                    Expires 16 July 2024                  [Page 5]
Internet-Draft         Oblivious Credential State           January 2024

   All dynamic claims provided through credential state resources MUST
   be considered issuer defined, and cannot be interpretted globally.

   Interpretting the structure of the Issuer's Credential State Resource
   is outside the scope of this document.

   However, other documents describe this process in detail.

   [W3C.VC-BITSTRING-STATUS-LIST] provides guidance on processing
   resources that secure the content type application/vc+ld+json, such
   as application/cose.

   [I-D.draft-ietf-oauth-status-list] provides guidance on processing
   resources of the content type application/cwt, and application/jwt.

2.4.  Techniques

2.4.1.  CRL Distribution Points

   [RFC5755] described a mechanism for verifiers to check the revocation
   status of attribute certificates.

2.4.2.  Online Certificate Status Protocol

   [RFC2560] described a protocol useful in determining the current
   status of a digital certificate without requiring CRLs.

2.4.3.  Bitmaps

   In this approach, the size of the herd is the length of the bitmap,
   and the state of a digital credential claim is the value of the bit
   at a given index.

   Scaling this approach can be difficult, as a seperate list is needed
   for each dynamic claim in a digital credential.

   This scalling challenge can be partially addressed by consuming
   multiple bits at a given index, however, the resulting enumeration
   needs to be consistently understood.

   A common solution to consistent interpretation of enumerations is the
   establishment of a registry, however this can become impractical
   depending on the nature of the issuer's need to express dynamic
   state.

   Publishing a dictionary per issuer, or per sets of issuer's can help
   address these challenges for some use cases.

Steele                    Expires 16 July 2024                  [Page 6]
Internet-Draft         Oblivious Credential State           January 2024

2.4.4.  Cryptographic Accumulators

   [ZKA] describes an approach to expressing proofs of set membership.

2.4.5.  Bloom Filters

   Appendix B.2.7 of [RFC8932] mentions an application of bloom filters,
   that can be applied to communicating credential state assuming the
   probabilistic nature of bloom filters is acceptable to the verifier.

2.4.6.  Transparency Services

   Tree structures, such as described in
   [I-D.draft-mcmillion-keytrans-architecture] can be used to provide
   advanced membership proofs, such as proving inclusion, consistency,
   non inclusion, and freshness.

3.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

4.  Security Considerations

   TODO Security

5.  IANA Considerations

   This document has no IANA actions.

6.  References

6.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC4122]  Leach, P., Mealling, M., and R. Salz, "A Universally
              Unique IDentifier (UUID) URN Namespace", RFC 4122,
              DOI 10.17487/RFC4122, July 2005,
              <https://www.rfc-editor.org/rfc/rfc4122>.

Steele                    Expires 16 July 2024                  [Page 7]
Internet-Draft         Oblivious Credential State           January 2024

   [RFC6570]  Gregorio, J., Fielding, R., Hadley, M., Nottingham, M.,
              and D. Orchard, "URI Template", RFC 6570,
              DOI 10.17487/RFC6570, March 2012,
              <https://www.rfc-editor.org/rfc/rfc6570>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.

   [RFC9458]  Thomson, M. and C. A. Wood, "Oblivious HTTP", RFC 9458,
              DOI 10.17487/RFC9458, January 2024,
              <https://www.rfc-editor.org/rfc/rfc9458>.

   [WHATWG.URL]
              "URL - Living Standard", n.d.,
              <https://url.spec.whatwg.org/>.

6.2.  Informative References

   [I-D.draft-ietf-oauth-status-list]
              Looker, T., Bastian, P., and C. Bormann, "OAuth Status
              List", Work in Progress, Internet-Draft, draft-ietf-oauth-
              status-list-00, 23 October 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-
              status-list-00>.

   [I-D.draft-mcmillion-keytrans-architecture]
              McMillion, B., "Key Transparency Architecture", Work in
              Progress, Internet-Draft, draft-mcmillion-keytrans-
              architecture-01, 4 December 2023,
              <https://datatracker.ietf.org/doc/html/draft-mcmillion-
              keytrans-architecture-01>.

   [RFC2560]  Myers, M., Ankney, R., Malpani, A., Galperin, S., and C.
              Adams, "X.509 Internet Public Key Infrastructure Online
              Certificate Status Protocol - OCSP", RFC 2560,
              DOI 10.17487/RFC2560, June 1999,
              <https://www.rfc-editor.org/rfc/rfc2560>.

   [RFC5755]  Farrell, S., Housley, R., and S. Turner, "An Internet
              Attribute Certificate Profile for Authorization",
              RFC 5755, DOI 10.17487/RFC5755, January 2010,
              <https://www.rfc-editor.org/rfc/rfc5755>.

   [RFC7519]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
              (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
              <https://www.rfc-editor.org/rfc/rfc7519>.

Steele                    Expires 16 July 2024                  [Page 8]
Internet-Draft         Oblivious Credential State           January 2024

   [RFC8932]  Dickinson, S., Overeinder, B., van Rijswijk-Deij, R., and
              A. Mankin, "Recommendations for DNS Privacy Service
              Operators", BCP 232, RFC 8932, DOI 10.17487/RFC8932,
              October 2020, <https://www.rfc-editor.org/rfc/rfc8932>.

   [W3C.VC-BITSTRING-STATUS-LIST]
              "Bitstring Status List v1.0", n.d.,
              <https://www.w3.org/TR/vc-bitstring-status-list/>.

   [ZKA]      "Zero-Knowledge Accumulators and Set Operations", n.d.,
              <https://eprint.iacr.org/2015/404.pdf>.

Acknowledgments

   TODO acknowledge.

Author's Address

   Orie Steele
   Transmute
   Email: orie@transmute.industries

Steele                    Expires 16 July 2024                  [Page 9]