And one other draft of interest: https://tools.ietf.org/html/draft-ietf-tls-external-psk-importer-00
> -----Original Message----- > From: Emu <emu-boun...@ietf.org> On Behalf Of Owen Friel (ofriel) > Sent: 18 September 2019 22:42 > To: Alan DeKok <al...@deployingradius.com>; John Mattsson > <john.matts...@ericsson.com> > Cc: draft-ietf-emu-eap-tl...@ietf.org; EMU WG <emu@ietf.org> > Subject: Re: [Emu] POST WGLC Comments draft-ietf-emu-eap-tls13 > > > > > -----Original Message----- > > From: Alan DeKok <al...@deployingradius.com> > > Sent: 18 September 2019 14:40 > > To: John Mattsson <john.matts...@ericsson.com> > > Cc: Owen Friel (ofriel) <ofr...@cisco.com>; draft-ietf-emu-eap- > > tl...@ietf.org; EMU WG <emu@ietf.org> > > Subject: Re: [Emu] POST WGLC Comments draft-ietf-emu-eap-tls13 > > > > > > > > > On Sep 18, 2019, at 9:21 AM, John Mattsson > > <john.matts...@ericsson.com> wrote: > > > > > > If I understand you correctly Alan, your implementation would have > > different databases (one resumption DB and one external PSK DB) and > > you do not want to do two database lookups. > > > > It's more about what *can* be done. RFC 8446 Section 8.1 and 8.2 > > talk about using multiple DBs, too. > > > > > The format of the PSKidentities is free for the deployment to decide > > > upon > > and the resumption PSKs can be completely be determined by the EAP-TLS > > implementation. Your implementation could for example put a message > > authentication code inside the PSK identity. The MAC would be > > calculated with a symmetric key the EAP server has randomly generated > > by itself. I think that would solve your problem. > > > > I suggest giving guidance to implementors. Otherwise the issue is > > open to implementation-defined behaviour, which is problematic. > > Giving some implementation guidance seems appropriate here. Naively, one > could envisage the implementation simply having a DB table for extern PSKs > and a table that holds NewSessionTickets. An implementation could simply > check the extern PSK table using the PskIdentity.identity, and if no match is > found then check the NewSessionTickets table. The default OpenSSL NSK > ticketId is 32 bytes long > https://github.com/openssl/openssl/blob/558ea84743918f7a93bfbfc259f86a > d1fa4c8de9/include/openssl/ssl3.h#L127 so something has gone seriously > wrong if there is a clash (poor randoms, etc.). An additional layer of > protection is provided by the PskBinderEntry as this is a HMAC derived using > the PSK as one input, so the server even if there happened to be an identity > clash, the binders will not match. > > Implementations should also note > https://tools.ietf.org/html/rfc8446#appendix-E.6. > > > > > If PSKs are used only for resumption, the the format doesn't matter. > > If PSKs are used for both authentication *and* resumption, then I > > strongly recommend giving guidance. > > > > For example, RFC 8446 Section 4.1.2 says: > > > > struct { > > opaque identity<1..2^16-1>; > > uint32 obfuscated_ticket_age; > > } PskIdentity; > > > > i.e. the PSK identity is an opaque binary string. How is the user > > supposed to enter a binary string into a "username" field in their > > GUI? What are the recommended formats? > > > > If the ClientHello isn't encrypted, then the PSK is visible to > > anyone (I believe). > > Well, more precisely, the PSK identity is visible in the ClientHello, not the > actual PSK of course. > > And the PSK *must not* be a user-manageable string such as the > > NAI. On the other hand, if the PSK is sent after encryption begins, > > then the PSK *should* be a user-manageable string such as an NAI. > > https://tools.ietf.org/html/rfc8446#section-2.2 also states: > > " Note: When using an out-of-band provisioned pre-shared secret, a > critical consideration is using sufficient entropy during the key > generation, as discussed in [RFC4086]. Deriving a shared secret > from a password or other low-entropy sources is not secure. A > low-entropy secret, or password, is subject to dictionary attacks > based on the PSK binder. The specified PSK authentication is not > a strong password-based authenticated key exchange even when used > with Diffie-Hellman key establishment. Specifically, it does not > prevent an attacker that can observe the handshake from performing > a brute-force attack on the password/pre-shared key. " > > so TLS-PSK is not suitable for a user entered low entropy password. We need > a PAKE for that (c.f. the ongoing CFRG PAKE assessment) > > > > > > I see it being useful for EAP-TLS to allow PSK authentication. I > > just want to be sure I know what that means, and what the impacts are. > > There are some use cases Eliot and I are looking at related to IoT onboarding > where a TLS-PSK authentication has definite value, and we really don't want > to see this avenue closed off in EAP. Happy to provide any suggestions on > Implementation Notes to your draft. > > > > > > I do not see how an attacker could do anything..... an attacker can > > definitely reuse any PSK identity, but would not have the > > corresponding PSK and the ClientHello would therefore not be accepted. > > The worst thing an attacker could do is to replay a ClientHello, then > > the handshake would fail then the EAP server verifies the Finished > message. > > And note https://tools.ietf.org/html/rfc8446#appendix-E.6 where there is > guidance on how to protect from an attacker determining a valid PSK > identity. > > > > I agree. My larger point was that in the absence of guidance, it's > > impossible to know what to do with a PSK identity. > > > > > I don't see why this would be more of a problem in EAP-TLS with TLS > > > 1.3 > > that in any other application of EAP-TLS. > > > > I agree. > > > > Alan DeKok. > > _______________________________________________ > Emu mailing list > Emu@ietf.org > https://www.ietf.org/mailman/listinfo/emu _______________________________________________ Emu mailing list Emu@ietf.org https://www.ietf.org/mailman/listinfo/emu