Hello Andrej,

Please see inline.

Best,
/Marco

On 2025-04-16 13:02, Andrej wrote:

        
You don't often get email from asums...@gmail.com. Learn why this is important <https://aka.ms/LearnAboutSenderIdentification>
        



---------- Forwarded message ---------
From: *Andrej* <asums...@gmail.com>
Date: Wed 16. Apr 2025 at 11:29
Subject: Re: [Ace] Implementation RFC 9200
To: Marco Tiloca <marco.til...@ri.se>


Dear Marco,
Thank you very much for the thorough reply.
Validating the token on the client side was considered optional from the start, but your explanation makes sense, hence we would omit this.

==>MT

Thanks.

<==

For the step of verifying and receiving the resource, the main idea was the following: The client sends a get or post request to the RS this request includes the token and a short message signed by the private key associated with the token.

==>MT

Like mentioned in the previous mail, there are fundamentally two ways for uploading the access token to RS:

* The access token is (part of) the payload of a POST request to the /authz-info endpoint; or

* The access token is conveyed by a message of the key agreement protocol used by C and RS to establish their secure communication association bound to the access token.

Within this mindset, one can define a new profile of ACE and therefore the details about the uploading of the access token and about the secure communication association between C and RS.

Is your intention to define a new profile of ACE? If so, how does your construct match with the above?

Note that relying on a GET request (to /authz-info or another endpoint) is not quite right, as you do want to transfer a payload to RS, and the intended operation for RS to perform does not match with the safe and idempotent semantics of the GET method.

<==

This follows the asymmetric proof of possession paradigm, that the token essentially acts as a way for the RS to trust the public key and trust that it is associated with client a. Then the RS verifies the token and if its valid it extracts the public key (one of the claims) it uses this to verify the signature of the request.

==>MT

I understand the principle. Beyond the high-level idea, defining something concrete and actionable consists in specifying a profile of ACE, such as one of those mentioned in my previous mail.

<==

If this is also valid the RS generates and ephemeral key pair and does a elliptic curve deffie hellman (with the ephemeral private key and the public key of the client )and a HKDF (HMAC-based Extract-and-Expand Key Derivation Function) to derive a symmetric key pair used for the session.

==>MT

A few comments:

* What "public key of the client"? The one just received by RS is used for verifying the Client's signature, hence it is intended for signature verification.

  Even though there are curves that make an asymmetric key pair usable for both signing and key agreement operations, the same key pair should not be used for both things unless otherwise proven to be secure in the particular context at hand.

  I think that, to achieve what you describe here, C should also provide RS with a separate ephemeral public key to use for key agreement.

* If I understand correctly, the first request that C makes to the application resource at RS is not confidentiality protected, which is not desirable.

<==

It then sends the resource to the client encrypted with the symmetric key and also sends the ephemeral public key. Then the client uses his private key and the ephemeral public key to derive the same symmetric key to decrypt the message containing the resource. (Temperature measured by the constrained device for example).

==>MT

How does C authenticate RS?

<==

==>MT

Note that there is a work-in-progress profile of ACE [4] that relies on the Diffie-Hellman-based key agreement protocol EDHOC (RFC 9528) used between C and RS.

By using standard protocols, that profile achieves an outcome aligned with what (I believe) you have in mind, i.e., C and RS run an authenticated, ephemeral-ephemeral Diffie-Hellman exchange, produce a shared secret as output, and ultimately derive symmetric keying material to securely communicate using OSCORE (RFC 8613).

I suggest to have a look :-)


[4] https://datatracker.ietf.org/doc/draft-ietf-ace-edhoc-oscore-profile/

<==

(This was my idea for the process, I found many of these concepts in this or other RFCs. For reference maybe I did not explain this well in my last message, before this the client generates an asymmetric key pair and sends a message to the AS to issue a token for his public key. For the AS to trust the client, the AS and the Client use a trusted channel or the client logs into a system using credentials (similar to keycloak)) As I am still an undergraduate student, I am really new to this, so please excuse me if I have mixed something up. May I ask you if this setup is valid? You mentioned that more messages are actually necessary for this process, may I ask why? Is there a problem with this idea maybe that I have not noticed?

