Re: [regext] Fwd: Idea about AuthCodeSEC: use Public Key Cryptography for AuthCode

Eric Skoglund <eric.skoglund@internetstiftelsen.se> Tue, 02 April 2024 06:29 UTC

Return-Path: <eric.skoglund@internetstiftelsen.se>
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 71F65C14F61D for <regext@ietfa.amsl.com>; Mon, 1 Apr 2024 23:29:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.996
X-Spam-Level:
X-Spam-Status: No, score=-1.996 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, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_MSPIKE_H2=-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=internetstiftelsen.se
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 ZW0C0AErAagx for <regext@ietfa.amsl.com>; Mon, 1 Apr 2024 23:29:03 -0700 (PDT)
Received: from GVYP280CU001.outbound.protection.outlook.com (mail-swedencentralazon11022011.outbound.protection.outlook.com [52.101.75.11]) (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 EE33FC14F68C for <regext@ietf.org>; Mon, 1 Apr 2024 23:29:02 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MNjSQunPGvR83CLfd4HIqveJp0CO0o74umPqeHUEWMvdkwKCzPIRauEricAwSFZBqwcO9hzd2dmwI4SF/Kwqqd2Ry5uKrC7IaSooZ5ixoZD7JsBrV3wD+kHqwe5OcaIlg18h+n8Z8qfXUyP/dbQoSYKjvC25vQ8Hs/dkXr+O6BySm2qdIk+Fa97VW7OZ6C36So4Fd4LgJZN5YW+DL3/jiJMdsPslbae9i2VzqV4wIWO/I3mtfzCMLsKs1wyqltwW8GEakEcitEsepaTHsZOfdCIxQgDiZEJz7r1wk2EIp4t3fT4iU5AUrBunAf/UXxk0qwj9wYnjZLCBqJStnER6Aw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=66ECZpiFNwYKIeeYY5u+gNZCqbUX2pWkIqedvT2VtHg=; b=MvvfDf7NZ/xDjlZI70z2gjnvRA9J7bwRN9SULsrwAdb72ROHrxg+7YGiCFc3+hT4sxR142URA5sIngz3vENVqvqiGaifEdao/XorZ7r+CqUdDHis3PQ1Ro+bOAAFWpCyARua42HuXinKbBQy5gmAuH7qIlzWkd9kI1xMozFQvxb3dFFta6GuaV1/TUEHRMJ+GBkUUnmQCbeLdwMqZNog0NzY2aDjNiC8+XXAhx1WZyjwcPudq2tgfsx9bO7+5ss2xXezsBdp/WYXEElu20wqPGOi/FjGy44AO2pVoCJqkBh9BEiE3Cliw6fC5vMGYkLC9DKtDMiQO7xNe/m2ZtcjEQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=internetstiftelsen.se; dmarc=pass action=none header.from=internetstiftelsen.se; dkim=pass header.d=internetstiftelsen.se; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=internetstiftelsen.se; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=66ECZpiFNwYKIeeYY5u+gNZCqbUX2pWkIqedvT2VtHg=; b=csKU9nWoQW9NLxx+iVSqCcbzxZQsG3MM6HKjy9t7rlxnDW4i2NLDBsclcB9pgzYGE46C2gZfM60oEi4XHVbLaZOZikXbV6apThYKE36D/vYBZDl/PdLdITEWzE5WDuTcibAZfDJH7WIvz2wtGZzZhRcdaso0uJYMf64Z7b/q/NbM3bRA6qwfP5w7ettGVXpDBHpIiBmpcnlJQ0bvtEy7eD4GE6h4e+Iz7BrqFpyJSTb/s12X1ohxn16SFcTZ8xDalz5KUdlTSedanjSIz0qSc44X2fW4yUhkX1MubriXjH14CPyd/LNHPWy+W2bcN31QzYlchJ2QTqO6aVRK5C7O1g==
Received: from GVZP280MB0283.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:46::7) by GVZP280MB1169.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:18b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Tue, 2 Apr 2024 06:28:58 +0000
Received: from GVZP280MB0283.SWEP280.PROD.OUTLOOK.COM ([fe80::e91c:738e:372f:6651]) by GVZP280MB0283.SWEP280.PROD.OUTLOOK.COM ([fe80::e91c:738e:372f:6651%4]) with mapi id 15.20.7409.042; Tue, 2 Apr 2024 06:28:57 +0000
From: Eric Skoglund <eric.skoglund@internetstiftelsen.se>
To: Zainan Victor Zhou <zzn@zzn.im>, "regext@ietf.org" <regext@ietf.org>
CC: "shollenbeck@verisign.com" <shollenbeck@verisign.com>, "zzn@namefi.io" <zzn@namefi.io>
Thread-Topic: [regext] Fwd: Idea about AuthCodeSEC: use Public Key Cryptography for AuthCode
Thread-Index: AQHafiCfbG4JZtynKkWQyaDz++Z7fbFUjHru
Date: Tue, 02 Apr 2024 06:28:57 +0000
Message-ID: <GVZP280MB02836D1299CBA32B8FDBDC7AE43E2@GVZP280MB0283.SWEP280.PROD.OUTLOOK.COM>
References: <CAD9-GmtGw4a9EXecFtVmu23u-NritYeWOo=JwHJT7xU6V2jkzQ@mail.gmail.com> <1a5e885389cd4039aead528423f907e6@verisign.com> <CAD9-GmttBRU_Obi3Nbe4_eb9O1j34UZ3-2Y8FnLzub2_BgbC2A@mail.gmail.com> <CAD9-GmuLjCpzQVajYTJ9spWAU9CUtj2XrwnMzYQ22=5y6NVhAQ@mail.gmail.com> <CAMVAm0waz1wzgkyiRgtmEWQq5=gssq4f6NBFYVdyiM7EN7YQWA@mail.gmail.com>
In-Reply-To: <CAMVAm0waz1wzgkyiRgtmEWQq5=gssq4f6NBFYVdyiM7EN7YQWA@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-Hashtags: #NewslettersPlus
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_5d3b1a09-b542-4fe0-b34d-fbe9ffe8d124_Enabled=True; MSIP_Label_5d3b1a09-b542-4fe0-b34d-fbe9ffe8d124_SiteId=c2aa68f8-18f3-48ae-81ba-02301d121d9a; MSIP_Label_5d3b1a09-b542-4fe0-b34d-fbe9ffe8d124_SetDate=2024-04-02T06:29:25.114Z; MSIP_Label_5d3b1a09-b542-4fe0-b34d-fbe9ffe8d124_Name=All Employees (unrestricted); MSIP_Label_5d3b1a09-b542-4fe0-b34d-fbe9ffe8d124_ContentBits=0; MSIP_Label_5d3b1a09-b542-4fe0-b34d-fbe9ffe8d124_Method=Standard;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVZP280MB0283:EE_|GVZP280MB1169:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: UTcjUAA2c4kbSV5xH9WfWmYwhP47R9aUrgZ1yNQsP13MVFBjdQYLG9G1J5iPAGOajW/35cxxC2YQjUmDuJL79LHdnq1iEMHrvj7of+imZT2IgmeXmLH1ttaIXLIaRreTUHQ79QMD51VFZ0NDoYr5wS13YOjoJb2+4I+Opg7889eB1uFcuN8d4Uf/UxX/JnVszSxA4s/r8MOM+oSrDns3Ommq2uprnmj8i8ZbQ+csIbyrrlAwuRGfRmTZShCQBebBKdEnsnsGrdid6WPKs9UaHhlr3KlgO6Jtwocb95N2WE5vvXJA1i6su5KlerwS/9zXvBPos1EYI0oDyhrWDl9YnLFFnvBtR1ccoXSsUTNkVglIJ//bkDZUYdVYdSj/y4vdEh6Kf7nOrG5XLosDy8aT+YGU8FO+2swVP3+6+INwNxY4LEq6HE3V70sUoxWX0n2CcY9zDoErSWePyYW7XqKIRWTP620WhgisU7tBCY7J+8yUiKr4i08J8trN5YLSdebEChKj4vc6Hmd8QYReAwMTcSNxWeaS8ZYy7l/OzDG4oCflM39Wh5Ie/WtPqp/bbL9I+mh2nlf+KqSv1y/CPWDLAiz1mZi31Gv0i3/f44TzF80=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:GVZP280MB0283.SWEP280.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: qfxuTLG6bbJSyxS7EHzHrD1y6W1pPCVh94zpsf0kc34d2e36hVOwjNO2JlyzVRz1iFq1dHQUINJ57eJbxSdN4g2yuFMuifDB5GDkUwcWeBhar63a2ac5kLxW38VfAUNMfKL9V/qjWydzAb55oh7wS0jRLvfL0yIJw2JnWR63Y2lmzzgGBJclwnjvKCXHwjtq1XQMvN8+OKHumxjI1nP06LQEFtlLVfPdbykWzc5Vow/omG05MuonTVleqkJDmhjzd+VIWCUaD0joOksDS9EFH2SGIcJA7OMCd/6aPr8VMt1U501oBoE4V573lacURn/ZUlVIgMkukp8oT3medyA1uOeQoiEgN5AQtA/qUgO9SbsK6hD1UQVcLc0Yn4vI6ZMFzsN2yg1WwdFk9+CWx0Q4xmcUXi4nWmnGup5QIEQo+p3bOLhu7FJSpbsbeHwJu0+CpitC1yivIBVg2vNGhPzRmc0yn8Vn6EkrWSWibOqQ+isLElDzk2VKA0FBC/2gMccJKtQ11VhP5WdaL24Tb5plC1GE+7JVww9qH62JuRyu6rj5qPjTbEGothDlUPmdx3OA0dQkogsTFjOqKaKz2hwxaBegOjTI11RC6Y3XghKp06ck0pswKVLE94bSlhV8Plzt3nWp5WXTDiYP/E8bI8yOfyXMgtonvvr4xDSmjZ9yoJhlQ69hhGpQe2lcaKdvnWtcj3I85KkL5ZDFaiiYSj09rynEsciqnnfuDAnldHxMBdCSJvJDIcIu2Kh34NhO6/bQylOpgBgg/bdJ00opMHSEHPFd3zVhsPYkYjK0IdhnOTTstuuBjBrcqeUkzRrJAC6hpUbVhQCRUHhQ5Slcv2ivJIKRH+M/dxcFPDbyZ2mH328SaCfcJkc/h0dj7ridmLsfigxZRRcLk2C74k0rNLH5bC18GQCM2jjKSn4/8i796/qAjIJ7ovtEJdZmNegVTDYWAwu+Mg1dPe+0y2NTK/ll0rjaSMNmgkXGZU32sjAfT+O1Y7DsFRPSrRq1vXYe37Yu3HIase5bOoEEp5fRM0rVmjHn0sKCMiAdvEZ/SvjVvz0kOxtG52miPw/fO/5fC0fQu5BfejulMiJ96BqHtwYXQO8wL8viU4Dr/Ry/aPY61z2DNJg24jNbf8PmC23S6tl4RgQxWEApDmFJKUQwi+tidQRXVzQeHjTXfDDl8yPson0bp87GvFOJrRcTnQtUaStr8IQvPF1sxTTrKi891Jj7Lg034Lzd4EJyCYHBr+GT4KXyH6tlLLlvvfpR8uNWv7c3/pzSXYJCl+DLJZaEiAvYr41fdRSx+wdz2iTuC0UqcOECpEZF8+wI87fZMwPbM8Hgs9s+vaUvxwQjqmh7gNADFAv8K+WPa/HwaRH+yw5Ij6HAfjo6R7zijdYhGMPhp51dG+8+pHf4rYb+7kvNZEYMJbICNxWksCNf5097PB8PQNLlbk95hn8Tdg+TL3SxHKaQSlFJhHVQwmBFes4N3LM0i1Kmb/P/ODj9T35JpleVEy9QjFxPyIUyeOOv99dAjQxpqfT/7Ax9A+1ZBSDlgYaoS+bJeBxnY9KjSknYmp+qIih4gCMj7YtuJyDYOh26GvdGKHfTDSSxnkRSIJBcjiEl6+NJ+Tx4vmn4NJ2qkSrzs/Y=
Content-Type: multipart/alternative; boundary="_000_GVZP280MB02836D1299CBA32B8FDBDC7AE43E2GVZP280MB0283SWEP_"
MIME-Version: 1.0
X-OriginatorOrg: internetstiftelsen.se
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVZP280MB0283.SWEP280.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: f8339a33-d231-410c-6327-08dc52de2d6a
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2024 06:28:57.7511 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: c2aa68f8-18f3-48ae-81ba-02301d121d9a
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 6zIpnJYNye+3wZsKPKvYaDuKjL0zH5kSmUj+Tx/Syo/UcxQ6dnHYG1cSxhNrOfYsw8gWoxgnrCTI5u51AFTD5tsEpmonPQghRjTW0bA9TdrZpLeB/bhg5SUp3891YAp4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVZP280MB1169
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/lAqM2_krDObXXxv6sSosLSFUTWI>
Subject: Re: [regext] Fwd: Idea about AuthCodeSEC: use Public Key Cryptography for AuthCode
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, 02 Apr 2024 06:29:08 -0000

