Re: Non routable IPv6 registry proposal

Phillip Hallam-Baker <phill@hallambaker.com> Thu, 21 January 2021 18:57 UTC

Return-Path: <hallam@gmail.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F1CA83A09A4 for <ietf@ietfa.amsl.com>; Thu, 21 Jan 2021 10:57:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.401
X-Spam-Level:
X-Spam-Status: No, score=-1.401 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.248, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hxGxGNECB5h0 for <ietf@ietfa.amsl.com>; Thu, 21 Jan 2021 10:57:36 -0800 (PST)
Received: from mail-yb1-f172.google.com (mail-yb1-f172.google.com [209.85.219.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 63D943A0990 for <ietf@ietf.org>; Thu, 21 Jan 2021 10:57:36 -0800 (PST)
Received: by mail-yb1-f172.google.com with SMTP id p185so3040025ybg.8 for <ietf@ietf.org>; Thu, 21 Jan 2021 10:57:36 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mq8HTpMvx6ZHhktu/T3Em51a3BVloUtuTnoExNExodM=; b=jBQW0MIFaMdwWhT82yKYelUXgxs4GqfN4AqCaqeszU58JEvtdHLNtJFhUcXgOU+Y0e 95cxCCSEXSc8eZdUxVA7YQUM4fJSbRaNimxeu1bHVorcB38L+XOyMJxYRG/n2gvpo8D6 b+PUwWa3YWdVO+SChyeJJs4akDMw6MpMIe7mKznsfKEyHeWfbl8dj/XQKTdTANyJMr4m lJq4xqfsWnurf/XDan9uz+AqS0aJUc39GrjFHlIwmd24Js6vzmJPGQTi+2l2BoGljhS1 uPwBKXbTtF6dWfD37Id837Ej7disf9zUHKv3sYXJDj957U6PP0biSYjRTFpIiffN4PA/ PkyA==
X-Gm-Message-State: AOAM532GpTW4BFBU/YpbsBjrNDmVRHy3c1uK4KgtsLELRKXQtuP9JP+x KR61/pIeqbmhFT8Y0BtFpYzP1stsFUlMWLDAjEY=
X-Google-Smtp-Source: ABdhPJw0VAdlcHO1yu54/vte2Yox3YuTQ5axorTIPWiMh8hg5VOirS0dtvE0pnlH/BWK9MbhUE6yAaO5XD+QBYJ7L+0=
X-Received: by 2002:a25:94b:: with SMTP id u11mr1123961ybm.518.1611255454856; Thu, 21 Jan 2021 10:57:34 -0800 (PST)
MIME-Version: 1.0
References: <CAMm+LwjNiE0P7RAVqzKMypNbh3=9BeqiWn_hGv3E=zX7-YmSXQ@mail.gmail.com> <72F969A9-AF94-47B6-B48C-B3CD4D9A7C72@strayalpha.com> <7cc9e38c-5a00-ec59-a8c2-10503cc40d50@si6networks.com> <CB1A6DF0-8CDD-495D-9F7B-80BF72F08C1E@strayalpha.com>
In-Reply-To: <CB1A6DF0-8CDD-495D-9F7B-80BF72F08C1E@strayalpha.com>
From: Phillip Hallam-Baker <phill@hallambaker.com>
Date: Thu, 21 Jan 2021 13:57:24 -0500
Message-ID: <CAMm+LwjU2SQeydRJ7zcDORz+1-z634OCe34HMKTKHiQvg+4M7w@mail.gmail.com>
Subject: Re: Non routable IPv6 registry proposal
To: Joseph Touch <touch@strayalpha.com>
Cc: Fernando Gont <fgont@si6networks.com>, IETF Discussion Mailing List <ietf@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000077a4105b96da5d5"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/TUDTGPSvGdGtfaA-VfVKG4DoSyE>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Jan 2021 18:57:39 -0000

This post and various others have helped me clarify the proposal a bit. I
think there is (potentially) something very useful here that makes it
easier to solve a lot of 'niggling administration' type issues.

The payoff for IETF is that I think the combination provides the right
level of incentive to drive IPv6 adoption. And that is one of the major
reasons I want to incorporate it into my Mesh callsigns registry. As folk
know, I have a really low tolerance for administration/configuration cruft
and especially so when it is my wife asking me to do the IT support her
work IT support should be doing for her.


OK so what do I mean by the right level of incentive? Well, simply saying
IPv4 addresses will run out doesn't provide me with a personal incentive to
go to IPv6 as my ISP will simply pay whatever it takes to get me a one and
the bulk of their customers won't notice if they are shoved behind a
carrier grade NAT. Nor does making use of IPv6 a requirement to use some
new application help because getting critical mass for an application is
also a hard problem and I am not going to handicap myself by making IPv6 a
requirement until deployment has reached a minimum of 98%.

A ULA->Public key registry provides exactly the right degree of incentive.
It allows us to take an area that is currently flaky as heck and make it
'just work'. That area is VPN access.

The original idea of IPSEC was that we were going to encrypt the whole net.
And that didn't really happen because there is no PKI for IP addresses (and
no, the RPKI doesn't really count in that regard). And PKIX is a really
really bad match for that problem because certs expire.

Nor is it really possible to solve the problem of VPN access in IPv4 space
because you inevitably end up with collisions. My wife's machine was
10.0.1.42 on our home net. It was trying to reach the file server which is
10.0.1.42 on the work net. And that doesn't work for the combination of VPN
client/server software that was in use. And why would we expect that? Nor
is this really a corner case, its actually going to be a situation that
occurs to some users with approaching 100% certainty.

Map this all out onto disjoint ULA IPv6 addresses and we can guarantee that
the addresses are unique at each end. That is our first win.


Our second win comes when we have a registry that maps public keys to the
ULA address ranges like the one I am planning to add to my existing
callsign registry. This is based on a DARE sequence.

Mathematical Mesh 3.0 Part III : Data At Rest Encryption (DARE) (ietf.org)
<https://tools.ietf.org/id/draft-hallambaker-mesh-dare-11.html>


So to receive an allocation Alice:

1) Generates a new key pair {public, private}
2) Submits the request for an allocation.
3) Receives notification of the allocated address range
4) Waits for the sequence apex to be signed and sufficiently notarized.

