Re: [certid] [Gen-art] Gen-ART LC Review of draft-saintandre-tls-server-id-check-11

Ben Campbell <ben@nostrum.com> Wed, 08 December 2010 18:32 UTC

Return-Path: <ben@nostrum.com>
X-Original-To: certid@core3.amsl.com
Delivered-To: certid@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7AA6B3A6860; Wed, 8 Dec 2010 10:32:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.136
X-Spam-Level:
X-Spam-Status: No, score=-102.136 tagged_above=-999 required=5 tests=[AWL=-0.136, BAYES_00=-2.599, J_CHICKENPOX_36=0.6, SPF_PASS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VyzJlvamg1Bz; Wed, 8 Dec 2010 10:32:48 -0800 (PST)
Received: from nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by core3.amsl.com (Postfix) with ESMTP id B2B163A6826; Wed, 8 Dec 2010 10:32:47 -0800 (PST)
Received: from dn3-174.estacado.net (vicuna-alt.estacado.net [75.53.54.121]) (authenticated bits=0) by nostrum.com (8.14.3/8.14.3) with ESMTP id oB8IYEMu062095 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 8 Dec 2010 12:34:14 -0600 (CST) (envelope-from ben@nostrum.com)
Mime-Version: 1.0 (Apple Message framework v1082)
Content-Type: text/plain; charset="us-ascii"
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <4CFFA82C.80508@stpeter.im>
Date: Wed, 08 Dec 2010 12:34:13 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <210039F2-D368-485E-BECA-D3CE6D6B05D1@nostrum.com>
References: <p06240832c922cb7e04d9@[10.20.30.151]> <4CFEB1C5.4010103@stpeter.im> <E7A814CA-E758-460A-A340-6444CA82B267@nostrum.com> <4CFF114B.5010204@stpeter.im> <19F8341D-9815-4BB7-8837-83850FAC4F9E@nostrum.com> <4CFFA82C.80508@stpeter.im>
To: Peter Saint-Andre <stpeter@stpeter.im>
X-Mailer: Apple Mail (2.1082)
Received-SPF: pass (nostrum.com: 75.53.54.121 is authenticated by a trusted mechanism)
Cc: draft-saintandre-tls-server-id-check.all@tools.ietf.org, General Area Review Team <gen-art@ietf.org>, certid@ietf.org
Subject: Re: [certid] [Gen-art] Gen-ART LC Review of draft-saintandre-tls-server-id-check-11
X-BeenThere: certid@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Representation and verification of identity in certificates <certid.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/certid>
List-Post: <mailto:certid@ietf.org>
List-Help: <mailto:certid-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Dec 2010 18:32:50 -0000

On Dec 8, 2010, at 9:45 AM, Peter Saint-Andre wrote:

[...]

>>> 
>>> Well, I do think a using protocol does need to specify which URI
>>> scheme names are acceptable for the application protocol. You
>>> wouldn't want a client to think that fubar://example.com identifies
>>> a SIP service. The tel: URI scheme is an interesting
>>> counter-example in some ways.
>> 
>> Not to mention "im:" and "pres:" :-)
>> 
>> Am I correct in assuming you mean that in the context of what schemes
>> they will put in a certificate, or match to a certificate, right? 
> 
> Correct. I think this text is clearer in Section 3.1:
> 
>   3.  If the service using the certificate deploys a technology in
>       which a server is programatically associated with a URI for
>       security purposes (e.g., this is true of [SIP] as specified by
>       [SIP-CERTS]), but not true of [HTTP] since [HTTP-TLS] does not
>       describe usage of a URI-ID for HTTP services), then the
>       certificate SHOULD include a URI-ID; the scheme SHALL be that of
>       the protocol associated with the service type and the "authority"
>       component SHALL be the fully-qualified DNS domain name of the
>       service.  A specification that re-uses this one MUST specify
>       which URI schemes are to be considered acceptable in URI-IDs
>       contained in PKIX certificates used for the application protocol
>       (e.g., "sip" but not "sips" or "tel" for SIP as described in
>       [SIP-SIPS], or perhaps http and https for HTTP as might be
>       described in a future specification).
> 

WFM

[...]

