Re: [secdir] [kitten] Secdir last call review of draft-ietf-kitten-pkinit-alg-agility-04

Robbie Harwood <rharwood@redhat.com> Wed, 20 February 2019 20:56 UTC

Return-Path: <rharwood@redhat.com>
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 AE5CB12950A; Wed, 20 Feb 2019 12:56:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.901
X-Spam-Level:
X-Spam-Status: No, score=-6.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, 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 7yuLpdZ5nydu; Wed, 20 Feb 2019 12:56:35 -0800 (PST)
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 570A912D4E7; Wed, 20 Feb 2019 12:56:35 -0800 (PST)
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 66682C057F2F; Wed, 20 Feb 2019 20:47:52 +0000 (UTC)
Received: from localhost (ovpn-112-77.rdu2.redhat.com [10.10.112.77]) by smtp.corp.redhat.com (Postfix) with ESMTP id 180041001DC1; Wed, 20 Feb 2019 20:47:51 +0000 (UTC)
From: Robbie Harwood <rharwood@redhat.com>
To: Takeshi Takahashi <takeshi_takahashi@nict.go.jp>, secdir@ietf.org
Cc: ietf@ietf.org, kitten@ietf.org, draft-ietf-kitten-pkinit-alg-agility.all@ietf.org
In-Reply-To: <155047036985.3948.13609799438850064569@ietfa.amsl.com>
References: <155047036985.3948.13609799438850064569@ietfa.amsl.com>
Date: Wed, 20 Feb 2019 15:47:49 -0500
Message-ID: <jlglg2ai3uy.fsf@redhat.com>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Wed, 20 Feb 2019 20:47:52 +0000 (UTC)
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/PHhKAywIzjM6SQ0CEMt8KbMc40I>
Subject: Re: [secdir] [kitten] Secdir last call review of draft-ietf-kitten-pkinit-alg-agility-04
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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: Wed, 20 Feb 2019 20:56:38 -0000

Takeshi Takahashi <takeshi_takahashi@nict.go.jp> writes:

> Reviewer: Takeshi Takahashi
> Review result: Ready
>
> I do not see any serious issues on this draft and enjoyed reading it.
> I have only minor questions for the purpose of deepening my
> understanding of the draft.

Awesome, thanks for taking a look!  Let me see if I can help.

> 1. In section 5, regarding the The TD-CERT-DIGEST-ALGORITHMS-Data
> message, who embed the rejectedAlgorithm field? If it will be the KDC,
> why does the KDC need to fill and distribute this information to the
> others?

It has to be the KDC.  I believe the purpose of sending
TD-CERT-DIGEST-ALGORITHMS-DATA is to enable clients that have multiple
certificates to retry, to enable debugging without KDC access, and
worst-case to allow the user to request re-issuance of the certificate
in question.

rfc4556 section 3.2.2 (PKINIT's specification for how to handle client
requests) states:

    If the digest algorithm used in generating the CA signature for the
    public key in any certificate of the request is not acceptable by
    the KDC, the KDC MUST return a KRB-ERROR [RFC4120] message with the
    code KDC_ERR_DIGEST_IN_CERT_NOT_ACCEPTED.  The accompanying e-data
    MUST be encoded in TYPED-DATA, although none is defined at this
    point.

The important part here is that it applies to *any* certificate in the
request.  Sending the rejectedAlgorithm helps figure out which cert is
problematic.  There are other ways this could have been accomplished,
but that ship has sailed.

(Finally, the KDC doesn't technically "need" to send this structure; if
it wishes for some reason to be mysterious, the draft specifies that the
KDC "can OPTIONALLY send a list of digest algorithms".)

> 2. In section 8 (security consideration), it is stated that "to do
> otherwise allows an active attacker to perform a downgrade attack". In
> my understanding of the draft, arbitrary algorithm could be used (if
> the negotiation reaches agreements). I wonder if there is any
> mechanism that discourages the negotiation of using insecure
> algorithms.  For instance, the list of algorithms that must be treated
> with care could be listed somewhere?

The security properties we're counting on from underling algorithms
(like SHA1) here are pretty normal.  Personally, I don't think we should
be tracking algorithm security for Kerberos separately than from the
rest of the crypto ecosystem - for instance, sha1 weakening affects TLS
and everyone else just as it does us.

That said, there have been two RFCs so far about removing algorithms
from Kerberos: 6649 (1DES and export-strength RC4) and 8429 (3DES and
the rest of RC4).  Adoption of these is difficult, however, since some
sites require interop with older setups (such as Windows Server 2003)
that don't support AES.  The result is that Kerberos implementations
tend to enable by default only a subset of the algorithms they fully
support.  Making the tradeoff between security and interoperability is
left as a policy decision.

On the management side, Linux distros have been working to tie all these
different configuration knobs together in one place.  I'm sure there are
others, but in Fedora we use the crypto-policies [1] project to handle
weakenings/deprecations of various algorithms across the software in the
distribution.

Thanks,
--Robbie

1: https://gitlab.com/redhat-crypto/fedora-crypto-policies