For purposes of exposition, the registry consists of a Haber-Stornetta
One-way Sequence:

S0 = { A, FC00:0001:0000:0000::/62 , 0}
S1 = { B, FC00:0001:0000:0004::/62 , SHA2(S0)}
S2 = { C, FC00:0001:0000:0008::/62 , SHA2(S1)}
S3 = { D, FC00:0001:0000:000C::/62 , SHA2(S2)}
S4 = { E, FC00:0001:0000:0010::/62 , SHA2(S3)}
S5 = SHA2(S4) + Na(t) + Nb(t)
S6 = Sign (S5)

Where Na(t), Nb(t) are the notary tokens issued by notaries A, B at time t.

[Yes, the actual implementation will use a Merkle Tree for efficiency]
[Yes, bumped the allocation up to a /62 as per Michael's suggestion]

This approach is not completely foolproof. But the idea here is that the
notaries are independent parties doing something of the sort (e.g. CT logs)
with a reciprocal relationship, I include the output of your notary chain
and you include mine. The result is more robust than blockchain without the
criminality, proof of work or environmental harm.

So Alice can verify that her allocation is unique as soon as she can get
confirmation of the ULA registry output value from one of the other
notaries she trusts.

These logs are not going to be all that big. Its 1KB per entry at most. So
10K entries per day is only 10MB appended to the end of the chain. That's
less than the size of a single photograph with the camera I use these days.
Even at Internet scale of 10 billion entries we are talking about 10TB of
data. That is just not a lot of data these days.

All an IPSEC gateway would need to verify a public key chain to this
registry would be the mapping of IP address range to hash of public key.
Which is ~50 bytes. So 0.5 TB for a complete dump. These are practical
values we can use in current tech.

Worst cases are 1) that I give up and stop allocating new addresses, 2) I
mess up and allocate space I am not allowed to or double allocate. Both of
these are externally visible. The choice of incremental allocation is
deliberate as it makes it easier to verify that my allocations are within
policy (and yes, I would have to modify things a little bit so I can
allocate larger chunks without making spaces, but details)

Alice is only going to start using her block after I publish it. So I
really have little scope to attack her.

I can make a report once a year to state where I am at. But anyone starting
a similar registry is going to get FC00:0002::/96 to allocate.


We have burned far more address space with far less to show for it. Either
this works in which case my non profit gets a revenue stream that can
support work for the whole community or it doesn't and we maybe learn
something from the experience.


On Thu, Jan 21, 2021 at 12:17 PM Joseph Touch <touch@strayalpha.com> wrote:

>
>
> > On Jan 20, 2021, at 3:27 PM, Fernando Gont <fgont@si6networks.com>
> wrote:
> >
> > On 20/1/21 17:25, Joe Touch wrote:
> >>> On Jan 20, 2021, at 12:07 PM, Phillip Hallam-Baker <
> phill@hallambaker.com> wrote:
> >>>
> >>> 0) Nowhere does the 'end to end' principle demand that the source and
> destination addresses on an IP packet remain constant
> >> IP addresses is the only means for identifying an Internet endpoint per
> RFC 1122. While I agree that there may be utility of having proxied
> endpoints (e.g. NATs) with effectively internal addresses behind them, it
> doesn’t help the case to begin with this inaccurate assertion.
> >
> > I'd have agreed with you. BUt since
> draft-ietf-spring-srv6-network-programming has been approved by the IESG,
> you probably cannot make such assertion anymore.
>
> One draft that doesn’t update or obsolete numerous others does not
> undermine 40 yrs of E2E.
>
> Esp. when (AFAICT) that doc series never mentions how transport protocols
> are supposed to deal with indeterminate endpoint addresses in their pseudo
> headers or the impact to security protocols at the transport (not transport
> content) layer.
>
> Joe