Re: [regext] [Ext] Re: Redacting JSContact uid in RDAP - Updated

Gustavo Lozano Ibarra <gustavo.lozano@icann.org> Tue, 04 April 2023 02:24 UTC

Return-Path: <gustavo.lozano@icann.org>
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 7FA89C151535 for <regext@ietfa.amsl.com>; Mon, 3 Apr 2023 19:24:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.197
X-Spam-Level:
X-Spam-Status: No, score=-4.197 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
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 kwu6bUy3LshI for <regext@ietfa.amsl.com>; Mon, 3 Apr 2023 19:24:11 -0700 (PDT)
Received: from ppa3.lax.icann.org (ppa3.lax.icann.org [192.0.33.78]) (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 5C93DC151538 for <regext@ietf.org>; Mon, 3 Apr 2023 19:24:11 -0700 (PDT)
Received: from MBX112-W2-CO-1.pexch112.icann.org (out.mail.icann.org [64.78.33.5]) by ppa3.lax.icann.org (8.17.1.19/8.17.1.19) with ESMTPS id 3342O7Fg024393 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 4 Apr 2023 02:24:07 GMT
Received: from MBX112-W2-CO-2.pexch112.icann.org (10.226.41.130) by MBX112-W2-CO-2.pexch112.icann.org (10.226.41.130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Mon, 3 Apr 2023 19:24:06 -0700
Received: from MBX112-W2-CO-2.pexch112.icann.org ([10.226.41.130]) by MBX112-W2-CO-2.pexch112.icann.org ([10.226.41.130]) with mapi id 15.02.1118.026; Mon, 3 Apr 2023 19:24:06 -0700
From: Gustavo Lozano Ibarra <gustavo.lozano@icann.org>
To: Mario Loffredo <mario.loffredo@iit.cnr.it>, Andrew Newton <andy@hxr.us>
CC: "Hollenbeck, Scott" <shollenbeck=40verisign.com@dmarc.ietf.org>, "regext@ietf.org" <regext@ietf.org>
Thread-Topic: [Ext] Re: [regext] Redacting JSContact uid in RDAP - Updated
Thread-Index: AQHZY8zrE3Bv6Z9swUi3cAAduofEwq8VbYiAgAByBACAA7q7gIAA1y2A
Date: Tue, 04 Apr 2023 02:24:06 +0000
Message-ID: <D95C9B1C-A05D-4C01-9FAE-6B0A48AC259F@icann.org>
References: <24a21812-4699-edb3-b612-f5bac80bc959@iit.cnr.it> <318b1ed37edd4655893214084cc73537@verisign.com> <06f2ce63-be44-d047-b664-3e46db7aebf3@iit.cnr.it> <CAAQiQRc25R8M_3ND0XV0=RorPWqbRmyUsJwyVKWEnJhaB0YxGA@mail.gmail.com> <742e96e5-7360-d168-45a3-395d67e90cb5@iit.cnr.it>
In-Reply-To: <742e96e5-7360-d168-45a3-395d67e90cb5@iit.cnr.it>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.65.22091101
x-originating-ip: [192.0.32.234]
x-source-routing-agent: True
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha256"; boundary="B_3763394645_4003384076"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-03_19,2023-04-03_03,2023-02-09_01
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/h87V9jIY21nbYycRDF49YRq1u40>
Subject: Re: [regext] [Ext] Re: Redacting JSContact uid in RDAP - Updated
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, 04 Apr 2023 02:24:15 -0000

Hi Mario, et. Al.,

Comments inline.

Regards,
Gustavo

On 4/2/23, 11:38 PM, "regext on behalf of Mario Loffredo" <regext-bounces@ietf.org on behalf of mario.loffredo@iit.cnr.it> wrote:

    HI Andy,

    Il 31/03/2023 23:36, Andrew Newton ha scritto:
    > If the uid can be free text according to JSContact, why do we need to
    > override that? RDAP servers can just put random text in that field,
    > which has the same effect of the UUID URN.
    >
    > That said, I like Gavin's idea. I could live with Option 4 or Option 3.

    [ML] I would have no objection to use Option 3 or Option 4 but both of 
    them require to define a new redaction method because none of those 
    currently defined can be used in those cases.

GL - Correct, and I think that having those new redaction methods defined in draft-ietf-regext-rdap-redacted is a must.

I have been in conversations with users of RDDS (a term in the gTLD world that means the service used to consume registration data) in which there is a desire to differentiate between:

* No data was provided in the response because no data exists in the server's database.
* Data exists in the database, but it was redacted in the response.
* The data provided in the response is the actual data in the database, even if the semantics of the value are non-customary, for example, a registrant providing "REDACTED FOR PRIVACY" (a well-known string used in Whois to indicate redaction) as their name. 

The "redacted" member defined in draft-ietf-regext-rdap-redacted provides the signaling mechanism that satisfies the requirements above.

If option 3 is selected with a random value, a signal is needed to differentiate between data persisted in the database and randomly generated values. Maybe we can add "redaction by random value" to draft-ietf-regext-rdap-redacted?

If option 4 is selected, I think adding a signal in the "redacted" member is also desired in order to have a central place signaling all redactions in the response. It is straightforward for an implementer to understand that "redacted" contains all redacted data elements, and they need to do "X" in the interface if a data element is defined as redacted. If we go with option 4 without support in draft-ietf-regext-rdap-redacted, there would be this unique scenario that it's not in the "redacted" member, but it's still redacted if you find the special value. Maybe we can "redaction by placeholder value" to draft-ietf-regext-rdap-redacted?

    Otherwise uid could be the only RDAP property that can be redacted 
    through a kind of placeholder value  without being included in the 
    redacted array.

    Do you agree about it ?


    Option 1 leverages the Empty Value redaction method and free-text format 
    but it's likely that a JSContact implementation will check not only for 
    the not null constraint but also for the not empty constraint.

    Therefore, even in this case and similarly to Option 2, a JSContact 
    implementation should distignuish cards used outside RDAP from those 
    used inside RDAP.


    Option 2 doesn't need a new redaction method and enbales an RDAP server 
    to set the uid property as it sees fit:

    - assigning it with a valid value and, when needed, redacting it by the 
    Removal method

    - omitting the uid property


    That being said, if the WG agreed about adding a new redaction method to 
    macth Option 3 and Option 4, I wouldn't object.


    Best,

    Mario

    > -andy
    >
    > On Fri, Mar 31, 2023 at 11:52 PM Mario Loffredo
    > <mario.loffredo@iit.cnr.it>  wrote:
    >> Hi Scott,
    >>
    >> Il 31/03/2023 14:32, Hollenbeck, Scott ha scritto:
    >>>> -----Original Message-----
    >>>> From: regext<regext-bounces@ietf.org>  On Behalf Of Mario Loffredo
    >>>> Sent: Friday, March 31, 2023 7:45 AM
    >>>> To:regext@ietf.org
    >>>> Subject: [EXTERNAL] [regext] Redacting JSContact uid in RDAP - Updated
    >>>>
    >>>> Caution: This email originated from outside the organization. Do not click
    >>>> links
    >>>> or open attachments unless you recognize the sender and know the content is
    >>>> safe.
    >>>>
    >>>> Hi folks,
    >>>>
    >>>> just reported below all the options (including Gavin's proposal) and the
    >>>> preferences given thus far.
    >>>>
    >>>> Please, express your preference(s).
    >>>>
    >>>> Thanks a lot in advance.
    >>>>
    >>>>
    >>>> 1) Redacting by Empty Value method
    >>>>
    >>>> 2) Making uid optional in RDAP and then redacting by Removal method
    >>>>
    >>>> - J.Gould
    >>>>
    >>>> 3) Recommending the use of UUIDs that prevent from correlation (e.g.
    >>>> either randomly generated or nil UUIDs)
    >>>>
    >>>> 4) Redacting by using a registered URN in the IANA namespace (e.g.
    >>>> "urn:ietf:params:json:rdap+jscontact:uidRedacted")
    >>>>
    >>>> - G. Brown
    >>>>
    >>>> 5) Anything else ?
    >>> [SAH] Which of these options is the least likely to break a JSContact parser?
    >> [ML] I would say that it all depends on the constraints your
    >> implementation checks.
    >>
    >> Since uid is a JSON String and assuming that it isn't used to model some
    >> JSContact relationship, the possible constraints to check are in order
    >> of priority:
    >>
    >> - Not null
    >>
    >> - Not empty
    >>
    >> - Compliance to a possible format
    >>
    >> Unless RDAP overrides the JSContact spec (as stated by options 3 and 4)
    >> , the uid value can be a free-text hence the last constraint can't be
    >> checked.
    >>
    >> With regard to the first two constraints:
    >>
    >> - option 3 and 4 will make both the checks result in a success
    >>
    >> - option 2 will make both the checks result in a failure
    >>
    >> - option 1 will make the check on 2nd constraint result in a failure
    >>
    >>
    >> Some additional considerations:
    >>
    >> - if we comply to JSContact recommendation of assigning uid with an URN
    >> in the UUID namespace, option 3 would be preferrable. URI and free-text
    >> (including the empty string) are presently allowed for compatibility
    >> with RFC6350 but could be deprecated in the future. To redact a
    >> mandatory UUID to prevent from correlation, maybe an addtional redaction
    >> method should be considered.
    >>
    >> - jscontact-tools checks for the first two constraints (and, in the case
    >> of a group card, it executes other consistency checks). Such constraints
    >> are validated statically through annotations on properties but it's
    >> quite easy to intercept the error messages and skip the failure of "not
    >> null" constraint depending on the validation context.
    >>
    >>
    >> Given that, my opinion is that option 2 would be preferrable because it
    >> would enable the uid implementation in RDAP to be detached from the
    >> possible uid evolution in the main spec.
    >>
    >> As a result, I would also recommend to use an UUID when a server returns
    >> an undisclosed uid property.
    >>
    >> Note that an UUIDv5 can be generated from another property (like the
    >> handle) and this enables a server to generate always the same uid value
    >> without storing it somewhere.
    >>
    >>
    >> Apologize for the long explanation.
    >>
    >> Hope it could be helpful.
    >>
    >> Best,
    >>
    >> Mario
    >>
    >>> My preference is leans towards whichever option or options will be the most
    >>> compatible with implementations of JSContact such that any RDAP complexity is
    >>> handled in the RDAP-implementing software.
    >>>
    >>> Scott
    >>> _______________________________________________
    >>> regext mailing list
    >>> regext@ietf.org
    >>> https://urldefense.com/v3/__https://www.ietf.org/mailman/listinfo/regext__;!!PtGJab4!5N3BqQl31If-aiYx5yPXyVHPjDH77zp4RtS9qkOulurwO092guED-OaHVVaxya2A828AjwvwWKEY4wQFG2e5NpdMnNuDnSbXj8GLfIk$ [ietf[.]org]
    >> --
    >> Dott. Mario Loffredo
    >> Technological Unit “Digital Innovation”
    >> Institute of Informatics and Telematics (IIT)
    >> National Research Council (CNR)
    >> via G. Moruzzi 1, I-56124 PISA, Italy
    >> Phone: +39.0503153497
    >> Web:https://urldefense.com/v3/__http://www.iit.cnr.it/mario.loffredo__;!!PtGJab4!5N3BqQl31If-aiYx5yPXyVHPjDH77zp4RtS9qkOulurwO092guED-OaHVVaxya2A828AjwvwWKEY4wQFG2e5NpdMnNuDnSbXHi7Pt_k$ [iit[.]cnr[.]it]
    >>
    >> _______________________________________________
    >> regext mailing list
    >> regext@ietf.org
    >> https://urldefense.com/v3/__https://www.ietf.org/mailman/listinfo/regext__;!!PtGJab4!5N3BqQl31If-aiYx5yPXyVHPjDH77zp4RtS9qkOulurwO092guED-OaHVVaxya2A828AjwvwWKEY4wQFG2e5NpdMnNuDnSbXj8GLfIk$ [ietf[.]org]

    -- 
    Dott. Mario Loffredo
    Technological Unit “Digital Innovation”
    Institute of Informatics and Telematics (IIT)
    National Research Council (CNR)
    via G. Moruzzi 1, I-56124 PISA, Italy
    Phone: +39.0503153497
    Web:https://urldefense.com/v3/__http://www.iit.cnr.it/mario.loffredo__;!!PtGJab4!5N3BqQl31If-aiYx5yPXyVHPjDH77zp4RtS9qkOulurwO092guED-OaHVVaxya2A828AjwvwWKEY4wQFG2e5NpdMnNuDnSbXHi7Pt_k$ [iit[.]cnr[.]it]

    _______________________________________________
    regext mailing list
    regext@ietf.org
    https://urldefense.com/v3/__https://www.ietf.org/mailman/listinfo/regext__;!!PtGJab4!5N3BqQl31If-aiYx5yPXyVHPjDH77zp4RtS9qkOulurwO092guED-OaHVVaxya2A828AjwvwWKEY4wQFG2e5NpdMnNuDnSbXj8GLfIk$ [ietf[.]org]