Re: [Rift] RIFT security review

"Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net> Tue, 23 April 2019 17:30 UTC

Return-Path: <zzhang@juniper.net>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3680112042B for <rift@ietfa.amsl.com>; Tue, 23 Apr 2019 10:30:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.327
X-Spam-Level:
X-Spam-Status: No, score=-1.327 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, KHOP_DYNAMIC=1.363, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_REMOTE_IMAGE=0.01, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net
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 llp55jgz7G9v for <rift@ietfa.amsl.com>; Tue, 23 Apr 2019 10:30:48 -0700 (PDT)
Received: from mx0a-00273201.pphosted.com (mx0a-00273201.pphosted.com [208.84.65.16]) (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 5CC5A12024E for <rift@ietf.org>; Tue, 23 Apr 2019 10:30:48 -0700 (PDT)
Received: from pps.filterd (m0108158.ppops.net [127.0.0.1]) by mx0a-00273201.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x3NHTnfH003279; Tue, 23 Apr 2019 10:30:44 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=PPS1017; bh=wt2zWwJXmB9rhS+thBQNGgyAhqYAVnK7L5E0ZwKguVs=; b=FnxvbLtnakaftBa2c4gDPL8UmGliTp/exU9+LBoE7eF/H/IuJZ/jGIou2KcnNetfobtS yNtwg/O5mmp8fuxxSw9j0hm0tSKmWFG9iMpfqbHDwNJM6YeMwdHXirsk6u2H5eU2wT8u zZRDuCGQ0IDRZU5psvjlfAPh38YSwvFFT41QF6kxWN+feQJluMwhHb0mQ9G2RHT/UcPt HIa30cLjyAHBNupHFtN1Z2dwbKDF+gSvLJhhJnXaiICNir606jvU66KscrSX5QaPKWiW 9AvS+53NbIS2waFScnEQCTqcohljZs/5gYJVEYmdzZXxnQrJ5/l2suUOxgbnBhdyNjx1 pA==
Received: from nam03-co1-obe.outbound.protection.outlook.com (mail-co1nam03lp2052.outbound.protection.outlook.com [104.47.40.52]) by mx0a-00273201.pphosted.com with ESMTP id 2s20rmgpt0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 23 Apr 2019 10:30:43 -0700
Received: from SN2PR05MB2463.namprd05.prod.outlook.com (10.166.213.8) by SN2PR05MB2638.namprd05.prod.outlook.com (10.167.14.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.12; Tue, 23 Apr 2019 17:30:41 +0000
Received: from SN2PR05MB2463.namprd05.prod.outlook.com ([fe80::f592:9f8f:f5ad:d73a]) by SN2PR05MB2463.namprd05.prod.outlook.com ([fe80::f592:9f8f:f5ad:d73a%5]) with mapi id 15.20.1835.007; Tue, 23 Apr 2019 17:30:41 +0000
From: "Jeffrey (Zhaohui) Zhang" <zzhang@juniper.net>
To: "Scott G. Kelly" <scott@hyperthought.com>, Antoni Przygienda <prz@juniper.net>, Bruno Rijsman <brunorijsman@gmail.com>
CC: "rift@ietf.org" <rift@ietf.org>
Thread-Topic: RIFT security review
Thread-Index: AdT5+dFkdty2AnMSST2sp6Q1ovQg4Q==
Content-Class:
Date: Tue, 23 Apr 2019 17:30:40 +0000
Message-ID: <SN2PR05MB2463D1833A557E99671C8A57D4230@SN2PR05MB2463.namprd05.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
dlp-product: dlpe-windows
dlp-version: 11.1.100.23
dlp-reaction: no-action
msip_labels: MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Enabled=True; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Owner=zzhang@juniper.net; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_SetDate=2019-04-23T17:30:37.2151907Z; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Name=Juniper Internal; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Application=Microsoft Azure Information Protection; MSIP_Label_0633b888-ae0d-4341-a75f-06e04137d755_Extended_MSFT_Method=Automatic; Sensitivity=Juniper Internal
x-originating-ip: [66.129.241.10]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: c6aca113-b073-4690-38f8-08d6c811686b
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:SN2PR05MB2638;
x-ms-traffictypediagnostic: SN2PR05MB2638:
x-ms-exchange-purlcount: 5
x-microsoft-antispam-prvs: <SN2PR05MB26385C349C2FFA2E548CC28CD4230@SN2PR05MB2638.namprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:8273;
x-forefront-prvs: 0016DEFF96
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(366004)(346002)(39860400002)(136003)(189003)(199004)(486006)(26005)(186003)(1941001)(14444005)(102836004)(25786009)(966005)(606006)(7696005)(478600001)(99286004)(476003)(110136005)(76116006)(66556008)(64756008)(733005)(66946007)(14454004)(66446008)(53546011)(6436002)(316002)(4326008)(71190400001)(71200400001)(3480700005)(256004)(66476007)(6506007)(6246003)(55016002)(7116003)(236005)(7736002)(9686003)(97736004)(68736007)(229853002)(53936002)(73956011)(66066001)(6306002)(54896002)(33656002)(86362001)(53946003)(9326002)(790700001)(3846002)(6116002)(8936002)(5660300002)(66574012)(8676002)(15650500001)(81156014)(81166006)(2420400007)(861006)(7110500001)(74316002)(52536014)(2906002)(559001)(569006); DIR:OUT; SFP:1102; SCL:1; SRVR:SN2PR05MB2638; H:SN2PR05MB2463.namprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: juniper.net does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: jrBZX4pluVoJn06fDQFJbEGFghz/ZHVbFD9ZmA1Hm23WbrHr2EFptBtckY/Pmo3u1feyswxSgQhofAawb76ZwgIiCzk9d+dh6SS4wkMVs6F0sHv+pKXnI2sG2eKjGI0wBt+OhqD8c5YudTkYuCTUtdiibh6rm8OpoxqXyGJGb6ouwkeAjp648XbUXwdUWATCofNfjK7+eVTyc1kQOU0B/kQezA8ASX2BASEI8LwyGaYvHH0/wmOh8hQg2WqvQuPHqj8UUEYCq6o4GNQ5XXBeUEJhqmO0gvtRDuXw7Y/Lyas24KF9yzuozklBJQgtBOb4+wi5wuFiwW5+t/yPA5rOR/ZQgkAlI1jOYz6EMHPmBPPUrVtIcHVcihgkg8YMh0TN7i2oG8XvcGbe7bzsPUGK/6ahY5jL5+n/OO1R9dJFwME=
Content-Type: multipart/alternative; boundary="_000_SN2PR05MB2463D1833A557E99671C8A57D4230SN2PR05MB2463namp_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-Network-Message-Id: c6aca113-b073-4690-38f8-08d6c811686b
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2019 17:30:40.9538 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR05MB2638
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-04-23_05:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904230120
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/BVZ1nltfnNATvhuiBe4mh39zCOs>
Subject: Re: [Rift] RIFT security review
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 23 Apr 2019 17:30:51 -0000

Hi Scott,

Thanks for your security review on RIFT spec. I am copying this to the RIFT mailing list.

Please see Tony's response in the email below and the revisions in https://www.ietf.org/id/draft-ietf-rift-rift-05.txt. Could you review again to make sure all your comments/concerns have been addressed?

Thanks!
Jeffrey



Juniper Internal
From: Antoni Przygienda <prz@juniper.net>
Sent: Thursday, April 18, 2019 12:34 PM
To: Jeffrey (Zhaohui) Zhang <zzhang@juniper.net>; rift-chairs@ietf.org; Bruno Rijsman <brunorijsman@gmail.com>
Subject: Re: RIFT security review

My comments on the security review:


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 ready with issues



>From the abstract, this document outlines a specialized, dynamic routing protocol for Clos and fat-tree network topologies.



(should that read CLOS?)

Clos was a French mathematician in Bell Labs who invented the stuff so it's really "Clos"

Wikipedia: "Clos networks are named after Bell Labs researcher

Charles Clos, who proposed the model in 1952 as a way to overcome the

performance- and cost-related challenges of electromechanical switches then used in telephone networks."

 Following is a brief summary of comments and questions by section.



5.4.1 includes this sentence:



   The most security conscious operators will want to have full control

   over which port on which router/switch is connected to the respective

   port on the "other side", which we will call the "port-association

   model" (PAM) achievable e.g. by pairwise-key PKI.



What is "pairwise-key PKI"?

pair-wise set of private/public key, i.e. a designated key pair per port. I'll try to word it better


 Secion 5.4.2 says "Low processing overhead and efficiency messaging are also a goal."



I suggest replacing efficiency with efficient

ack

 It also says "Message privacy achieved through full encryption is a non-goal"



I suggest saying "Message confidentiality is a non-goal" instead.

ack

 Section 5.4.3

"Length of Fingerprint:  8 bits.  Length in 32-bit multiples of the

      following fingerprint not including lifetime or nonces.  It allows

      to navigate the structure when an unknown key type is present.  To

      clarify a common cornercase a fingerprint with length of 0 bits is

      presenting this field with value of 0."



Does length 0 mean no fingerprint is present (i.e. fingerprints are not provided)? I don't understand that last sentence.

yes, it does. I try to improve the wording.

 The definition for "Security Fingerprint" includes this  sentence:



"If the fingerprint is shorter than the significant bits are left aligned and remaining bits are set to 0."



I don't understand this sentence. I think you mean that      if the fingerprint bit length is not an even multiple of 32, then it is left-aligned, and the rightmost unused bits are set to 0. But that's just a guess.

yes, I try to word better.

 5.4.4

"Any implementation including RIFT security MUST generate and wrap around local nonces properly"



I see the term "nonce" used elsewhere, but because it can wrap (and therefore repeat with regularity),
I think this is a poor choice for naming this field. It seems to be more of a counter.
I think most security folks would agree that a nonce used for security purposes should,
by definition, repeat only with negligible probability.

I was under the impression that nonce is a well-known term in cryptography

https://en.wikipedia.org/wiki/Cryptographic_nonce
[https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Nonce-cnonce-uml.svg/1200px-Nonce-cnonce-uml.svg.png]<https://en.wikipedia.org/wiki/Cryptographic_nonce>

Cryptographic nonce - Wikipedia<https://en.wikipedia.org/wiki/Cryptographic_nonce>
In cryptography, a nonce is an arbitrary number that can be used just once in a cryptographic communication. It is similar in spirit to a nonce word, hence the name.It is often a random or pseudo-random number issued in an authentication protocol to ensure that old communications cannot be reused in replay attacks.They can also be useful as initialization vectors and in cryptographic hash ...
en.wikipedia.org



 On a related note, does this really provide anti-replay protection?
Elsewhere in the document (e.g. section 5.4.4) it says that implementations could go up to
5 minutes without incrementing nonces. Can they send multiple packets with the same
nonce during this interval? If so, what prevents replay of a captured packet within that interval?



Also, because wrapping (of this 16 bit value) is supported, it's also possible that an earlier packet could be replayed (assuming the peer nonce also aligned), right? The odds of this seem low, but could the protocol/endpoint states be manipulated to improve the odds? Not sure. But if you are assuming this can't happen, this security-relevant assumption should be called out.



  1.  Correct, for efficieny purposes we open up to a 5 min window which we consider an acceptable risk per point 2
  2.  it is the combination of local and remote nonce so it's really a 32 bit number. The chance that the combination repeats is obviously very small.


 5.4.7 says



   "If an implementation supports disabling the security envelope

   requirements while sending a security envelope an implementation

   could shut down the security envelope procedures while maintaining an

   adjacency and make changes to the algorithms on both sides then re

   enable the security envelope procedures but that introduces security

   holes during the disabled period."



Aside from the fact that this needs word-smithing, should this be called out in the security
considerations section? This eeems to be saying that it's not a good idea to temporarily
maintain adjacency while disabling security, so is this a SHOULD NOT?


Will improve wording. Yes, it is a SHOULD NOT but sometimes implementations do
that to not loose adjacency and change keys easily.


 section 8.4

flodding -> flooding



section 8.4 also says



   It is expected that an

   implementation detecting too many fake losses or misorderings due to

   the attack on the number would simply suppress its further processing.



what are "fake losses"?



I am not a routing expert, so there may be additional concerns that someone better versed in routing would raise.
Will improve wording. "Fake losses" is a possible attack vector where an attacker intercepts packets, modifies the packet number  to simulate a "packet number loss/misorder" and forwards the packet on.

Please fwd' to reviewer if needed & tell me whether you want notification on new version ...

--- tony

________________________________
From: Jeffrey (Zhaohui) Zhang
Sent: Thursday, April 18, 2019 7:26 AM
To: Antoni Przygienda
Subject: RIFT security review

Hi Tony,

Please see https://datatracker.ietf.org/doc/review-ietf-rift-rift-04-secdir-early-kelly-2019-04-11/.

Thanks.
Jeffrey

Juniper Internal