Subject: [Uta] Refreshing TLS usage with NNTP

From: Julien ÉLIE <[email-masked]>
Date: Fri, 5 Aug 2016 16:02:59 +0200

Hi all,

Last year, we spoke about a possible refresh of RFC 4642 (TLS with NNTP) 
to be consistent with the latest published RFCs about TLS.  There were 
two things to do:

- define a new compression facility because TLS 1.3 no longer permits to 
compress data (and NNTP was relying on TLS to get data compression,  as 
mentioned in the abstract of RFC 4642);

- toilet all obsolete TLS-related stuff, in discrepancy with latest RFCs 
and UTA BCP 195.

For your information, the result of the first part (a new NNTP COMPRESS 
command, inspired from the IMAP COMPRESS command defined in RFC 4978) is 
here:
     https://tools.ietf.org/html/draft-murchison-nntp-compress-05

I believe the second part is the one that would most interest this WG. 
I based my work on RFC 7590 (TLS with XMPP).
I already received a few comments on -00 from 3 persons (Michael 
Baeuerle, Richard Kettlewell, and Chris Newman).  I have taken them into 
account for -01:
     https://tools.ietf.org/html/draft-elie-nntp-tls-recommendations-01

Do you have any remarks about that proposal?
Is there a chance that UTA takes it as a WG item?  (Anyway, even if the 
draft remains an independant submission, I would be happy to hear 
comments from the WG.)

Especially, I still see a few issues to address:

1/    Should the following paragraph in Section 2.2.2 of [RFC4642]
       remain as-is or should it be modernized with another wording?
       (And which one?  or is it already done by the reference to
       [RFC7525]?)

 > Quoting [RFC4642]:
    Servers MUST be able to understand backwards-compatible TLS Client
    Hello messages (provided that client_version is TLS 1.0 or later),
    and clients MAY use backwards-compatible Client Hello messages.
    Neither clients nor servers are required to actually support Client
    Hello messages for anything other than TLS 1.0.  However, the TLS
    extension for Server Name Indication ("server_name") [TLS-EXT] SHOULD
    be implemented by all clients; it also SHOULD be implemented by any
    server implementing STARTTLS that is known by multiple names.
    (Otherwise, it is not possible for a server with several hostnames to
    present the correct certificate to the client.)

2/    Should the paragraphs in Section 5 of [RFC4642] dealing with how
       the client checks the server hostname and the binding between the
       identity of servers and the public keys presented be modernized?
       (Obsolete them in favour of [RFC6125] for instance?  or maybe
       [RFC7525] is enough as it also points to [RFC6125])

 > Quoting [RFC4642]:
    During the TLS negotiation, the client MUST check its understanding
    of the server hostname against the server's identity as presented in
    the server Certificate message, in order to prevent man-in-the-middle
    attacks.  Matching is performed according to these rules:

    -  The client MUST use the server hostname it used to open the
       connection (or the hostname specified in TLS "server_name"
       extension [TLS-EXT]) as the value to compare against the server
       name as expressed in the server certificate.  The client MUST NOT
       use any form of the server hostname derived from an insecure
       remote source (e.g., insecure DNS lookup).  CNAME canonicalization
       is not done.

    -  If a subjectAltName extension of type dNSName is present in the
       certificate, it SHOULD be used as the source of the server's
       identity.

    -  Matching is case-insensitive.

    -  A "*" wildcard character MAY be used as the left-most name
       component in the certificate.  For example, *.example.com would
       match a.example.com, foo.example.com, etc., but would not match
       example.com.

    -  If the certificate contains multiple names (e.g., more than one
       dNSName field), then a match with any one of the fields is
       considered acceptable.

    If the match fails, the client SHOULD either ask for explicit user
    confirmation or terminate the connection with a QUIT command and
    indicate the server's identity is suspect.

    Additionally, clients MUST verify the binding between the identity of
    the servers to which they connect and the public keys presented by
    those servers.  Clients SHOULD implement the algorithm in Section 6
    of [PKI-CERT] for general certificate validation, but MAY supplement
    that algorithm with other validation methods that achieve equivalent
    levels of verification (such as comparing the server certificate
    against a local store of already-verified certificates and identity
    bindings).

3/    Regarding peering between mode-switching news servers, should
       something specific be added?  NNTP has port 119, and NNTP over TLS
       has port 563.  NNSP has port 433 but no dedicated port for TLS.
       Shouldn't a port for NNSP over TLS be registered?  Otherwise, both
       reading and peering are supposed to use port 563, which may be
       inconvenient.  We could then recommend the use of stunnel with TCP
       wrappers, or an equivalent mechanism, listening to that new
       separate port for mode-switching news servers that do not natively
       support TLS for peering.

Thanks again for your valuable point of view on the draft,

-- 
Julien ÉLIE

« La terre étant ronde, le kilomètre devrait être rond et non pas
   carré. » (Ramón Gomez de La Serna)