Hi Victor.

We at .se and .nu recently changed our authcode implementation and for that we did have a look around to see what other registries were doing.
I don't think we came across anyone looking at a PKI-based approach and to second what Scott said such an approach would probably find it
hard to get any traction.

Here is a talk we did at ICANN78 giving some information about the needs we and some other registries have regarding the
authcodes, perhaps giving some idea on why that would be: https://github.com/johanix/iis-talks/blob/main/erics/icann78-authcodes/talk.pdf


// Eric
The Swedish Internet Foundation

________________________________
From: regext <regext-bounces@ietf.org> on behalf of Zainan Victor Zhou <zzn@zzn.im>
Sent: 24 March 2024 20:21
To: regext@ietf.org <regext@ietf.org>
Cc: shollenbeck@verisign.com <shollenbeck@verisign.com>; zzn@namefi.io <zzn@namefi.io>
Subject: [regext] Fwd: Idea about AuthCodeSEC: use Public Key Cryptography for AuthCode

Scott, that's very helpful, thank you! Yes I notice that EPP (RFC 5730) was intentionally extendable. It's very helpful that you point to me that Section 4.2 lays the schema that defines authorization information.
I will look into how to leverage existing pwAuthInfoType and extAuthInfoType. Let me send this email to REGEXT  -- Victor

