ietf
[Top] [All Lists]

Re: Second Last Call: draft-saintandre-tls-server-id-check (...) to BCP

2010-12-17 03:29:28
Hi Jeff,
At 11:14 08-12-10, =JeffH wrote:
[ adding certid@ list ]

I suggest following up on the certid(_at_)ietf(_dot_)org mailing list and 
dropping ietf(_at_)(_dot_)

I looked into this in detail earlier this year -- it was discussed on ietf@ (during the initial IETF LC for this spec), and this particular issue resolution was summarized here (by John Klensin)..

  Re: Last Call: draft-saintandre-tls-server-id-check
  http://www.ietf.org/mail-archive/web/ietf/current/msg62601.html

In brief summary, RFCs {1034,1035,1123,2181} do not define "letter-digit-hyphen" DNS name labels in a concisely referenceable fashion, nor particularly clearly.

I'll go with John Klensin's argument for simplicity.

The IDNA specs have done the wider DNS-community a service by doing so, and at present the fashion in which "traditional domain name" is defined and cited is the best we can do. Given that IDNs are a deployed reality, every (new or updated) spec that discusses domain names going forward is going to need to reference the IDNA specs in some fashion, and probably should simply use the LDH-Label, A-Label, and U-Label nomenclature. (IMV)

Agreed (in this context).

while I agree with your subtle substitution of..

  "fully-qualified DNS domain name portion"

..with..

  "domain name portion"

..however, I disagree with your further simplification of that paragraph because we feel we need to supply the more detailed context.

I'll comment on this below.

No, that is not the intent. We've further refined that paragraph as a result of a concurrent discussion with Ben Campbell (on certid@) and have this present working text..

   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.

That sound good.

You mean removing the parenthetical "(following the definition of "label" from [DNS])", yes?

In reviewing RFC 1035 I see your concern, tho we'd like to reference a description of "label". I note that RFC 1034 [S3.1] seems to appropriately supply this, so I propose we keep the parenthetical but alter it to be..

  (following the description of labels and domain names in [DNS-CONCEPTS])

That's fine to me.

Yes, but that definition (and term) appears to be specific to underlying DNS internals, not to (pseudo) domain names as wielded (or "presented" (eg in certs)) in other protocols.

This brings us to the question of the DNS specific usage of "domain names" and when the term is used in an application context.

For example, is the left-most part in "foo*.example.com" ( draft-saintandre-tls-server-id-check-12, Section 5.2) acceptable as a label?

I'll react to some comments from Cullen Jennings.

At 23:17 15-12-10, Cullen Jennings wrote:
So let me start with I think there is great information in here and I think it should be published as a standards track RFC however I do think there are some issues with the relation with this draft and the realities of what would help improve security in deployment of SIP, HTTP, IMAP, XMPP etc.

The information in draft-saintandre-tls-server-id-check is helpful. It's been a mouthful to comment on the draft as it requires the reading of several referenced documents first. This in itself gives us an idea of the breath this draft tries to cover.

process review. Next this draft contradicts the procedures in existing protocols and says that it does not apply to the existing protocols but that it would take precedence over any future updates of existing protocols that use TLS within the scope specified here. I

That begs the question about whether this draft should be a BCP. I would feel more comfortable if such a document is carefully reviewed by people from the different application groups it touches on as it attempts to shape the future. This is not to say that there hasn't been enough discussion about the draft or that it did not get adequate socialization. If the authors are of the opinion that there has been that breath of review, I am fine with that.

In section 3.2, in the imap example, you are saying that if I configure my imap server to mail.example.com and it presents a certificate with a DNS-ID of example.com that this is OK. That does not sound OK to me but I don't know how IMAP works. In the SIP example, the

Consider an email address of "user(_at_)example(_dot_)com". The IMAP service is discovered by the MUA by doing a DNS SRV lookup on _imaps.example.com ( draft-daboo-srv-email ) and the target is mail.example.net, i.e that's where the IMAP server is running. The certificate provides a SRV-ID of "_imaps.example.com" and a DNS-ID of "example.com".

BTW, the reference to draft-ietf-tls-rfc4366-bis could be normative for the reader to understand SNI and not rely on the workaround for multiple identifiers.

Regards,
-sm
_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf

<Prev in Thread] Current Thread [Next in Thread>