Re: [TLS] To API or not (Re: TLS renegotiation issue)

"Blumenthal, Uri - 0662 - MITLL" <uri@ll.mit.edu> Sun, 08 November 2009 01:18 UTC

Return-Path: <uri@ll.mit.edu>
X-Original-To: tls@core3.amsl.com
Delivered-To: tls@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2A5A13A68ED for <tls@core3.amsl.com>; Sat, 7 Nov 2009 17:18:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.435
X-Spam-Level:
X-Spam-Status: No, score=-6.435 tagged_above=-999 required=5 tests=[AWL=0.163, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GuXhnYTBaFqQ for <tls@core3.amsl.com>; Sat, 7 Nov 2009 17:18:34 -0800 (PST)
Received: from ll.mit.edu (LLMAIL1.LL.MIT.EDU [129.55.12.41]) by core3.amsl.com (Postfix) with ESMTP id 1A7CF3A68E3 for <tls@ietf.org>; Sat, 7 Nov 2009 17:18:33 -0800 (PST)
Received: (from smtp@localhost) by ll.mit.edu (8.12.10/8.8.8) id nA81Isoi027045; Sat, 7 Nov 2009 20:18:54 -0500 (EST)
Received: from lle2k7-hub01.llan.ll.mit.edu( ), claiming to be "LLE2K7-HUB01.mitll.ad.local" via SMTP by llpost, id smtpdAAAUlaOVZ; Sat Nov 7 20:16:56 2009
Received: from LLE2K7-BE01.mitll.ad.local ([ ]) by LLE2K7-HUB01.mitll.ad.local ([ ]) with mapi; Sat, 7 Nov 2009 20:16:56 -0500
From: "Blumenthal, Uri - 0662 - MITLL" <uri@ll.mit.edu>
To: "'Nicolas.Williams@sun.com'" <Nicolas.Williams@sun.com>, "'ietfdbh@comcast.net'" <ietfdbh@comcast.net>
Date: Sat, 07 Nov 2009 20:16:30 -0500
Thread-Topic: To API or not (Re: [TLS] TLS renegotiation issue)
Thread-Index: AcpfOvD9Mps59JgvQYCb7MxLqJIBpgA1jjTm
Message-ID: <90E934FC4BBC1946B3C27E673B4DB0E4A7ECACE3C7@LLE2K7-BE01.mitll.ad.local>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Cc: "'tls@ietf.org'" <tls@ietf.org>
Subject: Re: [TLS] To API or not (Re: TLS renegotiation issue)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Nov 2009 01:18:35 -0000

IETF can't write precise API because those are application-specific. IETF can and often should write Abstract Service Interface (ASI) specs that define the minimal amount of data that one component needs from another one to be of use to it.

True, ASI is no panacea. But (as IMHO SNMPv3 experience proved) it benefits much mpre than it inconveniences.


----- Original Message -----
From: Nicolas Williams <Nicolas.Williams@sun.com>
To: David Harrington <ietfdbh@comcast.net>
Cc: Blumenthal, Uri - 0662 - MITLL; 'Marsh Ray' <marsh@extendedsubset.com>; tls@ietf.org <tls@ietf.org>
Sent: Fri Nov 06 18:09:41 2009
Subject: To API or not (Re: [TLS] TLS renegotiation issue)

On Sat, Nov 07, 2009 at 06:39:48AM +0800, David Harrington wrote:

Of course, the issue here is not "must the IETF provide APIs?" but "can
the IETF provide APIs?".  The answer to that is a resounding "yes".

> I was probably the strongest proponent of using abstract APIs
> (actually ASIs - abstract service interfaces) to depict data flows
> between parts of the system. 
> 
> Let me observe that those ASIs have made it almost impossible to
> update the pieces of SNMPv3, because the ASIs act as design
> constraints. The strong architectural model made it very difficult to
> update the SMI without forcing changes to the ASIs. The strong
> architectural model made it very difficult to update the operations

I consider this a feature.  Not that I want to slow down development,
mind you.  Nor that I want to stay wedded to an ASI architecture that
turns out to be resistant to usefule changes.  Rather, changes to the
protocol should either be mindful of the abstract interfaces that have
been specified (i.e., the existing interfaces, possibly with extensions,
should continue to work), or they should introduce a replacement set of
interfaces.

> set of the SNMP protocol. Both of these efforts resulted in failed
> WGs. Adding support for existing SSH security infrastructure took
> three documents because we had  to modify the architecture, including
> all the affected ASIs. What might have taken months to complete took
> years - largely because of the use of ASIs in the architecture.

If the ASIs made it too hard to change the protocol in useful ways, then
the ASIs should be replaced.

> Many of the people who worked developed Netconf were involved in the
> SNMPv3 architecture effort, and subsequent updates. Look at the
> Netconf architecural model - it uses very simple, very nebulous
> layering as the borders between portions, not ASIs. This is a
> dramatically simpler and easier approach to work with.

I agree that it is dramatically simpler to write such documents.  I
don't agree that the result is necessarily better.  There's a whole
continuum of degree of formalism that we can use in our documents.  What
degree of formalism is best will depend on context (including who the
document authors and implementors are).  There will be contexts where
using XML schemas is useful, and ones where that would be overkill, for
example; replace XML with ASN.1/SDL/whatever.  There are contexts where
you want to use pseudo-code, or even actual source code to describe as
formally as possible, what must be done, while in other contexts "test
vectors", or just plain English language prose will do.

I think that abstract interfaces would be useful for TLS.  Most would
probably disagree.  If someday I get to be a TLS implementor, I may well
submit an individual submission I-D describing an abstract TLS API, and
maybe then I can convince the rest.  Until then I'm happy to be in the
minority, with some minor exceptions: I think it's important forthe base
TLS spec to speak of TLS connections, channel bindings for TLS
connections, and channel binding to TLS connections.

> I strongly advise you to be careful what you wish for. 

Thanks.

Nico
--