Re: [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-login-security-07: (with DISCUSS and COMMENT)
"Gould, James" <jgould@verisign.com> Thu, 23 January 2020 19:45 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 869C7120B14; Thu, 23 Jan 2020 11:45:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.298
X-Spam-Level:
X-Spam-Status: No, score=-4.298 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, 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 13Lo1mHQ8AP0; Thu, 23 Jan 2020 11:45:09 -0800 (PST)
Received: from mail3.verisign.com (mail3.verisign.com [72.13.63.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 54A681209F0; Thu, 23 Jan 2020 11:45:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=verisign.com; l=131457; q=dns/txt; s=VRSN; t=1579808708; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=bBCSleGKU7JDWeat2mEMTWv64+2c57URrgAynAN3HOM=; b=bJFfBnCyIZE4+ucLYKekKOLs6pfnOaJiLFpRRrhKfKNKohG2BdYGersK OSPh7PSjS75kWbSBymmfpBqyMQ/0i3SArH2CRQ+ZJSzTynnm2iYQPnkk6 y2iAc8H54UL9KqCE5yEOtk1K6yuc+SCvxVptjUAVzpEHU/XQvfkdo6Qz0 dSrUG5bhH/mS6OipdC/IkTEfQto00ktKAUYH6dSmWAb6FfXJd5AIyH49Y lrIlJT7dFYN2c2NyP/7Zg1ktLMdyHhK2xLorFqMNalvWM4T1U4KrVxAX8 qCySGAZOVi4yNC63/9AxW5G0EHVP4a2chwjuA4ql9H66jlThqmKFM9NXc Q==;
IronPort-SDR: 3hkntvBjNLfNa5ZHyMvVKcGS9X97eU8b/W82VH/JlYsoa6fxYuYF0YErEwgK+Ey8ey5OUUJjQT B6rqZVVPsmjEN2fy2YDOxAset9IjOdC7wxoWfw01BGURB6jANbGrLOLbAXjQutv80fALODauqs DpQDu2Df3jhrRyhRn1yQQudMrobGZL3/tx+pFlcTtqKqj1jEEQDPMgPqW2nmIk3WLK362UFPMf 45c0GtxsyCbdZYBm00slIG3zmUqSYMNO5Py7Y/dDDf1lmaWzYkTPGDyPtJahmmc1NGmIKMBt4/ 70g=
X-IronPort-AV: E=Sophos;i="5.70,354,1574121600"; d="scan'208,217";a="561911"
IronPort-PHdr: 9a23:s+VUUhQzdWn/qgzAa/RwUEfXwtpsv+yvbD5Q0YIujvd0So/mwa67ZxSGt8tkgFKBZ4jH8fUM07OQ7/m8HzZaqsbY+DBaKdoQDkRD0Z1X1yUbQ+e9QXXhK/DrayFoVO9jb3RCu0+BDE5OBczlbEfTqHDhpRQbGxH4KBYnbr+tQt2agMu4zf299IPOaAtUmjW9falyLBKrpgnNq8Uam4RvJrs+xxfTvHdEZetayGB1KVmOmxrw+tq88IRs/ihNtf8t7dJMXbn/c68lUbFWETMqPnwv6sb2rxfDVwyP5nUdUmUSjBVFBhXO4Q/5UJnsrCb0r/Jx1yaGM8L4S7A0Qimi4LxwSBD0kicHNiU2/3/Rh8dtka9UuhOhpxh4w47JfIGYMed1c63Bcd8GQ2dKQ91cXDJdDIyic4QPDvIBPedGoIn7u1sOtga1CQ21CO/y1jNEmnr60Ksn2OojDA7GxhQtEdIQvnrJsNX7OqQcUe63w6bGzDXMc/xZ1Czn54TUdxAsu+2AUKhyfMfX1EIhFxnFjlKVqYH9MT+b1+MNs3Wf7+V9Te6klmoppBt0ojex3ccghJTCi4UXylDL8iV53YI1KsCjRU5lf9GkCppQtzqbN4t5RMMuWX1nuCE/yrAfv5OwYSYEyJMixxHFavyHdZCF4gz9W+aLIDd4n3NleL25hxaz90iv1vfwWdWz0FZPtiZFk8fDtmwD1xDJ7ciHUPR98l+g2TmV0QDc8PtIIUcularULZMq370+loILvEjeAiP6glj6ga2Ye0k+5+Sl6+rqbq/pq5KfL4N4lx3yPr4zlsG9Heg0KBUCUmeY9OimybHu/lX1QLtUgfA1jqXUtZXXKt4Yq6O9GABY14gu5wiiADqn1dkXhn0KIVNHdR+CgYXkNVPDL+3+APyimVqjii1ryOrDPrD5B5XNKWXMn6n5cLZm7k5c1BIzzddC55JIEr0BIOz8Wkv2tNHAExI3LxS6z/vnB9tl2Y0RWH6DDrKDPKPMrVCI4fgvI/GWaIAPpTnxMeYl5+T1jX8/g1MSYa6p3Z4PZHC5GPRpPVmZbGLxjtsdC2sGowgzQeLwhFGfUTNeaWy+Uq0/6z0jDYKpF4bDRoSjgLyb2ye7G4VbZmJJClCLDHfoc5iLVuwSaC2MOM9hkycEVbmuS48nzx2hqAj6y79/IurO5iIYrY7j1MRy5+DLlhE97yF7D9me02yWSmF0n38ISyUo069ivEx30k2D3rRgg/xECdxT4OtEUgYkOp7HwOx3ENHyVRzdfteHUlqmRc+mAT4pRNIr39AOe1p9G8mljh3bwiWqGaUal7KXBJAt86LTwWTxJ8hkx3bcyqYhgEcpQ8RTNWG/gq5/8AfTB4/Pk0mAjKala7gT3DPX9GeC0WqPvFpVUA9uXqXZU3ATfEzWrc725knaVb+hFawnMhddyc6FMqZKaN3ogktYS/r4ItvebWOxm2OxBRmS3bOAdovqe2MT3CXaEEIEiRwc/W6aNQgiASesu3jeAyJhFV3xbELs7fJzqHKlQU8owQGGdUph16C6+hQNn/yTV+sT3q4YuCcmszh0Bkiy393IBNuPuwptZblTYdMn71dGz2LZrBdwPp2+IKB+iF4SaQN3v1nh10Y/NoIVu8UsrnovzQw6CquUzVAJIzCR0Y3zErjWNi//8A35L+bq2lyW8fut1e9b6fkjpH3isR2nUE04/CM0/cNS1i7WyZLXCAZWGbD4V0ssvVAupb7dfy0xz53Zz3x3MKay9DTF3oR6V6Me1h+8coIHY+u/HwjoHphfXpD2JQ==
X-IPAS-Result: A2FIAAAw9yle/zCZrQpbBwMODAEBAQEBAQEBAQMBAQEBEQEBAQICAQEBAYF7gSVTBYEYUGEKhAiSNoJtlWOBKxchBAkBAQEBAQEBAQEHARgBDAoBAQKBSoIvRQIXgiw4EwIDAQELAQEBBAEBAQEBBQMBAQEChiAMgjspAWkvCTkBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFAggHIxEZByMSEgEBHgIBAwEBGAEICiwOBwsQAgEGAi0BAQEIAQIHAgICJQslAgQBDQWCW0sBgX2BDZEnm3aBMoRJQYUzgTiMMYFCPoERJyCBTkk1PoJkAQEBAQEBgRoEDgEHBQYBBwItCh0BCAECBYJBMoIsBI04GAIKgnWFXiSCIYcujjx2AweCOYdAgVuDHoRdeYRAgkd4hxKERItijl6BSoYIaCiSJgIEAgQFAhWBaWcjWBEIcBU7KgGCQQlHGA2IDRcVgzuFFIUEO3QCCAMBJIpPAQEPFQaBBzFfAQE
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_128_GCM_SHA256) id 15.1.1779.2; Thu, 23 Jan 2020 14:45:03 -0500
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.1779.002; Thu, 23 Jan 2020 14:45:03 -0500
From: "Gould, James" <jgould@verisign.com>
To: Benjamin Kaduk <kaduk@mit.edu>, The IESG <iesg@ietf.org>
CC: "draft-ietf-regext-login-security@ietf.org" <draft-ietf-regext-login-security@ietf.org>, "jyee@afilias.info" <jyee@afilias.info>, "regext@ietf.org" <regext@ietf.org>, "regext-chairs@ietf.org" <regext-chairs@ietf.org>
Thread-Topic: [EXTERNAL] [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-login-security-07: (with DISCUSS and COMMENT)
Thread-Index: AQHV0ZU11Vf5NMfI5UGEFR96cbO31qf4qA2A
Date: Thu, 23 Jan 2020 19:45:03 +0000
Message-ID: <97D81809-84A7-48ED-8B92-9FC99B585DAA@verisign.com>
References: <157974662537.12206.13846873427945988950.idtracker@ietfa.amsl.com>
In-Reply-To: <157974662537.12206.13846873427945988950.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.10.12.200112
x-originating-ip: [10.170.148.18]
Content-Type: multipart/alternative; boundary="_000_97D8180984A748ED8B929FC99B585DAAverisigncom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/28AWA3Ql5DHe4mSEcGfWyRbUxcY>
Subject: Re: [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-login-security-07: (with DISCUSS and COMMENT)
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.29
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: Thu, 23 Jan 2020 19:45:15 -0000
Benjamin, Thank you for your thorough review and thoughtful feedback. My responses are embedded below. -- JG James Gould Distinguished 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 1/22/20, 9:31 PM, "regext on behalf of Benjamin Kaduk via Datatracker" <regext-bounces@ietf.org on behalf of noreply@ietf.org> wrote: Benjamin Kaduk has entered the following ballot position for draft-ietf-regext-login-security-07: 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-login-security/ ---------------------------------------------------------------------- DISCUSS: ---------------------------------------------------------------------- This document+extension claims to provide "Login Security" but has no substantive discussion of why the previous mechanism was insecure and how this extension improves the security. I find it hard to believe that any such discussion could fail to acknowledge that sending the plaintext password (after only processing for whitespace) to the server (akin to SASL PLAIN) is severely lacking on several security-related fronts. While it may be possible that there is adequate justification for only pursuing the smallest incremental improvement in the current document, it would require some additional discussion to convince me that the "small incremental improvement" of removing a protocol-level maximum password length is the best choice at this time, as opposed to a broader approach that attempts to tackle more axes upon which "security" can be measured. Does this discussion already exist somewhere? (This document also includes functionality for relatively rich event notifications, that are likely worth doing in their own right, but do not seem to be "security improvements" per se, to me.) JG - The goal of draft-ietf-regext-login-security is to enhance the security of RFC5730 using an EPP extension, which means that it is evolutionary and not revolutionary. The introduction describes the key security issue with RFC5730 with the hard limit of a 16-character maximum password length, which draft-ietf-regext-login-security addresses in the least impactful method possible. Adding features that make security events more transparent in the protocol by adding the ability to pass the client user agent, to help the server identify potential security events, and by adding the ability for the server to proactively return security events to the client, are security enhancements not associated with RFC5730 being insecure. There was discussion on the mailing list related to the use of alternative authentication approaches for EPP, but those proposals need to mature into something concrete for discussion. Please forward any ideas that you have to the regext mailing list. I also think that there many places in the description of the XML elements/attributes that are underspecified, given that XML is traditionally thought of as a machine-readable format. Several instances have already been noted by my fellow IESG members (e.g., custom events, statistical warnings, "value" attribute), but they seem prevalent enough that I would like to see the authors make a pass through all the protocol elements and assess which ones need to be machine-readable vs. only for human consumption, and accurately document that. I list some examples in the Comment section, and specifically call out the <loginSec:pw> and <loginSec:newPW> encodings, which leaves many ambiguities with respect to what non-ASCII behavior is allowed other than OpaqueString, what constitutes "whitespace" in the two listed situations, and whether the password encoding is related to the XML document encoding of the request. As I note in the comment, my understanding was that the PRECIS profiles were intended to be used at a protocol-level (vs. a deployment level) and thus the nature of the profile usage would be fairly tightly specified by this document; perhaps the responsible AD (or someone else) will correct my understanding. JG - The use of free-form strings (e.g., string, token, normalizedString) is nothing new with XML and all of the elements and attributes of draft-ietf-regext-login-security have been fully considered for the level of specification. There are many examples in the EPP RFCs, including the definition of the <pw> and <newPw> elements in RFC5730, where the format is left up to server policy. Inclusion of the 16-character maximum length in RFC5730 is an example of a policy that was injected into the RFC5730 that needs to be fixed based on the latest security practices. The intention of draft-ietf-regext-login-security is to extend RFC5730 without adding new policy constraints that would hinder its adoption in the industry and would support future security policies. The sentence "If non-ASCII characters are supported with the plain text password, then use a standard for passwords with international characters, such as the OpaqueString PRECIS profile in [RFC8265]" was added to draft-ietf-regext-login-security to address the PRECIS profile concern with the AD. I'd also like to have a bit of discussion regarding the prohibition of using the literal string "[LOGIN-SECURITY]" as an actual password. Section 3.2 notes '''[t]he server MUST NOT allow the client to set the password to the value "[LOGIN-SECURITY]"''', and though I did not do a full case-by-case analysis, this feels like something that a server implementing this extension wants to do always, regardless of whether a given client indicates support for this extension. That seems like it could meet the criteria to mark this document as Updating RFC 5730, to reserve this sentinel value. Is there more reasoning for or against having this document Update the password-handling behavior RFC 5730 to reserve this sentinel value? JG - One of the goals of this extension is to enhance RFC 5730 by overriding the <pw> and <newPw> elements with the use of this sentinel value and support for passing the new <loginSec:pw> and <loginSec:newPw> elements without the 16-character maximum length restriction. There is no need to mark draft-ietf-regext-login-security as updating RFC 5730, since a client will know that the server is implementing draft-ietf-regext-login-security based on the inclusion of the urn:ietf:params:xml:ns:epp:loginSec-1.0 extension namespace returned in the EPP greeting and the server will look for the sentinel value and the extension in the login command. This is a natural form of an EPP extension that RFC 5730 fully supports. ---------------------------------------------------------------------- COMMENT: ---------------------------------------------------------------------- (per the first Discuss point) I understand that per RFC 5734 we're always using TLS client certificates to identify the client machine (but can have multiple user credentials using the same client certificate for their TLS connections), but that doesn't completely alleviate the problems inherent to passwords (see Discuss). For example, with passwords there's the risk of password theft, whether from the on-disk server password database or by leveraging a fraudulent TLS server certificate to capture live incoming traffic, but that's not a complete listing. JG - Are you proposing a change here? See my response to your first Discuss point. Section 1 (Side note: I note that the phrase "security event" is used as a term of art by the SECEVENT WG, for the "security event token" work of RFC 8417 and its consumers. They seem to have a somewhat different set of expected "security events", not that this document necessarily needs to change in response.) JG - Thanks for the references, I'll take a look at them. (side note: IMHO, the long list of security-event attributes (and possibly the security events themselves) is not needed in a high-level Introduction like this. But that's not an actionable comment.) JG - Thanks for the feedback. I believe that the definition of the Event as the first section (section 3.1) of the Object Attributes section (section 3) is the appropriate location. Section 2 Servers which implement this extension SHOULD provide a way for clients to progressively update their implementations when a new version of the extension is deployed. Servers SHOULD (for a temporary migration period up to server policy) provide support for older versions of the extension in parallel to the newest version, and allow clients to select their preferred version via the <svcExtension> element of the <login> command. I see the opsdir review (and response), but I can't help wondering if this second paragraph is a proposed way to meet the requirement^Wrecommendation of the first paragraph. If so, it would be tempting to make the first one into a "MUST", since we really think it's important that servers should do this in some way, though we don't have as strong an opinion on how. (I do not expect my reasoning to convince you more if the opsdir review did not, though, so feel free to treat this as a side note.) JG - There was much discussion on the mailing list about this section and the appropriate normative language. Paragraphs 2 and 3 do propose a method with meeting the requirement in paragraph 1. I do believe that SHOULD is appropriate in this case. I also think that the response to the genart review was incomplete -- the genart reviewer's point about knowing, given two versions of this extension, which one is said to be "newer" is perhaps still open. (Suppose version 1.1 is published in 2021, 2.0 in 2022, and 1.2 in 2.23. Is version 2.0 "newer than" 1.2?) I didn't find much in 5730 that we could lean on, though it's kind of drowned out by the sea of '''<?xml version="1.0"'''... JG - There is no mention of version number in RFC 5730, but it is general understood in regext that the version numbers always increase. Do you believe something needs to be added explicitly in section 2, such as adding the sentence "A newer version of the extension is expected to use an XML namespace with a higher version number than the prior versions." at the end of the first paragraph? Section 3.1 The <loginSec:event> MAY include a free-form description. All of the nit: I'm not sure whether we want to consider "<loginSec:event>" as an adjective ("<loginSec:event> element") or a noun in its own right, but I am having a hard time with the definite article in the current text. Since the previous sentence talks about multiple events being allowed, maybe "Each" is best? (Also, is this description "as the body of the element"?) JG - I view the <loginSec:event> element as an noun (or object) in its own right that is contained in a list. Is the issue associated with the sentence "There MAY be multiple events returned that provide information for the client to address." being in the middle of a paragraph describing the event object? How about changing that sentence to read "The <loginSec:event> element is contained in a list of one or more elements in the <loginSec:loginSecData> element, so there MAY be multiple events returned that provide information for the client to address."? "type": A REQUIRED attribute that defines the type of security event. The enumerated list of "type" values includes: [...] (side note: the specific "type" values chosen by the authors is rather different from what I would have written. It feels a bit presumptuous to assume that expiration is the only password- or certificate-related event that could occur and privilege those events to have the bare "password" and "certificate" type values, for example. I don't know what the server would do to convey knowledge of a breach of the server's password database file, for example But what's there is clearly documented so I have no real grounds to object to it per se.) JG - The "password" and "certificate" types are based on known cases of implementing a password-expiry policy and proactively informing clients of expiring client certificates. There has been cases where clients were unaware of an expiring client certificate that caused a client-side connectivity outage, so now the server can inform them of an expiring client certificate. Others cases would fall into the "custom" security event. "exDate": Contains the date and time that a "warning" level has or will become an "error" level. At expiry there MAY be an error to connect or MAY be an error to login. An example is an expired The "MAY"s feel a little out of place here, and I would suggest "At this expiration time, the error might be realized as either a connection failure or a login failure" to also avoid the "error to" construction that flows strangely to my eye. JG.- The "exDate" attribute can be used with multiple event types. For example, the server could decide to deprecate TLS ciphers ("cipher") or protocols ("tlsProtocol") and specify an expiry of when they will be removed, which would result in a connection failure. The " exDate " attribute could also be used with the “custom” event, where it may not result in connection or login failure. The purpose of the MAY is to make it clear that the expiry may result in an failure (connect or login), but there are cases where it will not result in a failure. The <loginSecPolicy:errorAction> element in draft-gould-regext-login-security-policy provides an example of defining the policy of what occurs at expiry for an event type, which includes the possible values of "connect" for a connection failure, "login" for a login failure, or "none" for no failure. JG - How about changing the "error to" sentence to read "At expiry there MAY be a connection failure or MAY be an login failure."? A similar change can be made to the following example sentence with "An example is an expired certification that will result in a connection failure or an expired password that may result in a login failure.". Do you agree with these changes? "value": Identifies the value that resulted in the login security event. An example is the negotiated insecure cipher suite or the negotiated insecure TLS protocol. Right now the encoding used for this value feels highly under-specified. Consider the case of an insecure TLS cipher suite. IANA manages a table of TLS ciphersuites (https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4) so one might see a pair of hex values, a single four-hex-digit-string, a human-readable "Description", the decimal value corresponding to the four-hex-digit-string, etc. I mostly expect that this value will only ever be displayed to a human and is not expected to be machine-parseable, but we really need to say that if so (and perhaps also that the human-readable string form is preferred when there are multiple choices). JG - Thanks for the reference to the IANA TLS cipher suites. I have personally not seen TLS implementations consistently use the IANA TLS cipher suites, so that is a good reference but unfortunately not universally used. I agree that that value will not be automatically parsed and processed by the client, but will most likely will be logged and included in an alert for manual investigation. The value returned based on the TLS implementation should provide some meaning to the client; although mapping to the client-side TLS cipher suite names is likely necessary and may require help from the server to interpret out of band. What I have seen are string values similar to the Description field in https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4, but again I have not seen consistency across the TLS implementations. How about doing the following to address this: 1. Update the “cipher” type description to read: a. Identifies the use of an insecure or deprecated TLS cipher suite. The “name” attribute MUST be set with the name of the cipher suite, which is free-form and is not expected to be parsed and automatically addressed by the client. An example of cipher suite names can be found in the TLS Cipher Suites of the Transport Layer Security (TLS) Parameters IANA registry [link to https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4]. 1. Update the “tlsProtocol” type description to read: * Identifies the use of an insecure or deprecated TLS protocol. The “name” attribute MUST be set with the name of the TLS protocol, which is free-form and is not expected to be parsed and automatically addressed by the client. Thoughts? Example login security event for password expiration, where the current date is 2018-03-25: I appreciate the use of a "current date" for purposes of the example; that's a nice touch! JG – The dates can be revised to 2020 instead of 2018. Section 3.2 The <loginSec:pw> element MUST override the [RFC5730] <pw> element only if the <pw> contains the predefined value of "[LOGIN-SECURITY]", which is a constant value for the server to use the <loginSec:pw> element for the password. Similarly, the <loginSec:newPW> element nits(?): the "MUST override [...] only if" construction seems prone to misreading (both here and for <newPW>"). Is it a prohibition against overriding in other scenarios? A mandate to override? Both? Perhaps a declarative "When the <pw> element contains the predefined value "[LOGIN-SECURITY]", the <loginSec:pw> element overrides the <pw> element" is more clear. Also, there seems to be a word or two missing for the current formulation to parse properly, in "is a constant value for the server to use the <loginSec:pw> element for the password" -- perhaps saying that this "indicates to" the server. (I myself would use the phrase "sentinel value" to describe this password string, but maybe that's overused.) JG – On the use of sentinel or constant, I prefer the use of constant. I can modify the <pw> reference and the <newPw> reference in 3.2 to read: 1. When the [RFC5730] <pw> element contains the predefined value of “[LOGIN-SECURITY]”, the <loginSec:pw> element overrides the <pw> element. 2. Similarly, when the [RFC5730] <newPw> element contains the predefined value of “[LOGIN-SECURITY]”, the <loginSec:newPw> element overrides the <pw> element. Section 3.3 Coordinated Time (UTC) using the Gregorian calendar. The extended date-time form using upper case "T" and "Z" characters defined in [W3C.REC-xmlschema-2-20041028] MUST be used to represent date-time values, as XML Schema does not support truncated date-time forms or lower case "T" and "Z" characters. nit(?): "the EPP XML Schema" or "this protocol's XML Schema", I think. JG – The limitation is with XML schema and is not specific to EPP. This is boilerplate text in the EPP RFC’s (e.g., https://tools.ietf.org/html/rfc5731#section-2.4, https://tools.ietf.org/html/rfc5733#section-2.7, https://tools.ietf.org/html/rfc5732#section-2.4). Section 4.1 Sending detailed userAgent information seems to merit some discussion of privacy considerations w.r.t user profiling and/or tracking. JG – This is not tracking or profiling individual users, but is a system-to-system interface. Do you have any recommendations for what would be discussed for a system-to-system interface? <loginSec:userAgent>: OPTIONAL client user agent that identifies the client application software, technology, and operating system nit: is this better as "client user agent information"? JG – I will make that change. <loginSec:pw>: OPTIONAL plain text password that is case sensitive, has a minimum length of 6 characters, and has a maximum length Why is it optional? JG – It’s optional, since the user may still be using the <pw> element from RFC5730, which supports passwords up to 16-characters. When the minimum password length policy is greater than 16-characters, than it would be required by server policy. Also, 6 characters feels a bit short for a password, these days. (Yes, I did pull up SP 800-63B.) JG – The working group discussed this in detail. The agreement was to match the existing minimum in RFC5730. It would be up to server policy to set a higher minimum. The maximum length of 16 characters from RFC5730 was removed in draft-ietf-regext-login-security. that is up to server policy. All leading and trailing whitespace is removed, and all internal contiguous whitespace that includes We list explicitly the values considered "internal whitespace" but not "leading and trailing whitespace". I note that using Unicode attributes to determine whitespace nature (which would seem reasonable to many people) will recognize quite a few more codepoints as being whitespace, and it is important to have a clear and unambiguous procedure. JG – This is explicitly stating what is done by the XML parsing when using the XML schema “token” type. I agreed to add this based on working group feedback. #x9 (tab), #xA (linefeed), #xD (carriage return), and #x20 (space) is replaced with a single #x20 (space). This element MUST only be used if the [RFC5730] <pw> element is set to the "[LOGIN-SECURITY]" value. What does "only be used" mean? Is this restricting transmission from the client or processing by the server, or both? What should the error handling behavior be when it is present and it's not supposed to be? JG – “only be used” means “only be set” or even “only be included”. In other words, the client MUST only set the <loginSec:pw> element when the “[LOGIN-SECURITY]” value is set in the <pw> element. The server would use the RFC5730 “<pw>” element, based on the language in section 3.2. This is the corresponding language for the client to not provide two passwords in the login command. Do you prefer “only bet set” over “only be used”? [ditto for <loginSec:newPW>] (space) - #x7E (~), with high entropy, such as 128 bits. If non- ASCII characters are supported with the plain text password, then use a standard for passwords with international characters, such as the OpaqueString PRECIS profile in [RFC8265]. My understanding is that the PRECIS profiles are intended to be used at a per-protocol level, not a per-deployment level. So this needs to be stronger than just "such as". JG – There was discussion around PRECIS on the mailing list and this language was working out with the AD. Also, if (as per the example) this is carried in a client's XML request that contains an "encoding" attribute, what's the interaction between that encoding and any per-password encoding for non-ASCII data? JG – The encoding in the XML header applies to the entire XML packet. The encoding chosen would need to support non-ASCII data (e.g., “UTF-8”) and the XML parser would need to support that encoding to unmarshal the data correctly. The encoding in the XML header and the characters allowed for the passwords is not new for EPP RFC 5730, where draft-ietf-regext-login-security is enabling the use of longer passwords. As noted previously, the reference to the PRECIS profile in [RFC8265] was added to address the case where a server does support non-ASCII passwords based on working with the AD. [I think I asked about repeating the "ABC-12345" clTRID for multiple examples in the same document for a previous EPP document, but forget why it was deemed to be okay. Assuming that I do remember the tenor of the prevous discussion correctly, no response is needed here.] JG – The clTRID is not a security credential but is used as an Asynchronous Completion Token (ACT), so there is nothing wrong with using “ABC-12345”. C: <loginSec:os>x86_64 Mac OS X 10.11.6</loginSec:os> (macOS 10.11 feels a bit dated for 2010) JG – This can be updated to a newer Mac OS, such as 10.14 or 10.15. C: <loginSec:pw>this is a long password</loginSec:pw> (side note: Long, but fairly low-entropy. "Correct horse battery staple" might get a smile from some readers... Similarly for the other examples) JG – Agreed, but it provides better context for the element than a high-entropy value. Upon a completed login command (success or failed), the extension MUST be included in the response based on both of the following conditions: I suggest "MUST be included in the response when both of the following conditions hold". JG – This change can be made. Example EPP response to a failed login command where the password has expired and the new password does not meet the server complexity requirements: nit: the exDate given here is 2018-03-26, but the most recent "time of request" we listed was 2018-03-25, which is before this nominal expiration date. It would be nice to either mention a new "time of request" or mak the examples more consistent across each other. JG – Good catch! I’ll change that the exDate to 2018-03-24. Actually, it will be 2020-03-24 based on the earlier agreement to change 2018 to 2020 throughout the draft. I also wonder about the usefulness of sending detailed errors back to an unauthenticated user. It would, for example, probably not be a good idea to report various statistical events to an unauthenticated user that's potentially an attacker seeking information for further attacks. JG – Agreed, but inclusion of the events would be up to the security policy of the server. The extension supports returning it if the server needs to. Below, I proposed adding a sentence associated with this in section 8. JG Section 8 I think it would be appropriate to have a brief note that while this extension increases the maximum length of password that may be used for EPP authentication, it still involves sending unmodified passwords to the server for verification, and as such retains the security considerations of doing so from RFC 5730. JG – Agreed, based on the feedback from Roman, The leading sentence “The Security Considerations of [RFC5730]<file:///Users/jgould/projects/github/login-security-extension/draft-ietf-regext-login-security.html#RFC5730> apply in this document, and this document enhances these considerations.” will be added to section 8. The maximum <loginSec:pw> length that Section 4.1 has as "up to server policy" is in some sense an anti-DoS measure, to keep the server from having to dedicate potentially "unlimited" resources to handling a client request that is authenticated only by the TLS connection. JG – Agreed, are you asking for any change for this? As mentioned above, we should have a bit of discussion of the security/privacy considerations of the information sent with the security events, particularly when sent to an unauthenticated user. JG – How about adding the following at the end of the last paragraph in section 8: “The server returning of security events to unauthenticated users needs to take into account the security/privacy issues of potentially returning information to potential attackers.” The extension leaves the password (<pw> element) and new password (<newPW> element) minimum length beyond 6 characters and the maximum length up to sever policy. The server SHOULD enforce minimum and nit: I don't understand what "minimum length beyond 6 characters means". JG – “beyond” can be changed to “greater than”, so it would read “…minimum length greater than 6 characters…” Section 10 Why is RFC 2119 Normative but RFC 8174 Informative? Together they are both BCP 14, and I don't see why they would be treated differently. [ed. I see Éric already asked and got a response.] JG – Yes, that will be addressed, thanks! _______________________________________________ regext mailing list regext@ietf.org https://www.ietf.org/mailman/listinfo/regext
- [regext] Benjamin Kaduk's Discuss on draft-ietf-r… Benjamin Kaduk via Datatracker
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Benjamin Kaduk
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Benjamin Kaduk
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Barry Leiba
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Benjamin Kaduk
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Barry Leiba
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Barry Leiba
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Benjamin Kaduk
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Benjamin Kaduk
- Re: [regext] Benjamin Kaduk's Discuss on draft-ie… Gould, James