Re: [eppext] draft-ietf-eppext-keyrelay-00 Feedback

Antoin Verschuren <antoin.verschuren@sidn.nl> Mon, 28 April 2014 09:58 UTC

Return-Path: <Antoin.Verschuren@sidn.nl>
X-Original-To: eppext@ietfa.amsl.com
Delivered-To: eppext@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BB1E21A093A for <eppext@ietfa.amsl.com>; Mon, 28 Apr 2014 02:58:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.843
X-Spam-Level:
X-Spam-Status: No, score=0.843 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_NL=0.55, HOST_EQ_NL=1.545, RP_MATCHES_RCVD=-0.651, SPF_PASS=-0.001] autolearn=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 QeT1KXExyIZY for <eppext@ietfa.amsl.com>; Mon, 28 Apr 2014 02:58:34 -0700 (PDT)
Received: from arn2-kamx.sidn.nl (kamx.sidn.nl [IPv6:2a00:d78:0:147:94:198:152:69]) by ietfa.amsl.com (Postfix) with ESMTP id D8E5C1A0936 for <eppext@ietf.org>; Mon, 28 Apr 2014 02:58:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; d=sidn.nl; s=sidn_nl; c=relaxed/relaxed; h=message-id:date:from:user-agent:mime-version:to:subject:references:in-reply-to:x-enigmail-version:content-type:content-transfer-encoding:x-originating-ip; bh=YldaHzmOMDgbPWjpiwN37DdtdjLm+isoUZ9oBacuAv8=; b=mdsnkNMnBxt0UwmZ3OB8df9C3sp8hl9SJ7VWmwunhWbUx5cYk7CxxTlYNYG6iq4nHlUECWMkFLB1/WV6PyjO+LoRWeKJx6ErSffIi9UN2QYXgCooKgWzH0owRJe16CoH7IGkh5udEtoYx1YKL4f+wk5YnzDSKYSKNGgaIT1BGvM=
Received: from kahubcasn02.SIDN.local ([192.168.2.74]) by arn2-kamx.sidn.nl with ESMTP id s3S9wWAo021900-s3S9wWAq021900 (version=TLSv1.0 cipher=AES128-SHA bits=128 verify=CAFAIL); Mon, 28 Apr 2014 11:58:32 +0200
Received: from [94.198.152.222] (94.198.152.222) by kahubcasn02.SIDN.local (192.168.2.77) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 28 Apr 2014 11:58:27 +0200
Message-ID: <535E2642.3010104@sidn.nl>
Date: Mon, 28 Apr 2014 11:58:26 +0200
From: Antoin Verschuren <antoin.verschuren@sidn.nl>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0
MIME-Version: 1.0
To: "Gould, James" <JGould@verisign.com>, "eppext@ietf.org" <eppext@ietf.org>
References: <CF7FD9B1.5DBAA%jgould@verisign.com>
In-Reply-To: <CF7FD9B1.5DBAA%jgould@verisign.com>
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [94.198.152.222]
Archived-At: http://mailarchive.ietf.org/arch/msg/eppext/nj7kumLH19z7oFGhHQGrqyOSOCM
Subject: Re: [eppext] draft-ietf-eppext-keyrelay-00 Feedback
X-BeenThere: eppext@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: EPPEXT <eppext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/eppext>, <mailto:eppext-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/eppext/>
List-Post: <mailto:eppext@ietf.org>
List-Help: <mailto:eppext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/eppext>, <mailto:eppext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Apr 2014 09:58:36 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

op 25-04-14 15:23, Gould, James schreef:
> I have not received any feedback publicly or privately on the
> options in the message below.  Any thoughts on this?

Hi James,

First, thank you for your feedback and extensive suggestions.
I did receive private feedback to your suggestions, but was not able
to digest it yet due to a lack of time, sorry about that. I've asked
the commenter to post on-list, but have not been able to get back on that.

The major comments to your suggestions as I understand them were:

<command>

    <update>

This suggest an update of a domain object in the registry DB, but a
keyrelay does not update anything in the DB as it is not submitted by
the registrar of record. A keyrelay only reads object information and
uses that to relay data.

