Re: [OAUTH-WG] [SPICE] OAuth Digital Credential Status Attestations (typo)

Denis <denis.ietf@free.fr> Thu, 18 January 2024 18:25 UTC

Return-Path: <denis.ietf@free.fr>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3A4BCC14F6FA; Thu, 18 Jan 2024 10:25:23 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.985
X-Spam-Level:
X-Spam-Status: No, score=-6.985 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.091, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_REMOTE_IMAGE=0.01, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 35uT51jBRqKr; Thu, 18 Jan 2024 10:25:19 -0800 (PST)
Received: from smtp6-g21.free.fr (smtp6-g21.free.fr [IPv6:2a01:e0c:1:1599::15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B6FF2C14F5FF; Thu, 18 Jan 2024 10:25:18 -0800 (PST)
Received: from [192.168.1.11] (unknown [90.91.46.145]) (Authenticated sender: pinkas@free.fr) by smtp6-g21.free.fr (Postfix) with ESMTPSA id D71F178034D; Thu, 18 Jan 2024 19:25:13 +0100 (CET)
Content-Type: multipart/alternative; boundary="------------mKibdXXX7ZDFCvBAoaaDR8JN"
Message-ID: <c1d7db80-61b6-629e-3ed9-6ed2065322db@free.fr>
Date: Thu, 18 Jan 2024 19:25:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1
Content-Language: en-GB
To: Giuseppe De Marco <demarcog83@gmail.com>
Cc: spice@ietf.org, gi.demarco@innovazione.gov.it, oauth <oauth@ietf.org>
References: <CAN8C-_+5mSFAion-e4Ta6AZLVGadr7cdSWjw-UpnBvH9Z98ohw@mail.gmail.com> <05d901da4980$8c8021e0$a58065a0$@gmx.net> <CAP_qYy=Dh0wDJ1JwOkvLiRR==7ZJTH+oLtzSU=egho1L0===hQ@mail.gmail.com> <3a80e0ce-682e-e3c5-8f39-7f3731aa9c1f@free.fr> <a5a530c8-bf2d-1edb-8ba7-cb05b18ac151@free.fr> <CAP_qYymC=dWbVjQjQmJC7fFkQki5nN3D646TNCO8=JWXC-TOOQ@mail.gmail.com>
From: Denis <denis.ietf@free.fr>
In-Reply-To: <CAP_qYymC=dWbVjQjQmJC7fFkQki5nN3D646TNCO8=JWXC-TOOQ@mail.gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/oEtrpohF_fG7s_ah-PAhMSFNQrA>
Subject: Re: [OAUTH-WG] [SPICE] OAuth Digital Credential Status Attestations (typo)
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 18 Jan 2024 18:25:23 -0000

Giuseppe,

You are perfectly right, I read your draft too quickly.

1) The text mentions near the end:

    OAuth Status List can be accessed by a Verifier when an internet
    connection is present.

This does not correspond to the flows of the figure.

2) The text states:

    " The proof of possession MUST be signed with the private key
    corresponding to the *public key* attested by the Issuer
    and contained within the Credential".

What about the support of "blinded link secrets" and "link secrets" 
(used with anonymous credentials) ?

3) A major section is missing: "*Privacy considerations*".

One of many privacy principles is: "unlinkability between verifiers".

If or when the status attestation allows to support this privacy 
principle, it should be indicated how it can be supported.
If or when it does not, this should be mentioned as well.

Denis

