Re: [regext] Review of draft-ietf-regext-rdap-redacted-09

"Gould, James" <jgould@verisign.com> Tue, 15 November 2022 20:15 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 1A152C1524D1; Tue, 15 Nov 2022 12:15:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nAV-8W4z6p8A; Tue, 15 Nov 2022 12:15:15 -0800 (PST)
Received: from mail1.verisign.com (mail1.verisign.com [72.13.63.30]) (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 2DCE7C1524CD; Tue, 15 Nov 2022 12:15:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=verisign.com; l=16566; q=dns/txt; s=VRSN; t=1668543315; h=from:to:cc:subject:date:message-id:content-id: content-transfer-encoding:mime-version; bh=Uj1/QvzMLketjIe/M0qpi/WZTCX14u+9fIqIUJVb274=; b=k/tcLLj0PLZS2rbhZTI85XKF6ahnapWIrIVKBOODlc7c5zE13EumK1jS f+iq3iTPnwfW9CwK1LmxozQALhksgilN1V6TpZttfAqzkckalWsj//ivn PYKGjGzFe15EIvkzjz9fyglKFS0puR6RU5pEphn85vX5AVBV3jrU61pwS 1BfV5m1XVClZm6pnEo7nTylGhE9rjPUsxv7rk4c6aREBuvR3ox1j7uojb aNstk2orZ7TD54VJOjWxh7BBYba+C+fKZszALvrPXWcUeCw/fQ5p2SH2Y 0vfK6ceSuNbYOBxAZbY7S2kOALkOO5xRZsmD8Jj28DUQV+Umt3WdswjdD w==;
IronPort-Data: A9a23:dK+CX6P4Ld3tUaDvrR20lsFynXyQoLVcMsEvi/4bfWQNrUohhTRUz DcYWT+EO/qDNjOjfdolbYyy8U9XvsPSydVnGgZtpSBmQkwRpJueD7x1DKtS0wC6dZSfER09v 63yTvGacajYm1eF/k/F3oDJ9CU6j+fQLlbFILasEjhrQgN5QzsWhxtmmuoo6qZlmtHR7zml4 LsemOWCfg77s9JIGjhMsfja8Uoy5K6aVA4w5TTSW9ga5DcyqFFIVPrzFYnpR1PkT49dGPKNR uqr5NlVKUuAon/Bovv8+lrKWhViroz6ZGBiuVIPM0SWuSWukwRpukoNHKFFNRoI0WXhc+dZk 72hvbToIesgFvOUxLRFC3G0GQkmVUFN0OevzXRSLaV/ZqAJGpfh66wGMa04AWEX0sB1I0tM6 MMCEm4IZDutgf2y3KCeTNA506zPLOGzVG8eklta62jmK9sWGcmFXa7N/8ce1Tt2mNpVG7DVY M9xhThHNUyGOkIUfA5KU9RizI9EhVGmG9FcgFCaorcz70DNwRZwy7niNpzefdniqcB9xBzC9 zqYoj6R7hcybMKZyT7GwHCQtKzMowL7faE+M7S4z6s/6LGU7ilJYPEMbnOjqOa0jgi9XM1WL 00X0iYjq6k5skCmJvHxRRS2vDuFswISHsBdHOAq9ESXxqPMphyUCmEPUjNNQN0rqMFwQiYlv neTktzkFSBHsbCJRzSa7Lj8kN+pESIPKzYdYyIUFVJA+Mf55oQylVfFSZBpCqjsyMPvAje2y DePxMQju4guYQcw//3T1Tj6b/iE//AlkiZdCt3rY1+Y
IronPort-HdrOrdr: A9a23:SUtYrKBQgloqg0jlHemI55DYdb4zR+YMi2TDj3oBKyC8cqSj+/ xHBJwgpGTJYUUqKRQdcLe7SdO9qBLnhOZICOYqXYtKMDONhILKFvAe0WKB+UyCJ8SWzIc0vp uIGJIQNDSENzlHZLHBjjVQfexM/DDNytHNuQ6X9QYLcekhAZsQiTuRJDzra3FLeA==
X-IronPort-AV: E=Sophos;i="5.96,166,1665446400"; d="scan'208";a="22290652"
Received: from BRN1WNEX01.vcorp.ad.vrsn.com (10.173.153.48) by BRN1WNEX01.vcorp.ad.vrsn.com (10.173.153.48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Tue, 15 Nov 2022 15:15:13 -0500
Received: from BRN1WNEX01.vcorp.ad.vrsn.com ([10.173.153.48]) by BRN1WNEX01.vcorp.ad.vrsn.com ([10.173.153.48]) with mapi id 15.01.2507.016; Tue, 15 Nov 2022 15:15:13 -0500
From: "Gould, James" <jgould@verisign.com>
To: "pawel.kowalik@denic.de" <pawel.kowalik@denic.de>, "draft-ietf-regext-rdap-redacted@ietf.org" <draft-ietf-regext-rdap-redacted@ietf.org>
CC: "regext@ietf.org" <regext@ietf.org>
Thread-Topic: Review of draft-ietf-regext-rdap-redacted-09
Thread-Index: AQHY+S74qFbAX0BNpEOY4v1OuPG0Rw==
Date: Tue, 15 Nov 2022 20:15:13 +0000
Message-ID: <41CA97DD-14C0-4372-AECC-D9684370B218@verisign.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.66.22101101
x-originating-ip: [10.170.148.18]
Content-Type: text/plain; charset="utf-8"
Content-ID: <BCAE73A0D9E8EA42B613D8A2E5A5F41A@verisign.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/eUQpWm7Sqf9Wq0hG7iCAbiidsRg>
Subject: Re: [regext] Review of draft-ietf-regext-rdap-redacted-09
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.39
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: Tue, 15 Nov 2022 20:15:20 -0000

Pawel,

Thank you for the detailed review.  I provide responses to your feedback embedded below.

-- 
 
JG



James Gould
Fellow Engineer
jgould@Verisign.com <applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgould@Verisign.com>

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

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

On 11/14/22, 12:18 PM, "Pawel Kowalik" <pawel.kowalik@denic.de> wrote:

    Hi,


    As an action item after IETF 115 I reviewed 
    draft-ietf-regext-rdap-redacted-09 before WG LC and have the following 
    questions / remarks:

    Section 3, first paragraph:

     > Redaction in RDAP can be handled in multiple ways.  The use of
     > placeholder text for the values of the RDAP fields, such as the
     > placeholder text "XXXX", MUST NOT be used for redaction.  A
     > placeholder text value will not match the format requirements of each
     > of the RDAP fields and provides an inconsistent and unreliable
     > redaction signal.

    Is the normative language adequate here? Firstly, I am not sure if the 
    text can be well understood.
    Does it mean that use of a fixed placeholder is prohibited, or any 
    placeholder?
    I can imagine a way of using placeholders, which do not necessarily 
    break the format requirements,
    therefore the second sentence shall not categorically tell "will not 
    match" as it may not be even true.

JG - The use of placeholder values for redaction is prohibited based on the second normative sentence.  The normative language is needed to implement the redaction defined by the RDAP extension.  I agree that stating "A placeholder text value will not match" is too strong and needs to be changed to "A placeholder text may not match".  This will be changed in the next version of the draft.  

    My proposal would be to use SHOULD NOT instead of MUST NOT. It can be 
    useful for the servers willing
    still to support clients not implementing this extension in the 
    transition period to populate fields with placeholders instead of just 
    empty/missing fields.

JG - I understand that there may be a transition period to fully implement the RDAP extension as will be the case of any RDAP extension that standardizes a crosscutting feature like redaction, but weakening the normative language from MUST NOT to SHOULD NOT misses the purpose of the RDAP extension and will result in potentially long running interoperability issues.    

    ---

    Section 3, second paragraph:

    The whole paragraph deals with particularities of redacting jCard with 
    some very specific guidelines and examples.
    Wouldn't it be more and future proof to have a general statement that 
    redacting the data MUST NOT break the underlying data format?
    The same remark applies then later to 3.2. with normative language for 
    jCard redaction.

JG - jCard is currently used in RFC 9083 and the specifics of handling redaction of jCard is an important concept that needs to be covered.  The "Redaction by Empty Value Method" is needed because of jCard.  I believe the combination of jCard being used in RFC 9083 and the definition of a redaction method to support jCard warrants providing the detail.

    ---
    4.2.  "redacted" Member

    The whole "redacted" member and especially the "path" and 
    "replacementPath" members
    shall allow the client to recognise parts of the JSON response which 
    have been transformed
    in the process of redaction.

    Here some interesting questions:
    - do the paths refer to the object before or after the redaction?
    - if the paths refer to the object before the redaction, how should the 
    client be able to interpret the path if not having access to this 
    object, especially the JSONPath may even match multiple paths, e.g. from 
    result and the path the client cannot digest which paths have been 
    really removed? More to that each redaction step is actually 
    transforming the object, so the order of redaction is also relevant in 
    this case. Normalized Paths from JSONPath allow "reversing" the process 
    from the result object if the order of redaction is being held.
    - if the paths refer to the object after the redaction, likely the path 
    member should be OPTIONAL not not required for redaction by removal or 
    replacement, because in this case the object likely does not exist in 
    the result object

JG - The path refers to the object before the redaction for the Redaction by Removal Method, since the RDAP field was removed.  In this case the path points to where the RDAP field would have been.  The path refers to the object before and after the redaction for the Redaction by Empty Value Method, since the RDAP field exists but has been set to an empty value.  The path refers to the object before the redaction for the Redaction by Replacement Value Method, while the replacementPath refers to the object after the redaction, since it points to the replacement JSON field.  Right, requiring the path to a non-existent JSON fields in the case of the Redaction by Removal Method and the Redaction by Replacement Value Method consequently requires the client to validate the JSONPath expression using a non-redacted RDAP response,, which the client does not have.  Having the JSONPath for where the field would have existed may be useful for a client, but they would need to generate the non-redacted response.  I don't oppose setting the "path" to OPTIONAL but with normative language specifying that it MUST be included when the JSON field does exist in the redacted response.  Do you agree with this?   


    With Section 5 being not-normative and about processing by the server, 
    the draft should similarly include considerations for processing of the 
    responses by the clients.

JG - Yes, Section 5 provides non-normative considerations for the server.  Offhand I believe considerations #2 "Validate a JSONPath expression using a non-redacted RDAP response" could be applicable when a client receives a response that includes the "path" expression for the Redaction by Removal Method and the Redaction by Replacement Value Method, per the feedback above, but the client would need to generate a template non-redacted RDAP response based on the "path" expressions.  Do you agree with this possible consideration, and do you have any other considerations that should be considered?  If there are useful client considerations, they certainly can be added.

    ---

    "pathLang" member

    What is the rationale behind introducing this extension point? Right now 
    the RFC specifies only one language, which is default one. If there will 
    be an additional one I would expect it added by a RFC also answering 
    some questions how to transition from one path language to another. 
    Without any way for the client to express which "pathLang" it would like 
    to get response with, the server would only be able to migrate after all 
    clients support both formats, otherwise risking some clients to break.
    And if this "pathLang" member is to persist, shouldn't there be IANA 
    registry for allowed values, so that the clients have an ide what to 
    implement?

JG - The expression language being stuck with JSONPath was brought up on the list, which resulted in adding the OPTIONAL "pathLang" field.  A new JSON Values Registry field value could be added, like "redacted name" and "redacted reason".  How about the "redacted expression language" Type with a pre-registration of the Value "jsonpath" and the description "JSON path expression language, as defined in draft-ietf-jsonpath-base"?  We would replace draft-ietf-jsonpath-base with the published RFC, which is a normative reference dependency.

    ---

    3.1.  Redaction by Removal Method

     > The Redaction by Removal Method MUST NOT be used to remove a field
     > using the position in a fixed length array to signal the redacted
     > field.  For example, removal of an individual data field in jCard
     > [RFC7095] will result in a non-conformant jCard [RFC7095] array
     > definition.

    Is the first normative sentence meant to apply to every case, or just 
    the case where removal of such field would render an invalid jCard?
    I think there is quite legit way or removing whole objects by position 
    in a fixed length array, like "path": "$.entities[0]" which should be 
    still allowed.

JG - It's really meant to directly address the jCard use case, but I believe it would apply to all fixed length arrays.  Would it help to clarify this more by updating the language to be "using the fixed field position of a fixed length array"?     

    ---

    6.2.  JSON Values Registry

    Registry for "redacted name" allows to identify what has been removed 
    without interpreting it from the path member. This is of a great 
    benefit, looking at the difficulties of interpreting the "path" member I 
    mentioned above.

JG - Agreed that the registering a new JSON Values Registry Type and pre-registering the "jsonpath" expression language can help as stated above.  

    However, semantically, isn't this registry rather defining the members 
    and objects of RDAP response in a general sense? I mean "Registry Domain 
    ID" means the same no matter if in context of redaction or in context of 
    RDAP response and actually IMHO we should make sure it means the same in 
    any other RDAP context it would be used in the future. IMHO this IANA 
    registry shall be a generic one defining labels to the information 
    pieces in RDAP responses.

JG - No, the JSON Values Registry defines the values that can be used for fields, which is applicable here for the valid set of "type" field values used in the redacted "name" and "reason" fields.  The same can be done to define the valid field values for the "pathLang" field.  The registered Type values of "redacted name", "redacted reason", and potentially the " redacted expression language" will provide the needed isolation with the other typed values in the registry.


    ---

    Examples with entity role indexing.

    The draft has many examples of the kind 
    $.entities[?(@.roles[0]=='registrant')] which might be incorrect if an 
    entity holds multiple roles, as RFC9083 does not specify any particular 
    order of roles in the array and also depending on the roles held by the 
    entity the array might have different length. This means that 
    'registrant' can be at index 0, but also at index 1. The correct 
    expression would rather be with wildcard index as per 3.5.2. of 
    JSONPath, like this $.entities[?(@.roles[*]=='registrant')].
    The example of multiple roles shows also a tricky corner-case, as the 
    server may want to redact a contact in one role but same time not redact 
    it due to other role attached to the same entity. Not sure if JSONPath 
    allows to express this, but this might remain an implementation detail 
    of the server and not particularly a concern of this draft (apart from 
    the questions to 4.2 above).

JG - Interesting tricky corner-case.  I do believe it's an implementation detail, where the draft provides a redaction example based on the unredacted response that doesn't require the wildcard. 

    ---

    Re previous discussion on multiple email addresses.

    Just a remark that after the last discussion on 
    draft-ietf-regext-epp-eai it may be more common to have more than one 
    email address. Likely RDAP needs to get EAI-aware as well on the 
    response side.

JG - Yes, agreed the provisioning side has a natural impact on RDAP side.  jCard/vCard includes support for more than one "email" member (Cardinality of "*") take handle the use of an alternate email and includes support for UTF-8, so there is no need to extend RDAP to support EAI in EPP.    


    Kind Regards,

    Pawel