<resData>

The authors can live with the suggested changes to the response.
You'll get the domain info and key info in the response.

<command>

   <create>

     <keyrelay:create>

This is where both the authors and some others have problems with. A
create suggests you're creating an object in the registry DB, but we
don't. One of the requirements for keyrelay was that the DB would be
left unharmed, no special tables or attributes for keyrelay.

I understand the difference between the message syntax and the actual
process flow, but this does seem to confuse people. Are there any
other extensions that use a create or update syntax when there is no
authorization or actual object change? Is it clear enough in the EPP
RFC's that there is this separation of syntax and meaning? RFC 5730
section 2.9 states by definition that <create> and <update> actually
change objects. The authors feel keyrelay does not fit in any of the
current protocol commands. It's not a session management command, not
a query command, and not an object transform command. So keyrelay is
actually a new 4th protocol command type which can best be described
as a communication command.

Another comment was about the double use of the domain name in the
message:

        <domain:name>example.org</domain:name>
        .....
        <keyrelay:name>example.org</keyrelay:name>

which seemed unnessecary.

I'll ask my co-authors to follow up on this, but in the mean time, I
would like to hear others comment on the potential violation of RFC
5730 section 2.9 by your suggested syntax on-list.


> From: <Gould>, James Gould <jgould@verisign.com 
> <mailto:jgould@verisign.com>> Date: Thursday, March 13, 2014 at
> 1:52 PM To: Antoin Verschuren <antoin.verschuren@sidn.nl 
> <mailto:antoin.verschuren@sidn.nl>>, "eppext@ietf.org 
> <mailto:eppext@ietf.org>" <eppext@ietf.org
> <mailto:eppext@ietf.org>> Subject: Re: [eppext]
> draft-ietf-eppext-keyrelay-00 Feedback
> 
> Antoin,
> 
> Thanks for the detailed explanation.  The choice of which form of 
> EPP extension to use (protocol, object, command-response) does not 
> change the process flow at all, but simply determines the syntax
> of the key relay commands and responses.  Technically 
> draft-ietf-eppext-keyrelay uses both the protocol extension for
> the command and the object extension for the poll response.  My 
> recommendation is to get down to one type of extension for the 
> specification.   The best way to describe the use of the object
> and command-response extensions is to provide some examples, which
> I do below:
> 
> *Command-Response Extension:*
> 
> *Key Relay Command* as extension to empty domain update similar to
> the restore command in RFC 3915.  To note this is a new verb that
> is not mixed with the update from a feature and authorization
> perspective.
> 
> 
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> 
> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
> 
> xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
> 
> xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
> 
> xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0">
> 
> <command>
> 
> <update>
> 
> <domain:update>
> 
> <domain:name>example.org</domain:name>
> 
> </domain:update>
> 
> </update>
> 
> <extension>
> 
> <keyrelay:keyrelay>
> 
> <keyrelay:name>example.org</keyrelay:name>
> 
> <keyrelay:keyData>
> 
> <secDNS:flags>256</secDNS:flags>
> 
> <secDNS:protocol>3</secDNS:protocol>
> 
> <secDNS:alg>8</secDNS:alg>
> 
> <secDNS:pubKey>cmlraXN0aGViZXN0</secDNS:pubKey>
> 
> </keyrelay:keyData>
> 
> <keyrelay:authInfo>
> 
> <domain:pw>JnSdBAZSxxzJ</domain:pw>
> 
> </keyrelay:authInfo>
> 
> <keyrelay:expiry>
> 
> <keyrelay:relative>P1M13D</keyrelay:relative>
> 
> </keyrelay:expiry>
> 
> </keyrelay:keyrelay>
> 
> </extension>
> 
> <clTRID>ABC-12345-XYZ</clTRID>
> 
> </command>
> 
> </epp>
> 
> 
> *Key Relay Poll Response* as an extension to the domain info 
> response.
> 
> 
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
> 
> xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
> 
> xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
> 
> xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0">
> 
> <response>
> 
> <result code="1301">
> 
> <msg>Command completed successfully; ack to dequeue</msg>
> 
> </result>
> 
> <msgQ count="5" id="12345">
> 
> <qDate>1999-04-04T22:01:00.0Z</qDate>
> 
> <msg>Key Relay action completed successfully.</msg>
> 
> </msgQ>
> 
> <resData>
> 
> <domain:infData
> 
> xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
> 
> <domain:name>example.org</domain:name>
> 
> <domain:roid>EXAMPLE1-REP</domain:roid>
> 
> <domain:clID>ClientX</domain:clID>
> 
> </domain:infData>
> 
> </resData>
> 
> <extension>
> 
> <keyrelay:panData>
> 
> <keyrelay:name paResult="true">example.org
> 
> </keyrelay:name>
> 
> <keyrelay:paDate>1999-04-04T22:01:00.0Z
> 
> </keyrelay:paDate>
> 
> <keyrelay:keyData>
> 
> <secDNS:flags>256</secDNS:flags>
> 
> <secDNS:protocol>3</secDNS:protocol>
> 
> <secDNS:alg>8</secDNS:alg>
> 
> <secDNS:pubKey>cmlraXN0aGViZXN0</secDNS:pubKey>
> 
> </keyrelay:keyData>
> 
> <keyrelay:authInfo>
> 
> <domain:pw>JnSdBAZSxxzJ</domain:pw>
> 
> </keyrelay:authInfo>
> 
> <keyrelay:expiry>
> 
> <keyrelay:relative>P24D</keyrelay:relative>
> 
> </keyrelay:expiry>
> 
> <keyrelay:reID>ClientX</keyrelay:reID>
> 
> <keyrelay:acID>ClientY</keyrelay:acID>
> 
> </keyrelay:panData>
> 
> </extension>
> 
> <trID>
> 
> <clTRID>ABC-12345</clTRID>
> 
> <svTRID>54321-XYZ</svTRID>
> 
> </trID>
> 
> </response>
> 
> </epp>
> 
> 
> *Object Extension:*
> 
> Key Relay is an object that can be created via the create command
> and can get information via the info command and response.  The
> poll message is simply a key relay info response.
> 
> *Key Relay Command *using a Key Relay Create Command.
> 
> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp
> xmlns="urn:ietf:params:xml:ns:epp-1.0" 
> xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" 
> xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" 
> xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0"> <command> 
> <create> <keyrelay:create> 
> <keyrelay:name>example.org</keyrelay:name> <keyrelay:keyData> 
> <secDNS:flags>256</secDNS:flags> 
> <secDNS:protocol>3</secDNS:protocol> <secDNS:alg>8</secDNS:alg> 
> <secDNS:pubKey>cmlraXN0aGViZXN0</secDNS:pubKey> 
> </keyrelay:keyData> <keyrelay:authInfo> 
> <domain:pw>JnSdBAZSxxzJ</domain:pw> </keyrelay:authInfo> 
> <keyrelay:expiry> <keyrelay:relative>P1M13D</keyrelay:relative> 
> </keyrelay:expiry> </keyrelay:create> </create> 
> <clTRID>123456</clTRID> </command> </epp>
> 
> *Key Relay Poll Response* * * <epp
> xmlns="urn:ietf:params:xml:ns:epp-1.0" 
> xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" 
> xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" 
> xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0"> <response> 
> <result code="1301"> <msg>Command completed successfully; ack to
> dequeue</msg> </result> <msgQ count="5" id="12345"> 
> <qDate>1999-04-04T22:01:00.0Z</qDate> <msg>Key Relay action
> completed successfully.</msg> </msgQ> <resData> <keyrelay:infData> 
> <keyrelay:name paResult="true">example.org </keyrelay:name> 
> <keyrelay:paDate>1999-04-04T22:01:00.0Z </keyrelay:paDate> 
> <keyrelay:keyData> <secDNS:flags>256</secDNS:flags> 
> <secDNS:protocol>3</secDNS:protocol> <secDNS:alg>8</secDNS:alg> 
> <secDNS:pubKey>cmlraXN0aGViZXN0</secDNS:pubKey> 
> </keyrelay:keyData> <keyrelay:authInfo> 
> <domain:pw>JnSdBAZSxxzJ</domain:pw> </keyrelay:authInfo> 
> <keyrelay:expiry> <keyrelay:relative>P24D</keyrelay:relative> 
> </keyrelay:expiry> <keyrelay:reID>ClientX</keyrelay:reID> 
> <keyrelay:acID>ClientY</keyrelay:acID> </keyrelay:infData> 
> </resData> <trID> <clTRID>BCD-23456</clTRID> 
> <svTRID>65432-WXY</svTRID> </trID> </response> </epp>
> 
> In addition, support can be provided for the Relay Info Command and
> associated Response (example provided already with the poll 
> response).
> 
> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp
> xmlns="urn:ietf:params:xml:ns:epp-1.0" 
> xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0"> <command> 
> <info> <keyrelay:info> <keyrelay:name>example.org</keyrelay:name> 
> </keyrelay:info> </info> <clTRID>123456</clTRID> </command> </epp> 
> * *
> 
> In looking at the samples, I actually like the Object Extension
> the best.  I can provide the XSD’s that I validated the examples
> against if desired.
> 
> Thanks,
> 
> --
> 
> JG
> 
> 
> 
> James Gould Principal Software Engineer jgould@verisign.com
> <mailto:jgould@verisign.com>
> 
> 703-948-3271 (Office) 12061 Bluemont Way Reston, VA 20190 
> VerisignInc.com
> 
> 
> 
> On 3/13/14, 5:39 AM, "Antoin Verschuren"
> <antoin.verschuren@sidn.nl <mailto:antoin.verschuren@sidn.nl>>
> wrote:
> 
> op 11-03-14 17:36, Gould, James schreef:
> 
> Hi James,
> 
> Thanks for your suggestions. We have particularly looked at:
> 
> 2. Create a Command-Response Extension of the domain mapping that 
> creates a new keyrelay verb similar to the restore verb in RFC 
> 3915, which is an extension of an empty domain update.  The server 
> can define who is authorized to invoke the new verb on the domain 
> name. By defining Key Relay as a new object or a new verb extension
> to the domain object, you get all of the advantages of an object 
> mapping (extensions, client and server transaction identifier). My
> recommendation is to go with option #2, since I view Key Relay as a
> verb.  In summary, I don’t believe there is the need to create a
> protocol extension for this.
> 
> 
> One of the requirements from certain registries for keyrelay was 
> that since keyrelay is only a "preparation communication step" for
> a DNS operator change that may or may not be followed by an NS
> change or combined transfer/NS change, they did not want any
> changes made to records owned by the registrar of record for a
> domain object. It's not compulsory to do this "communication" via
> the registry, it only facilitates registrars that have no other
> secure communication channel. Sometimes a keyrelay command is not
> followed by an NS change as the process is abandoned, and that
> should not lead to changes in the DB that need to be reverted. The
> process would then become more complex than necessary.
> 
> Another requirement that we heard from especially gTLD registries
> is that a command for which it was necessary to change the
> database tables in a fundamental way would not be implemented by
> those registries. Since most EPP commands are processes that change
> an object in the registry DB and is only authorized by the current 
> registrar of record, we looked at  a way to do this communication
> step without even touching the DB. EPP keyrelay can be implemented 
> without any changes to the registry DB, and only queries existing
> records. This is also how we implemented it.
> 
> We only know of one other command that is NOT authorized by the 
> current registrar of record for a domain object, and that is a 
> transfer. But if authorized properly by an auth-info token, the
> goal of a transfer command is ultimately also to make changes to
> the domain object in the DB.
> 
> Keyrelay does not intend to change anything to DB objects. That is 
> ultimately done by an NS change that usually follows a keyrelay if
> the process is continued AND the loosing DNS operator cooperates.
> If the loosing DNS operator does not cooperate, a different change
> to the DB may follow, and it's complex to predict which action
> would follow. There is no default process flow, it's up to the
> gaining registrar which next step to take (Abandon, postpone, go
> insecure, transfer and leave delegation as is, ...), we want him to
> be in control.
> 
> Could you elaberate on how a Command-Response Extension of the 
> domain mapping would meet the requirement of not changing anything 
> fundamental to the registry DB, nor creating a complex
> unpredictable state flow? How would the State Diagram similar to
> Figure 1 of RFC3915 look like for EPP keyrelay?
> 
> Bear in mind, that a pending NS change state for a secure transfer 
> cannot be held forever, nor can it be predicted what a reasonable 
> period for that state is. It depends on DNS TTL values that are
> not prescribed nor verified in most registry policies. And since we
> want the registrant to be in control over his domain, it may well
> be that during a pending state, yet another registrar may invoke a 
> keyrelay if the registrant chooses to change registrars because the
> process takes too long or there is another (technical) reason to
> change his delegation. So a state diagram is much more difficult to
> create than a state diagram for a grace period that is only
> dependent on 1 registrar and a state period defined by the
> registry's policy.
> 
> By completely separating the "preparation communication" from the 
> state of a domain object, we have avoided the need for a complex 
> state diagram and fundamental changes to the registry DB. It also
> extends EPP with a new command type that may have other benefits in
> the future.
> 
> For an (even more) elaborate explanation on how we came to this 
> conclusion, we have written a white paper: 
> https://www.sidnlabs.nl/uploads/tx_sidnpublications/wp_2013_EPP-keyrelay_v1.en.pdf
>
> 
> 
> On 3/11/14, 9:23 AM, "Antoin Verschuren" 
> <antoin.verschuren@sidn.nl <mailto:antoin.verschuren@sidn.nl> 
> <mailto:antoin.verschuren@sidn.nl>> wrote: Hi, I'd like to answer
> the question asked in London why EPP keyrelay is not an object
> extension or domain update. Regular EPP commands are submitted to a
> registry by the current registrar of record for that object in the
> database. Only the registrar of record is allowed to change
> attributes to a domain object. EPP keyrelay is a command that
> typically is sent to a registry by a registrar NOT being the
> registrar of record for that domain object. So the registrar
> sending the command is not permitted to change anything in the
> database to that object. EPP keyrelay is therefor only a
> communication command, and the domain object is only used to
> identify the registrar of record for that domain object as a
> recipient. The domain object is only queried to identify the
> registrar of record, but no attributes are allowed to be changed. 
> Hope that clarifies the questions raised in London. 
> _______________________________________________ EppExt mailing list
> EppExt@ietf.org <mailto:EppExt@ietf.org> <mailto:EppExt@ietf.org> 
> https://www.ietf.org/mailman/listinfo/eppext
> 
> 
> 

