Re: [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-allocation-token-09: (with DISCUSS and COMMENT)

"Gould, James" <jgould@verisign.com> Wed, 15 August 2018 21:09 UTC

Return-Path: <jgould@verisign.com>
X-Original-To: regext@ietfa.amsl.com
Delivered-To: regext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AA944130E92; Wed, 15 Aug 2018 14:09:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=verisign.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 ENNz7_PLPJIr; Wed, 15 Aug 2018 14:09:03 -0700 (PDT)
Received: from mail6.verisign.com (mail6.verisign.com [69.58.187.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5D595130DF3; Wed, 15 Aug 2018 14:09:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=verisign.com; l=16776; q=dns/txt; s=VRSN; t=1534367344; h=from:to:cc:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version:subject; bh=ty2r/w6L6QVODDXYaJQ8k37JpAjNZIvWWfk5QrjN3R0=; b=gQcwI/BujQYsg+ctf4FcZFIpf07txsqwMuZ+4rH40iOfiuNh/n+1KMRT uAzxWIZMtAld/RDs8qe7Ij5lhzaKYsHyFl2GQitlyONRrPeBt7lqB1g+f RX5Q7j1NV4dSQUAD42eeEdUWpTGOPjsHgBghejQodOBLzJFQ9tilQq1OP bYrGKWsuVrFbXtCM/6hYozqpFzcLCex91zHWvR2WSBwmXCVE6+EOF7uqI Rvt8/OUGX87Ou0vCvvHRzP7jdEQjmJ/LP5m6qItiIJPnBfSNVWEwuD34P pDlOXg6CbFwLJtc9jSO2efV3/sbpeDNKICbJ1tWXLNIurDGS/rfLckWOU g==;
X-IronPort-AV: E=Sophos;i="5.53,244,1531800000"; d="scan'208";a="5447270"
IronPort-PHdr: 9a23:b3gnZxfcFXe1WmgXthyck73qlGMj4u6mDksu8pMizoh2WeGdxc25ZBKN2/xhgRfzUJnB7Loc0qyK6/6mATRIyK3CmUhKSIZLWR4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+KPjrFY7OlcS30P2594HObwlSizexfbJ/IA+qoQnNq8IbnZZsJqEtxxXTv3BGYf5WxWRmJVKSmxbz+MK994N9/ipTpvws6ddOXb31cKokQ7NYCi8mM30u683wqRbDVwqP6WACXWgQjxFFHhLK7BD+Xpf2ryv6qu9w0zSUMMHqUbw5Xymp4rx1QxH0ligIKz858HnWisNuiqJbvAmhrAF7z4LNfY2ZKOZycqbbcNgHR2ROQ9xRWjRBDI2icoUPE+QPM+VWr4b/qVQOrAexCwajC+701j9HnXr20bEm3+k7EwzL2hErEdIUsHTTqdX4LKkeX+GyzKnVyTXMcuta0ir55ofSdxAuv+qMUbxtesfWy0kvGATFjkiUqYP4JD6VyPoCs3Ka7+p7VOKvhGgnpxttrTiow8chk4/EjZ8bxFDD8CV22oc1JdugRU5lf9GkCppQtzqbN4t5RMMiQmdotzogxrIavp67eTAGyJU5yB7DZfyLaY+I4gjsVOuXPDx2h2pldaqiixqu60Ss1+/xW8eu3FpXridInMPAu38J2hDL98SLVuFx8lqj1DqTzQzf9+5JLEMumabGKJMt2rAwmYQQvEjfGyL7nV/5gaySe0o//+Wl5frrbajnq5KZLIB5jgDzP6Yrl8GxD+k1MBUBUm6G8uqmzrLj51f2QLBSg/0zlanWrY7VKNwApq68Hw9VyoEj6wujDzu+0NQXg30HLFVddR+ak4bnI0zCL/DgA/mwglugjClny+rYPrL9BZXNNGDDnK37crlg8UJc1hAzzctZ555OFr4BJ/fzVlfwtNzeEBA5LxS5z/v7BNlny48TW2yCDrWEPK7Sv1KE/O0iLu2UaI8Qojn9Kvwl5/D0jX8+nF8QZaup3ZQQaHClGvRpPl6UYWTyjdcbEGcKpQs+TOPsiFGYTTFTYHOyU7om5j4nEIKmEZvDRoe1jbyCxii0A4BWZmNdB1CJEHfoa5+IVOkRZyKPOsVhiCALVaC9S4890hGjrA76xKR8Lurb4SAYtIzs1MR75+HJkhEy7zN0BdyH026RV2F0gn8IRzgu0a9iu0xy0FmD0bRhj/xZC9NT+/1JXh4gNZHCwOx1Fd/zWh7YctiTTFamRtKmDi0rQdItwt8OZEB9F8y+jhDE3CqlHbkVmqeKBJMq7qLc0WL9J8Fny3bJzKMhlUUpQtNTNW26ga5y7xDTCJTVk0WDlqalaacc0CnM9Gid0WqOslpVXxNuXqrbRXAQekzWrc7n6U/YSL+uE7snOBNbycGeMqtKdsHpjVJeSff5JtvebHy+mmisBRqR2ryMbJDle2QH3CXGE0UEkh4c/WqINQQkASehuW3eBiR0FV3ze0Ps7fV+qHSjQ08sygGHdFBu172p+hEPg/yTVu8c3rUetCg9rDV0GU6338jKBNqYuwphYKJcbMsn4FhZ2mLWqQN8PoC7IqBjmFEebwp3s1np1xVtBYUT2fQt+Vknygh7LKOemHBIey6blcTzM7HKKUH3/QzpZqLLjBWW7NabsoYi09tw/1Tupw6BF0c+/TNgydYDgFWG4ZCfRiUVTJb9Fg4V/h13vPuSNisy4J7Q2VVyPLO1qT7N3ZQiA+5zmUXoRMtWLK7RTFy6KMYdHcX7bbVyw1U=
X-IPAS-Result: A2FFAgAmlXRb/zGZrQpaAw4OAQEBBAEBCgEBgyCBEoEnCoNkiAqRfpJWFIErFyQLExALhD4CF4M/NBgBAgEBAQEBAQIBAQKBBQyCNSQBDi8cLwgBBQEBAQEBAScBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEIAggHNRIBGgYjET4HEAIBCBoCHwcCAgIwFRACBAEJBAWDIgGCEKtOgS6KYIELh2w0gUI+gRInH4JMgxsCAQIBgSoBEgEHAhYXCiaCOjGCJAKIBYUAjWYDBgKGI4lLgTpIg2aIRIsIh3ICBAIEBQIUgUGBGlgRCHAVOyoBgj4JgkSDNIUUhQQ6bwEMJIsxDR6BAYEbAQE
Received: from BRN1WNEX01.vcorp.ad.vrsn.com (10.173.153.48) by BRN1WNEX02.vcorp.ad.vrsn.com (10.173.153.49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1466.3; Wed, 15 Aug 2018 17:09:00 -0400
Received: from BRN1WNEX01.vcorp.ad.vrsn.com ([fe80::a89b:32d6:b967:337d]) by BRN1WNEX01.vcorp.ad.vrsn.com ([fe80::a89b:32d6:b967:337d%5]) with mapi id 15.01.1466.003; Wed, 15 Aug 2018 17:09:00 -0400
From: "Gould, James" <jgould@verisign.com>
To: Benjamin Kaduk <kaduk@mit.edu>, The IESG <iesg@ietf.org>
CC: "draft-ietf-regext-allocation-token@ietf.org" <draft-ietf-regext-allocation-token@ietf.org>, Patrick Mevzek <patrick+ietf@deepcore.org>, "regext-chairs@ietf.org" <regext-chairs@ietf.org>, "pm@dotandco.com" <pm@dotandco.com>, "regext@ietf.org" <regext@ietf.org>
Thread-Topic: [EXTERNAL] Benjamin Kaduk's Discuss on draft-ietf-regext-allocation-token-09: (with DISCUSS and COMMENT)
Thread-Index: AQHUNLE30eHUOzOVgEmGpXjrjEl+FaTBTv0A
Date: Wed, 15 Aug 2018 21:09:00 +0000
Message-ID: <9951303D-E12C-40B2-85A8-38B16A9430F1@verisign.com>
References: <153434888303.14412.1959334124764055015.idtracker@ietfa.amsl.com>
In-Reply-To: <153434888303.14412.1959334124764055015.idtracker@ietfa.amsl.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.e.1.180613
x-originating-ip: [10.170.148.18]
Content-Type: text/plain; charset="utf-8"
Content-ID: <1CD9CEC5C9742D4A9A33EBE00DD69DB8@verisign.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/gKX8fM7dmsd6SLjWm4TvdegxFks>
Subject: Re: [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-allocation-token-09: (with DISCUSS and COMMENT)
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: Registration Protocols Extensions <regext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/regext>, <mailto:regext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext/>
List-Post: <mailto:regext@ietf.org>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/regext>, <mailto:regext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Aug 2018 21:09:07 -0000

Benjamin,

Thank you for the review and feedback.  My responses to your feedback are embedded below with a "JG - " prefix.

  
—
 
JG



James Gould
Distinguished Engineer
jgould@Verisign.com

703-948-3271
12061 Bluemont Way
Reston, VA 20190

Verisign.com <http://verisigninc.com/> 

On 8/15/18, 12:01 PM, "Benjamin Kaduk" <kaduk@mit.edu> wrote:

    Benjamin Kaduk has entered the following ballot position for
    draft-ietf-regext-allocation-token-09: 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-regext-allocation-token/
    
    
    
    ----------------------------------------------------------------------
    DISCUSS:
    ----------------------------------------------------------------------
    
    (I agree with Ekr's DISCUSS about these being bearer tokens and am happy to
    see the discussion on improving the text there.)
    
    There are a couple of other things that I seek discussion on:
    
    The document itself does very little to motivate the addition of the
    allocation token, from a security point of view.  In what security model is
    there a security advantage from having this sort of single-use
    authorization token as opposed to using existing authentication and
    authorization methods?  The use case of a premium domain-name auction that
    came up in Ekr's ballot thread is actually quite enlightening, in that the
    token allows for the authorization to be granted to the winner of an
    auction even in the case where the winning bidder and the current
    registration owner do not have any common authentication or authorization
    infrastructure (other than for the auction and its payment itself).  Some
    generalization of these considerations into a model that matches the
    generalized functionality in the draft would be a quite helpful addition.
    This could also be leveraged in the discussion of why the allocation token
    is not needed in the various commands for which its usage is not provided
    (mentioned in my COMMENT).

JG - There are many use cases where draft-ietf-regext-allocation-token can be used to contain an allocation token to authorize allocation of a domain name.  There was similar feedback from the WG, which was addressed by the addition of the second paragraph in the Introduction, which was to list the known use cases for allocation via the Allocation Token.  The purpose of draft-ietf-regext-allocation-token is to be the conduit to support the currently known allocation and yet to be defined allocation use cases.  We don't want to have the protocol overly prescribe a specific use case, since it fills a critical role of enabling the tokens to be passed over EPP in an explicit manner without attempting to override the authorization info mechanism defined in RFC 5731.  As noted in my response to Eric's feedback, the initial auction use case was the catalyst for draft-ietf-regext-allocation-token, but other use cases came up where draft-ietf-regext-allocation-token met the need like pre-eligibility validation and founders program registrations.  
    
    I also request changes to the examples (or the discussion surrounding them).
    Using "abc123" as the example allocation token is probably unwise, as that
    value provides none of the properties we desire from allocation tokens.
    If you don't want to use an actual random-looking (e.g., self-encrypted
    server-generated) or signed value because it makes the examples too long,
    at least provide some text indicating that "abc123" is a placeholder and
    real tokens should have a different structure.
    Similarly, the passwords used in the examples hardly have enough entropy to
    be considered secure by modern standards.
    
JG - I can add a paragraph to the "Conventions Used in This Document" section that indicates that the "abc123" token value is used as a placeholder value in the examples.  The server MUST support token values that follow the Security Considerations.     
    
    ----------------------------------------------------------------------
    COMMENT:
    ----------------------------------------------------------------------
    
    (section-by-section)
    
    Section 1
    
       A client MUST pass an Allocation Token known to the server to be
       authorized to use one of the supported EPP transform commands.  It is
       up to server policy which EPP transform commands and which objects
       require the Allocation Token.
    
    The language could probably be tightened up for greater clarity about when
    the MUST applies, and perhaps be consistent about "supported" vs. "require"
    between sentences.
    
JG - This pretty much says that the client MUST pass an Allocation Token to the server that the server supports and can validate.  The "to be authorized..." portion of the sentence can be removed, since that is covered by the second sentence.  Does it tighten it up by stating "A client MUST pass an Allocation Token to the server that the server supports and can validate" in the first sentence?    

    Section 1.1
    
       represents lines returned by a protocol server.  Indentation and
       white space in examples are provided only to illustrate element
       relationships and are not a REQUIRED feature of this protocol.
    
    It would be nice to rephrase this so that "NOT REQUIRED" could be
    together/majuscule.  Maybe, "to illustrate element relationships and
    implementations are NOT REQUIRED to adhere to such whitespace and
    formatting"?
   
JG - How about "Indentation and white space in the examples are provided only to illustrate element relationships and are NOT REQUIRED in the protocol."?
 
       The XML namespace prefix "allocationToken" is used for the namespace
       "urn:ietf:params:xml:ns:allocationToken-1.0", but implementations
       MUST NOT depend on it and instead employ a proper namespace-aware XML
       parser and serializer to interpret and output the XML documents.
    
    Maybe I'm misunderstanding, but isn't this kind-of inviting sloppy
    implementations that don't check?  Sometimes we say things like "this
    prefix is used in the examples for concision but actual usage is expected
    to vary between fully scoped and shortened versions".

JG - I believe this disallows sloppy implementations by using the normative MUST NOT depend on the "allocationToken" prefix.  If an implementation is dependent on the use of the "allocationToken" XML namespace prefix, it would not be compliant with the protocol, which mitigates a sloppy implementation.    
    
    Section 3.1.1
    
       2.  If an object requires an Allocation Token and the Allocation
           Token does not apply to the object or an object does not require
           an Allocation Token, then the server SHOULD return the
           availability status as unavailable (e.g., "avail" attribute is
           "0" or "false").
    It's really unclear why these two cases are not distinguished in a
    machine-readable way (i.e., not the text of the reason).  (Also in 3.2.4,
    etc.)

JG - I don't understand what you mean by "in a machine-readable way".  The cases for the check response cover the expected value of the "avail" flag in the check response in RFC 5731, when applying the Allocation Token in the check command, which is the key machine-readable attribute returned to the client.  The  <domain:reason> is human-readable and not discussed in the two cases, since it should not drive client-side logic.  
    
    Section 3.1.2
    
       [...] Authorized clients MAY retrieve
       the Allocation Token (Section 2.1) along with the other object
       information using the <allocationToken:info> element. [...]
    
    The causality here is a bit weird; it seems like the client is requesting
    to retrieve the token by including <allocationToken:info> in its request so
    that the server knows to include it in the response (where it is retrieved
    from an <allocationToken:allocationToken> element).

JG - That is correct, querying for the allocation token is explicit by the inclusion of the empty <allocationToken:info> element in the info command.  There is no need for the server to return it if the client does not need it.  
    
       If the query was successful, the server replies with an
       <allocationToken:allocationToken> element, as described in
       Section 2.1.
    
    Section 2.1 describes the contents of the element, not how the server
    replies with it.  Maybe, "interpreted as described in" would be better?

JG - Maybe this can be rephrased similar to the info response description in RFC 8334 as "If the query was successful, the server replies with an <allocationToken:allocationToken> element along with the regular EPP <resData>.  The <allocationToken:allocationToken> element is described in section 2.1."  Is this better?  
    
    Section 3.1.3
    
    It would probably be good to have some discussion of why the <transfer>
    query command (as opposed to transform command) does not benefit from
    having this additional authorization-checking mechanism.

JG - This is consistent language to other EPP extensions, where the extension defines explicitly what commands don't apply and doesn't attempt to cover why they don't apply.  See section 3.6 and 3.7 in RFC 8334, or section 5.1.1, 5.1.3, 5.2.2, and 5.2.3 in RFC 5910.
    
    Section 3.2.1
    
       The EPP <create> command provides a transform operation that allows a
       client to create an instance of an object.  In addition to the EPP
       command elements described in an object mapping like [RFC5731], the
       command MUST contain a child <allocationToken:allocationToken>
    
    This MUST is only for the cases when an allocation token is to be used,
    right?  (Similarly in 3.2.4, etc.)

JG - Yes, that is correct.  This is consistent with other EPP extensions, where the normative language applies to when the extension is needed or used.  
    
       element for the client to be authorized to create and allocate the
       object.  If the Allocation Token does not apply to the object, the
       server MUST return an EPP error result code of 2201.
    
    nit: Maybe "supplied Allocation Token"?

JG - Ok, I can change "If the Allocation Token does not apply..." to "If the supplied Allocation Token does not apply...".  
  
  
    Section 3.2.2, 3.2.3, 3.2.5
    
    Similarly to for Section 3.1.3, some text on why the additional
    authorization is not useful would be helpful.

JG - This is consistent language to other EPP extensions, where the extension defines explicitly what commands don't apply and doesn't attempt to cover why they don't apply.  See section 3.6 and 3.7 in RFC 8334, or section 5.1.1, 5.1.3, 5.2.2, and 5.2.3 in RFC 5910. 
    
    Section 4.1
    
         <annotation>
           <documentation>
             Extensible Provisioning Protocol v1.0
             Allocation
             Token Extension.
           </documentation>
         </annotation>
    
    nit: are this many line breaks needed?
    
JG - This can be fixed.  
    
    I also question the minLength of 1 for an allocation token value.
    Why couldn't it be more like 16 or even 32?  I would put this in the
    DISCUSS section but maybe there are mitgating circumstances I'm unaware of.

JG - The makeup of the token itself it not defined by draft-ietf-regext-allocation-token, so the only requirement that draft-ietf-regext-allocation-token needs to apply is that the <allocationToken:allocationToken> element is not empty.