Re: [stir] Questions about stir-certificates

Martin Thomson <martin.thomson@gmail.com> Fri, 20 October 2017 00:28 UTC

Return-Path: <martin.thomson@gmail.com>
X-Original-To: stir@ietfa.amsl.com
Delivered-To: stir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7820B13292A for <stir@ietfa.amsl.com>; Thu, 19 Oct 2017 17:28:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 PEVRcIAXazJA for <stir@ietfa.amsl.com>; Thu, 19 Oct 2017 17:28:07 -0700 (PDT)
Received: from mail-oi0-x22b.google.com (mail-oi0-x22b.google.com [IPv6:2607:f8b0:4003:c06::22b]) (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 2252F133078 for <stir@ietf.org>; Thu, 19 Oct 2017 17:28:07 -0700 (PDT)
Received: by mail-oi0-x22b.google.com with SMTP id f66so17743383oib.2 for <stir@ietf.org>; Thu, 19 Oct 2017 17:28:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=wTwxuXIsWSjRXNVnjC2dpntH7t1H4duEkVhjGPRjeQs=; b=TmyLqS6ANgGlud5T33yuk525EBD0Xr+vrstgPYRFdrXrbIBZPCZFh57GbyLTAg972g TchJ5KUPdINyBOVb4dywdFm+RxbwbZL7KPsvI43LR8d/6agoUkyEDALncUIIEYN3TmFB tL2vqqv7/h+2nubUxap84dYdVaX6aHlEr3rZoWuPeqBJLsHn/k3C5cMN+P1yOClXbo6C UOLI8CeRdDPqjFWjpe/nGMt92mA8Dz4XvYz7NY+xV8RGXZ+NV/uneAeTACSRSClxv5s0 /jiti0Yxl/Iaw38KpSoVQWwofJTOcp0eFFEQibSsMlbNB30ruUXuX+JXAjUHX+R/nRF+ EUDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=wTwxuXIsWSjRXNVnjC2dpntH7t1H4duEkVhjGPRjeQs=; b=J2Lu7d0uURLNnvfM7psqTKMDvfo/VJLpOxsO6jiRhY7GVn7RqHgWb6K8h8o8utMI5F /lQ6gvLwF13p0mjFJ++ZnsCqhLLojORzMpuw0YOy1g+9DJ3qhXkkYv+FJE7EZR3eDHxW k4vqsjmrH2YtrRSEVwTF2S++P0I5SRarGjowwVNWXdFYZ+hcX9wRIMPwiQQsd8luPRCT 2i/nTn7dIhzj/xnVqsMqznLi5Zv+6kClK0fhM3WGf0HMS2Q16tp6tjV9LxOiq+pv0uQU QldsXrluR2goIL2PX7yGp2Uti5CXsRnYBtER+mG1XD92bqAafE+MjCupHD3t6DYqXdbC hy2g==
X-Gm-Message-State: AMCzsaUK7ecADYVXCOZfoJR+YPEABMxiRQLT9zziyXvx24xfEz3vK02d aJQLcVjJmzhMroR0PU8JYPb2BNWjFwdPB4M7OYw=
X-Google-Smtp-Source: ABhQp+Q02nAO9s5Eq+OJWYibm2ZVgL2VZrp98IzqzQE+HIClfkoS49aB7SxWWrlr2JQuSyCIwLjlASbORgsi5yf0/54=
X-Received: by 10.157.37.90 with SMTP id j26mr2124730otd.401.1508459286213; Thu, 19 Oct 2017 17:28:06 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.157.72.178 with HTTP; Thu, 19 Oct 2017 17:28:05 -0700 (PDT)
In-Reply-To: <D60E0087.1EEE44%jon.peterson@neustar.biz>
References: <D60E0087.1EEE44%jon.peterson@neustar.biz>
From: Martin Thomson <martin.thomson@gmail.com>
Date: Fri, 20 Oct 2017 11:28:05 +1100
Message-ID: <CABkgnnV41djmwJ2A8WkLv1Qu_zxAKPb8EJnuoFS1Zeog3momyQ@mail.gmail.com>
To: "Peterson, Jon" <jon.peterson@team.neustar>
Cc: "stir@ietf.org" <stir@ietf.org>, Sean Turner <sean@sn3rd.com>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/stir/4p6GKssupaE3RH769m4V5unuuj4>
Subject: Re: [stir] Questions about stir-certificates
X-BeenThere: stir@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Secure Telephone Identity Revisited <stir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/stir>, <mailto:stir-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/stir/>
List-Post: <mailto:stir@ietf.org>
List-Help: <mailto:stir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/stir>, <mailto:stir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Oct 2017 00:28:09 -0000

Thanks for the response Jon,

It took me a little while to revive state for this, so I hope that I'm
at least consistent with before...

On Fri, Oct 20, 2017 at 3:17 AM, Peterson, Jon
<jon.peterson@team.neustar> wrote:
>>The first question is whether this delegation makes any sense for
>>service provider codes.  A service provider that signs a subordinate
>>(such as an enterprise that operates a PBX) is hardly going to allow
>>that subordinate to use their service provider code.  In light of
>>that, it seems like subjectAltName is entirely appropriate place to
>>put a service provider code.
>
> I think the use case for SPC delegation is probably not the enterprise
> case. A service bureau case makes more sense. We've also entertained cases
> where a large carrier, say, might have authority over multiple SPCs in one
> cert, but might want to delegate to some part of its own network a
> certificate for just one of those SPCs. I've also dimly envisioned, if
> this all takes off, use cases for selectively delegating applications
> associated with an SPC for a particular service, probably to a service
> bureau: like, Company A is doing the SMS for SPC 6166.

That makes me more confident that you have the right model, as least
with respect to subjectAltName.  I was concerned that a SPC was an
identity of the entity doing the signing, but it seems like it is
instead a proxy for a number range.  Cast in those terms, the model
you have is OK.  But it really isn't that clear from the document that
this is the model.  For a relative outsider, it might be useful to say
that this is an assumption in your model.

>>It's also unclear to me whether a certificate that includes AIA for
>>telephone numbers also effectively constrains subordinates to comply
>>with that set.
>
> I hope it does, yes. We can make sure the document does say that.

I trust that you will do that :)

