Re: [lamps] [EXTERNAL] Issuers: Lamps <> Scitt

Mike Ounsworth <Mike.Ounsworth@entrust.com> Wed, 17 January 2024 20:29 UTC

Return-Path: <Mike.Ounsworth@entrust.com>
X-Original-To: spasm@ietfa.amsl.com
Delivered-To: spasm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2FF90C1519A7; Wed, 17 Jan 2024 12:29:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.605
X-Spam-Level:
X-Spam-Status: No, score=-5.605 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_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, PDS_BAD_THREAD_QP_64=0.999, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001, URI_NOVOWEL=0.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=entrust.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 nuCsAgO1h71l; Wed, 17 Jan 2024 12:29:07 -0800 (PST)
Received: from mx08-0015a003.pphosted.com (mx08-0015a003.pphosted.com [185.183.30.227]) (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 BA130C151980; Wed, 17 Jan 2024 12:29:06 -0800 (PST)
Received: from pps.filterd (m0242863.ppops.net [127.0.0.1]) by mx08-0015a003.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40HIpKVl024823; Wed, 17 Jan 2024 14:29:03 -0600
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=entrust.com; h= from:to:cc:subject:date:message-id:references:in-reply-to :content-type:mime-version; s=mail1; bh=tbDMp5og0y3Ab+bXaqkFaXU/ PkEegyZlTALXRFvl7yw=; b=KzEVcV+QYjsX+mRDTAMPuj44taIhs996I1XesFp2 +2DPKdlHygViaiu0h5ggYenKvvPPUFgz3NxYUFZXUrwcSjDnuVdHTZ6jWdLIKwp4 NFpDQPC1eUblTBC8zqCDToBkXgqPeb4k3V7H48FGh+z88iTnl4sr7UeN70mjv1OF qyEHpM9H5WDeijCxcZ/Bei30kGmkiRB3mMToczzRCfsUuOY18M5vYd+brW/ZNryg aAJMRg6Jq7QUV84kVRueSnZbQUIlSOR+Bux1Kv1sIjcqVcSF28Y0nTA0UD6OIK8Y Bh//AIJWzptDiEBVlfVahP02tAMYy1JGJgW3jhawDudcPA==
Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2101.outbound.protection.outlook.com [104.47.70.101]) by mx08-0015a003.pphosted.com (PPS) with ESMTPS id 3vpmgy099g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jan 2024 14:29:03 -0600 (CST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SOWbd7E1Krsm4CYENOqJMf9gZGb8EaeH+AEDYYhqVggm3/8kBWWsRiqhEChSiNxb3r4P05UipaZV9xMRXBcQjNaG4160B3G9zmOyo0Yuyv6T7KJnGdb4+4SBArXeVb28w0UaNtppaBgc1NyFA8tZDO2qmOUwhBqesbtljDxkUmiJzBvFw4psiWb/JUxlo5r7m0b8LfwsKsILFvi7wKWyDipP2PMHDkFBdYj4xMJrcYDcIjvevN6cMeIjGq6Yqi8nA8swv83uvJQXGnGfRTBr8r3CKxlXV3wf5hmL2sqKgVlPv/cDdkEnsQqv4XNzVXyCGBdcN0Snf8chHrxZFUc6bg==
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=1bU9Sd717c1cA+DzOs72/qdMx73q0mRG37hisllum5Y=; b=QcsDMeFo6+CiA9+00EiDvD/W5VW4spk83R7vARSeA43HjHEkajLiwuy9XL48mujbGcpbWJAxOz47247WqulPW39sxLaakH7OLMrja+2CFZOl7nFsad+gUf0JjEYVG06wz0LNLXyAFhspOrk4juXUQmtF3YoFWZq9I8QDupyPTwhNbmJqxNglShlwB3jOnqBnPOwJs+9yZOyYhqYvYKl4+LnsJuSJFi3O5EUbTYL1XKonhybgYboMmPnx1kUrNgGqroRmF2b3oCQ/1Ne15CtYBN7coVzS5xUfIXqdnuQ8fsunGYbLqDb4V+wybZTSeLzp3CY+HJ0gOVECTAeVifozFQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=entrust.com; dmarc=pass action=none header.from=entrust.com; dkim=pass header.d=entrust.com; arc=none
Received: from CH0PR11MB5739.namprd11.prod.outlook.com (2603:10b6:610:100::20) by CH3PR11MB8188.namprd11.prod.outlook.com (2603:10b6:610:15e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Wed, 17 Jan 2024 20:28:59 +0000
Received: from CH0PR11MB5739.namprd11.prod.outlook.com ([fe80::ac39:9027:cfbc:7830]) by CH0PR11MB5739.namprd11.prod.outlook.com ([fe80::ac39:9027:cfbc:7830%4]) with mapi id 15.20.7202.024; Wed, 17 Jan 2024 20:28:59 +0000
From: Mike Ounsworth <Mike.Ounsworth@entrust.com>
To: Orie Steele <orie@transmute.industries>
CC: scitt <scitt@ietf.org>, LAMPS <spasm@ietf.org>, oauth <oauth@ietf.org>
Thread-Topic: [EXTERNAL] Issuers: Lamps <> Scitt
Thread-Index: AQHaSMTTg/RyEy7mt0qpojcy+QtpOLDc/5IwgAA8zwCAAQpwgIAALy8A
Date: Wed, 17 Jan 2024 20:28:58 +0000
Message-ID: <CH0PR11MB57395F3BC9476D70363FED9D9F722@CH0PR11MB5739.namprd11.prod.outlook.com>
References: <CAN8C-_Kfj4wsXYONSzYK3832QK_z+uEDnmvZz76WvuWCGCDZeA@mail.gmail.com> <CH0PR11MB5739D5FE4861DBF695F5259A9F732@CH0PR11MB5739.namprd11.prod.outlook.com> <CAN8C-_LDUA9FRR00vqG0sRAUVwCrWzXN2SmjfMDtVfLo3REEOw@mail.gmail.com> <CAN8C-_Jf4q9p_hNvH_ZN2X_GVGNBzdONyMEUO998ET7ChK3r4g@mail.gmail.com>
In-Reply-To: <CAN8C-_Jf4q9p_hNvH_ZN2X_GVGNBzdONyMEUO998ET7ChK3r4g@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH0PR11MB5739:EE_|CH3PR11MB8188:EE_
x-ms-office365-filtering-correlation-id: b77ec11e-a024-491a-aab9-08dc179aef7f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 8L88qOGYtuCJxe0lHi5IkcCPDrJ9z+ulQxyQtKcbffITv3q+iR31IGOU7u4aR8QH4lk3+kPjGG0D+lMJCKCdcMI24NBp5o9FdIsHjonX80YYWJP0SVWIRxsxjTfvr6VWB9WBZwe+xb1rsslxK2hFOFp7n8ynTNaFU1wl68HFysFVuEVmbBKgY3SbGFleAVolYhmUsZWZehtvnSBKfAN3HixQrI5/oN3a2on8fCNOCe4YtfhtzW9LosK+fmzAi84lzQQT31jSE5xurNhsK5b1ohR7c0mImmMFavuJ5mDo2azeHChZPUHDM9x7ZEuHw+qXpDJC6m000U3YI/fwuv0fchE6taa/wZClJB2arl8zTL1xFkLZYCAA51exCTlTbymmWk/e489nRccjx17rhlz79bpBaoPmPFrbgZdMX1ZbEGwiflbPoNXVhPyMf4pS+EU/Ttjd6NPEUrFQzviFifNmWw7PLZov50WyKnpxY0eHOx8R4fvdhpKkY4/ctodsNbEEDe6txKhVb0Zpb18qYE681PT7FoxoH5fbuMRZlWKZhYTm9RHhfvA1Rqp5dZtKyhjq+aMk8jA/JP4JnNex8hAa2D4CdtiAnmR1N/34aS4A8LaROdvMIqtl7blU/tjmm64JxW4zCsr2q5D1B+FZVxVPIwrWthOvMD8GtR96Ojl6mhg=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH0PR11MB5739.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376002)(346002)(136003)(396003)(366004)(39860400002)(230273577357003)(230173577357003)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(478600001)(966005)(71200400001)(4326008)(83380400001)(33656002)(86362001)(41300700001)(38070700009)(66574015)(8676002)(8936002)(52536014)(99936003)(76116006)(66556008)(66446008)(54906003)(166002)(6916009)(64756008)(66476007)(38100700002)(5660300002)(122000001)(316002)(2906002)(30864003)(66946007)(26005)(9686003)(53546011)(55016003)(6506007)(7696005)(579004)(460985005); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: Oy/X2kdeVvFjUo9/I/3/S/Alvs9KVRxO0FQn+notIbg35r1zWwzqHR4s12ZDqojzNBtuo9WkrhCZdQj8l4XuF8QeSD1f/TQsFthUC3eRCroIEdutF13dpZiZhtpN/YejIUMIMl7DNc9N7RGuIy/fECYIz2eBcEcNnxjyaL+fP5ll4ealfcwA3Um11UePlLyMluc2Ea99op5krqB8RiwKhgJW2E6OApQveC7aKD88CHPgN4onX33jbMahVnx7e+OvEBS1CzKPOi+NqtxX6xAFXqIN8gRYNBk6sjoHoi7UhZ4zTPOTnBLu3CsYF2KgeU4gl/cSRo1vGjLUzEzFOf0rBmk1ZXJGkaVQm+njxlEiap/PT6WCTkd10bvjMZZffqLclDXR5ZWVsiYiOMBBrw7frE/xTBuw2rwkeLIlNkoNU5anChVT1Jvl7e082GIx89uUNH5lTdS5NtM1uFjdb8Jg4qgHLmMkfInjuaozQACRkzzmSWUumzm4zgrrgNoTBnpvC1pIRdfwbczxWvpwTCCylBdQgDerEQrxiXrU+ihGf9HF/1XyPPCOlF0CBvQaxLvS98a5fyzSqM/uEh3LXXKkolF7JZu0J2+8bP3fxZt3rfWEOo4g17+gzouPD+RTk/tsY3Amtkx4JNVelE+9+byW8TaUYQmgPDEzPDZrL1xXEYMeIepub9m19PQA1yCGFU41ys4QrQc117zhq8nShr2i0Os1SePVf8vgq9pTwbnX9DwxwDTrQam57305GkjDuzOg5vgCF1nG1HBEQUvqOrDuCwP3C03bp9947LB+kE+uBIKO28J5XwSUf8jFUFTzT76bVOambfsucbVkDOWQcmbk1FjR2ISTGLvOdObICjJfywEZ8EUC5kwubFtzE0X2PH/RcDdgsapysoqTTiaFQJszYZfd3GjcCCgJJTySnpw5ftGd+UyoUpmcvrSaeY4zkCyct3W4lhieJtInrWdiX8cOZsRkcTNChGbP3sL3ixpXBQVVwqS/UsrnkcOjYB8qBIIgHAhfImc8DXUZdp75RS3qTCFWX33x8m3dqQ9yeSHtK6v7Kl7d08AeaPHwcADJZnleAiRy10tDP8vh5TkNKIbFu7tAHpa7ov70VngMUHIqNaNt16PxWqzFitBe4TuoboOpdxKUwwnNJ9Bo+MSLuozUPrVCtTL85zC5xlBVl/Qtp+Eh66ZvckeOZ4kXM/CqNcUbN9TwbL8kdTwDVAPm45vOTYC4Sr81Hn+tEvtIDMxjScDK2kQL4Ty8635J7uz5Oa2JJGVX1kJaosU+30uuCKQ6jIezyScidbiwX7DQvG4nD6bmcrJzK6EMW5oSX8Na8jOsu//1I5YdAPBQgToGEWp7dM4RpohhlZXufjIloOYvWOV94DHrSH15IjcYBc+vv0Xja72dI1jQ41oxOdEWSguXU6trCdmLtx1zu3BsLqQE8bTyF5VlIm1H+vMf5YGlueWb5856+CUZIX9WYVhXxUWo4uFo8g1Q7GkwlcWygz86N2j2OktMrH/rk84fX/fnl81wCYj52oerGd5EOM3LaoS8uZZYM7iVJ2jBXuSgLXMfC1MXR0tAu8ky3jfDzG215P9Y
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="----=_NextPart_000_0000_01DA4951.7FC55B70"
MIME-Version: 1.0
X-OriginatorOrg: entrust.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH0PR11MB5739.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b77ec11e-a024-491a-aab9-08dc179aef7f
X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jan 2024 20:28:59.0180 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f46cf439-27ef-4acf-a800-15072bb7ddc1
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: fS928moi+bif6pjbenJ+DJ5B2Y5IoOFYyY+isj/838g7MBh9jF1tTPjYzCws3B1YA8WnB58KbVqMP3GgxB+KVAiUVk5tR5ILQ+y+DGBbLYU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8188
X-Proofpoint-ORIG-GUID: _x7aBMB9jk-S1jTTViW_s6dYEIC6UIan
X-Proofpoint-GUID: _x7aBMB9jk-S1jTTViW_s6dYEIC6UIan
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-17_12,2024-01-17_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 phishscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1011 impostorscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401170150
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/3pgw_ipJae8uAB8D0Z5prhL6ZuM>
Subject: Re: [lamps] [EXTERNAL] Issuers: Lamps <> Scitt
X-BeenThere: spasm@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: This is the mail list for the LAMPS Working Group <spasm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spasm>, <mailto:spasm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm/>
List-Post: <mailto:spasm@ietf.org>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spasm>, <mailto:spasm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Jan 2024 20:29:12 -0000

Seems reasonable to me.

 

---

Mike Ounsworth

 

From: Orie Steele <orie@transmute.industries> 
Sent: Wednesday, January 17, 2024 11:40 AM
To: Mike Ounsworth <Mike.Ounsworth@entrust.com>
Cc: scitt <scitt@ietf.org>; LAMPS <spasm@ietf.org>; oauth <oauth@ietf.org>
Subject: Re: [EXTERNAL] Issuers: Lamps <> Scitt

 

It seems OAUTH has a draft that also addresses the binding of `iss` to certificates: > If the iss value contains a DNS name encoded as a URI using the DNS URI scheme [RFC4501]. In this case, the DNS name MUST match a dNSName Subject Alternative 



It seems OAUTH has a draft that also addresses the binding of `iss` to certificates:

> If the iss value contains a DNS name encoded as a URI using the DNS URI scheme [RFC4501]. In this case, the DNS name MUST match a dNSName Subject Alternative Name (SAN) [RFC5280] entry of the leaf certificate.

- https://datatracker.ietf.org/doc/html/draft-ietf-oauth-sd-jwt-vc-01#section-3.5 <https://urldefense.com/v3/__https:/datatracker.ietf.org/doc/html/draft-ietf-oauth-sd-jwt-vc-01*section-3.5__;Iw!!FJ-Y8qCqXTj2!e5gbyBK2NCboiiepdQg3PUBWmMCAYNhJ6zcy3DkfXpIblka0OO7UTMW3yxZkHYA33vtB06LX9GaGomFY8gHLlBS0svk$> 

It seems that based on the OAUTH guidance, the SCITT guidance should match the OAUTH guidance.

Regards,

OS

 

On Tue, Jan 16, 2024 at 7:46 PM Orie Steele <orie@transmute.industries> wrote:

There are 3 things that make up the SCITT ecosystem:

1. Signed Statements (COSE Sign 1 based signatures over arbitrary content, with CWT Claims in the header).
2. Receipts (COSE Sign 1 based counter signatures with inclusion proofs for transparency logs)
3. Identity Documents (certificates or public keys delivered from a trust store)


In a way, Signed Statements are a bit like a CSR with evidence, and Receipts are like a Certificate.

The goal with Signed Statements was to make them really easy to create, and not have any identity specific blocks for creating them (such as DIDs or x509)... 
Issuer's should be able to start using them without waiting for approval, but a (conservative / rigorous) Transparency Service might require extra vetting before they will provide a Receipt for one.

When you get a software artifact with a signed statement and a receipt, you actually have the following, encoded in the "Transparent Statement":

Software Producer Identity  ( identifier to key binding )
  issues --> Signed Statement ( signature over the artifact / statement, proving that content has not been tampered with, signed by the "issuer" / software vendor )

Transparency Service Identity ( identifier to key binding )
  issues --> Receipt ( proof of inclusion, signed by the transparency service, proving a Signed Statement, was valid according to their policy at the time it was included in their log )

So these questions regarding x5t and iss / sub apply to both Receipts and Signed Statements, and SCITT is designed today, such that the identity infrastructure could be the same or different for both.

We should be able to use federated workload identity, x509 and blockchain if that is required, or just x509 if that does the job.

Also, it's possible to have multiple receipts for the same signed statement, this proves a signed statement is in multiple transparency logs.

Inline for the rest, this time with a CSR analogy:

 

On Tue, Jan 16, 2024 at 4:40 PM Mike Ounsworth <Mike.Ounsworth@entrust.com <mailto:Mike.Ounsworth@entrust.com> > wrote:

Hi,

 

As Orie mentioned, we’ve discussed this. I am an X.509 PKI guy, so I see all problems through X.509-coloured glasses (interpret that with whatever feelings of joy, excitement, disgust, or rage as you see fit).

 

We have decades of experience of handling the UI aspects of this (and of training user behaviour) through the Windows Code Signing and Linux package manager ecosystems. When you see a popup saying “Do you want to install “firefox.exe” which is verified by “Mozilla Corporation”?”, or “Do you want to add the GPG key for “cURL Project” to apt sources?” users know what to expect; that there is some level of trust in that naming information – in Windows, the CA verified that the person requesting the cert is actually Mozilla Corporation. In Linux package managers we put that responsibility onto distro maintainers or end users, but there’s still a vetting process to bind keys to names.

 

What’s important to me is that SCITT is building on this history and maintaining the user experience expectations. If a holder of a trusted key is allowed to put whatever name they want for themself in the ‘iss’ field of a signed SCITT object, then that would no longer be in keeping with the historical precedent of other code signing ecosystems.


How is a SCITT Signed Statement different from an integrity protected CSR here?

If the iss, sub, or any other claims in the Signed Statement, do not match the Transparency service policy, which covers both the verification material the transparency service has in its trust store, and the claims, then no Receipt will be issued by the TS.

I suppose this is similar to a CSR request with claims that the CA does not support?

 

Aside – I’m not a SCITT expert so I don’t know what the semantics of ‘sub’ are in SCITT, but I imagine that refers to the object being signed, and not to the entity doing the signing? I don’t see how ‘sub’ has anything to do with the x5t.

 

 

That's right, sub is a text string, it's the identifier about which the issuer is making assertions, regardless of which key verifies the assertions... iss is just another assertion, only this time, it's a self assertion regarding an identifier for the "entity" that controls the signing key, that's used to make assertions about the subject.
 

 

 

> When `x5t` is present, iss MUST match subjectAltName in the resulting certificate.

 

This one is an interesting point in that an X.509 cert can contain a whole list of names in the DN: CN, and in the SANs list. I would amend Orie’s sentence to:

 

“When `x5t` is present, iss MUST match either the CN or one of the subjectAltNames in the referenced certificate.” 

 

In that case, ‘iss’ is providing value because it allows you to choose which of the multiple verified names you want displayed in the UI.

 

 

agreed.
 

 

 

> Requiring the text value of `iss` to match the `subjectAltName`, and considering any message where they conflict invalid, does not change the fact that all claims (including iss, and sub) are ONLY reliable, when you trust a key that verifies them.

Yeah, I disagree with that. 

I think that’s taking an overly simplified view of “trust”.

I mean, that’s necessary, but not sufficient to have trust.

You have to trust that key AND you have to trust how that key has been bound to a name string.

 

Right, in the case of a cert in a trust store, you trust the "multiple verified names", when you install the cert in your trust store.

You can install multiple certs for the same names (right?), if "iss" maps to multiple certs, each containing multiple names, either all the certs will verify the message, or some will, or none will.

In the case of a trust store that is a database that maps an "identifier" to a "key", like key transparency, you trust the name for the key based on the KT structure as opposed to the cert and trust store structure.

 

I can trust both the signing certs for Mozilla, and for the maintainers of the Sublime Text Editor to sign their own software. What I don’t trust is for the Sublime Project certificate to sign a firefox.exe claiming to be Mozilla.

 

But of course anyone with a signing capability can create such a signature, and it is up to policy to decide if it's acceptable.
 

Just because their key is in my truststore does not mean that I trust them to name themselves.


This is why Receipts matter, a receipt is a counter signature that says basically "some vendor signed this software, we (the TS) authenticated them, and the iss, sub, and details of the software met our policy, that's why we issued a Receipt."

In a way, the issuer proposes the iss and sub, and TS accepts those proposals by issuing a Receipt. ( similar to CSR? )

Because of this, there will likely be strong industry pressure to pick identifiers for issuers (iss) and identifiers for artifacts (sub) that multiple independent transparency services will accept.

Unfortunately, I don't think SCITT knows what those identifiers will be at this point in time.... it's looking like an open ended graph problem.
 

 

Or, phrased a different way; we’re talking about cryptography, right? That means that it’s in-scope to consider dishonest parties. Let’s say I incorporate Mike’s Software Funhouse, inc and I buy a publicly-trusted Windows code signing cert (the only requirement for which is to be a registered company). Now, it turns out that my business is setting malware, so I very much intended to sign a firefox.exe that’s full of malware. You should trust my cert to correctly identify me as Mike’s Software Funhouse, inc, and you should absolutely not trust my cert to sign a firefox.exe claiming to be from Mozilla.

 

If you get a Receipt from Mozilla that says they have made a Signed Statement, "transparent", from your build server, the iss for the Signed Statement will be an identifier for your build server bound to some ( hopefully hardware backed ) key Mozilla trusted enough to issue a Receipt.... and the Receipt's iss will be an identifier for Mozilla's transparency service, regardless of if they are using x509, key transparency, or something new to handle the identity to public key binding.


The prompt to the user will be: "Do you still trust Mozilla to issue Transparency Receipts? Mike's Software Funhouse has a Receipt from Mozilla for this custom Firefox build".

The prompt might also mention some receipts from other transparency services that you don't trust yet, in case Mozilla is the only issuer of receipts you have installed currently.

You won't need to install a cert / public key for every software producer / signed statement issuer, you will only need to install keys for transparency services, and let them do their job of vetting the software artifact and statement issuer's.

If you really want to, you can install keys for both the transparency service and the issuer, and check the inclusion proof, the signature on the receipt, the signature on the signed statement, and the hash of the artifact, in case it was extremely large.

And it will work regardless of if the identity layer (just imagine if there was only one) is KT, x509, DIDs, or a filesystem directory on your android phone with "iss" values as vendor names, and jwk.json and key.cbor files inside them, that you sync over nfc at the hotel bar every ietf.

 

 

 

PS – Orie, don’t think you’re gonna pull me into being a full member of the SCITT WG. Nice try.


My usual strategy is to threaten terrible design, but in the case of x509, I don't have enough experience to tell if it's working.

---

Mike Ounsworth

 

From: Orie Steele <orie@transmute.industries> 
Sent: Tuesday, January 16, 2024 3:42 PM
To: scitt <scitt@ietf.org <mailto:scitt@ietf.org> >; LAMPS <spasm@ietf.org <mailto:spasm@ietf.org> >
Cc: Mike Ounsworth <Mike.Ounsworth@entrust.com <mailto:Mike.Ounsworth@entrust.com> >
Subject: [EXTERNAL] Issuers: Lamps <> Scitt

 

Hello, We've been evolving the SCITT architecture, and taking advantage of some newer work in COSE. - https: //datatracker. ietf. org/doc/draft-ietf-cose-cwt-claims-in-headers/ As a result, SCITT now has the potential to have "Signed 

Hello,

We've been evolving the SCITT architecture, and taking advantage of some newer work in COSE.

- https://datatracker.ietf.org/doc/draft-ietf-cose-cwt-claims-in-headers/ <https://urldefense.com/v3/__https:/datatracker.ietf.org/doc/draft-ietf-cose-cwt-claims-in-headers/__;!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvwYgR_YJA$> 

As a result, SCITT now has the potential to have "Signed Statement" cose headers that look like this:

{
  / alg: ES256                   / 1: -7,                  
  / x5t: 10:B9:24:...:1D:8B:93   / 34: h'10b924...1d8b93', 
  / CWT Claims in Headers        / 15: {
  / iss: some text string / 1: software.vendor.example,
  / sub: some text string / 2: pkg:nuget/EnterpriseLibrary.Common@6.0.1304 
  }
}



The question is this:

When `x5t` is present:

How should `iss` and `sub` in https://www.iana.org/assignments/cwt/cwt.xhtml <https://urldefense.com/v3/__https:/www.iana.org/assignments/cwt/cwt.xhtml__;!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvw8PSGnBE$> 

Relate to `issuer` and `subjectAltName` in https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 <https://urldefense.com/v3/__https:/datatracker.ietf.org/doc/html/rfc5280*section-4.1.2.6__;Iw!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvw6CrPo4w$>  ?

I initially asked Mike O, what normative requirements should SCITT have regarding this possible header structure, and which list should I ask this on? 

I'll summarize some of the background, and then pitch what I think SCITT should say on this subject (pun intended), any mistakes are my fault, not Mike's.

First a quick recap on what putting `x5t` in a COSE / JOSE header means (let's assume we are not interested in "is SHA-1 safe to use these days")... :

- https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.7 <https://urldefense.com/v3/__https:/datatracker.ietf.org/doc/html/rfc7515*section-4.1.7__;Iw!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvwu769voA$> 
- https://datatracker.ietf.org/doc/html/rfc9360#section-2 <https://urldefense.com/v3/__https:/datatracker.ietf.org/doc/html/rfc9360*section-2__;Iw!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvwWqvWdmY$> 

> x5t: This header parameter identifies the end-entity X.509 certificate by a hash value (a thumbprint). The 'x5t' header parameter is represented as an array of two elements. The first element is an algorithm identifier that is an integer or a string containing the hash algorithm identifier corresponding to the Value column (integer or text string) of the algorithm registered in the "COSE Algorithms" registry (see <https://www.iana.org/assignments/cose/ <https://urldefense.com/v3/__https:/www.iana.org/assignments/cose/__;!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvw4CfWJ84$> >). The second element is a binary string containing the hash value computed over the DER-encoded certificate.

Let's consider the common UI experience where a user is prompted to agree they trust a software producer who signed a binary before installing it, based on certificates in the user's trust store:

Today, a user attempts to install a binary, and a dialog shows up displaying the "Are you sure you want to install software from: software.vendor.example?", where "software.vendor.example" is the subjectAltName of the certificate in the trust store.


The signed software has hints about the software producer ( iss / kid / x5t ) and they help software (such as an operating system) find a public key (certificate with subjectAltName), in a trust store, which verifies the binary, and then the user can be prompted to confirm they are comfortable proceeding.


With SCITT, there is a possibility that the software verifies without using a certificate, in which case, the UI would have nothing to display, since there is no "subjectAltName" in the trust store, if the trust store is just a set of COSE Keys or JWKs.

In this case, (***after verification***) the UI could display any of the fields in the SCITT header to the user.

This could lead to a public key being used to sign binaries, where the `iss` is different in each message (signed binary), even if the public key is the same.

It is possible for the same certificate (discovered by x5t) to be used with different `iss` values, so binaries signed by the same cert with "subjectAltName: software.vendor.example", might display a prompt that looked like:

"Are you sure you want to install software from (iss: vendor.example, subjectAltName: software.vendor.example)?"

"Are you sure you want to install software from (iss: software.vendor.example, subjectAltName: software.vendor.example)?"

"Are you sure you want to install software from (iss: distributor.example, subjectAltName: software.vendor.example)?"


Regardless of the text we write, let's agree this will happen, now that it's possible for it to happen.

With this context out of the way, I hope we are ready to discuss the guidance the SCITT Architecture should provide.

Implementation Guidance:

1. Only display verified claims (iss, sub, etc...).

Claims in the header or payload MUST NOT be displayed until after they have been verified.

This guidance unifies the hint processing enabled by x5t with hint processing enabled by `kid`.
If you don't have a key that verifies the message, you see "this software is not trusted".
If you cannot verify the message (because you don't have a cert or a public key in your "trust store"), you will never see any potentially incorrect information.
If you have a cert in your trust store, you see the iss, that was signed by the cert that verifies the binary.
If you have a COSE Key in your trust store, you see the `iss` that was signed by the COSE Key that verifies the binary.

2. Forbid conflicting identifiers (Redundant)

When `x5t` is present, iss MUST match subjectAltName in the resulting certificate.

This would ensure that the same "software producer identifier" is displayed, regardless of if the message is a COSE Sign 1 SCITT message, or an existing binary signed with x509.

This will cause validation policies to throw errors, after verification succeeds, and requires comparing the verified headers to the certificate used to verify them.

3. Forbid conflicting identifiers (Exclusive)

When `x5t` is present, iss and kid MUST be absent.

This will cause validation policies to throw errors, after verification succeeds, and will cause complex UI that attempts to resolve the "verified issuer label" from different data structures.

SCITT Security Considerations:

I think SCITT should call out that 2 and 3 do not actually give you any security improvement, and if implemented incorrectly, could lead to "trust without verify" bypass at the policy layer... and I think 2 and 3 should not be included in the architecture.

In the case that the trust store is compromised, it can already contain a certificate that can match any `iss` or `x5t` in the binary.

In the case that the trust store is uncompromised, and filled with keys and certificates that can verify messages:

Requiring the text value of `iss` to match the `subjectAltName`, and considering any message where they conflict invalid, does not change the fact that all claims (including iss, and sub) are ONLY reliable, when you trust a key that verifies them.

Consider an alternative proposal, where SCITT mandates that `kid` always be equal to a specific identifier, for example: "did:example:123#key-42", or equivalently, { iss: did:example:123, kid: 42 }

If there is no way to get a certificate or key from this "custom identifier hint", there is nothing that can possibly be displayed to the user, since there are no certificates, or claims signed by a public key that is trusted.

Headers are "hints", nothing about a header or a payload should be evaluated by a policy until after a verification succeeds, at which point, you are looking at what the issuer intended to sign, arguing that software vendors should implement specific string matching rules when "upgrading" to SCITT, after verifying, seems like a recipe for lots of validation errors, that are not actually providing any value, or even worse, deep / expensive / complex validation before verification (aka https://cwe.mitre.org/data/definitions/502.html <https://urldefense.com/v3/__https:/cwe.mitre.org/data/definitions/502.html__;!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvwKK_KUNY$>  )

Now please tell me everything I got wrong : )

OS

-- 

 

ORIE STEELE
Chief Technology Officer
 <https://urldefense.com/v3/__http:/www.transmute.industries__;!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvwbYBl6kM$> www.transmute.industries

 <https://urldefense.com/v3/__https:/transmute.industries__;!!FJ-Y8qCqXTj2!fjzKqcSRy4mYBet3i43Yz5aytF4UHea6E3zd8XFtXK9Me93OWcXe4vEb1B1_uzJzphtPPAnsi8Zj45dTiMvwJ7Pdhgs$> 




 

-- 

 

ORIE STEELE
Chief Technology Officer
www.transmute.industries <https://urldefense.com/v3/__http:/www.transmute.industries__;!!FJ-Y8qCqXTj2!e5gbyBK2NCboiiepdQg3PUBWmMCAYNhJ6zcy3DkfXpIblka0OO7UTMW3yxZkHYA33vtB06LX9GaGomFY8gHLyFJn3-g$> 

 <https://urldefense.com/v3/__https:/transmute.industries__;!!FJ-Y8qCqXTj2!e5gbyBK2NCboiiepdQg3PUBWmMCAYNhJ6zcy3DkfXpIblka0OO7UTMW3yxZkHYA33vtB06LX9GaGomFY8gHLv6NfKY4$> 




 

-- 

 

ORIE STEELE
Chief Technology Officer
www.transmute.industries <https://urldefense.com/v3/__http:/www.transmute.industries__;!!FJ-Y8qCqXTj2!e5gbyBK2NCboiiepdQg3PUBWmMCAYNhJ6zcy3DkfXpIblka0OO7UTMW3yxZkHYA33vtB06LX9GaGomFY8gHLyFJn3-g$> 

 <https://urldefense.com/v3/__https:/transmute.industries__;!!FJ-Y8qCqXTj2!e5gbyBK2NCboiiepdQg3PUBWmMCAYNhJ6zcy3DkfXpIblka0OO7UTMW3yxZkHYA33vtB06LX9GaGomFY8gHLv6NfKY4$>