[Emu] EAP/EMU recommendations for client cert validation logic

"Owen Friel (ofriel)" <ofriel@cisco.com> Sun, 15 December 2019 21:01 UTC

Return-Path: <ofriel@cisco.com>
X-Original-To: emu@ietfa.amsl.com
Delivered-To: emu@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3D32212003F; Sun, 15 Dec 2019 13:01:36 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.497
X-Spam-Level:
X-Spam-Status: No, score=-14.497 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=SoQM8+E7; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=Jox66GGf
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 j58cJV0Mb638; Sun, 15 Dec 2019 13:01:33 -0800 (PST)
Received: from rcdn-iport-5.cisco.com (rcdn-iport-5.cisco.com [173.37.86.76]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 65F51120013; Sun, 15 Dec 2019 13:01:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=25823; q=dns/txt; s=iport; t=1576443693; x=1577653293; h=from:to:subject:date:message-id:mime-version; bh=iWFc3oFtBY4eHWhCiqJqpJQb7HKWE2pInRxAKYE60UA=; b=SoQM8+E74s3tcIwOivY7dOo3v1RbVIYXhGOhi560N7oZLFzHjoAlI/7H LGlUB4ffUKejtrUajZD/TIZBJ8b57wNSAzoQchA0wx1TTqdPAYtCz/Gpu ITNzW+FbdpmNoUW1vYGGQt+ytclCpDmjs+znc4/ozI8AUNiLhApQgLiS5 E=;
IronPort-PHdr: 9a23:ceu77RCn3LMVrucYho4aUyQJPHJ1sqjoPgMT9pssgq5PdaLm5Zn5IUjD/qg83kTRU9Dd7PRJw6rNvqbsVHZIwK7JsWtKMfkuHwQAld1QmgUhBMCfDkiuK/DwbiE+NM9DT1RiuXq8NBsdFQ==
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0B5AABKnvZd/5tdJa1cBwIbAQEBAQEBAQUBAQERAQEDAwEBAYFsBAEBAQsBgRsvJCwFbFggBAsqCodAA4sNTpoXgS6BJANUCQEBAQwBASMKAgEBhEACgg8kNgcOAgMNAQEEAQEBAgEFBG2FNwyFdxsTAQE4EQE2AghAJgEEARoagwGBeU0DLgECDKFdAoE4iGGCJ4J+AQEFgTkCAgxBgwcYghcDBoE2AYwXGoFBP4ERR4VuAQECAQGBNRQYKxsHBYJugiyNPzOIFpgEcgqCNIcpjneaSIIMhAyINIhPkXoCBAIEBQIOAQEFgVkELiqBLnAVgydQERSNEgwXg1CFFIU/dAGBJ4xcDRUCB4EEAYEPAQE
X-IronPort-AV: E=Sophos;i="5.69,319,1571702400"; d="scan'208,217";a="454144045"
Received: from rcdn-core-4.cisco.com ([173.37.93.155]) by rcdn-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 15 Dec 2019 21:01:29 +0000
Received: from XCH-RCD-006.cisco.com (xch-rcd-006.cisco.com [173.37.102.16]) by rcdn-core-4.cisco.com (8.15.2/8.15.2) with ESMTPS id xBFKr4kP005273 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Sun, 15 Dec 2019 20:53:05 GMT
Received: from xhs-rcd-002.cisco.com (173.37.227.247) by XCH-RCD-006.cisco.com (173.37.102.16) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sun, 15 Dec 2019 14:53:03 -0600
Received: from xhs-rtp-002.cisco.com (64.101.210.229) by xhs-rcd-002.cisco.com (173.37.227.247) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sun, 15 Dec 2019 14:53:02 -0600
Received: from NAM11-BN8-obe.outbound.protection.outlook.com (64.101.32.56) by xhs-rtp-002.cisco.com (64.101.210.229) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Sun, 15 Dec 2019 15:53:02 -0500
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JSAj9xroy35D/1+a62Uzq3fZe66VQxyDlvTxFUgJ9ywtf/g20TROWmLRIH7QLSYDdjkUUwQMhAWNmcL67oPyt67P8q8QyMujjm8ERTmMtTuETCfWdLxyeaf8r9AvXI/A+BMZpUZwrCuu4GGPP2sIia5m5Vlg1icq6KAJoGPwT4RR0BBiTk24i//47JoehZthicgC7du9Ulu15i9rnU1fll+tLJW+OoLfE+Dw/2oDV1nT5R+dfIiTkM7A6VN47bkUtstQTXIGEX30wLNixeyU1mpbsIRFtwkuNeOPmqb/J7InKdjkQ6uIEfC+ug/Nfx8mgeri5FlZWITTLTymsvhQOw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AEwQL2UQUgH1dXPKKV400I5DJ70/UZb2SehZakZ+iCM=; b=dPvKaMzMJF8Vd6wZ8XNH2po/pe65X8YO0qNFSM8H+5nB+A7sv5onJJkXMvTDuOL/yZL3/vJLYoK//5vwnfWVNySGtoq+uDozbg4r1dShLnyqM5CohAwpdVYdu2K3UB2LY98prHsYHtU7mh2GZ0xld0LZmEGVpTG/lg3je6gxab1JhPJkHszPeXYWlNgIrZXec3fKsVRlGDrTjzRu5Bv0q6rY7BIohqbpOO7DFPmhosMOOXkgHq+MEtseeCkWXnp6YhBs+sY6sivNNLcM8NUkJalrRHf9vwit9Y/3GAUV8jZ7sSNcY3Czme3QhRGjUqj8h55QNBynoaRX0gsxFnzGAw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AEwQL2UQUgH1dXPKKV400I5DJ70/UZb2SehZakZ+iCM=; b=Jox66GGfg4dmICqmeXLPBRugnOlMF63omE/nBaSTS02rJWO79hHtI6cxenReEt5HsOrtfMqh2WoPgaS+iGDLpiZAZJUJMq72cRWO7MQ3gRb4kicsYeGeB7o6jzEzvk50DzLEk+is0zbSl3Sn59NrzVcqUoExDbZEuhvOWPIrAIU=
Received: from MN2PR11MB3901.namprd11.prod.outlook.com (20.179.150.76) by MN2PR11MB3823.namprd11.prod.outlook.com (20.178.254.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2538.14; Sun, 15 Dec 2019 20:53:01 +0000
Received: from MN2PR11MB3901.namprd11.prod.outlook.com ([fe80::a0c1:4add:251d:c9a4]) by MN2PR11MB3901.namprd11.prod.outlook.com ([fe80::a0c1:4add:251d:c9a4%7]) with mapi id 15.20.2538.019; Sun, 15 Dec 2019 20:53:01 +0000
From: "Owen Friel (ofriel)" <ofriel@cisco.com>
To: "spasm@ietf.org" <spasm@ietf.org>, EMU WG <emu@ietf.org>
Thread-Topic: EAP/EMU recommendations for client cert validation logic
Thread-Index: AdWxNKzqTmo8NKHtQwSIp+NEgFXHNA==
Date: Sun, 15 Dec 2019 20:53:01 +0000
Message-ID: <MN2PR11MB3901F9B86DAC83AF67FBA49DDB560@MN2PR11MB3901.namprd11.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=ofriel@cisco.com;
x-originating-ip: [75.104.70.26]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 7acbaf8b-a843-4dbe-ca3a-08d781a0c64c
x-ms-traffictypediagnostic: MN2PR11MB3823:
x-microsoft-antispam-prvs: <MN2PR11MB3823F5F1F8C696831128F9B7DB560@MN2PR11MB3823.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 02524402D6
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(39860400002)(366004)(396003)(346002)(136003)(189003)(199004)(478600001)(9326002)(81156014)(86362001)(81166006)(316002)(966005)(8676002)(33656002)(64756008)(66446008)(66946007)(110136005)(9686003)(66556008)(2906002)(71200400001)(66476007)(6506007)(8936002)(450100002)(26005)(7696005)(5660300002)(76116006)(186003)(55016002)(52536014); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB3823; H:MN2PR11MB3901.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: Q2OcPralsCKvYXSAeLit6f61Hi8gJpRpwn1fE46/TQkqTtliHBIrCyn0qH3w4HtO5aQIpXaOiJwEZXTTBqUmIS2kqIkaKHx/9wOgrkXiwQI+Ly/Pqe41BndepfM41z79VtJoVZlUmKO2xON8Tgi55Y/GgB547NAuFSJyjQX8ZgHOBonCTKBQOlH4wvFeEisrEGAU5ybAmdG2gMMr8/e8HM0dEDgEuidydQPw/nhGqGLzbCTwavv1s1VyoQouUPiJYVQ5fTPe727tRi/exi25B0upzK94qeyc2oDr4vQOiJ5LQx7jN9Sytanl+ChiEizjjeNIfdQT0DQdrzgTA0rmDVBIBqCuA5LUuFPEeG1z12keqrNcLV1yZb38H1xdAsp59pXeMIUth8bXHmwKDv5hFr5F2MfOZBtutEjLq6mTd+NuoD2Vmgg6PWKzoDtdGvRrqm3jZXl1ZblnNlo7/e1G+O4oYKumrkROHr9npICkE7g=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_MN2PR11MB3901F9B86DAC83AF67FBA49DDB560MN2PR11MB3901namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 7acbaf8b-a843-4dbe-ca3a-08d781a0c64c
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Dec 2019 20:53:01.7296 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: oLm0lke4CtZKtU18dbwTkxpNhSLKx9VA2sEF2k11jxgp/iAaLmv4vd+MzAEcoNyQUB2k8SRV+N/6Va5gRN7qlw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3823
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.37.102.16, xch-rcd-006.cisco.com
X-Outbound-Node: rcdn-core-4.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/emu/onQudtmAOE07utViNMPE1zES4Aw>
Subject: [Emu] EAP/EMU recommendations for client cert validation logic
X-BeenThere: emu@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "EAP Methods Update \(EMU\)" <emu.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/emu>, <mailto:emu-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/emu/>
List-Post: <mailto:emu@ietf.org>
List-Help: <mailto:emu-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/emu>, <mailto:emu-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Dec 2019 21:01:36 -0000

Hi,

At ACME meeting at IETF106, the last discussion of the week was around EMU looking for recommendations for EAP client/peer/supplicant cert verification logic when the client is verifying the cert that the EAP server presents. Minutes here: https://datatracker.ietf.org/doc/minutes-106-acme/  The recommendation was to ask lamps. This was also discussed on EMU mailer recently.

Quoting some additional background that Alan gave on EMU mailer:


"Background:



a) the current practice in TLS-based EAP methods is to use certificates with "id-kp-serverAuth" OID set for Extended Key Usage.

b) many supplicants check for this OID, and refuse to perform authentication if it is missing

