[apps-discuss] draft-hoffman-server-has-tls-03.txt

Simon Josefsson <simon@josefsson.org> Tue, 25 January 2011 09:40 UTC

Return-Path: <simon@josefsson.org>
X-Original-To: apps-discuss@core3.amsl.com
Delivered-To: apps-discuss@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 814483A6A85 for <apps-discuss@core3.amsl.com>; Tue, 25 Jan 2011 01:40:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.656
X-Spam-Level:
X-Spam-Status: No, score=-102.656 tagged_above=-999 required=5 tests=[AWL=-0.057, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
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 cHnOvlLqYYb9 for <apps-discuss@core3.amsl.com>; Tue, 25 Jan 2011 01:40:09 -0800 (PST)
Received: from yxa-v.extundo.com (yxa-v.extundo.com [213.115.69.139]) by core3.amsl.com (Postfix) with ESMTP id 43C9E3A6A81 for <apps-discuss@ietf.org>; Tue, 25 Jan 2011 01:40:08 -0800 (PST)
Received: from latte.josefsson.org (c80-216-4-108.bredband.comhem.se [80.216.4.108]) (authenticated bits=0) by yxa-v.extundo.com (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id p0P9glEp029013 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for <apps-discuss@ietf.org>; Tue, 25 Jan 2011 10:42:50 +0100
X-Hashcash: 1:22:110125:apps-discuss@ietf.org::kMXNLgGZQUYi4FWa:C1eI
From: Simon Josefsson <simon@josefsson.org>
To: apps-discuss@ietf.org
OpenPGP: id=B565716F; url=http://josefsson.org/key.txt
Date: Tue, 25 Jan 2011 10:42:48 +0100
Message-ID: <87wrlt2uav.fsf@latte.josefsson.org>
User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
X-Virus-Scanned: clamav-milter 0.96.5 at yxa-v
X-Virus-Status: Clean
Subject: [apps-discuss] draft-hoffman-server-has-tls-03.txt
X-BeenThere: apps-discuss@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: General discussion of application-layer protocols <apps-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/apps-discuss>
List-Post: <mailto:apps-discuss@ietf.org>
List-Help: <mailto:apps-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Jan 2011 09:40:10 -0000

I believe the goal of this document is great and I would like to see it
happen in one form or the other.

Diving into some details...  It says:

      Secure Only (SSO) -- The server responds using TLS on the TLS-
      specific port for the application.  For example, a host for a web
      server only responds to HTTP requests on port 443.  Alternately,
      if the application supports in-band security update (such as
      STARTTTLS for SMTP), the server responds on the normal port, tries
      to establish a TLS session, and does not proceed with the protocol
      if a TLS session cannot be established.

The distinction between STARTTLS-capable protocols and
non-STARTTLS-capable protocols is not as clear as you might think here.
There is RFC 2817 for STARTTLS over HTTP, which is run over port 80.

In general, I think the document is confusing "secure" form with
non-STARTTLS TLS-wrapped form.  For example:

   Given a particular client application configuration, there are three
   interesting types of clients:

      Insecure Only (CIO) -- The client is configured to only attempt
      communication for the application in its insecure form.  For
      example, a POP client might be configured to only try insecure POP
      on port 110.

      Secure Only (CSO) -- The client is configured to only attempt
      communication for the application in its secure, TLS-wrapped form.
      For example, a POP client might be configured to only try secure
      POP on port 995.

      Allows Fallback From Secure to Insecure (CFB) -- The client is
      configured to attempt communication for the application in its
      secure, TLS-wrapped form, but if it fails to set up a TLS session,
      the client will attempt to attempt communication to the same
      server using the insecure form.

This doesn't match existing clients since it doesn't acknowledge
STARTTLS heuristics.  A classification that better matches existing
clients would be this one:

   Given a particular client application configuration, there are five
   interesting types of clients:

   Insecure only - the client doesn't use TLS at all.

   Insecure upgrade - the client connects without TLS and upgrades to
   TLS using a STARTTLS mechanism if it is available.  If STARTTLS is
   not available, it proceeds insecurely.

   Fall-back - the client first attempts to connect on the TLS-wrapped
   port (non-STARTTLS) and on failures reverts back to the insecure port
   and becomes a Insecure only, Insecure upgrade or Secure Upgrade
   client.

   Secure Only - the client only connects to the TLS-wrapped port, and
   on failures gives up.

   Secure Upgrade - the client connects without TLS and upgrades to TLS
   using a STARTTLS mechanism.  If STARTTLS is unavailable, connection
   fails.

Thoughts?

/Simon