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

Pawel Kowalik <kowalik@denic.de> Wed, 23 November 2022 10:58 UTC

Return-Path: <kowalik@denic.de>
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 AD9DDC14CE4B; Wed, 23 Nov 2022 02:58:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.094
X-Spam-Level:
X-Spam-Status: No, score=-2.094 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, 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=denic.de
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 nzO2QStResuq; Wed, 23 Nov 2022 02:58:01 -0800 (PST)
Received: from mout-b-110.mailbox.org (mout-b-110.mailbox.org [195.10.208.55]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A8BCFC14CE3B; Wed, 23 Nov 2022 02:57:59 -0800 (PST)
Received: from smtp2.mailbox.org (smtp2.mailbox.org [10.196.197.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-b-110.mailbox.org (Postfix) with ESMTPS id 4NHJ4g1WJLz9t5l; Wed, 23 Nov 2022 11:57:55 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denic.de; s=MBO0001; t=1669201075; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=WZC4uv/ONd3SdcgDb/tzPOwOq+kqrh1ZZ1+3GmSSCEA=; b=z/OMNnTUmejmdWmRvEFttHsWn2h8Kc7Ezy40njysNM3F4e5USOPt0MyQcLqQQZFpfDzvm9 UgR4x9PbjdmBnCu/5lsTHGD5RP5+OJm/eWac71yFMNkOUPcJsAE5upIxM2XmgfjYr3qeRz +PqJeOtWUKPe4wCxYuzDXoGAJRQ0yAGvLLbJf7JSVuDrcKJ4pM+5TkDhsmziE4/Wsv55jy 947sPTsHTm9cT6emRlsiagpK2REICtOZCUBrywaQY2NZ3L3kYFRHKx/NYPdfFd5r8b/ujY 8bYZkh5NujbRn7ikHazPrilRB9WKuY2GWdTFOTPoW3FIQr7pzyQJJMdqnr4Jyw==
Content-Type: multipart/alternative; boundary="------------WTbwXBj6rEdKy8Lmnhvv0Oph"
Message-ID: <d8282bcc-b5a6-de84-2623-49b3c0bf5e4a@denic.de>
Date: Wed, 23 Nov 2022 11:57:52 +0100
MIME-Version: 1.0
Content-Language: en-US
To: "Gould, James" <jgould@verisign.com>, "draft-ietf-regext-rdap-redacted@ietf.org" <draft-ietf-regext-rdap-redacted@ietf.org>
Cc: "regext@ietf.org" <regext@ietf.org>
References: <E254B96E-810F-42F8-91DA-EDDBBDF9EE00@verisign.com>
From: Pawel Kowalik <kowalik@denic.de>
In-Reply-To: <E254B96E-810F-42F8-91DA-EDDBBDF9EE00@verisign.com>
X-MBO-RS-ID: 49a3950a48bf5c2c64b
X-MBO-RS-META: ww38ugxm35ec13rh6ramcun3hfo3wosk
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/CT3loUR_NV0vNVJwynqLKnoAVnY>
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: Wed, 23 Nov 2022 10:58:06 -0000

Hi James,

My comments also inline.

Am 22.11.22 um 14:18 schrieb Gould, James:
> [...] [PK] Looking at the Abstract and the Introduction of the draft 
> it reads "This document describes an RDAP extension for explicitly 
> identifying redacted RDAP response fields, using JSONPath as the 
> default expression language.". I see a clear focus on "identify", 
> whereas such strong normative language actually influences the way the 
> redaction is done. I don't think this should be the main focus of this 
> draft and a bit softer SHOULD allows to align servers to the best 
> practice without a dilemma if one can use the rdapConformance 
> "redacted" even if placeholders are in use for whatever reason. 
> Placeholders are perfectly fitting the "Redaction by Replacement Value 
> Method", so also fitting the draft. JG2 - The use of placeholder text, 
> such as "REDACTED", is an alternative approach that is incompatible 
> with the method of redaction defined in this draft. The draft 
> explicitly states that the use of placeholder text MUST NOT be used 
> for redaction, and it has no impact on the use of placeholder text for 
> other purposes.

[PK2] This is exactly what I allude to. The document describes not only 
the "extension for explicitly identifying redacted RDAP response fields" 
but also dictates what methods of redaction are allowed and which not. 
If there is consensus that the document also shall mandate the methods 
of redaction I think the Abstract and Introduction part should state it 
as well.

The real question is whether the goal of making clear what part of the 
dataset was redacted not enough for this draft.
For the client the indication that some data is not real, don't use it, 
is just enough of information, no matter if the data was removed, set to 
null, empty or otherwise replaced, isn't it?

> Populating the existing value with a static placeholder value as a 
> signal for redaction is different from what is defined for the 
> "Redaction by Replacement Value Method", which changes the value to a 
> non-static value or moves the location of the value.
[PK2] I believe it should be perfectly valid to replace one email with 
another email (for example privacy proxy email) without moving it, 
shouldn't it? For me it would be "Redaction by Replacement Value Method" 
where both paths are same.
> If I currently implemented placeholder text for the purpose of 
> redaction and I decided to implement redaction using the approach 
> defined in this draft, then I don't see the purpose of running them in 
> parallel even during a transition period, since clients should be 
> notified of the transition and the draft includes the needed signaling 
> using the "redacted" rdapConformance value. Is there a specific use 
> case that would warrant a softer transition? If there is a softer 
> transition use case warranted, then adding a Transition Considerations 
> section, such as defined in section 6 of RFC 9154 "EPP Secure 
> Authorization Information for Transfer, may be needed.

[PK2] Assuming the initial situation: RDAP server does not support 
"redacted" extension and puts the placeholder values and all the clients 
do not support "redacted" extension but know how to interpret the 
placeholder.

Now if the server would just turn on "redacted" first, not waiting for 
the clients, being fully compatible with the extension it would have to 
change the redaction with either empty value or removal of the fields. 
By doing this the clients which are not aware of "redacted" extension 
would potentially break due to changed behavior.

To avoid it the server would have to first make sure all clients support 
"redacted" before switching. This is somewhat impossible, as client is 
not informing the server in any way which extension it supports. If it 
would have a way to inform the server the problem would be gone as well, 
as server might have offered different representation to different 
clients. The other way around is to relax the requirement and allow the 
server operators to manage this.

SHOULD instead of MUST would give the operators a bit more of 
flexibility and same time none of the benefits of this draft would be lost.

> [...] Another approach would be to define a way of interpreting the 
> JSONPath so that it is reversible or even defining a subset of 
> JSONPath which is reversible in the narrower RDAP context. JG2 - I'm 
> not sure what is meant by JSONPath that is reversable. I believe that 
> JSONPath needs to be used as defined.
[PK2] Reversable means that you can unambiguously re-create the original 
object structure based on the path. Normalized JSONPath have this 
property (see 2.8 of JSONPath draft) but may not be the best in case of 
array members identified by a property value of array member, like in 
jCard. The expressions like $.entities[?(@.roles[0]=='registrant')] can 
be also reversible, but this is not true for just any JSONPath 
expression. If we would define a narrowed down definition of JSONPath 
expressions which are allowed, we could achieve the property of 
reversibility and maybe even that one kind of object or property would 
have exactly one and only possible JSONPath describing it. Again - it's 
just an idea how to deal with removed paths. It may be also not worth 
following if we assume "redacted name" would be the leading property 
(see below).
> In the end, implementing a client, I would rather want to rely on the 
> "redacted name" from the "JSON Values Registry" for paths which have 
> been deleted, and treating the path member as only informative. If you 
> agree for such processing by the client I suggest to put it down in 
> the chapter 5 (maybe splitting it into server and client side). JG2 - 
> From a client perspective, I believe I would first key off the 
> "redacted name" to route my display logic and then I would utilize a 
> template RDAP response overlaid with the actual response and the 
> JSONPath to indicate the redacted values. It would be nice to hear 
> from some clients on this to identify useful client JSONPath 
> considerations.
[PK2] If I would be implementing the client likely I will do exactly this.
> [...] JG2 - Your reference to $.entities[0] is an example of an 
> element in an array, but its' not referring to a fixed field position 
> of a fixed length array, such as the case for redacting the "fn" jCard 
> property. There is no intent to block all cases of redacting objects 
> via the use of an array position. Is there better language than "using 
> the fixed field position of a fixed length array" to provide the 
> proper scope?

OK, now I get it. My proposal would be: "The Redaction by Removal Method 
MUST NOT be used to remove an element of an array where position of the 
elements in the array determines semantic meaning of the element."


Kind Regards,

Pawel