Re: [secdir] [radext] Security review of draft-ietf-radext-radsec

Stefan Winter <stefan.winter@restena.lu> Mon, 30 January 2012 08:16 UTC

Return-Path: <stefan.winter@restena.lu>
X-Original-To: secdir@ietfa.amsl.com
Delivered-To: secdir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F2AD621F860B; Mon, 30 Jan 2012 00:16:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.407
X-Spam-Level:
X-Spam-Status: No, score=-2.407 tagged_above=-999 required=5 tests=[AWL=0.192, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id i8svGZ6h37oH; Mon, 30 Jan 2012 00:16:17 -0800 (PST)
Received: from smtprelay.restena.lu (smtprelay.restena.lu [IPv6:2001:a18:1::62]) by ietfa.amsl.com (Postfix) with ESMTP id 5C53121F85B4; Mon, 30 Jan 2012 00:16:17 -0800 (PST)
Received: from smtprelay.restena.lu (localhost [127.0.0.1]) by smtprelay.restena.lu (Postfix) with ESMTP id 920F710584; Mon, 30 Jan 2012 09:16:16 +0100 (CET)
Received: from [IPv6:2001:a18:1:8:2d20:ef00:5856:5dcc] (unknown [IPv6:2001:a18:1:8:2d20:ef00:5856:5dcc]) by smtprelay.restena.lu (Postfix) with ESMTPS id 8766410581; Mon, 30 Jan 2012 09:16:16 +0100 (CET)
Message-ID: <4F2651CC.2030406@restena.lu>
Date: Mon, 30 Jan 2012 09:16:12 +0100
From: Stefan Winter <stefan.winter@restena.lu>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111220 Thunderbird/9.0
MIME-Version: 1.0
To: radext@ietf.org
References: <tslmx992aht.fsf@mit.edu>
In-Reply-To: <tslmx992aht.fsf@mit.edu>
X-Enigmail-Version: 1.3.5
Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="------------enigA734C262E16C49F78C0C72F7"
X-Virus-Scanned: ClamAV
X-Mailman-Approved-At: Mon, 30 Jan 2012 08:01:01 -0800
Cc: ietf@ietf.org, secdir@ietf.org
Subject: Re: [secdir] [radext] Security review of draft-ietf-radext-radsec
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Security Area Directorate <secdir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/secdir>, <mailto:secdir-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/secdir>
List-Post: <mailto:secdir@ietf.org>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/secdir>, <mailto:secdir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 30 Jan 2012 08:16:19 -0000

Hi,

> Hi.  I'm not the secdir reviewer assigned to this draft, but felt that
> this draft needed additional security review, so I decided to perform a
> secdir-like review.
> 
> Overall, I think this is a much-needed specification and believe it is
> mostly ready for publication as an experimental RFC. I'd say a bit more
> clarity would be required if we wanted to move this to the standards
> track.

Thanks for the review!

> General issues:
> 
> 1) I'm reasonably sure that RADSEC MUST NOT be used with TLS versions
> prior to 1.1. The concern I have is that RADSEC has long-lived TLS
> connections under which an attacker could potentially observe ciphertext
> generated from some plaintext before sending additional plaintext.  TLS
> 1.1 includes explicit IVs that prevent various attacks  that may happen
> against earlier versions of TLS.
> There are implementation work arounds that can also prevent these
> attacks. However since all RADSEC implementations are required to
> support TLS 1.1, I'd prefer to add a requirement that RADSEC
> implementations MUST NOT negotiate TLS versions prior to 1.1 in order to
> avoid this issue.

That's a very useful comment, thanks! TLS 1.1 was marked as
minimum-required to prevent these attacks (IIRC). But of course it might
happen that even though both sides *support* TLS 1.1, they don't
actually negotiate it.

I've added corresponding text in my working copy, which will become -12
soon:

       *  Support for TLS v1.1 [RFC4346] or later (e.g.  TLS 1.2
          [RFC5246] ]) is REQUIRED.  To prevent known attacks on TLS
          versions prior to 1.1, implementations MUST NOT negotiate TLS
          versions prior to 1.1.


> 2) Section 2.3 implies that you need to do cert validation all the time,
> even when you have a certificate fingerprint. I think it could more
> clearly indicate that multiple ways of figuring out if you have the
> right public key are provided.  It's also not clear to me from section
> 2.3 whether there is a mandatory-to-implement strategy. You SHOULD
> support cert fingerprints. You MUST support cert path validation, but is
> there a required name form to support? There are discussions of several
> name forms but none seem mandatory. I see no discussion of RFC 6125,
> which I would have expected to see here.  However, most of this is OK
> for an experimental spec.  This is the big area where I'd expect to see
> more clarity before this could move to the standards track.

Agreed that there's a bit of an option bloat in the cert validation
sections, and that there should be more guidance for standards track if
the spec gets there.

There's one thing I'd like to fix for the current document though. It
was not really my intention to enforce e.g. 5280 checks when
fingerprint-based operation is in place. My role-model existing
deployment of fingerprint-based validation is SAML2 metadata. There, an
entity can get identified by its fingerprint alone; regardless of other
properties of the certificate (e.g. it doesn't matter whether the
certificate is expired, or what CA it comes from - so lang as the
configured fingerprint matches the incoming cert's fingerprint, it's fine).

In the SAML world, that mode of operation seems to be popular; I
wouldn't want to preclude that same model of operation here.

I'll reformulate that section to make clearer that PKIX-style cert
validation is one thing, and that manually configured fingerprints is
another (and TLS-PSK is yet another thing, of course). How about this:


   3.  Peer authentication can be performed in any of the following
       three operation models:

       *  TLS with X.509 certificates using PKIX trust models (this
          model is mandatory to implement):

          +  Implementations MUST allow to configure a list of trusted
             Certification Authorities for incoming connections.

          +  Certificate validation MUST include the verification rules
             as per [RFC5280].

          +  Implementations SHOULD indicate their trusted Certification
             Authorities as per section 7.4.4 (server side) and x.y.z
             ["Trusted CA Indication"] (client side) of [RFC5246] (see
             Section 3.2)

          +  Peer validation always includes a check on whether the
             locally configured expected DNS name or IP address of the
             server that is contacted matches its presented certificate.
             DNS names and IP addresses can be contained in the Common
             Name (CN) or subjectAltName entries.  For verification,
             only one of these entries is to be considered.  The
             following precedence applies: for DNS name validation,
             subjectAltName:DNS has precedence over CN; for IP address
             validation, subjectAltName:iPAddr has precedence over CN.

          +  Implementations SHOULD allow to configure a set of
             acceptable values for subjectAltName:URI.

       *  TLS with X.509 certificates using certificate fingerprints
          (this model is optional to implement): Implementations SHOULD
          allow to configure a list of trusted certificates, identified
          via certificate fingerprint.  Implementations MUST support
          SHA-1 as the hash algorithm.

       *  TLS using TLS-PSK (this model is optional to implement)

(note that some changed to this text might occur due to pending
DISCUSSes and COMMENTs in the IESG review).

Greetings,

Stefan Winter

> 
> _______________________________________________
> radext mailing list
> radext@ietf.org
> https://www.ietf.org/mailman/listinfo/radext


-- 
Stefan WINTER
Ingenieur de Recherche
Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et
de la Recherche
6, rue Richard Coudenhove-Kalergi
L-1359 Luxembourg

Tel: +352 424409 1
Fax: +352 422473