Re: [secdir] Secdir early review of draft-ietf-ippm-capacity-protocol-01

"MORTON JR., AL" <acmorton@att.com> Mon, 25 July 2022 20:33 UTC

Return-Path: <acmorton@att.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 C77DEC13CCCF; Mon, 25 Jul 2022 13:33:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level:
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=att.onmicrosoft.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZQbZBo54xQ2N; Mon, 25 Jul 2022 13:33:13 -0700 (PDT)
Received: from mx0b-00191d01.pphosted.com (mx0b-00191d01.pphosted.com [67.231.157.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 62270C13CCCC; Mon, 25 Jul 2022 13:33:13 -0700 (PDT)
Received: from pps.filterd (m0288868.ppops.net [127.0.0.1]) by m0288868.ppops.net-00191d01. (8.17.1.5/8.17.1.5) with ESMTP id 26PI9lUW026517; Mon, 25 Jul 2022 16:33:12 -0400
Received: from alpi154.enaf.aldc.att.com (sbcsmtp6.sbc.com [144.160.229.23]) by m0288868.ppops.net-00191d01. (PPS) with ESMTPS id 3hhwnvhfj0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Jul 2022 16:33:11 -0400
Received: from enaf.aldc.att.com (localhost [127.0.0.1]) by alpi154.enaf.aldc.att.com (8.14.5/8.14.5) with ESMTP id 26PKX9Rh022751; Mon, 25 Jul 2022 16:33:11 -0400
Received: from zlp30488.vci.att.com (zlp30488.vci.att.com [135.47.91.93]) by alpi154.enaf.aldc.att.com (8.14.5/8.14.5) with ESMTP id 26PKX8Gu022732 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 25 Jul 2022 16:33:08 -0400
Received: from zlp30488.vci.att.com (zlp30488.vci.att.com [127.0.0.1]) by zlp30488.vci.att.com (Service) with ESMTP id 938464017141; Mon, 25 Jul 2022 20:33:08 +0000 (GMT)
Received: from GAALPA1MSGEX1CC.ITServices.sbc.com (unknown [135.50.89.110]) by zlp30488.vci.att.com (Service) with ESMTP id 0D2804017140; Mon, 25 Jul 2022 20:33:08 +0000 (GMT)
Received: from GAALPA1MSGEX1CC.ITServices.sbc.com (135.50.89.110) by GAALPA1MSGEX1CC.ITServices.sbc.com (135.50.89.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.9; Mon, 25 Jul 2022 16:33:07 -0400
Received: from GAALPA1MSGETA02.tmg.ad.att.com (144.160.249.124) by GAALPA1MSGEX1CC.ITServices.sbc.com (135.50.89.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.9 via Frontend Transport; Mon, 25 Jul 2022 16:33:07 -0400
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.174) by edgeal.exch.att.com (144.160.249.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.9; Mon, 25 Jul 2022 16:32:57 -0400
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UibM5ZmVE4ap9CAZ5ElTdhTmMNLJnYF6S0HrHFUA/Jc7HYOT3Vs58D8UQ8Tu5UoxDWQl5XQPY+gYhCUcaJJqy3/cIgp82gDwPVAxfs4pbuCHr4dBwk72RojdHpuABtuQSsN++ObwrunwLJVO+BVwfc9y4ZjKApbpZLsZJeKeY9Go6pf5LYMoZUvg7nwef5UP6uYrs219Z5wMmCWiuqc3ss/kdds9XH7rhGMWLngk9oZ2mh8ve3ZbMKL1vcRt4fOepYsR/mfW7s5kMohowiR5UHoMtuS/fC2SeKFLf8/uCpVHHKFkDn5SAHAtlVnjLk+ejeAwFkn6K7I5kIRDoX89GA==
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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6TtaCr+raxOD8jBkHna4+JnA0kjZg+inzBWXAJGBYB0=; b=WBznNhNZJ7qRqAUKIX2TW40Qb6nPc2z0C50ZAy3fIqxeK0KzRm3gPo7huxlXEhgCsq8Cm7Jqeysk7eOn2/LTouwyTTLbK0OI85VquxZLrwe2NmHVLt5X3vCirzcMtCPD6LLW+ejLvQ+gIFMdfFq0PH3zkB+383kz94Fnv++fT+IoUnPv6AisVBG8ryhDAL6eIxcKOn5P2ixk+zsOgvgp+dF+kxac7FRkfmyhgBwrnzE3WmD8Gbm+5I/abe6y8XVRN80/u+//ua5jFuq9eXK39s3QsoDQcFkbIVl84AXe5Wu2Wcd+VLF287wiO7wgeke2+iS6NxWQv/cOGwycYTPHbA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=att.com; dmarc=pass action=none header.from=att.com; dkim=pass header.d=att.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=att.onmicrosoft.com; s=selector2-att-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6TtaCr+raxOD8jBkHna4+JnA0kjZg+inzBWXAJGBYB0=; b=SlwSAiT8ndoTMB0hMHRs//2BArJTEeOwPqxNPbrtMbtYJREGSJiSlmYMCZtElujelGtuUk+XxBpJMiXlBa7+uGtcstIf9u9jIiqAAZBXaHgd+c7LhE+XoE3pEK/Upr24p6Wvyaijv8R+BEveD3y3tof+jSsHLtczxdjQuMA4KTg=
Received: from CH0PR02MB7980.namprd02.prod.outlook.com (2603:10b6:610:105::17) by BYAPR02MB5016.namprd02.prod.outlook.com (2603:10b6:a03:69::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.24; Mon, 25 Jul 2022 20:32:53 +0000
Received: from CH0PR02MB7980.namprd02.prod.outlook.com ([fe80::f845:7efc:e159:9407]) by CH0PR02MB7980.namprd02.prod.outlook.com ([fe80::f845:7efc:e159:9407%9]) with mapi id 15.20.5458.024; Mon, 25 Jul 2022 20:32:53 +0000
From: "MORTON JR., AL" <acmorton@att.com>
To: Brian Weis <bew.stds@gmail.com>
CC: "secdir@ietf.org" <secdir@ietf.org>, "draft-ietf-ippm-capacity-protocol.all@ietf.org" <draft-ietf-ippm-capacity-protocol.all@ietf.org>, "ippm@ietf.org" <ippm@ietf.org>
Thread-Topic: Secdir early review of draft-ietf-ippm-capacity-protocol-01
Thread-Index: AQHYhpqFZh1qC5L5u0K9qjD2Gb36ea1oLeoggB/kL4CAB1prgA==
Date: Mon, 25 Jul 2022 20:32:53 +0000
Message-ID: <CH0PR02MB79801FEE903E8DB9392E8679D3959@CH0PR02MB7980.namprd02.prod.outlook.com>
References: <165594509789.35936.13892356107964016466@ietfa.amsl.com> <CH0PR02MB798049C97D706712CA1D9CB2D3BA9@CH0PR02MB7980.namprd02.prod.outlook.com> <9827EC36-A612-470B-B4B4-86B94957A737@gmail.com>
In-Reply-To: <9827EC36-A612-470B-B4B4-86B94957A737@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 36ee3064-6739-4743-5b26-08da6e7cd9d7
x-ms-traffictypediagnostic: BYAPR02MB5016:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: p2ul0kmA6uvi/06XfDLRiBD70rFII3oQC2FS8wjRD1nG5OnuTzAJxrwi/tNwOMUinG3Pv6cTqyYv7U3zCJ20gk6IlNfZXq2Lu3SYIwtExQfoD6G3VGcRLsFqE6HD2AvEHpcdygwEnafjySN/o2/X/bhMuthWbFT1CI65rEdTMpNUpuul2oFfn+vJEue/BQuM7DeT8NoODjUvhrs4LVJtMe722DefVJt8CftEmU9e/qvpvVOzjvZ3ymlaDlmtNNXgyjkIWS3LBtAsvouwzSm9mG6k2Y3AcFdRx7UrIGSCLac8+WZpJhgDGiuAN4XT5/b1L7h5nwHBvlsZcENv9Qa6MA9UfxJeu33pFROoT8CYND8IOSB0kPwXGt0OPVcSJyeHYYcb09yr2RMi2nS/GROqxPZd0zH653IcZQVRuHx9IUalcL2PnvYAWQwBZlBO+038EgUxJNtLwigTiA8psFLDLkw7mcSNohwtPG2gAAp/Z+zpF+TMs+ryNZ2JgMW8Zf4waw9Dq/b4j6LRCTX+dm/vTCD2/xyHYOyfjUscgU+YRDJ53B7f1p6JCqbWrfw6FdRx1h+NbPlE4l45XlYxpk5SGjpu0U+p5240t/wdUgerwqcuwWHkGM6crRlY7iWFWy+TeYn92Un2ldhB/jpPd/p5YSp0Ij0yEmYDW4rBspYLcL1IhxftPwb+GlUgh/PZ4nlNUI39R7w191xtsaRGG8j9w1YFRGER1c2veVoisuS5ZHG0KP2GTsE9h24NapuKMU2XKBOZG4Q6VUvx2yzhiAdgn5JSUXStmWbdMurhG36lp1xuXzuJ1YifTLUwFr8NQjEo
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH0PR02MB7980.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(366004)(136003)(396003)(39860400002)(346002)(376002)(7696005)(71200400001)(2906002)(86362001)(41300700001)(53546011)(478600001)(26005)(6506007)(9686003)(33656002)(8936002)(30864003)(9326002)(5660300002)(66574015)(52536014)(83380400001)(55016003)(122000001)(82202003)(82960400001)(38100700002)(186003)(38070700005)(4326008)(316002)(66946007)(66476007)(54906003)(6916009)(76116006)(66446008)(64756008)(8676002)(66556008)(559001)(579004); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: Pt18O2KUHSWvopba2uVk3wXQ/+45H2rGAfV7UEHkc5J2noiv/R3DPy5m5wKKe9L6mkfx5A2ihkvgZuAg3x46OZIF6VHCqM9EhV6OkHOB9sKZONxkJpcsZ7GTOgEQn3gMZQo9MjBlt8+pR5YYdmZif31GN/aVANl7ncd6CUNYjWQDLbVfOmlBSIgLVqgVGOY9Ino76cWGMqAM+TnM2CRDdHbnajiw6QG/Cn2G25NHnGqjgLfQd5NtB6aKiirAuNtqAFfLK8W4vd47SP/zqznizzMTVgGngkMn6bHkSrpianbqJDfPxDIgxM4Ig7SFq08ObSiVp2/XW685JyQiT0TEAGtoNP6hdtQN1Do0MqEmA9w5bpEXLT15Pg5dcUrXU1hts+MIM7fV0V5EX+d9PdWhZXz1SUmwV0ljqcZ31SM2jVLv45Jo0OJASLvu3analfSjcjMCY7UqdfESqd+PW2yVsNL2hGe9ekD3XhRmew+oXIy6HWcFgf8recxnjo5s3e+a7+1GLKDTerBgD/C8fsXwmHz5dfwrsA7JKyr7CI/rzW+7xhTuz5E/UJgnbXMHXIRJ2Lm3doFPpqOQS9Lqd286rT7NlayuYGp2a8I00jaR4gxC4XvVsWku7Z4PqZkDYyDCHrC8ekKAW0Yks66Uz+k/Ul5+iGCV8/Ld66zR1FOd/ty+E7ekk7M6n4MvFbHVOMjblm4whciOgtXm5kkgwiUHtNJLhjKY35KTNGfwwKBGHWIFTsALX2nrBLBd9dOyXhDGX+fnRyD++w2GBQzICbpwR4b3gW69uSeWpuhaDJ05XqQ+ZCln6lAowL6BlCTmBSd9mzNYtTDragv24PnqeqB1JvI7lCUe1ptiMpPgWFpWCO6WzYG1oJ+D5ZnOy4fjcR3m0j877XHlXy9bYoRr6FfUKqVWEOGXkzHoaNAXlV9dPeJmdcv/Uw+fZoHHB0s09TyYW0ISzn8OUjgGG4K4BIrJY2273G/bcEex2avvQry7JnTXjq72KDWBqppQmmBA02FiIVGGjrnUgAJdtX3ebHY+BHjJnORpC4lZA9BT/UvdOw2RFfF65P0lw29OroxJpMyDTR6LuZMxKSOnUuFy0YvUEcmtCjYu7v6Yw5uR3MZwTEPnMfsIrTqebrFAjed+/hqhy6auZ+P9gctnEXVrRIRHTSBLhqT6uruG4/ayqVzse6152OsJlXH/rXOuMEBRc2eF8NuLy1fuQ/fJDwCCzOHJ8727/cN5+X7MKK7LEyGF3+5yYo1dOQEz41I6EA4xAMP35LWE3TklkYdC8FuOU2xB33lWWIzzyxpGXpsMEOpmVzSyq7ypUfNBYE2/sjKGXdWwV1Z8TBq88nwLAvW8zvlqcKGYzFmSU2f+Gsds/c+Hj81Tr7wuZ8go+5Ajby8SaRQCnITwQL1z7mT6MMqzsrAfWOe1XEEAzXMiEpbkkplO7Lrf1Sq1oGK8IDqYHxxxN6elvOQQ382NQuBPBSY5MH+z/hyFrXSi7iMAE6Vzr7tUqeAr4SFv2+l9L1oC2DBrfLLKol9zKXRsCb+hbFHTXtfnScc6RO2wD5JutwtAvSpxEZQ=
Content-Type: multipart/alternative; boundary="_000_CH0PR02MB79801FEE903E8DB9392E8679D3959CH0PR02MB7980namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH0PR02MB7980.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 36ee3064-6739-4743-5b26-08da6e7cd9d7
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jul 2022 20:32:53.5646 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: e741d71c-c6b6-47b0-803c-0f3b32b07556
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: FBS4KrvH/+FMuqF8wWuTKFSN/Wql7Lfjq+PAn5e0AtQ84+DwYsStdLpCBhBiVUo3
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR02MB5016
X-TM-SNTS-SMTP: C059B88AAB318E47D0FB3F9FD4DBCE552FA672E7EE3AEB771982754AFE5621FB2
X-Proofpoint-GUID: gLHhfyW_-aVKV9zDO_8yhOBVvd088inA
X-Proofpoint-ORIG-GUID: gLHhfyW_-aVKV9zDO_8yhOBVvd088inA
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-25_13,2022-07-25_03,2022-06-22_01
X-Proofpoint-Spam-Details: rule=outbound_policy_notspam policy=outbound_policy score=0 mlxlogscore=999 priorityscore=1501 bulkscore=0 phishscore=0 suspectscore=0 malwarescore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1011 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207250084
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/L2zvR2BKvsCWBb59nOsVfnVp47U>
Subject: Re: [secdir] Secdir early review of draft-ietf-ippm-capacity-protocol-01
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.39
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: Mon, 25 Jul 2022 20:33:17 -0000

Hi Brian,

Len and I have reviewed your reply and many helpful additional comments. Thanks!
We have a number of additional clarifications to make in the working text for draft-03, based on your reply (and we’ll simply take care of them, or explain later).

Your summary of “advice that should be safe” near the end of your message is very helpful (partly reproduced below).

It may be useful for me to top-post on a few of these items, to open discussion-up on the list before ippm meets (in the last session on Friday, and these points will be covered in the slides):

(1) Define a method for strong authentication of all messages. SHA-256 HMAC is a good choice.
(2) Make that method required to be implemented for all messages, although it could be optional for a site to deploy it on all messages.

At present, we prefer Not adding authDigest and authUnixTimestamp to the Load PDU:
+ Only “control info” is the STOP1 and STOP2 bits in the testAction field (section 7.1)
+ If Attacker clears the STOP bits, Tests stop anyway after specified duration (3 sec time-out)...
+ If Attacker adds a STOP bit, premature end of test but no threat to Internet.
+ Adding SHA-256 significantly increases the minimum packet size.
but this position is worth discussing further.

(3) Require authentication of test setup messages (i.e., Setup Request/Response, Test Activation Request/Response), except possibly for diagnostic purposes. This seems defensible to me if they are “control plane” protocols, for which the added processing for authentication is feasible.
(4) Make authentication of “data plane” messages optional. This seems defensible to me, when accompanied with an explanation that the process of adding authentication to test messages can impact the test result accuracy.

The info in a Status Feedback message/PDU is either the measurements collected during the previous interval, or the new Sending Rate for the client based on measurements at the server. The Status Feedback message/PDU is also used for sampled RTT measurements, therefore this is both a control and a data plane message. So, it seems valuable to protect the control info, but need to keep the measurements in mind. We need to look into what “mode” of operation the AUTH status would be (combined with another mode, which one?).

I think the revised set of modes might look like this now (with “maybe” items):


  1.  REQUIRED AUTH for Control msgs:
Test Setup exchange
Test Activation exchange

  1.  OPTIONAL AUTH for Data messages

maybe only the Status Feedback messages

  1.  OPTIONAL Encryption of Setup messages,
maybe Activation messages too,
maybe use DTLS and
maybe re-use DTLS keying for AUTH aspects (for un-encrypted messages)

  1.  OPTIONAL Un-AUTH Mode

We’ll also be looking into adding an ID to help with Key roll-over, and whether DTLS will work for well for us in the setup/control phase.

Al and Len


From: Brian Weis <bew.stds@gmail.com>
Sent: Wednesday, July 20, 2022 7:23 PM
To: MORTON JR., AL <acmorton@att.com>
Cc: secdir@ietf.org; draft-ietf-ippm-capacity-protocol.all@ietf.org; ippm@ietf.org
Subject: Re: Secdir early review of draft-ietf-ippm-capacity-protocol-01

Hi Al,

Sorry for the late response. [Re-sent including the cc list.]


On Jun 30, 2022, at 9:52 AM, MORTON JR., AL <acmorton@att.com<mailto:acmorton@att.com>> wrote:

Thank you Brian for your review and comments!

Summary of the replies below:

There are two categories of changes needed: text clarifications alone, and text+protocol modifications. We have noted when protocol changes are needed (have not executed protocol changes in the code or working text).

We use a conventional communications setup, with a well-known port at the server. We will clarify this.

The main comment where we are looking for additional feedback is your comment number 3). We understand (?) that there be a fully encrypted mode of operation in IETF Stds track protocols, and that this mode must be the default mode operation. We will gladly implement a strong recommendation from you/SEC-DIR in the protocol specification.

While these are good goals, I’m not aware that the IESG has a strict requirement for a fully encrypted mode of operation for standards track protocols. If you have seen this stated, please point it out to me as I should know  it. But in any case, it is true that both security and privacy concerns should be addressed in a standards track protocol. If there are no privacy concerns with data in the measurement PDUs and there is no sensitive data being transferred in the PDUs, then I don’t believe confidentially is a requirement. You can analyze your PDUs to determine if any revealed data can be used to identify an individual or device that would be correlated with an individual, which would be a privacy issue. Also whether any of the data would if observed would provide value to an attacker, which would be a confidentiality issue. If there are no reasons to encrypt the exchanges, it would be useful to describe the rationale in Security Considerations to show you’ve considered it.

However, authentication of messages is always important to ensure that the messages have been sourced from an authenticated and authorized peer. For protocols between network devices, that authentication and authorization is usually embodied by associating an authentication key with an identity, e.g. IP address.


We appreciate your observation that the Authenticated mode can be expanded to use the authDigest field to achieve important message protections and features like bit error checking.

We have implemented text clarifications in the working text for -02.

thanks for sharing your expertise; one more recommendation will help!

Al and Len




-----Original Message-----
From: Brian Weis via Datatracker <noreply@ietf.org<mailto:noreply@ietf.org>>
Sent: Wednesday, June 22, 2022 8:45 PM
To: secdir@ietf.org<mailto:secdir@ietf.org>
Cc: draft-ietf-ippm-capacity-protocol.all@ietf.org<mailto:draft-ietf-ippm-capacity-protocol.all@ietf.org>; ippm@ietf.org<mailto:ippm@ietf.org>
Subject: Secdir early review of draft-ietf-ippm-capacity-protocol-01

Reviewer: Brian Weis
Review result: Not Ready

I have reviewed this document as part of the security directorate's ongoing
effort to review all IETF documents being processed by the IESG. These
comments were written primarily for the benefit of the security area
directors. Document editors and WG chairs should treat these comments
just like any other last call comments.

The summary of the review is Not ready. (However, as this is an early
review, this should not be unexpected.)

Here are some concerns, comments, and questions.

(1) With the current network flows, there’s some doubt that flows will
actually pass one or more firewalls between the client and server. Section
3 begins by saying

“One end-point takes the role of server, awaiting connection requests
on a well-known port from the other end-point, the client.”

As I understand the above text, the client sends from a well-known port
rather than the conventional method of a server opening a well-known port
and listening on it. So a firewall in front of the client may open an
inbound pinhole of “ephemeral port -> well-known port” (since the client
sent a message from "well-known port -> ephemeral port"). This ought to
be sufficient, from the client’s perspective. But Security Consideration
also says this:

“Firewalls protecting each host can both continue to do
their job normally. This aspect is similar to many other test
utilities available.”

I don’t understand how any reasonable firewall policy would be defined on
the server side, when a client is initiating a protocol to a server’s
ephemeral port. That is, ephemeral ports are usually blocked unless the
server sends an outgoing message from it. So how the firewall policy is
intended to work needs to be described much more clearly. For example, if
there is a co-dependency that a firewall administrator be required to open
all of the ephemeral ports that the server might use in advance, that
needs to be stated. (Having said that, such a policy might very well be
unacceptable to the firewall administrator.) Or if the server is never
expected to have a firewall in front of it this last quoted sentence needs
to be changed to say that.

[acm] We need to clarify the wording in Section 3, specifically:

             One end-point takes the role of server, *listening for* connection requests
             on a well-known *destination* port from the other end-point, the client.

This is the conventional situation at the server in the network; we follow
convention.

In the Sec Considerations, I think you'll agree that firewalls can operate
conventionally with the clarification above. It's the server's firewall
using an open pinhole on the w-k port.

Yes, this seems reasonable. A firewall administrator is likely to agree to open a port to a well-known server if the protocol and server meet the local required security profile.

However, I understand Section 9.1 to say that there is also concern with  firewall being placed in front of the client. I.e., "Firewalls protecting each host”.  If that is so, then the switch from (server w-k port, client eph. port) to (server eph. port, client eph. port) could be problematic for the firewall in front of the client. If a firewall is actually not expected in front of the client then perhaps the text in Section 9.1 could be clarified.

We could reduce the range of open ephemeral ports available at the server FW,
and there is no application listening on any of those ports until a successful
Test Setup exchange takes place.

We can add:

The firewall at the server will need to open a limited range of ephemeral ports to complete
the second exchange: Test Activation (where the client communicates to the server
on an ephemeral destination port *assigned by the server*).

However, thinking about this operationally … I’m less confident that the firewall administrator in front of a server will agree to opening a “limited range of ephemeral ports” that it doesn’t have a guarantee of what server is actually listening on those ports. For example, what if the measurement server is down, and another piece of software attaches to that ephemeral port first? I think relying on ephemeral ports receiving packets without the server first having an outbound packet (and presumably opening a pinhole) is a risky operational approach.

But if the server were to send a message on the ephemeral port after having sent a Setup Response indicating the ephemeral port to the client, that would probably suffice to create the pinhole, and the ephemeral port range probably wouldn’t need to be configured on the firewall. I’m not a firewall expert, but I believe that is a common scenario that is allowed.



-=-=-=-=-=-=-=-=-=-


(2) Can you describe the server’s behavior more clearly, as to how as a
server it listens on an ephemeral port, a range of ephemeral ports, or
whatever strategy you have in mind? This seems backwards from the usual
flows of client using an ephemeral port to contact a server on a well-known
port.

[acm] Somehow, we led you to the reverse of our actual operation. The protocol
works exactly as your last sentence above specifies. Hopefully, the clarification
in Section 3 will do the trick.

Excellant, thanks for the clarification.




The last quote above includes the sentence:

"This aspect is similar to many other test utilities available.”

and seems to indicate that there are existing examples of how this works.
Do these “other test utilities” really have these same data flows?

[acm] Yes, but they have the w-k destination port open on the server, same as
this protocol.
Other utilities mentioned include iperf, netperf, etc. Note that this
section (9) will not be part of the RFC.



If so,
then please describe how an existing firewall placed in front of the server
works when the server is receiving packets on ephemeral ports.

[acm] the FW at server allows an ephemeral port range, and the server is only
listening on ports that have been properly activated by the Test Setup exchange.

From a protocol perspective this seems logical, but as mentioned above it may not be reliable to depend on the FW administrator leaving those ephemeral ports open at all times.



(3) The draft seems to define message authentication only for the Setup
Request and Response messages. In this situation I assume the goal is to
authenticate a peer with the goal of verifying peer authorization only.
That is, when only these messages are authenticated then there is no
real goal of knowing whether the measurements later sent are accurate
since an attacker can theoretically modify messages in transit. The
other messages seem to lack a authDigest field.




But Security Considerations does state

“Client-server authentication and integrity protection for
feedback messages conveying measurements is RECOMMENDED. “

So is message authentication intended as an option for all messages but
the PDUs in -01 just doesn’t show the authDigest field yet? If so, it would
be good to explicitly add them.

In any case, Security Considerations needs to state just what the security
goals are when only some messages are authenticated, and defend why that
is acceptable. For example, I understand that adding message authentication
processing to feedback messages generated by a data plane can affect the
quality of the measurements, and some people might accept that measurements
are not necessarily correct if they have been tampered by an attacker.

[acm] This is one of the main reasons we requested an early SEC-DIR review,
It appears that you understand the trade-off between measurement accuracy
and measurement integrity. We did not plan to try to justify the current
(limited) authentication capabilities of the protocol as the finished spec.

Instead, we would like to provide additional/optional mode(s)
of operation where (listed in Section 10)

WG ver 01 proposal below:

A. Unauthenticated mode (for all phases)
AND
B. OPTIONAL Authenticated set-up only
SHA-256 HMAC time-window verification (5 min time stamp verification)
(could add silent failure option)


New: we could add authDigest everywhere that is possible, as you suggested below.

I believe that not providing for authDigest in all messages will be a problem, so I strongly suggest adding that option. I think that would be option D below.

I assume the above methods intend to use a manually configured keys. You could recommend that they are stored as defined in RFC 7210 ("Database of Long-Lived Symmetric Cryptographic Keys“), but this is just a suggestion. This document shouldn’t depend on how the keys are stored, but it is good advice to use RFC 7210.

However, I note that the current PDUs don’t provide a key identifier, which means that there’s no orderly key rollover method possible. That is, when there is a key change between the client and server, administrators must coordinate to replace the key on both devices at the same time, or at least between tests. Such coordination is typically not operationally feasible with network devices, so a key rollover without  a key identifier typically results in authentication failures until both devices have been updated. If the PDUs in this document did include a key identifier, then the clean key rollover and key selection methods described in RFC 7210 could be used. That would be significant added value.

If you don’t want to add a key identifier, then you do need to add a section for operators giving a list of instructions on how to do an orderly key rollover so that testing is not blocked.

Also, it would be good to add a reference to RFC 6234, which defines SHA-256 HMAC.



-=-=-=-=-=-=-=-=-=- Above options exist in Running Code -=-=-=-=-=-

*** We would like a SEC-DIR recommendation to accomplish C and/or D below:

C. Encrypted Setup Exchange in a tunnel to well-known port:
(remaining transmissions are on a new UDP port-pair, in the clear)
New: could combine Test Activation exchange with Setup, on the well-known port, encrypted.
Need a packet to open the firewall from client to server.

I would not suggest inventing a new Encrypted Setup Exchange. If confidentiality is necessary, then I would suggest protecting the Setup Exchange with DTLS. However, that does not help protecting the other exchanges for either confidentiality or authentication.

It may be possible to derive keys from that  DTLS session which can be used with SHA-256 HMAC to provide authentication the other exchanges. See RFC 5705.  This would provide for a fully automated key management solution, which is generally more secure and easier to manage. I don’t know if OpenSSL supports this or not.



D. Encrypt "all the things"
(Reduce the options, provide the required protocol protection)

I’ve made suggestions for D at the end of this message.




while keeping the following design criteria in mind:
+ the accuracy <-> integrity trade-off (lightweight encryption may see more deployment)
+ synergy: we are already using the OpenSSL library in the running code (for Authentication)

New: we think this mode D might not be used very often, the demands on hosts to generate and
measure at Gbps rates usually require all the cycles they can allocate to the measurement
process.



(4) Section 3 says
[section 5]


“If the Setup Request must be rejected (due to any of the reasons in
the Command response codes listed below), a Setup Response SHALL be
sent back to the client with a corresponding command response value
indicating the reason for the rejection.”

I note that some reasons have to do with the server not being able to
authenticate the client. Assuming the server has an open port or set of
ports that any network device can target, this seems like an opportunity
for an arbitrary network device spoofing a victim IP address to use the
server as a DDoS “bounce” address targeting that victim. That is, the
attacker would create a message with the victim's IP address as source
address, and use a destination address of the measurement server, causing
the measurement server to reply to the intended victim.

A more secure policy would be to silently drop messages that cannot be
authenticated, even though this makes diagnosing the failure harder. The
idea of silently dropping message is mentioned on Page 9, including when
“a directed attack has been detected”, but as these attacks can do a lot
of damage before being detected it’s not really sufficient to just say
that “Attack detection is beyond the scope of this specification”. Yes,
that’s true, but causing a vulnerability in protocol design and assuming
some other system will detect and block it is not sufficient. This is
why it's important to silently drop messages that fail authentication.
Otherwise, the remaining threat needs to be defended in Security
Considerations.

[acm] I see, silent AUTH failure could be a feature of the current AUTH mode
(the option we described above - would need to implement the silent failure).
We need to re-write the paragraph above to reflect the silent behavior when
the AUTH option is used.
So - re-wrote para above. default would be silent, but allow compile time
#define for server requiring Authentication to use reject response.

If the Setup Request must be rejected (due to any of the reasons in the Command
response codes listed below), a Setup Response SHALL be sent back to the client
with a corresponding command response value indicating the reason for the rejection,
unless the server requires Authentication, in which case the Setup Request
SHOULD fail silently. The exception is for operations support: server administrators
using Authentication are permitted to send a Setup Response to support operations
and troubleshooting.

To be a little more precise,  if Authentication validation is successful for the Setup Request message, and the responder can successfully create an Authentication field in the Setup Response, then I don’t see any problem with returning an authenticated response containing an error code for other reasons, e.g. CHSR_CRSP_BADJS. That can be helpful. The issue is returning a message when authentication of the received message failed. So I would substitute the wording in the paragraph above to something like this:

OLD
unless the server requires Authentication, in which case the Setup Request
SHOULD fail silently.

NEW
unless the server cannot successfully authenticate the Setup Request message, in which case the Setup Request
SHOULD fail silently.






This is a protocol change <<<<



(5) Section 5.1 begins by saying

“When the client receives the Setup response from the server it first
checks the cmdResponse value.”

Actually, checking the validity of the authDigest field in the Setup
Response should be the first step. Otherwise, the cmdResponse value is not
known to be trustable.

[acm] Agreed, we likely wrote this before we had an AUTH-mode option, we should
change the wording in the draft to reflect what the protocol actually does...
In fact, we need to first check that the message PDU is correctly formatted
(size and message type)
with the fields we expect, then check the authDigest field, then the
cmdResponse.
Text has been updated, as follows:

When the client receives the Setup response from the server, the client SHALL check:

<t
the message PDU for correct length and formatting (fields have values in-range, beginning with the fields listed below)</t
<t
the controlID, to validate the type of message (Setup)</t
<t
the cmdResponse value</t

This list doesn’t actually seem to check of the authDigest field, or if so I can’t identify it. Reading the text in Section 5.2 of -02 makes me wonder if you intend for the field to ever be populated, but I am confused as to why the client would not want to authenticate the server’s response. Could you clarify this in the document, please?





(6) Section 6.1 does mention using the “Authentication mode, and
Authentication
time stamp” in the context of the Test Activation Request. Can you clarify
how these data fields are used?

[acm] this is a good catch, Test Activation exchange currently does NOT use
the authDigest field, so the initial clarification is to remove these items from the list
(until further changes to the protocol make them active).
We have clarified the list of client actions to populate the request as follows:



The client SHALL use the configuration for
<t
cmdRequest (upstream or downstream)</t
<t
cmdResponse is cleared (all zeroes)</t
<t
and the remaining fields are populated based on default values or command-line options</t
</list

requested in the Setup Request and confirmed by the server in the Setup Response.



Would it be reasonable to add these fields
to the Test Activation Request and Response messages, since they seem to
be control plane messages rather than data plane messages?

[acm] We could add the authDigest to the Test Activation request/response.
THEN, we would explain that
+ Use of optional Authenticated mode requires checking the validity of authDigest in this phase
+ The time stamp in the PDU MUST be within 5 minutes (+/-2.5 minutes) of the current time at the recipient.

This is a protocol change <<<<

This would be a good idea. Otherwise you’ll need  to defend in Security Considerations why it is never important for a server to validate (via authentication) that the Test Activation Request came from a legitimate client, and why it is never important for a client to validate that a Test Activation Response came from server rather than a device spoofing the server. The same would apply to the Status Feedback and Load PDU messages.

One note on the 5 minute window … strictly speaking, it isn’t a complete replay protection mechanism, since all replayed messages within the window will seem legitimate. A time window is useful, but in order to be effective does need to be accompanied by some record of previously received messages within that window. Otherwise, it serves only a a delay protection mechanism.


(7) Section 7.2. There is a note that protection from bit errors could
be desirable. I note that message authentication of these messsage would
ensure that bit errors are detected.

[acm] Ok, so in the optional Authenticated mode (currently in the spec and
running code), authDigest *could be added* to the Status Feedback messages.

This is a protocol change <<<<



(8) Section 8 says

“When the client receives a load or status PDU with the STOP1
indication, it SHALL finalize testing, ….”

Stopping a test seems like an important message to verify that it actually
came from the server rather than an attacker that doesn’t want the measurement
to happen. (Maybe the measurement would result in discovery that the attacker
is using some resources, or some such.) An authDigest field would resolve
that threat.

[acm] Ok, so in the optional Authenticated mode (currently in the spec and
running code), authDigest *could be added* to the Load PDU messages to validate STOP1.

This is a protocol change <<<<



(9) Section 10 says

“Cooperating source and destination hosts and agreements to test
the path between the hosts are REQUIRED.”

I assume this cooperation is determined by authorization through the use
of the authDigest field and the known identity associated with the key used to
create the authDigest field. If so this sentence should say this more
explicitly.

[acm] Yes, adding:
One way to assure a cooperative agreement employs the optional Authorization mode
through the use of the authDigest field and the known identity associated with
the key used to create the authDigest field. Other means are also possible,
such as access control lists at the server.

OK, sounds good.






(10) The authDigest usage needs to be defined, i.e. what bytes are included
in the digest, etc.
[acm] Len confirms:
The entire control header for a Setup Request is covered by the digest.
The current Unix time is inserted just before it is calculated.

These are important statements. I will note that because the authenticated portion of the message doesn’t include the ID of the client,  then the authentication material (e.g., key) must be associated with a client IP address.  This should be stated. This mitigates an attacker from stealing a key from a device and being able to send fake authenticated messages.




Also the choices that can be configured for authMode
should be stated. Also, there should be a registry of authentication methods
for interoperability.

[acm] Ok, right now we only have 2 modes, as described: unAUTH and AUTH (Setup
exchange only).
We could implement the authDigest field in more aspects of the protocol, as
noted above. But this would continue as the single AUTH mode in the next protocol version.

ASSUMING that the IESG will prefer that we have fully encrypted operation "on by default",
we would truly appreciate a recommendation for the encryption method that works with
our UDP-based control and measurement protocol, AND satisfies all the future SEC reviewers!

IOW, we have running code and want to avoid re-do.
We will be glad to take a strong SEC-DIR recommendation
in order to avoid blocking comments later. It's very simple. We are putty in your hands.

As a disclaimer, I cannot speak authoritatively for what the IESG or Security Area Directors will require, but I can give some advice that should be safe. That is:

(1) Define a method for strong authentication of all messages. SHA-256 HMAC is a good choice.
(2) Make that method required to be implemented for all messages, although it could be optional for a site to deploy it on all messages.
(3) Require authentication of test setup messages (i.e., Setup Request/Response, Test Activation Request/Response), except possibly for diagnostic purposes. This seems defensible to me if they they are “control plane” protocols, for which the added processing for authentication is feasible.
(4) Make authentication of “data plane” messages optional. This seems defensible to me, when accompanied with an explanation that the process of adding authentication to test messages can impact the test result accuracy.
(5) Since the devices performing measurement are network devices with constrained processing and operations, the required method  will likely use manually configured keys. Provide for an orderly key rollover by including key ids in the PDUs for the authentication keys, This will be helpful for both security and operations of the protocol.
(6) Consider whether DTLS can be used as an option for the Setup Request/Response exchange, and possibly add extract keying material from that exchange using RFC 5705 for use of SHA-256 HMAC for the other exchanges.

I hope that helps.

Thanks,
Brian




(11) The use of authUnixTime is not stated anywhere. Why is time important,
how does a receiver determine if the time is accuracy given latency in the
network, and what threats does it resolve?

[acm]need to clarify:
The time stamp and the 5 minute window (+/- 2.5 seconds) is used to prevent the replay of a setup request.
All fields would otherwise be valid if the timestamp field was not included (which is also covered by the hash).

Added text to explain above.




Thanks,
Brian