Re: [6lo] Benjamin Kaduk's Discuss on draft-ietf-6lo-ap-nd-15: (with DISCUSS and COMMENT)

"Pascal Thubert (pthubert)" <pthubert@cisco.com> Wed, 05 February 2020 13:16 UTC

Return-Path: <pthubert@cisco.com>
X-Original-To: 6lo@ietfa.amsl.com
Delivered-To: 6lo@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 76CBE120805; Wed, 5 Feb 2020 05:16:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.499
X-Spam-Level:
X-Spam-Status: No, score=-14.499 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-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=gDgGTjZO; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=Ruu8JMbt
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 HHxvclMRZz2W; Wed, 5 Feb 2020 05:16:03 -0800 (PST)
Received: from rcdn-iport-6.cisco.com (rcdn-iport-6.cisco.com [173.37.86.77]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 277E412080F; Wed, 5 Feb 2020 05:16:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=35914; q=dns/txt; s=iport; t=1580908563; x=1582118163; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=6SgejzQ1vcJaOXgt36l0+wi8IPoH4uHLAX5cEfiQBgM=; b=gDgGTjZO7FchruACqFxjXE3/eUrotQNOYEDvfz35wuiI2UYcAjtP8h3Y Li3x0HIZ9tHws24bSA/tGgY3Wmd6K5Z73CkOmBWAqDBar47Rz8VbCaL0G j2aW5VRen66ZrfpRofvMcPvr2EQiYV8QFwWRwghZTcvgPpmf6oxAPUHu4 0=;
IronPort-PHdr: 9a23:z8kGDhYerBx/evwsbRsTGrv/LSx94ef9IxIV55w7irlHbqWk+dH4MVfC4el20gabRp3VvvRDjeee87vtX2AN+96giDgDa9QNMn1NksAKh0olCc+BB1f8KavycywnFslYSHdu/mqwNg5eH8OtL1A=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AeCAAxvzpe/5BdJa1bCg4PAQEBCQERBQUBgXuBVFAFbFggBAsqhBWDRgOKeIJfgQGXEYFCgRADVAkBAQEMAQEjCgIBAYRAAheCIyQ4EwIDDQEBBAEBAQIBBQRthTcMhWYBAQEBAxIICQQNDAEBJQUNAQsEAgEIEQQBAQMCJgICAjAVCAgCBAENBQgagwWCSgMuAQIMoDUCgTmIYnV/M4J/AQEFgTMCDkGDDhiCDAMGgQ4qhR6EO3YQgUMagUE/gRABR4FOSTU+gmQCAQEBARiBBgUJAQcEAQYBBAcYJIJqMoIsjT4SEoJ1nxMKgjqHSoF5g02FDYRBgkiID4RIi2qMa4EdWohqkjUCBAIEBQIOAQEFgWkiRCNYAw4IcBU7gmxQGA2OHQkCARcVgzuFFIUEOgF0AoEnimMBAQ8XB4IUAQE
X-IronPort-AV: E=Sophos;i="5.70,405,1574121600"; d="scan'208";a="717938118"
Received: from rcdn-core-8.cisco.com ([173.37.93.144]) by rcdn-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 05 Feb 2020 13:16:00 +0000
Received: from XCH-ALN-004.cisco.com (xch-aln-004.cisco.com [173.36.7.14]) by rcdn-core-8.cisco.com (8.15.2/8.15.2) with ESMTPS id 015DG0X0013822 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 5 Feb 2020 13:16:01 GMT
Received: from xhs-aln-001.cisco.com (173.37.135.118) by XCH-ALN-004.cisco.com (173.36.7.14) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 5 Feb 2020 07:16:00 -0600
Received: from xhs-aln-001.cisco.com (173.37.135.118) by xhs-aln-001.cisco.com (173.37.135.118) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 5 Feb 2020 07:15:58 -0600
Received: from NAM11-CO1-obe.outbound.protection.outlook.com (173.37.151.57) by xhs-aln-001.cisco.com (173.37.135.118) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 5 Feb 2020 07:15:58 -0600
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fWamGK48qAz6nY56fjcnzqwTIkLEtKcXLoPXgCda5xKYHNJ3L5yetmLN7CO1w6VRtLUudk6swxJndBgaR7xvdii1hgo+wA0r91aMR0gtobZxfW5LxTDYhXs0bBGUNoDRKrzIWv29HqoZVTYHngRRsurOCt/SlCrV/a9iGcSqksCGpHqFcNC5fjct+Anc/Bgi3rzeNkfIkWrekq7fiD+gEd06dsbllji1vaBv/VIwuMYN39vnQtC6kMM0ezxK8vofXQK2o+fWJ7fDZKnOFIu/tgY+B6BsDBsRahOGUqcIc/NZf2AHaUDvwzuiFioghhMgIJAiH2B6+KWwv3N7Hqo5Jw==
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=6SgejzQ1vcJaOXgt36l0+wi8IPoH4uHLAX5cEfiQBgM=; b=mD34Q87Fh1Sh1u5UfQxwtJOruoCu6PLZyzmoJvukeXP9hrpKKOSPc8LEWKF5HRx1+swmj6DGLDfYn9uR5eUxaUwuEgil/4jnqpGeP7a9XlquLSNU7QxXsEWZEEseS4p5Vz/mba5oO49dHh3eynQYLy2MVy/oL2H6rPDVqSPcPiSuKABUnUoD/cVUjJ9bLI+OyPCuNLLsS7jLjMGEIP1tlcB2CbK3AdMIrfoORTgOSgA67g7JAFBS8hlxaCmOMdq/IpS7NsiOwjlzaBw+2OG5/AHcOjzYAHqFVuDxFBuPdYqi64mY0xtahf9yKV7U1mwmhukE3SHJwkRoDRil3IbkhQ==
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=6SgejzQ1vcJaOXgt36l0+wi8IPoH4uHLAX5cEfiQBgM=; b=Ruu8JMbtTfUa/IsalX69hTax2VV6rpdd3qFRUsaRA2kWlACg0+FCWbB/RxcAmSWhOOmh0gM8Um8FQD4hKxNsMiZZ7Ftcu3qUSHQsVm4kvPUu7UwTgCApVsXOlbdrercnGKdn06ltMWWsbb77jNszGQcqUhan3buFCtmjtD+FXFU=
Received: from MN2PR11MB3565.namprd11.prod.outlook.com (20.178.250.159) by MN2PR11MB3647.namprd11.prod.outlook.com (20.178.251.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.21; Wed, 5 Feb 2020 13:15:57 +0000
Received: from MN2PR11MB3565.namprd11.prod.outlook.com ([fe80::fd76:1534:4f9a:452a]) by MN2PR11MB3565.namprd11.prod.outlook.com ([fe80::fd76:1534:4f9a:452a%3]) with mapi id 15.20.2707.020; Wed, 5 Feb 2020 13:15:57 +0000
From: "Pascal Thubert (pthubert)" <pthubert@cisco.com>
To: Benjamin Kaduk <kaduk@mit.edu>, The IESG <iesg@ietf.org>
CC: "draft-ietf-6lo-ap-nd@ietf.org" <draft-ietf-6lo-ap-nd@ietf.org>, "Shwetha Bhandari (shwethab)" <shwethab@cisco.com>, "6lo-chairs@ietf.org" <6lo-chairs@ietf.org>, "6lo@ietf.org" <6lo@ietf.org>
Thread-Topic: Benjamin Kaduk's Discuss on draft-ietf-6lo-ap-nd-15: (with DISCUSS and COMMENT)
Thread-Index: AQHV2IzboswYmzjUQ0uf9MGXohRBl6gMmtFA
Date: Wed, 05 Feb 2020 13:15:43 +0000
Deferred-Delivery: Wed, 5 Feb 2020 13:15:14 +0000
Message-ID: <MN2PR11MB3565DFB17A364038B57F990CD8020@MN2PR11MB3565.namprd11.prod.outlook.com>
References: <158051274858.21121.16988738930495243847.idtracker@ietfa.amsl.com>
In-Reply-To: <158051274858.21121.16988738930495243847.idtracker@ietfa.amsl.com>
Accept-Language: fr-FR, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=pthubert@cisco.com;
x-originating-ip: [2001:420:44f3:1300:41e7:7725:e525:b2e8]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a4819b11-e6fe-4156-2fc7-08d7aa3d8985
x-ms-traffictypediagnostic: MN2PR11MB3647:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <MN2PR11MB3647E5DF268C00B8C4B3DB45D8020@MN2PR11MB3647.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0304E36CA3
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(396003)(346002)(366004)(136003)(39860400002)(189003)(199004)(53546011)(966005)(4326008)(76116006)(9686003)(55016002)(6506007)(186003)(71200400001)(66574012)(6666004)(86362001)(8936002)(30864003)(81166006)(81156014)(316002)(8676002)(478600001)(54906003)(66476007)(110136005)(66446008)(2906002)(66946007)(33656002)(64756008)(5660300002)(7696005)(52536014)(66556008)(559001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB3647; H:MN2PR11MB3565.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: Yr2lIYUDMzdbD9D+gXFL7iYVhI42bsVdUYhs4EEPOlXmlSPfNljrD9bzySEl7ADIWGFX3ULDJqxFFdgLMPveU8+f/rj3Tb4a8bmE5WDzHWqOJcYLLSokbpLVBOFPkHk/ztQR9x4BjezuM7Hm79BkvRNyG7jc9g2LD0kWKRihGFRyglSP3/1Uf8OqjJ5rcLpEdCHYLJJ7EF3gQaSeYE80Rs4WDH5NJjOyC7liGOCIKNKHLH/gR9P3GzAWLxejNQwea8tuj+ON8m5kouyW368bVbOAPqmkncj5L/EOf3DOMd/S5TavMT+YxfaF94oVhXj5NIIzxUwCoR+Fiu8K1ZIOhYcZhhldX3WzGMRGjEGpifdDANIW9qH0H8SoZ/ub1GLDPaLXnqZKTmXE9QRb0EYd3r2fOB0X3rJuEacT9D3Qu3QkkbcNvIBi3rUzlcCOZBRUSXStDNERbdbqoAXy2AuGsq9giPxCZNdG2uwgn0Y1MSWtI70MaqQYN5GPaAzFVwfOjJtyIIHh9qIY2FiMxa6oUw==
x-ms-exchange-antispam-messagedata: QprVScum1+D9rksUQq0eAXulZW2EqllSMpt6og0+ipsRraNCiL3w283hG32Th5DQkoMe/aKB5M+YFb560r6ybF81ABI19xOYfh9NcTUtcHtUfEdz0le6wYLJdFw3Dgkzq0kXBbJDmBJ7Z3+wEkPA9lqnbx0LxaD3EV0FZcDYsteLe0XQjKCRb19G7Q3PUl0MSyeRzrM/h6n17go2FDcUFA==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: a4819b11-e6fe-4156-2fc7-08d7aa3d8985
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Feb 2020 13:15:57.2069 (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: OZ8pFKcidkQoCaOytoiJqJXHsbCb0dKZjIw0rAaaLoKYmkU4nJOoeNlF1VvKKJFW2NZSNCjGNFkq7qmmxqT2FA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3647
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.36.7.14, xch-aln-004.cisco.com
X-Outbound-Node: rcdn-core-8.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/6lo/DPB7X4-olWYXnoI01Sfws8y80D0>
Subject: Re: [6lo] Benjamin Kaduk's Discuss on draft-ietf-6lo-ap-nd-15: (with DISCUSS and COMMENT)
X-BeenThere: 6lo@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Mailing list for the 6lo WG for Internet Area issues in IPv6 over constrained node networks." <6lo.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/6lo>, <mailto:6lo-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/6lo/>
List-Post: <mailto:6lo@ietf.org>
List-Help: <mailto:6lo-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/6lo>, <mailto:6lo-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Feb 2020 13:16:07 -0000

Hello again Benjamin:

About your discuss below we published -18 that has text from Rene that removes the uncertainty on compression.
Please have a look at https://www.ietf.org/rfcdiff?url2=draft-ietf-6lo-ap-nd-18 and let us know if the diffs correct the issue properly.

Many thanks again

Pascal

> -----Original Message-----
> From: Benjamin Kaduk via Datatracker <noreply@ietf.org>
> Sent: samedi 1 février 2020 00:19
> To: The IESG <iesg@ietf.org>
> Cc: draft-ietf-6lo-ap-nd@ietf.org; Shwetha Bhandari (shwethab)
> <shwethab@cisco.com>; 6lo-chairs@ietf.org; Shwetha Bhandari (shwethab)
> <shwethab@cisco.com>; 6lo@ietf.org
> Subject: Benjamin Kaduk's Discuss on draft-ietf-6lo-ap-nd-15: (with DISCUSS
> and COMMENT)
> 
> Benjamin Kaduk has entered the following ballot position for
> draft-ietf-6lo-ap-nd-15: Discuss
> 
> When responding, please keep the subject line intact and reply to all email
> addresses included in the To and CC lines. (Feel free to cut this introductory
> paragraph, however.)
> 
> 
> Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
> for more information about IESG DISCUSS and COMMENT positions.
> 
> 
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-6lo-ap-nd/
> 
> 
> 
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
> 
> The CIPO description specifies that a 5-bit Reserved1 field and a 13-bit Public
> Key Length field are combined to fit into a 16 (not 18)-bit space.
> (The Figure shows the Public Key Length field as 11 bits.)
> 
> Why do we need to allow ambiguity/flexibility as to the point representation
> within a given Crypto-Type value (as opposed to fixing the representation as a
> parameter of the Crypto-Type)?  Alternately, what does "(un)compressed"
> mean, as it's not really clarified directly?  Furthermore, Table 2 lists an
> "(un)compressed" representation for type 0 (over P-256), but RFC 7518 notes
> that the compressed representation is not supported for P-256 (Section
> 6.2.1.1).  I also am not finding the needed codepoints registered in the JOSE
> registries to use ECDSA25519 (crypto-type 2) -- do we need to register
> anything there?
> 
> Per my comment on Section 4.4, there may be some implicit
> expectation/requirement of 128+-bit ROVRs for AP-ND, but I didn't find where
> such a requirement was stated.
> 
> 
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
> 
> Thanks for this well-written document!  It will be good to see this stuff getting
> deployed.
> 
> What's the risk of DoS via (short) address exhaustion in terms of 6LBR
> resources (as distinct from 6LR resources mentioned at the end of Section 7.1)?
> 
> Section 1
> 
>    In this specification, a 6LN generates a cryptographic ID (Crypto-ID)
>    and places it in the ROVR field during the registration of one (or
>    more) of its addresses with the 6LR(s).  Proof of ownership of the
>    Crypto-ID is passed with the first registration exchange to a new
>    6LR, and enforced at the 6LR.  The 6LR validates ownership of the
>    cryptographic ID before it creates any new registration state, or
>    changes existing information.
> 
> I'll read on and see, but how much trust does this imply that we require of all
> 6LRs (as opposed to the 6LBR, which is kind of required to be pretty trusted)?
> [ed.: basically complete trust is required]
> 
>    The protected address registration protocol proposed in this document
>    enables Source Address Validation (SAVI) [RFC7039].  This ensures
>    that only the actual owner uses a registered address in the IPv6
>    source address field.  A 6LN can only use a 6LR for forwarding
>    packets only if it has previously registered the address used in the
>    source field of the IPv6 packet.
> 
> nit: this last sentence is written as if we not only enable, but also require, SAVI.
> 
>    The 6lo adaptation layer in [RFC4944] and [RFC6282] requires a device
>    to form its IPv6 addresses based on its Layer-2 address to enable a
>    better compression.  This is incompatible with Secure Neighbor
>    Discovery (SeND) [RFC3971] and Cryptographically Generated Addresses
>    (CGAs) [RFC3972], since they derive the Interface ID (IID) in IPv6
>    addresses with cryptographic keys.
> 
> Are we going to have some further discussion of the scope of that loss of
> functionality and/or alternative mechanisms to achieve those goals, or is this
> statement just intended to note the incompatibility?
> 
> Section 3
> 
>    The proof requires the support of Elliptic Curve Cryptography (ECC)
>    and that of a hash function as detailed in Section 6.2.  To enable
>    the verification of the proof, the registering node needs to supply
>    certain parameters including a Nonce and a signature that will
>    demonstrate that the node has the private-key corresponding to the
>    public-key used to build the Crypto-ID.
> 
> nit: the proof itself may only indirectly involve a hash, since we use non-
> prehash Ed25519 (but the hash function is still needed to generate the Crypto-
> ID itself).
> 
> nit(?): I think we tend to see "possesses the private key" more often than "has
> the private-key", for parallelism with the "proof of possession" term of art.
> 
>    The elliptic curves and the hash functions that can be used with this
>    specification are listed in Table 2 in Section 8.3.  The signature
>    scheme that specifies which combination is used is signaled by a
> 
> nit: this could be misread as saying that the Table is authoritative, not the
> registry.
> 
> Section 4.1
> 
>    The Crypto-ID is derived from the public key and a modifier as
>    follows:
> 
>    1.  The hash function indicated by the Crypto-Type is applied to the
>        CIPO.  Note that all the reserved and padding bits MUST be set to
>        zero.
>    2.  The leftmost bits of the resulting hash, up to the size of the
>        ROVR field, are used as the Crypto-ID.
> 
> This construction seems to allow for some malleability, in that an attacker who
> observes a given Crypto-ID and CIPO could produce a related, valid, Crypto-ID
> by reducing the ROVR length and truncating what was received.  I haven't
> attempted to explore what (if any) potential consequences there are of such
> malleability, and would like to know if anyone else has already done so.  It
> looks like the NDPSO construction includes the length of the Crypto-ID, so it
> would be hard for an attacker to do much with such a truncated Crypto-ID, but
> attacks only get better...
> 
> Section 4.2
> 
> nit: I confess I'm missing what compels us to produce a de novo definition of
> the "Status" field (and Length field) as opposed to deferring to the RFC
> 8505 definition, as we do for most of the other fields.
> 
> Section 4.3
> 
>    Crypto-Type:  8-bit unsigned integer.  The type of cryptographic
>       algorithm used in calculation Crypto-ID (see Table 2 in
>       Section 8.3).  Although the different signature schemes target
>       similar cryptographic strength, they rely on different curves,
>       hash functions, signature algorithms, and/or representation
>       conventions.
> 
> While the currently-defined signature schemes target similar cryptographic
> strength, do we need to imply that all future ones will also target a similar
> strength (especially since Section 8.3 admits the possibility of "better
> security")?
> 
>    Modifier:  8-bit unsigned integer.  Set to an arbitrary value by the
>       creator of the Crypto-ID.  The role of the modifier is to enable
>       the formation of multiple Crypto-IDs from a same key pair, which
>       reduces the traceability and thus improves the privacy of a
>       constrained node that could not maintain many key-pairs.
> 
> It may be worth digging in a little further to the threat model being addressed
> here -- while I laud the ability to have multiple Crypto-IDs from a single keypair,
> it seems that the tracking-prevention this affords implies an attacker who can
> observe Crypto-IDs, most likely at multiple points in the network.  Are Crypto-
> IDs used for anything other than EAROs?  I don't have a great sense for how
> likely it is that an attacker in position to observe (a subset of) EAROs would not
> also be in a position to observe at least one associated CIPO, which includes all
> the information needed to generate the Crypto-ID other than the Modifier.
> With only an 8-bit Modifier space, brute-forcing the other possible Crypto-IDs
> for that keypair is not terribly strenuous, whereas allowing for a (potentially
> variable length?) larger Modifier, say 64 bits, would substantially increase the
> work-factor needed to predict (and store!) other Crypto-IDs that might be used
> for this keypair.  Given that the CIPO already carries the public key itself, it's
> not entirely clear how space-constrained we are so as to limit this to just
> 8 bits of modifier.
> 
>    Padding:  A variable-length field completing the Public Key field to
>       align to the next 8-bytes boundary.
> 
> (MUST be set to zero by sender and ignored by receiver, as well?)
> 
>    The implementation of multiple hash functions in a constrained
>    devices may consume excessive amounts of program memory.
> 
> But multiple signature algorithm implementations will not?
> 
> Section 4.4
> 
> Is there some more discussion to have about how NDPSO includes only a
> specific fixed set of information under the signature but RSAO signs all options
> that appear prior to it in the message?
> 
> nit: style suggests parallelism between the Section 4.3 and 4.4 introductory
> remarks (e.g., "this specification defines the NDP Signature Option (NDPSO)").
> 
>    As opposed to the RSA Signature Option (RSAO) defined in section 5.2.
>    of SEND [RFC3971], the NDPSO does not have a key hash field.  The
>    hash that can be used as index is the 128 leftmost bits of the ROVR
>    field in the EARO.
> 
> nit: this last sentence perhaps leaves more context implicit than the reader
> might like; I suggest "Instead, the leftmost 128 bits of the ROVR field in the
> sibling EARO are used to lookup the key used for signature verification, [left-
> padded with zeros if needed]".  (I added the part in square brackets because
> I'm not sure that anything guarantees the ROVR will actually contain
> 128 bits -- when AP-ND is not in use its typically just 64 bits, right?)
> 
>    Pad Length:  8-bit unsigned integer.  The length of the Padding
>       field.
> 
> (In octets?)
> 
>    Padding:  A variable-length field making the option length a multiple
>       of 8, containing as many octets as specified in the Pad Length
>       field.  Typically there is no need of a padding and the field is
>       NULL.
> 
> Just to check: nothing requires the use of minimal-length padding to achieve
> the required alignment, and padding of 200+ bytes is permitted by the spec,
> albeit silly?
> 
> Section 6
> 
>    This specification enables the 6LR to verify the ownership of the
>    binding at any time assuming that the "C" flag is set.  The
>    verification prevents other nodes from stealing the address and
>    trying to attract traffic for that address or use it as their source
>    address.
> 
> nit: I think that the verification cannot be done unilaterally by the 6LR, so
> maybe "enables the 6LR to challenge the node to verify its ownership of the
> binding at any time" is better.
> 
>    A node may use multiple IPv6 addresses at the same time.  The node
>    MAY use the same Crypto-ID, to prove the ownership of multiple IPv6
>    addresses.  The separation of the address and the cryptographic
> 
> nit: no comma
> 
>    material avoids the constrained device to compute multiple keys for
> 
> nit: "avoids the need for"
> 
>    multiple addresses.  The registration process allows the node to use
>    the same Crypto-ID for all of its addresses.
> 
> nit(?): We could potentially mention again the ability to use different Crypto-
> IDs with a single keypair, though there's not any clear need to do so.
> 
> Section 6.1
> 
> Mostly just for my own elucidation, where is it first specified to put the address
> being registered in the Target Address field of the NS message?
> 
>    detrimental to the battery lifetime.  Alternatively, the device may
>    use an always-incrementing value saved in the same stable storage as
>    the key, so they are lost together, and starting at a best effort
>    random value, either as Nonce value or as a component to its
>    computation.
> 
> nit: "as the Nonce value".
> 
>    and the NDPSO containing the signature.  The information associated
>    to a Crypto-ID stored by the 6LR on the first NS exchange where it
>    appears.  The 6LR MUST store the CIPO parameters associated with the
> 
> nit: I think there's a verb missing in this sentence ("MUST be"?)
> 
>         |------- NS with EARO, CIPO, NonceLN and NDPSO -------->|
> 
> (This still includes the Crypto-ID, even if there's not room in the figure to
> explicition indicate that, right?)
> 
>    *  Upon the first exchange with a 6LR, a 6LN will be challenged to
>       prove ownership of the Crypto-ID and the Target Address being
> 
> How is the "first exchange" tracked?  Just whether the 6LR knows about the
> registered IPv6 address, or the L2 address, or something else?  In particular, if a
> 6LR has cached an IP address/ROVR binding, and an attacker tries to join that
> 6LR with that address/ROVR, what controls whether the 6LR will challenge the
> attacker's 6LN?  Is it purely at the 6LR's discretion?
> 
>    *  The challenge is triggered when the registration for a Source
>       Link-Layer Address is not verifiable either at the 6LR or the
>       6LBR.  In the latter case, the 6LBR returns a status of
>       "Validation Requested" in the DAR/DAC exchange, which is echoed by
>       the 6LR in the NA (EARO) back to the registering node.  The
>       challenge MUST NOT alter a valid registration in the 6LR or the
>       6LBR.
> 
> nit(?): the previous bullet describes a case where the 6LR MUST issue a
> challenge; my understanding is that this bullet describes an additional way in
> which challenges can occur (i.e., when the 6LBR doesn't know about the
> address registration either).  Stylistically, it might be more clear to reword this
> as being an "additional case" on top of the previous one, as opposed to the
> current wording which tries to be very general about when a challenge can
> happen, which is neither a parallel construction to the previous bullet nor
> particularly clear about what new information is being conveyed by this bullet.
> 
>    *  In order to validate the ownership, the 6LR performs the same
>       steps as the 6LN and rebuilds the Crypto-ID based on the
>       parameters in the CIPO.  If the rebuilt Crypto-ID matches the
>       ROVR, the 6LN also verifies the signature contained in the NDPSO
>       option.  If at that point the signature in the NDPSO option can be
>       verified, then the validation succeeds.  Otherwise the validation
>       fails.
> 
> I worry a little bit that we haven't fully specified the entire list of steps the 6LR
> takes to follow the cryptographic chain and validate that the 6LN holds the key
> in question and registers the address in question to the Crypto-ID in question.  I
> don't have a specific thing in mind that the 6LR might forget, but if we
> explicitly state what things are bound to what other things, the 6LR is less likely
> to make a security-relevant mistake.
> 
> Section 6.2
> 
> Might we want to include the Modifier or the Crypto-ID itself in the signed
> data, in addition to the public key, to avoid any potential misbinding?
> 
>    2.  JWK-encoded public key
> 
> [just to check: JWK-encoding means that we have an injective map and aren't
> subject to some sort of extension attack?  Not that such a thing would be easy
> to pull off, with a strict registry of Crypto-Types, of course]
> 
>    6.  The length of the ROVR field in the NS message containing the
>        Crypto-ID that was sent.
> 
> nit: is this really the NS "that was sent" as opposed to the NS under
> construction that contains the NDPSO?  (This is related to my question up in
> Section 6.1.)  Tying the initial NS to the followup one requires more state on
> the 6LR (though the 6LR probably already had to keep state for the Nonce) and
> makes some of the verification steps a bit tougher to implement correctly.
> 
>    7.  1-byte (in network byte order) Crypto-Type value sent in the CIPO
>        option.
> 
> nit: Is there any byte order with distinct representation from network byte
> order, for a 1-byte quantity?  ;)
> 
>    *  Depending on the Crypto-Type, apply the hash function on this
>       concatenation.
> 
> nit: is this clearer as "Apply the hash function (if any) specified by the Crypto-
> Type to the concatenated data"?
> 
>    *  Depending on the Crypto-Type, sign the hash output with ECDSA (if
>       curve P-256 is used) or sign the hash with EdDSA (if curve Ed25519
>       (PureEdDSA)).
> 
> nit: this text is not very consistent with the idea of an extensible registry of
> Crypto-Types; similar "apply the signature algorithm specified by the Crypto-
> Type" language to what I suggested above may be appropriate.
> 
>    The 6LR on receiving the NDPSO and CIPO options first regenerates the
>    Crypto-ID based on the CIPO option to make sure that the leftmost
>    bits up to the size of the ROVR match.  If and only if the check is
> 
> In the vein of my previous questions about where the Crypto-ID appears and
> truncation/malleability, this text seems to leave some room for confusion
> about how many bits of output are being compared, and compared to what.
> 
>    *  Depending on the Crypto-Type indicated by the (6LN) in the CIPO,
>       apply the hash function on this concatenation.
> 
> [similar comment as above]
> 
>    *  Verify the signature with the public-key received and the locally
>       computed values.  If the verification succeeds, the 6LR and 6LBR
>       add the state information about the Crypto-ID, public-key and
>       Target Address being registered to their database.
> 
> This might be a place to reiterate the FCFS nature of address registration,
> though it's hardly necessary.
> 
> Section 6.3
> 
>    In a multihop 6LoWPAN, a 6LBR sends RAs with prefixes downstream and
>    the 6LR receives and relays them to the nodes. 6LR and 6LBR
>    communicate using ICMPv6 Duplicate Address Request (DAR) and
>    Duplicate Address Confirmation (DAC) messages.  The DAR and DAC use
>    the same message format as NS and NA, but have different ICMPv6 type
>    values.
> 
>    In AP-ND we extend DAR/DAC messages to carry cryptographically
>    generated ROVR.  In a multihop 6LoWPAN, the node exchanges the
>    messages shown in Figure 6.  The 6LBR must identify who owns an
>    address (EUI-64) to defend it, if there is an attacker on another
>    6LR.
> 
> This description feels a little vague to me -- I'm interested in knowing how the
> 6LBR gains confidence that a proof-of-possession was provided to the 6LR, and
> how the ROVR gets validated at 6LBR and 6LR when the 6LN in question moves
> to a new 6LR.  What information remains local to (each) 6LR and what is
> communicated between 6LR and 6LBR?
> This also relates to the "how trusted are 6LRs?" question I mentioned earlier.
> 
> Section 7
> 
> It might be appropriate to talk about how the NonceLR and NonceLN combine
> to ensure contributory behavior from both 6LR and 6LN, and that each protects
> against a different type of replay attack.
> 
> Section 7.1
> 
>    Duplicate Address Detection DoS Attack:  Inside the LLN, Duplicate
>       Addresses are sorted out using the ROVR, which differentiates it
>       from a movement.  DAD coming from the backbone are not forwarded
>       over the LLN, which provides some protection against DoS attacks
>       inside the resource-constrained part of the network.  Over the
>       backbone, the EARO option is present in NS/NA messages.  This
>       protects against misinterpreting a movement for a duplication, and
>       enables the backbone routers to determine which one has the
>       freshest registration and is thus the best candidate to validate
>       the registration for the device attached to it.  But this
>       specification does not guarantee that the backbone router claiming
>       an address over the backbone is not an attacker.
> 
> Where do we specify the behavior of the 6LBR to reject EAROs when the 6LBR
> is not the one with the freshest registration?  Or do I misunderstand the
> discussion of "freshest registration"?
> 
>    Replay Attacks  Using Nonces (NonceLR and NonceLN) generated by both
>       the 6LR and 6LN provides an efficient protection against replay
>       attacks of challenge response flow.  The quality of the protection
>       still depends on the quality of the Nonce, in particular of a
>       random generator if they are computed that way.
> 
> It's probably worth noting explicitly that we do not require unpredictable
> nonces, just non-repeating ones.
> 
>    Neighbor Discovery DoS Attack:  A rogue node that managed to access
>       the L2 network may form many addresses and register them using AP-
>       ND.  The perimeter of the attack is all the 6LRs in range of the
>       attacker.  The 6LR MUST protect itself against overflows and
>       reject excessive registration with a status 2 "Neighbor Cache
>       Full".  This effectively blocks another (honest) 6LN from
>       registering to the same 6LR, but the 6LN may register to other
>       6LRs that are in its range but not in that of the rogue.
> 
> Are there L2 technologies where L2 media keys are tied to L2 address, so a
> rogue node might be rate-limited or given a quota based on L2 address?
> 
> Section 7.2
> 
>    address.  This specification frees the device to form its addresses
>    in any fashion, thereby enabling not only 6LoWPAN compression which
>    derives IPv6 addresses from Layer-2 addresses but also privacy
>    addresses.
> 
> We noted in Section 1 that the 6lo adaptation layer requires use of L2-address-
> based IPv6 address selection, so it's not clear how it would be valid to use
> privacy addresses with this specification.
> 
> Section 7.3
> 
> We seem to be assuming for these calculations/discussion that the hash used
> for calculating the Crypto-ID is a well-behaved cryptographic hash and thus
> that random collisions are the only ones possible.  It would be worth
> mentioning that weaknesses in the hashes associated with a given Crypto-Type
> could allow attackers to make more targetted collision attempts.
> 
>    The formula for calculating the probability of a collision is 1 -
>    e^{-k^2/(2n)} where n is the maximum population size (2^64 here,
>    1.84E19) and K is the actual population (number of nodes).  If the
> 
> nit: minuscule vs. majuscule 'k'/'K'
> 
> Section 7.4
> 
>    The signature schemes referenced in this specification comply with
>    NIST [FIPS186-4] or Crypto Forum Research Group (CFRG) standards
>    [RFC8032] and offer strong algorithmic security at roughly 128-bit
>    security level.  These signature schemes use elliptic curves that
> 
> Do we want to make any forward-looking statement about the expected
> strength of future-defined Crypto-Types?  ("No" is a fine answer...)
> 
> Section 7.5
> 
> The text here is more about cross-algorithm attacks than cross-protocol ones.
> It would be great to see some text about cross-protocol attacks added, too
> (e.g., prohibiting use of the keypair for anything other than AP-ND).
> 
> Section 7.6
> 
>    This specification distributes the challenge and its validation at
>    the edge of the network, between the 6LN and its 6LR.  The central
>    6LBR is offloaded, which avoids DOS attacks targeted at that central
>    entity.  This also saves back and forth exchanges across a
> 
> nit: "the central 6LBR is offloaded" reads very oddly, as the offloading is of
> work from the 6LBR, but the 6LBR itself remains in place.
> 
>    The downside is that the 6LBR needs to trust the 6LR for performing
>    the checking adequately, and the communication between the 6LR and
>    the 6LBR must be protected to avoid tempering with the result of the
>    test.
> 
> I'd prefer to see some more details about the nature of the required protection
> for 6LR/6LBR communications.
> 
>    If a 6LR is compromised, it may pretend that it owns any address and
>    defeat the protection.  It may also admit any rogue and let it take
>    ownership of any address in the network, provided that the 6LR knows
>    the ROVR field used by the real owner of the address.
> 
> nit: this language could probably be tightened up to be more precise about the
> hazards.
> 
> Section 8.3
> 
>    New Crypto-Type values providing similar or better security (with
>    less code) may be defined in the future.
> 
> I'm not sure what purpose the "with less code" requirement serves.  It seems
> to needlessly constrain future actions.
> 
> Section 11
> 
> Curve25519 support is a MAY, so I think RFC 7748 belongs as normative;
> likewise for RFCs 8032 and 6234.
> 
> It's probably better to cite RFC 7696 as BCP 201 directly.
> 
> Section B.3
> 
> It would be great if the document shepherd could diff the paramters listed here
> against [CURVE-REPRESENTATIONS].
>