c) supplicants do not check DNS names or any other field in the certificates

d) as a result of this lack of verification, supplicants ship with all known CAs disabled for TLS-based EAP methods"

The key consideration is that RFCs that recommend cert fields for EAP servers that clients should check for are not currently issued by public CAs, and in some instances (e.g. SSID) ownership can often not be proven by CAs.

For example:

https://tools.ietf.org/html/rfc4334#section-2 id-kp-eapOverLAN EKU

https://tools.ietf.org/html/rfc4334#section-3 id-pe-wlanSSID

https://tools.ietf.org/html/rfc7585#section-2.2 NAIRealm

If an EAP server operator wants to use a public CA identity cert on their EAP server, what recommendations should we give to EAP clients so that the supplicant code can handle public or private CA issued EAP server identity in a secure a fashion as possible?

If at some point in the future, public CAs are willing to issue certs with some or all of the above fields, then what is the migration plan, what do we tell EAP clients to do now, and how to they migrate their verification logic?

The ideal experience would be along these lines for a client with real user interactions:
- client connects to an EAP server
- client prompts user for userId + realm and password
- client verifies server cert has id-kp-eapOverLAN set
- NAIRealm in cert matches user's realm
- verify the cert signing chain

The reality today is that if the server cert is issued by a public CA, then all that client can really check is:
- id-kp-serverAuth is set
- dNSName in cert matches user's realm
- verify the cert signing chain