> Ciao Denis,
>
> thank you for the quick reply and for your contribution.
> The scope of the current draft is to provide a verifiable artifact 
> that give the proof that a specific credential is active, then not 
> revoked.
>
> From your sequence diagram I read a digital credential issuance, while 
> this is not in the scope of the draft.
> best
>
>
> Il giorno gio 18 gen 2024 alle ore 10:26 Denis <denis.ietf@free.fr> ha 
> scritto:
>
>     Typo: Change:"proof _*or*_ origin of wallet instance"
>     into      : "proof _*of*_ __origin of wallet instance".
>
>     The figure has been corrected below.
>
>     Denis
>
>>     Hi Giuseppe,
>>
>>     The current figure in the Introduction from
>>     draft-demarco-status-attestations-latest is:
>>
>>     +-----------------++-------------------+
>>     || Requests Status Attestation ||
>>     ||---------------------------->||
>>     | Wallet Instance || Credential Issuer |
>>     || Status Attestation||
>>     ||<----------------------------||
>>     +-----------------++-------------------+
>>
>>
>>     +-- ----------------++----------+
>>     || Presents credential and||
>>     |Wallet Instance| Status Attestation| Verifier |
>>     ||---------------------------->||
>>     +-------------------++----------+
>>
>>     IMO, using the vocabulary agreed during the last BoF video
>>     conference, this figure should be modified as follows:
>>
>>
>>     +------------++-------------------+
>>     || Requests *Digital Credential* ||
>>     || and presents proof of knowledge of ||
>>     || either a private key or a link secret ||
>>     || and proof *of* origin of wallet instance | Credential Issuer |
>>     | Holder |--------------------------------------->||
>>     ||| |
>>     ||*Digital Credential*||
>>     ||<---------------------------------------||
>>     +------------++-------------------+
>>
>>
>>     +-- ---------++-------------------+
>>     || Presents *Credential proof*||
>>     | Holder|| Verifier|
>>     ||--------------------------------------->||
>>     +------------++-------------------+
>>
>>     Denis
>>
>>
>>>     Hi Hannes,
>>>
>>>     Thank you for your quick reaction and also to Orie for sharing.
>>>     I've submitted the draft, here:
>>>     https://datatracker.ietf.org/doc/draft-demarco-status-attestations/
>>>
>>>     <https://datatracker.ietf.org/doc/draft-demarco-status-attestations/>
>>>     Regarding the term Attestation: good point. We have decided to
>>>     use this term since in several IETF and OpenID drafts this term
>>>     seems pretty established, the term Attestation is found at least
>>>     in the following specifications:
>>>       - Attestation based client-authentication (it's in the title)
>>>       - OpenID4VC High Assurance Interoperability Profile with
>>>     SD-JWT VC (wallet attestation)
>>>       - OpenID for Verifiable Presentations - draft 20 (verifier
>>>     attestation)
>>>       - OpenID for Verifiable Credential Issuance (section "Trust
>>>     between Wallet and Issuer": Device Attestation)
>>>
>>>     Meantime in the eIDAS Expert group this term is going to be
>>>     changed to "Wallet Trust Evidence".
>>>
>>>     <https://datatracker.ietf.org/doc/draft-demarco-status-attestations/>
>>>
>>>     I don't have a strong opinion on what would be the best semantic
>>>     for this, I just have realized the functional difference between
>>>     a Digital Credential and an Attestation:
>>>     the first requires the user to be authenticated and give consent
>>>     for using the secure storage. The second is obtained with a
>>>     machine2machine flow where no user interaction is required, the
>>>     secure storage is not required, no user information is contained
>>>     in it since the subject is the wallet instance and not the user,
>>>     it cannot be (re)used without the cryptographic proof of
>>>     possession. Probably a discussion could start about this term
>>>     aiming to align several specifications on the same terminology.
>>>     I could say that Status Attestation is a specific artifact
>>>     defined for a specific context, other attestations can be
>>>     defined outside the functional perimeter of this specification.
>>>     Let's talk about it, it doesn't matters changing terms
>>>     (eventually mindsets on perceivable meanings).
>>>
>>>     Here I share some notes I picked along the last two months about
>>>     this brand new individual draft:
>>>
>>>     - it is related to digital credential only, I don't expect to
>>>     use it in legacy infrastructure different from wallet. I really
>>>     don't need this kind of mechanism in OIDC or any other
>>>     traditional infrastructure since these doesn't show the privacy
>>>     issues the wallet ecosystem has;
>>>     - it would interesting mentioning in the introduction that's
>>>     pratically an ocsp stapling like mechanism, just to give some
>>>     context (credit: Paul Bastien);
>>>     - The Rationale section needs to clarify better problems and
>>>     solutions, where it seems that the problem does not exist or
>>>     that it is weak. A review is necessary to clearly bring the
>>>     benefits;
>>>     - Editorials mistake are still along the reading.
>>>
>>>     thank you for your time and interest,
>>>     best
>>>
>>>
>>>
>>>
>>>
>>>
>>>     Il giorno mer 17 gen 2024 alle ore 21:06
>>>     <hannes.tschofenig=40gmx.net@dmarc.ietf.org> ha scritto:
>>>
>>>         Hi Guiseppe, Francesco, Orie,
>>>
>>>         @Orie: Thanks for sharing the draft.
>>>
>>>         As a quick reaction: It would be good to invent a new term
>>>         for “attestation” in draft-demarco-status-attestations.html
>>>         because this term is already widely used in a different
>>>         context (see RFC 9334).
>>>
>>>         @Guiseppe and Francesco: It would be great if you could
>>>         submit your draft to OAuth or SPICE for discussion.
>>>
>>>         Ciao
>>>
>>>         Hannes
>>>
>>>         *From:*OAuth <oauth-bounces@ietf.org> *On Behalf Of *Orie Steele
>>>         *Sent:* Mittwoch, 17. Jänner 2024 19:07
>>>         *To:* spice@ietf.org
>>>         *Cc:* oauth <oauth@ietf.org>
>>>         *Subject:* [OAUTH-WG] OAuth Digital Credential Status
>>>         Attestations
>>>
>>>         Hello Digital Credential Enthusiasts,
>>>
>>>         See:
>>>         https://peppelinux.github.io/draft-demarco-status-attestations/draft-demarco-status-attestations.html
>>>
>>>         Note the use of the term digital credential, and the
>>>         alignment to CWT based credentials and CWT based credential
>>>         status lists.
>>>
>>>         As a quick summary of the editors draft above:
>>>
>>>         It is basically a refresh-token-like approach to dynamic
>>>         state, where the holder retrieves updated state from the
>>>         issuer at regular intervals, and can then present that
>>>         dynamic state directly to the verifier.
>>>
>>>         This eliminates the herd privacy and phone home issues
>>>         associated with W3C Bitstring Status Lists.
>>>
>>>         And it informs the holder of dynamic state, so the digital
>>>         wallet can provide a better user experience.
>>>
>>>         However, an issuer (government or ngo) could use the
>>>         interval of requesting dynamic state, to track the holder...
>>>         so the guidance from
>>>         https://datatracker.ietf.org/doc/draft-steele-spice-oblivious-credential-state/
>>>
>>>         Is also relevant to this draft.
>>>
>>>         I also learned that
>>>         https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/
>>>
>>>         Has defined a new property for expressing "Verifiable
>>>         Credential" "type" `vct`, which is different from how W3C
>>>         defines credential types.
>>>
>>>         W3C uses the expanded IRI for the graph node type, based on
>>>         the JSON-LD context.
>>>
>>>         For example with:
>>>
>>>         {
>>>           "@context": [
>>>             "https://www.w3.org/ns/credentials/v2",
>>>             "https://www.w3.org/ns/credentials/examples/v2"
>>>           ],
>>>           "id": "http://university.example/credentials/1872",
>>>           "type": ["VerifiableCredential", "ExampleAlumniCredential"],
>>>           ...
>>>         }
>>>
>>>         The credential type in RDF becomes
>>>         "https://www.w3.org/ns/credentials/examples#ExampleAlumniCredential"
>>>
>>>         Which is different from "ExampleAlumniCredential" in JSON...
>>>         More evidence that RDF leads to developer confusion
>>>         regarding safe typing.
>>>
>>>         The OAuth solution does not have this confusing issue, they
>>>         set the type explicitly:
>>>
>>>         {
>>>          "vct": "https://credentials.example.com/identity_credential",
>>>          "given_name": "John",
>>>          "family_name": "Doe",
>>>          "email": "johndoe@example.com",
>>>          "phone_number": "+1-202-555-0101",
>>>          "address": {
>>>            "street_address": "123 Main St",
>>>            "locality": "Anytown",
>>>            "region": "Anystate",
>>>            "country": "US"
>>>          },
>>>          "birthdate": "1940-01-01",
>>>          "is_over_18": true,
>>>          "is_over_21": true,
>>>          "is_over_65": true,
>>>          "status": {
>>>             "status_attestation": {
>>>                 "credential_hash_alg": "S256",
>>>             }
>>>          }
>>>         }
>>>
>>>         Regards,
>>>
>>>         OS
>>>
>>>         -- 
>>>
>>>         *ORIE STEELE
>>>         *Chief Technology Officer
>>>         www.transmute.industries <http://www.transmute.industries>
>>>
>>>         <https://transmute.industries/>
>>>
>>>         _______________________________________________
>>>         OAuth mailing list
>>>         OAuth@ietf.org
>>>         https://www.ietf.org/mailman/listinfo/oauth
>>>
>>>
>>>     _______________________________________________
>>>     OAuth mailing list
>>>     OAuth@ietf.org
>>>     https://www.ietf.org/mailman/listinfo/oauth
>>
>>
>>
>