Subject: Re: [Emu] TEAP Request-Action TLV

From: Oleg Pekar <[email-masked]>
Date: Wed, 6 May 2020 16:57:34 +0300

Hi Eliot,
Few thoughts:

   - If the current client's certificate was requested via TEAP by PKCS#10
   TLV - then maybe it makes sense for the client to send Request-Action
   TLV + PKCS#10 TLV again with the same certificate parameters
   - If the current client's certificate was not requested via TEAP - then
   there's no evidence that the certificate renewal will be addressed (maybe
   TEAP is not connected to any CA)
   - If the current client's certificate was obtained from the external CA
   (e.g. via SCEP or EST) - then there's no evidence that the certificate
   renewal will be addressed
   - If the current client's certificate was preinstalled - then the client
   may not have a clue what does it want and will be unable to fill PKCS#10
   request. On the other hand, the CA that TEAP server is connected to could
   be unable to generate certificate with exactly the same properties and the
   current client certificate. Simple example: the current certificate is
   ECDSA and the CA can generate RSA only. Hard example: the current client
   certificate contains vendor specific extensions like Policy or Template
   Name. So it will be hard to put those extensions to the generated
   certificate

Regards
Oleg

On Thu, Apr 30, 2020 at 4:19 PM Eliot Lear <lear=[email-masked]>
wrote:

> All:
>
> Here is a circumstance one could easily imagine, and in fact we attempted
> to address in draft-lear-eap-teap-brski:
>
> Client requires a new certificate for some reason or another.  Perhaps its
> is about to expire, or perhaps the signer has been compromised, or what
> have you.
>
>
> We were thinking that we could use the Request-Action Frame for this
> purpose with a type of PKCS#10.  But that now seems wrong, as the language
> in the draft states that one appends a Request-Action frame with a full
> TLV, and not just a *type, * and further that the other end process the
> TLV.  In looking at Jouni’s code, he is doing precisely that with the PAC
> TLV.
>
> And so it seems we have three choices:
>
>
>    - Create a new TLV that has a length of *two* that can be used in a
>    REQUEST_ACTION frame.
>    - Create a new TLV that is what we thought we meant: here is a list of
>    two(ish)-byte types whose TLVs I want you to send to me.
>    - Hard code the ordering of requests so everyone knows what to expect.
>
>
> Each of these has its own problems.
>
> The first requires that we create a new EAP TYPE for TLV one end needs the
> other to send, but it’s pretty easy to process. The second requires extra
> processing but requires less standardization.  The last seems to go against
> the EAP model and reduces deployment flexibility.
>
> Thoughts?
>
> Eliot
> _______________________________________________
> Emu mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/emu
>

---

From: Oleg Pekar <[email-masked]>
Date: Wed, 6 May 2020 22:15:09 +0300

Eliot gave me some hint offline and here's what we can do in TEAP with
regards of certificate provisioning/enrollment/renewal.

In the current TEAP RFC, when the peer wants to get list of Trusted Roots
it sends Trusted-Server-Root TLV with credential type field - a constant
value 1 for PKCS#7 and with no other content. The server replies
with Trusted-Server-Root TLV and puts PKCS#7 inside it. So there's a kind
of request-response with the same TLV.

However for certificate request the peer should send PKCS#10 TLV and the
server should response with PKCS#7 TLV. It shows some inconsistency on one
hand and gives no possibility for the server to control certificate renewal.

Suggest closing that gap by introducing a new "Peer-Certificate TLV" with
exactly the same format as Trusted-Server-Root TLV.

   - When the peer wants to request a certificate it
   sends "Peer-Certificate TLV" with credential type field equal to 1
   for PKCS#7 and optional PKCS#10 TLV as a content
   - If no PKCS#10 TLV attached then the server can just renew the existing
   certificate if it has such capabilities and required data (or can say that
   the peer wants a certificate based on its current certificate and the
   current server policies).
   - If PKCS#10 TLV is attached then the server generates peer certificate
   according to the data in the request
   - If the server wants to generate peer certificate it may reply with
   "Peer-Certificate TLV" with credential type field equal to 1 for PKCS#7
   and PKCS#10 TLV as a content.
   - If the server wants the peer to send certificate request with all the
   data - it sends "Peer-Certificate TLV" with credential type field equal to
   1 for PKCS#7 and no content
   - We don't need to use Request-Action TLV in the whole flow

Would that work?

Regards
Oleg

On Wed, May 6, 2020 at 4:57 PM Oleg Pekar <[email-masked]> wrote:

> Hi Eliot,
> Few thoughts:
>
>    - If the current client's certificate was requested via TEAP by
>    PKCS#10 TLV - then maybe it makes sense for the client to send
>    Request-Action TLV + PKCS#10 TLV again with the same certificate parameters
>    - If the current client's certificate was not requested via TEAP -
>    then there's no evidence that the certificate renewal will be addressed
>    (maybe TEAP is not connected to any CA)
>    - If the current client's certificate was obtained from the external
>    CA (e.g. via SCEP or EST) - then there's no evidence that the certificate
>    - If the current client's certificate was preinstalled - then the
>    client may not have a clue what does it want and will be unable to
>    fill PKCS#10 request. On the other hand, the CA that TEAP server is
>    connected to could be unable to generate certificate with exactly the same
>    properties and the current client certificate. Simple example: the current
>    certificate is ECDSA and the CA can generate RSA only. Hard example: the
>    current client certificate contains vendor specific extensions like Policy
>    or Template Name. So it will be hard to put those extensions to the
>    generated certificate
>
> Regards
> Oleg
>
> On Thu, Apr 30, 2020 at 4:19 PM Eliot Lear <lear=
> [email-masked]> wrote:
>
>> All:
>>
>> Client requires a new certificate for some reason or another.  Perhaps
>> its is about to expire, or perhaps the signer has been compromised, or what
>> have you.
>>
>>
>>    - Create a new TLV that is what we thought we meant: here is a list
>>    of two(ish)-byte types whose TLVs I want you to send to me.
>> The first requires that we create a new EAP TYPE for TLV one end needs
>> the other to send, but it’s pretty easy to process. The second requires
>> extra processing but requires less standardization.  The last seems to go
>> against the EAP model and reduces deployment flexibility.
>>
>> Thoughts?
>>
>> Eliot