We would like to document some recommendations for EAP clients and EAP operators so that public CAs could be used, and recommend checks for public vs. private CA issued EAP server certs.

It seems like logic should be something like:

- recommend EAP operators with private CA issued certs on their EAP servers set id-kp-eapOverLAN and NAIRealm set
- recommend EAP operators using public CAs get EAP server certs with id-kp-serverAuth and dNSName set
- recommend clients enable trust in public CAs
- recommend clients implement different cert verification logic depending on whether the EAP server cert is issued by a public CA or private CA
- for public CA certs, client checks that id-kp-serverAuth is set *and* dNSName matches user realm. If either check fails, reject.
- for private CA certs, client checks that id-kp-serverAuth or id-kp-eapOverLAN is set *and* NAIRealm matches user realm. If either check fails, reject.

- as a longer term goal see if public CAs will issue id-kp-eapOverLAN and NAIRealm. Although of course if some were to start doing this, then there is a migration challenge, and clients cannot make a hard check for these values against all public CAs. This doesn't really seem practical in the near term at all.

Note that for an IoT device, there is some work to do to define how to e.g. extend the RFC8366 so that it can specify the dNSName that devices should check for when verifying EAP identity where they EAP server uses a public CA. Some related options are outlined in https://tools.ietf.org/html/draft-friel-anima-brski-cloud-01.

Comments/thoughts?

Regards,
Owen