(Resending with my email that I use for IETF)
------------

Hi dear REGEXT wg,

TL;DR: are there existing efforts to bring public key authentication to EPP that leverage RFC 5730's extendability?
Is this working group the best place to start the conversation about existing effort?

The closest related effort in IETF I could found was
- EPPEXT working group that was concluded in 2016 https://datatracker.ietf.org/wg/eppext/about/
- RFC 9154 Extensible Provisioning Protocol (EPP) Secure Authorization Information for Transfer https://datatracker.ietf.org/doc/rfc9154/  which uses a short lived cryptographic hash

If there are existing standards, I love to learn more and put that into our implementation.
If there were no existing effort, here is an early draft https://github.com/xinbenlv/rfc-draft-authcodesec/blob/main/README.md<https://secure-web.cisco.com/1c4kGADnaAssbpJjX636xmm3ye_X_zd1TnA94M3YM94OTCNk6NPOw_NbQWbKSx0qaTeauV0Th34kXvu8sQhjV_Fnkyp085fdbaDiwLG2IVaR-xJY6srk4dUGcmtdIEOpdjrUVydgMCIKiyDh1w0-jQIMtpEXc7V29R9aWtCo-CO0aiE94MeTepkvMd-nH81xF0hGHLT3C_2QZ82gdIJ62392-fXa38wA8XEMrU9b2w8VS5gP5eZ4Aj2hnCn87UTQclWoyv1zoOCRFkYFdVZtL4QjLxLNC1oDuLWu-S47Yu3xfJH1sQpHzN0cYdjg-PAJi/https%3A%2F%2Fgithub.com%2Fxinbenlv%2Frfc-draft-authcodesec%2Fblob%2Fmain%2FREADME.md> and I would love to see if anyone is interested in participate in future discussion of a possible RFC and maybe co-author?

