Re: [Emu] EAP and Fragmentation

Alan DeKok <aland@deployingradius.com> Tue, 12 February 2019 18:26 UTC

Return-Path: <aland@deployingradius.com>
X-Original-To: emu@ietfa.amsl.com
Delivered-To: emu@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6229312D4F0 for <emu@ietfa.amsl.com>; Tue, 12 Feb 2019 10:26:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gXJ6yTbDOjdN for <emu@ietfa.amsl.com>; Tue, 12 Feb 2019 10:26:19 -0800 (PST)
Received: from mail.networkradius.com (mail.networkradius.com [62.210.147.122]) by ietfa.amsl.com (Postfix) with ESMTP id 82B2912785F for <emu@ietf.org>; Tue, 12 Feb 2019 10:26:19 -0800 (PST)
Received: from [192.168.46.58] (198-84-237-221.cpe.teksavvy.com [198.84.237.221]) by mail.networkradius.com (Postfix) with ESMTPSA id B9D8F51B; Tue, 12 Feb 2019 18:26:17 +0000 (UTC)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.0 \(3445.100.39\))
From: Alan DeKok <aland@deployingradius.com>
In-Reply-To: <f7548f45-e9ed-3c96-fd55-d87006c5ce70@openca.org>
Date: Tue, 12 Feb 2019 13:26:14 -0500
Cc: Mohit Sethi <mohit.m.sethi@ericsson.com>, EMU WG <emu@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <894F23B3-59EA-4DE6-BC12-417C79850CC4@deployingradius.com>
References: <f7548f45-e9ed-3c96-fd55-d87006c5ce70@openca.org>
To: "Dr. Pala" <director@openca.org>
X-Mailer: Apple Mail (2.3445.100.39)
Archived-At: <https://mailarchive.ietf.org/arch/msg/emu/YbU4-IfkeJIiIQPOeQINAxzGE8E>
Subject: Re: [Emu] EAP and Fragmentation
X-BeenThere: emu@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "EAP Methods Update \(EMU\)" <emu.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/emu>, <mailto:emu-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/emu/>
List-Post: <mailto:emu@ietf.org>
List-Help: <mailto:emu-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/emu>, <mailto:emu-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 12 Feb 2019 18:26:22 -0000

On Feb 12, 2019, at 12:36 PM, Dr. Pala <director@openca.org> wrote:
> I am working on a draft for credentials management via EAP. When looking at the different specifications, it seems a bit weird that EAP does not provide Fragmentation control and requires each method to define their own way. 

  IIRC, EAP was designed to be a protocol to carry other protocols, and nothing more than that.  Hence then 5 octet header, followed by (to be non-technical) data composed of "Uh... we're not sure... whatever..."  :)

> This, led me to my first question: is there a de-facto "standard" way to add Fragmentation support we can just use (without having to re-invent the wheel all the time) ?

  No.

> If we had such a mechanism, then we could just say "implement the mechanism as defined in ... ". This would definitely help developers that could safely re-use code/libraries. The other approach would be to modify EAP to add Fragmentation support there.

  I suspect that it's difficult to "modify EAP".  However, adding a standard fragmentation method would be definitely useful.

> The main reason to have a standard behavior is to have also better management for ack and nak packets. As far as the solution goes, the main ones I looked at are the ones mentioned in EAP-TTLS and EAP-TEAP. They are both practically the same, active ACK-based -

  The TLS-based EAP methods do pretty much the same thing:

EAP header
EAP type (TTLS, PEAP, TEAP, FAST)
TLS

  The rest is largely window-dressing.

  Since TLS provides it's own fragmentation layer, the above methods just use that.  There is very little method-specific code involved.

> are there other methods that have been implemented ? Has anybody ever looked at how fragmentation is handled in practice and if there are better solutions than others ?

  EAP-PWD does multi-round authentication, and adds it's own fragmentation layer:

https://tools.ietf.org/html/rfc5931#section-4

  The method used is somewhat similar to TLS.

> Further thinking let me to my second question: the method we are going to propose requires some form of authentication for the server, therefore I can see its use mainly as a tunneled method where the communication with the server is assumed to be already secure. If we go down the route of requiring the use of an outer method that provides authenticity and, optionally, confidentiality we would also not need to provide support for Fragmentation control, since the records would be encapsulated within the outer-method messages that already provide fragmentation support. Would this be acceptable ?

  I think so, yes.  Once you have a TLS tunnel set up, TLS largely takes care of fragmenting the application data.  So from the point of view of the application, it just sends and receives blocks of data, irrespective of the outer fragment size.

> Or should the method not have such assumptions and provide support for explicit fragmentation control ?

  I have no idea how that would work.  The inner application data has no real way of knowing about the external fragment size, or even how much data is being added by the TLS layer.

> What would be the preferred path here ? I personally would like to have a method that could be used independently, but I would also like to focus on simplicity of implementation so that if you already have EAP-TTLS/EAP-TEAP support, adding support for EAP-CREDS would be very simple.

  If it's an EAP type that only appears inside of a TLS tunnel, then don't worry too much about fragmentation.

  If the data you're sending will be larger than 64K, you *will* need to provide your own fragmentation support.  But that's only because the EAP header has a 16-bit "Length" field.

> Looking forward to some great guidance and advice :D Also, if you would like to collaborate/contribute, please let me know!

  I've been known to have opinions.  :)  Plus, it's useful to have credential provisioning methods.

  Alan DeKok.