>> The document doesn't say.  On the assumption that it
>>does, what happens when the resource identified in the AIA changes?
>
> This is supposed to be a feature, believe it or not. If the resource
> behind the AIA changes, the scope of the certificate changes. Part of
> resolving the chain of authority in this model would be dereferencing any
> such AIA's, yes, and making sure it still holds.
>
>>There's a possibility that changes in the referenced resource could
>>invalidate subordinates.  Doesn't this put AIA on the critical path?
>
> That last point is probably better for Sean to speak to than me.

I just checked and RFC 5280 mandates AIA as a non-critical extension.
I think that's a bit of a deal-breaker.

>From my (limited) experience with out-of-band information in the web
PKI, this isn't that great a solution.  Every time we use some
out-of-band mechanism, it turns out to be brittle.  When something is
brittle, the immediate reaction is to make it non-blocking.  That was
the case with CRLs and OCSP.  That's why we have OCSP stapling.

This might be a different story.  Maybe the sheer quantity of numbers
will lead to the right incentives and people will insist on retrieving
up-to-date information from these resources.  But nothing in the
mechanism will require it unless this document does.

If you need to use AIA, then you need to do something about it being
non-critical.  I think that a strategic "MUST" might be all you need.
"MUST support AIA, retrieve an updated AIA, and use the information
provided therein"

For that to work, you need an MTI retrieval mechanism and format.  I
assume that this is just a DER-encoded TNAuthList.  You probably want
to write that down.  And then someone will end up asking whether you
have a media type for it.

And then there is the privacy story with these sorts of things.  Big
lists of AIA are probably OK (K-anonymity with large K), but I can
imagine the CA being able to use this as a way to track calls.  Not
serious here because lists are generally long, but it was a problem
with CRLs and OCSP on the web, so it's worth a brief mention at least.

>>The draft is unclear on how uniqueness is managed for service provider
>>codes, or even if uniqueness is a requirement.  Is this a property of
>>the certification path in that a trust anchor will be connected to a
>>particular country prefix (or set thereof), or is there something more
>>concrete?
>
> The SPC as specified is admittedly a blank check we're writing at this
> point, but I think that's about where we are in deployment. The early
> adopters of this are North American carriers, there are already bodies who
> allocate codes for such carriers. I don't think the IETF is the right
> place to do that or to try to figure out how those identifiers should be
> internationally allocated or what should happen when signed messages pass
> into places where other sorts of SPCs might be in use. What's there now is
> good enough to let people kick the tires and get some experience; it will
> give national and international bodies enough leeway to define what they
> want for it, and we can point to that later.

I think that you need more than that.  At least acknowledge that the
service provider code is defined within a certain scope and that
someone consuming the code needs to be aware of where the code is
coming from.

>>How does one add `count` to a number containing "*" or "#"?
>
> Don't get wrong: I won't pretend that every possible corner case involving
> "*" and "#" has been given adequate consideration. They are there in the
> syntax to cover a very small number of paranoid forward-compatibility use
> cases of the "To" header field, mostly ones that in turn will use the
> proposed "divert" extension. (For example, I'm dialing *69. That goes to a
> server that is going to retarget the call to the last party who called me.
> How should that retargeting server sign the "divert"?) I don't think count
> will be practically relevant to those cases, which will would have to use
> specialized certs anyway. I know we don't have all that fully specified,
> but kind of like SPC, we're trying to leave a bit of wiggle room in the
> syntax not to close doors on possibilities.

Please define something.  Either say that addition of numbers that
contain these digits is invalid, or that the count is added to any
numeric digits to the right of these digits.  If this turns out to be
a bad idea, then see my answer regarding prefixes.

>>Does the addition of `count` treat the `start` as an integer?

You missed this question.  I think that it's important.  It's the
little things that can trip up implementations.

"123" + 10 is probably "123", "124", "125", ..., "132", is that correct?
What about "123" + 1000?  It might pay to say that overflow into more
digits isn't permitted, especially if you consider the case of
"123*69" + 32.  Is this up to "154*69" or "123*100" or "124*00" or
something else?  It might be easier to say that it's invalid.

>>What does a `count` of 0 mean?
>
> I believe a count of '0' is disallowed.

Indeed it is.

>>How do I express that all numbers in the +1 prefix are covered?
>
> If it were up to me, probably, I wouldn't want the NANPA to publish a cert
> with authority for +1, but instead, for the valid set of 10,000 blocks
> (done with "count") that cover the allocated +1NPANXX's. But to your
> bigger question...
>
>> (The NANP is perhaps a bad example, try finding solid
>>information on the numbering plan for +257).  Did the working group
>>consider a number prefix in addition to the range, to allow for saying
>>"+1..." as a single rule?
>
> I went back and forth a lot between count versus prefix a couple years
> ago, and honestly neither is perfect. Count can least theoretically do
> things prefix can't; but doing some that are ugly to do with count can be
> done very elegantly with prefix. Maybe the best thing for us to do is at
> least leave the door open in the syntax to specify another way to do
> number ranges? I think for our current purposes count is probably okay,
> but I wouldn't object to adding wiggle room so we could specify other
> options in the future.

I would make sure that there is an extension point.  My ASN.1 is
rusty, but I think that adding ... to TNEntry would be enough for
that.