Victor Zhou
zzn@namefi.io<mailto:zzn@namefi.io> (work) / zzn@zzn.im<mailto:zzn@zzn.im> (personal)

On Sun, Mar 17, 2024 at 3:58 PM Hollenbeck, Scott <shollenbeck@verisign.com<mailto:shollenbeck@verisign.com>> wrote:

Thank for the note, Victor. I’m not aware of anyone who has extended EPP’s authorization information data structures, though the ability to do so has always been available. Note this text from Section 2.9.3.4 of RFC 5730:



“The type of authorization information required is object-specific; passwords or more complex mechanisms based on public key cryptography are typical.”



We defined a password-based authorization information approach for domain objects because it was felt to be sufficient and secure as long as other protocols were used to protect the data while in transit. EPP requires TLS, for example, so the authorization information is never exchanged without encryption protection. In practice, passwords are NOT received from end-users/registrants and stored; they’re more commonly generated on-demand as a result of a domain transfer request. They’re short-lived and the risk of exposure is actually quite low. I haven’t heard of any issues associated with compromised authorization information being used to request a fraudulent transfer. If you’re aware of any documented “AuthCode stealing or disputes” I’d be interested in hearing about them. I’m not confident that the domain industry would be interested in implementing and operating a PKI-based approach given that the password approach has been working reliably for more than 20 years. There would need to be a significant value proposition for registries and registrars to switch.