==>MT

See the few comments above. More generally, it is possible to have a better look/analysis of a protocol once more details are specified, e.g., exact messages exchanged and their content.

<==

Thank you very much again for your reply and I am looking forward to hearing from you soon.
With kind regards
Andrej Sum-Shik
*
*

On Wed 16. Apr 2025 at 02:30, Marco Tiloca <marco.til...@ri.se> wrote:

    Hello Andrej,

    Thanks for your interest in ACE!

    On your main question: if one among the client (C) and resource
    server (RS) has to be picked up, I agree with you that it is more
    realistic for the RS to be a constrained device (what you call
    "use case 2").

    Some broader feedback below:

    * In order to effectively instantiate the ACE framework, you need
    to use one of its *profiles*, as defining in details things like
    the communication and security protocols to use between C and RS.

      As of today, those include the DTLS profile [1], the OSCORE
    profile [2], the MQTT profile [3], the EDHOC and OSCORE profile
    (work in progress) [4] and the Group OSCORE profile (work in
    progress) [5].

      Is your intention to define a new profile of ACE?


    * The diagram shows an optional step where C verifies the AS'
    signature on the access token.

      Even assuming that C has the AS' public key to do that, what is
    the benefit for C? Note that: i) C has just received an access
    token over a secure, mutually authenticated communication
    association with the AS; the access token is opaque to C; the
    actual consumer of the access token is RS, which indeed is going
    to verify the security armor that envelops the access token (a
    signature, in your case).


    * The diagram shows a single CoAP request sent to RS, supposedly
    both: i) transporting the access token; and ii) targeting the
    protected resource at RS that C wants to access as per the access
    token. It is also said that C signs the CoAP request with its
    private key. However:

      * How is the CoAP request actually signed by C and using what
    protocol/construct? Is this about having the CoAP request
    conveying a COSE signing object [6] as payload? Note that C and RS
    are not supposed to have a secure communication association yet.

      * In ACE, the typical first interaction between C and RS works
    differently and according to three phases:

        1. C uploads the access token to the authz-info endpoint of
    RS, through a dedicated an unprotected CoAP request.

        2. C and RS establish a secure communication association. The
    details depend on the profile used, and it might be possible to
    combine this step with the previous one, by transporting the
    access token in one of the messages used to establish the secure
    association. In any case, the established secure association is
    bound to the access token.

        3. C can send requests to a protected resource at RS,
    protecting those with the established secure communication
    association. If the request is actually granted as per what
    specified by the access token, then the request is processed by RS
    and the response from RS is going to be protected using the secure
    communication association.

        It seems that the diagram is somehow trying to combine
    together all the three phases above into a single request-response
    exchange. This is different from what other profiles of ACE do,
    and I wonder if it can still meet all the goals expected when
    "bootstrapping" a C-RS relationship.

      * Like it happens in other profiles of ACE, C is supposed to
    authenticate to RS during the establishment of their secure
    communication association and/or when protecting the messages sent
    to RS protected with that association. This does not require C to
    early authenticate to RS through a step like signing an early CoAP
    request.

    Best,
    /Marco

    [1] https://datatracker.ietf.org/doc/rfc9202/
    
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Frfc9202%2F&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105296355%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=d0fWSqJiBsy05uXyVyMXppos7pSXKKcToSQ0Gn8kGG4%3D&reserved=0>

    [2] https://datatracker.ietf.org/doc/rfc9203/
    
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Frfc9203%2F&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105317676%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=Fw0xrwnvcBC8SbmKqmaKGvC86VBE4nKFkIywDz5QPPU%3D&reserved=0>

    [3] https://datatracker.ietf.org/doc/rfc9431/
    
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Frfc9431%2F&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105330479%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=8rt1hbN5MCZgwZhlee2MX4BpilQq0BdGm9uKPpAcRVE%3D&reserved=0>

    [4]
    https://datatracker.ietf.org/doc/draft-ietf-ace-edhoc-oscore-profile/
    
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fdraft-ietf-ace-edhoc-oscore-profile%2F&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105342740%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=tDf9Wr7LTT5sL%2FB2DeeKniYrRT7jxJqJfrRBePa7Kpw%3D&reserved=0>

    [5]
    https://datatracker.ietf.org/doc/draft-ietf-ace-group-oscore-profile/
    
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fdraft-ietf-ace-group-oscore-profile%2F&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105354707%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=1BJ7H%2BAijvM7qlEJIXfctW%2BpdwT%2BqlNPt6xTzD%2BCZSY%3D&reserved=0>

    [6] https://www.rfc-editor.org/rfc/rfc9052.html#section-4
    
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.rfc-editor.org%2Frfc%2Frfc9052.html%23section-4&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105367179%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=88L%2BTV%2FZHCLVpCo%2BT068cMYSfELouKHvek0Cs7zs8Ag%3D&reserved=0>


    On 2025-04-14 09:36, Andrej wrote:

        
    You don't often get email from asums...@gmail.com. Learn why this
    is important <https://aka.ms/LearnAboutSenderIdentification>
        


          Andrej <asums...@gmail.com>


        
    26.03.2025, 19:18
        
        
    an ace

    Dear Madam or Sir,
    Currently I am working with RIOT as part of a mandatory
    internship in my university. Prof. Dr. Hahm one of RIOT's
    founders, is my supervisor and gave me a certain task related to
    the authentication described in RFC 9200. Today he suggested that
    I write you and email and ask a few questions regarding an
    implementation of the authentication process. Prof. Dr. Hahm and
    me thought of 2 different approaches:
    1) our constrained device running on RIOT is the client.
    2) our constrained device running on RIOT is the resource server.
     Prof. Dr. Hahm asked me to ask you which of these use cases is
    more likely to happen or more realistic? We thought that use case
    2 is more realistic.
    After I read some of the RFC's regarding this topic, I came up
    with a sequence diagram for this authentication. I regarded
    Asymmetric Proof of Possession and essentially, my approach
    follows the idea that between client and authentication server a
    trust is established beforehand. Then the client generates an
    asymmetric key pair and sends the public key to the
    authentication server, which then responds with a signed CWT in
    which the public key is included as a claim. The client then
    sends this token via a CoAP request to the resource server and
    signs this request using his private key. The resource server can
    then verify both the signature of the request and of the CWT.
    When granting the resource to the client it can be then encrypted
    using the public key included in the claims. Or if the client is
    trusted a secure channel can be established too for granting the
    resource. This approach in more detail is described in the
    attached image. We think that this is a valid implementation of
    the described authentication flow, but we wanted to make sure
    that it is, thus, we send you this email, so that you can verify
    our approach and potentially point out problems we did not think
    about.
    We hope not to bother you too much and thank you very much in
    advance.
    With kind regards
    Andrej Sum-Shik

    _______________________________________________
    Ace mailing list --ace@ietf.org
    To unsubscribe send an email toace-le...@ietf.org