- -- 
Antoin Verschuren

Technical Policy Advisor SIDN
Meander 501, PO Box 5022, 6802 EA Arnhem, The Netherlands

P: +31 26 3525500  M: +31 6 23368970
Mailto: antoin.verschuren@sidn.nl
XMPP: antoin.verschuren@jabber.sidn.nl
HTTP://www.sidn.nl/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQEcBAEBAgAGBQJTXiZCAAoJEDqHrM883Agn7mEH/1LBGxWRJW3tKeahqRnR57r3
Lr+8y7EEYwA52yOk4aw7F+LcafSE9xylNw4z7pHuzZ1axV05qW1B4wEHDcTtLq8l
phq0NY50VIAVB08ICrjT4TAljEcxHkVvoFOdoJxt5vclG6wUFF3Rq502oYYIuY1s
EUBJyYxSCogpic+DgnULAqS+0+jQ62n8lGzlOYxJN5eJD2+6wrtTpNukop+IXD5z
v2Ima6NNU9ywR+I+QuWbEFxQxQXfl2GUn5RGzAGAJv8AV2merbc89sClboxCBZ6M
ZUY9HPyO5T7v+B583yxwm4dnCMRboBEmZtpkyZ/rKnESl44syxZJNNkD0VDv6WI=
=xA/Q
-----END PGP SIGNATURE-----