Having said that, I designed EPP in a way that allows for specification of other approaches. Section 4.2 of RFC 5730 includes the schema that defines authorization information. Note the “pwAuthInfoType” and the "extAuthInfoType" type definitions. "extAuthInfoType" can be used as a “hook” to define a new type. Given that the capability exists, I’d suggest that you send a note to the IETF REGEXT working group mailing list asking if anyone is interested in the possibility of defining an extension for a new PKI-based authorization information type. You’d be better of measuring people’s interest in the topic before you invest a lot of time working on a proposal.



I hope this helps,

Scott



From: Victor Zhou <zzn@namefi.io<mailto:zzn@namefi.io>>
Sent: Friday, March 15, 2024 6:42 PM
To: Hollenbeck, Scott <shollenbeck@verisign.com<mailto:shollenbeck@verisign.com>>
Subject: [EXTERNAL] Idea about AuthCodeSEC: use Public Key Cryptography for AuthCode



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 Mr. Hollenbeck,



My name is Victor and I found you as the main author of EPP including RFC 5730 and many RFCs. Really appreciate your contribution!

(I may have run into you in the last IETF 117 event in San Francisco happy hour but unsure)

I like to ask you a question regarding AuthCode: in the EPP RFC 5730 you wrote

Objects eligible for transfer MUST have associated authorization

information that MUST be provided to complete a <transfer> command.

The type of authorization information required is object-specific;

passwords or more complex mechanisms based on public key cryptography

are typical.



In my personal experience, most of AuthCode was a plaintext secret. I have not seen any public key cryptography. Are you aware of any one who uses public key cryptography and if there is a standard?

I ask because if there is no effort in this direction, I like to start the conversation with you and the proper IETF working group about proposing an RFC that standardize a publickey cryptography transfer that allows independent validation and backward compatibility (to current AuthCode) and future compatibility (for smart contact validation).



Here is a early early draft https://github.com/xinbenlv/rfc-draft-authcodesec/blob/main/README.md<https://secure-web.cisco.com/1c4kGADnaAssbpJjX636xmm3ye_X_zd1TnA94M3YM94OTCNk6NPOw_NbQWbKSx0qaTeauV0Th34kXvu8sQhjV_Fnkyp085fdbaDiwLG2IVaR-xJY6srk4dUGcmtdIEOpdjrUVydgMCIKiyDh1w0-jQIMtpEXc7V29R9aWtCo-CO0aiE94MeTepkvMd-nH81xF0hGHLT3C_2QZ82gdIJ62392-fXa38wA8XEMrU9b2w8VS5gP5eZ4Aj2hnCn87UTQclWoyv1zoOCRFkYFdVZtL4QjLxLNC1oDuLWu-S47Yu3xfJH1sQpHzN0cYdjg-PAJi/https%3A%2F%2Fgithub.com%2Fxinbenlv%2Frfc-draft-authcodesec%2Fblob%2Fmain%2FREADME.md>



Or to save you a click: here is the full text snapshot



---------------------------



# RFC-draft-AuthCodeSEC
## Summary

Today, the main way domain names transfer between users or registrars
is using a mechanism called "AuthCode". This RFC proposes an upgrade to
the current AuthCode, leveraging public key cryptography, including
a schema of payload signing designed to be fully backward compatible
with the existing AuthCode in EPP (RFC 5730) while leaving room for future
extensions. This RFC also explores a 4-phased incremental approach to
replace AuthCode.