-- Marco Tiloca
    Ph.D., Senior Researcher

    Phone: +46 (0)70 60 46 501

    RISE Research Institutes of Sweden AB
    Box 1263
    164 29 Kista (Sweden)

    Division: Digital Systems
    Department: Computer Science
    Unit: Cybersecurity

    https://www.ri.se 
<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ri.se%2F&data=05%7C02%7Cmarco.tiloca%40ri.se%7C7fb1eefbeaaa4cef503308dd7cd63510%7C5a9809cf0bcb413a838a09ecc40cc9e8%7C0%7C0%7C638803985105380192%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C60000%7C%7C%7C&sdata=cPPz2pJywrTN2pGU75RBpEhzC9wq1ZEtkJCA4WnQc0E%3D&reserved=0>


_______________________________________________
Ace mailing list --ace@ietf.org
To unsubscribe send an email toace-le...@ietf.org

--
Marco Tiloca
Ph.D., Senior Researcher

Phone: +46 (0)70 60 46 501

RISE Research Institutes of Sweden AB
Box 1263
164 29 Kista (Sweden)

Division: Digital Systems
Department: Computer Science
Unit: Cybersecurity

https://www.ri.se

Attachment: OpenPGP_0xEE2664B40E58DA43.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

_______________________________________________
Ace mailing list -- ace@ietf.org
To unsubscribe send an email to ace-le...@ietf.org

Reply via email to