> 
>>>>>> -- 4.2.2:
>>>>>> 
>>>>>> Can we have a URI-ID example?
>>>>> 
>>>>> How's this?
>>>>> 
>>>>> A voice-over-IP (VoIP) user agent that is connecting via SIP
>>>>> to the voice service at "voice.example.edu" might have only
>>>>> one reference identifier: a URI-ID of "sip:voice.example.edu"
>>>>> (see [SIP-CERTS]).
>>>>> 
>>>> 
>>>> Would it make sense to say something to indicate this is true,
>>>> even though the connection may have been opened based on a URI
>>>> of "sip:user@voice.example.edu"? (I'm trying to figure out the
>>>> best way to word that without trying to invoke SIP request-URI vs
>>>> route set complexities, but my brain is tired. I will think
>>>> further about it.)
>>> 
>>> What do you mean by "the connection was opened based on a URI of 
>>> sip:user@voice.example.edu"? Yes, the client might know that it is 
>>> configured for an account with that URI, but in order to
>>> communicate with the application service it will need to resolve
>>> the DNS domain name (and application type) to an IP address. So
>>> that's the reference identifier. The presented identifier in the
>>> certificate will also be of the form sip:domain, not
>>> sip:user@domain.
>>> 
>> 
>> Sure, and I guess what I am talking about is how one derives a
>> reference identifier of sip:voice.example.edu from an address of
>> record (AoR) of sip:user@voice.example.edu. For example, I click on
>> the AoR on a web page, or I type it from Mr. User's business card. I
>> guess my point is it would be useful for the example to show that,
>> given the URI of a _resource_, you derive (extract?) a URI of a
>> _service_ to be the reference entry. You've mentioned that in text,
>> but it would be useful for the example to show it as well.
> 
> Isn't that a matter for the application protocol?
> 
> I want to authenticate with my IMAP server as user@mail.example.net, so
> my client needs to figure out which DNS domain name(s) it will attempt
> to resolve in order to communicate with the right IMAP server (perhaps
> the client checks its configuration or simply chops off the "user@" from
> the front). The result of that process is the source domain that's used
> as input to the verification procedures described in this I-D. It seems
> to me that the same goes for XMPP, SIP, etc.
> 
> In Section 1.2 define source domain as:
> 
>   source domain:  The fully-qualified DNS domain name that a client
>      expects an application service to present in the certificate
>      (e.g., "www.example.com"), typically input by a human user,
>      configured into a client, or provided by reference such as in a
>      hyperlink.  The combination of a source domain and, optionally, a
>      service type enables a client to construct one or more reference
>      identifiers.
> 
> In Section 2.1 we say:
> 
>   From the perspective of the application client or user, some names
>   are direct because they are provided directly by a human user (e.g.,
>   via runtime input, prior configuration, or explicit acceptance of a
>   client connection attempt) whereas other names are indirect because
>   they are automatically resolved by the client based on user input
>   (e.g., a target name resolved from a source name using DNS SRV
>   records).  This dimension matters most for certificate consumption,
>   specifically verification as discussed in this document.
> 
> In Section 4.2.1 we say:
> 
>   The inputs used by the client to construct its list of reference
>   identifiers might be a URI that a user has typed into an interface
>   (e.g., an HTTPS URL for a web site), configured account information
>   (e.g., the domain name of a particular host or URI used for
>   retrieving information or connecting to a network, which might be
>   different from the server portion of the user's account name), a
>   hyperlink in a web page that triggers a browser to retrieve a media
>   object or script, or some other combination of information that can
>   yield a source domain and a service type.
> 
>   The client might need to extract the source domain and service type
>   from the input(s) it has received.  The extracted data MUST include
>   only information that can be securely parsed out of the inputs (e.g.,
>   extracting the fully-qualified DNS domain name from the "authority"
>   component of a URI or extracting the service type from the scheme of
>   a URI) or information for which the extraction is performed in a
>   manner that is not subject to subversion by network attackers (e.g.,
>   pulling the data from a delegated domain that is explicitly
>   established via client or system configuration, resolving the data
>   via [DNSSEC], or obtaining the data from a third-party domain mapping
>   service in which a human user has explicitly placed trust and with
>   which the client communicates over a connection that provides both
>   mutual authentication and integrity checking).  These considerations
>   apply only to extraction of the source domain from the inputs;
>   naturally, if the inputs themselves are invalid or corrupt (e.g., a
>   user has clicked a link provided by a malicious entity in a phishing
>   attack), then the client might end up communicating with an
>   unexpected application service.
> 
> Do you feel we need to say more about how an application client
> determines the source domain? Is there something special about SIP AORs
> that this document does not cover (but should be covering)?
> 


As you mention, 4.2.1 says "The inputs used by the client to construct its list of reference identifiers might be a URI that a user has typed into an interface..." and "The client might need to extract the source domain and service type from the input(s) it has received."

In the case of SIP (and of HTTP if we pretended it used URI-IDs, that input as typed in by a user is likely to contain stuff that has to be stripped out of the reference identifier. For example, in SIP, this input is very likely to be the AoR of the person you want to call. i.e. a URI identifying a user. I am suggesting a soup to nuts example of how a real world input such as that gets converted to a resulting URI reference identity.

I don't think this is peculiar to SIP, other than due to the fact that SIP uses URI-IDs. If HTTP were to use URI-IDs, then you would have similar issues of getting from the URI as entered by a user to a source identifier in URI  form.


> Peter
> 
> -- 
> Peter Saint-Andre
> https://stpeter.im/
> 
> 
>