## Background

AuthCode was introduced in EPP (RFC 5730), in which it says:

```
Objects eligible for transfer MUST have associated authorization
information that MUST be provided to complete a <transfer> command.
The type of authorization information required is object-specific;
passwords or more complex mechanisms based on public key cryptography
are typical.
```

In practice, public key cryptography is rarely used in today's EPP
practices. Instead, a plaintext secret string is being used.

For example, one of the most used EPP software is provided by
CentralNic, called "RSP". It uses a plaintext string as the AuthCode. The
AuthCode is stored in the database of the registrar, and when a user
wants to transfer a domain, the user logs in to the registrar's website
to get the AuthCode, and then gives it to the gaining registrar. The
gaining registrar then sends the AuthCode to the TLD registry, and the
TLD registry then sends the AuthCode to the losing registrar (via
message queue, poll, or other ways). The losing registrar then
validates the AuthCode and then releases the domain to the gaining
registrar.

TODO: add workflow diagram

Here is a common use case: a registrant wants to hand over a domain
to another registrant. For the sake of discussion, let's call the
losing registrant Larry and the gaining registrant George, and Larry
uses a registrar called "Lovely Registrar", and the registrar George
uses is called "Great Registrar".

The problem with this process is that the AuthCode is a plaintext string:
- Its validation is only via Lovely Registrar matching the string
  with its own knowledge; no one other than Lovely Registrar could
  validate it. Not any party of the transaction, Larry or George, Great
  Registrar or TLD Registry, nor anyone else.
- It assumes the whole transmission of AuthCode, across multiple
  parties, is without leaking or eavesdropping.
- In many cases today, such AuthCodes are not being updated for a long
  time or never expire, leaving the system even more vulnerable to
  leaks or eavesdropping. Neither RFC 5730 nor any follow-up RFC
  specified a way to force reset AuthCode.

Due to these issues, the internet domain name system suffers from
AuthCode stealing or disputes.

## Specification

### Overview

We hereby propose the following mechanism:

- Use public key cryptography to use an authentication signature as
  AuthCode.
- We suggest the default algorithm as `secp256r1`, but it can support
  other signing algorithms or accept multiple signatures or aggregate
  signatures.
- We suggest the schema to be signed as the payload being the `EPP object`
  in the EPP communication, and a normalization scheme.
- We suggest including expiration time and nonce. We suggest a deny-
  list approach for early rejection.

### Details

TODO: add schema of payload to sign

TODO: add a way to establish or update public keys, such as depend on
DNSSEC.

TODO: add how the payload is represented in EPP object

TODO: add how to validate the signature using the public key

## Discussion

### Backward Compatibility

The main design goal is to allow the upgrade to be done incrementally
at each registrar without breaking the existing workflow.

For example, assuming in a transaction of a transfer of domain, the
losing registrar has already upgraded to the new mechanism, instead
of storing the AuthCode in the database and comparing it, it can validate
the AuthCode directly itself. And if the gaining registrar has not been
upgraded to be aware of this new spec, they won't be able to validate
the AuthCode on the spot, but as long as they collect the AuthCode,
they can still process the AuthCode in the same manner.

### Forward Compatibility

The main forward design compatibility is in the event a distributed
public ledger is involved, such as a smart contract is being used. They
can be configured to validate the signature of this transfer and update
the holdings of the account automatically without trusting a third party to
vouch for the transfer.

TODO: add sample code to validate the signature in the Solidity language

## Naming

The way to introduce AuthCode is similar to how DNSSEC was rolled out without
breaking DNS, hence we call it AuthCodeSEC.

### Roadmap

Inspired by how banks' payment networks rolled out chips, we imagine there
can be a 4-phase rollout to support this proposal, such as each phase
to be 3-5 years:
- Phase 1: Registrars who implement the AuthCode can provide
  benefits of instant validation and validation by anyone without
  connection.
- Phase 2: When the losing registrar implements it, it reduces the cost
  to pay for insurance or dispute to half. The other side shares half
  of the dispute cost.
- Phase 3: When the losing registrar implemented it, it is excused from
  paying for the dispute, the gaining side pays, and users are getting
  a warning.
- Phase 4: Without implementing AuthCodeSEC jeopardizes breaking
  the workflow or user experience of its users.