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

Mike Ounsworth <Mike.Ounsworth@entrust.com> Tue, 16 January 2024 22:42 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 35337C14F6B6; Tue, 16 Jan 2024 14:42:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.505
X-Spam-Level:
X-Spam-Status: No, score=-0.505 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, HTTPS_HTTP_MISMATCH=0.1, PDS_BAD_THREAD_QP_64=0.999, 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=no 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 Ljk-i6JFSc9T; Tue, 16 Jan 2024 14:42:15 -0800 (PST)
Received: from mx07-0015a003.pphosted.com (mx07-0015a003.pphosted.com [185.132.183.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 F3D3EC14F5E2; Tue, 16 Jan 2024 14:40:45 -0800 (PST)
Received: from pps.filterd (m0242864.ppops.net [127.0.0.1]) by mx08-0015a003.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40GJbJ0J008122; Tue, 16 Jan 2024 16:40:43 -0600
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=entrust.com; h= from:to:subject:date:message-id:references:in-reply-to :content-type:mime-version; s=mail1; bh=wIiEnLCmjUY2+lpzec5dhK25 IP0yG5Ga9ceSzsF264A=; b=dQzm7dkQrG3vN4l2JzMWeZjaBiEbVdQ5e66B0pcj BzAqGXX76Xav8MviW5FzQZ3io4O1LUp6eu6y7dvomlSlCDMuoSNmM0FB2dO2/JcY RaDxPzHhLqX8uz0vZ1PevufZBMmkzM+EG9ORsD9i7/S5h1QJi1KaL7lx2G8QZaRt 6h7UW5U9GYH3mgn6uo4rWa5yFxf0E1wqQq0GG+NvGCPnKg+VJJ59cCCyuR1F3mAG 1FqDHaUxuL/oPFRnPXlhRIJKt1u0/YxjxYWkrPpjhH+qRvefV11dyST7Bc07EU7o eTH456KYxMZcpB2w81C5HP5xmv8wWQv7GkLukW6goI9yyA==
Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2169.outbound.protection.outlook.com [104.47.58.169]) by mx08-0015a003.pphosted.com (PPS) with ESMTPS id 3vkr33tpsr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 16 Jan 2024 16:40:42 -0600 (CST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D6K9oTyfyJ5rhjsg/yy8wDI06Qi+31+oWwDNzmTzJ5cB45fc7TH0bz4S+KNYFCDeVFaVWEcdsT3Z3IemAzdw9oii0akuDD3dMFYlTdHeN3ohg0gkP9/IFVtkrQ/9qmeXeYpzZMcm6CH0suPr4bFnm+zhsAKKj3GBT1KYoKet5LLPBMZTX9uq/CxewID5i5bsGrD4E17FB8EkEfBdaj76GbLr1gds1wErhk2kdyn9f4M20H8HX3OH7H0G5VW3ZdF/oRhrP0ZJQFaUjWchnZZXb0tS4jFTOFPYK89HY80u+zp0Zy65OHqqxHqplFFRwmwn1qqWdow4Ri1GFvA+JhiWJg==
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=ERxnycrFfDjermtmYFflstqSL6fb+0q4XNk+S9ZWQIU=; b=AfX4FO/CkH4BGHQVs0uqKPPIgZulgxm+Cn3Ltcd/MuWDRYUaMk4W/BxGdZkiKANNSg13EPrdAooHHvubejpTENfG1v4T8nOoyulcq5i1xJmAZXCPqCNoU9VOJrC8NvI9Obgadqi9YyWdenM6LB860bu4kRm3Lp6wuf6RFjlbyYujHy8vbvcFWwvSChaVxBLcI/K5Zyr/RCixebXbqipC8paduOwGVgTiXGK2BQZwYF/HCxiK/EMQkiCtkWNO+ERGgM2nSkxE8Edn5MIXZ640tEsf5bJ86dVdlCWpO2ZPWuD3AVHvb5c1ChwMJePtDFhXGnjfn8niTUrUCDrBClu8Gg==
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 SJ2PR11MB7647.namprd11.prod.outlook.com (2603:10b6:a03:4c3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Tue, 16 Jan 2024 22:40:35 +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.7181.022; Tue, 16 Jan 2024 22:40:35 +0000
From: Mike Ounsworth <Mike.Ounsworth@entrust.com>
To: Orie Steele <orie@transmute.industries>, scitt <scitt@ietf.org>, LAMPS <spasm@ietf.org>
Thread-Topic: [EXTERNAL] Issuers: Lamps <> Scitt
Thread-Index: AQHaSMTTg/RyEy7mt0qpojcy+QtpOLDc/5Iw
Date: Tue, 16 Jan 2024 22:40:35 +0000
Message-ID: <CH0PR11MB5739D5FE4861DBF695F5259A9F732@CH0PR11MB5739.namprd11.prod.outlook.com>
References: <CAN8C-_Kfj4wsXYONSzYK3832QK_z+uEDnmvZz76WvuWCGCDZeA@mail.gmail.com>
In-Reply-To: <CAN8C-_Kfj4wsXYONSzYK3832QK_z+uEDnmvZz76WvuWCGCDZeA@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_|SJ2PR11MB7647:EE_
x-ms-office365-filtering-correlation-id: b0793b8b-870f-485a-93b9-08dc16e4279a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: IppME5esZKOZKDl16UK35HzvWfrm9k2qzX7Qgd0pdnCPj0aVsgi/S7q74f3bfri4/3XmGsX3P4fmWnWAgjTeT7cKi3oHleccLQ5jxnoeZvrI6BNnVY9eUTYPWpSlQwfmj8j49CD+q+CnydmoyhN5YUdRSe3Iq80crX5adRO9bdgyvbMIH3kB8V8F+E7zx7uuvg7qYhchjVWtl99D17HIXj3lvccoT6JXH+MX/zls5WdwoMvP4SZGE64yN6zbibuUqd/c9uwcCFmeHgLLqpNB3ZD5myEOSYv1TdCtG9K/M22HPb4RUDBgJbdomGeW4smvye8o0dGnPk/VbvQ02anhn9MJs1PEYSIL9EtVcW0YRghwZnQsZ2sRbfyqIgw9rVRg5KY+T/G7fel2e7zMfo+HzosQyIwdMBncN6Ef3Wy1EgCBhEFYlATz1vJJ7fFLXOtisVhArjB6AtlHqDGSo0zk1Jkr9FdxkcIeMN8FhHgHdhk37PabFPNADRL2el/S7H7sKtxSLi6zXs7pbqKfIUoHVP6iK/LHdU0z7Wo3f3PZnke8R5MMfXKo7WdwrWUKkTJF18rjXasXdw2NQdPyKCApjLQwBKu5AJpNc0xU4HKiRl7SCzpDVE3fmVn8sKPE23wC5mhp0aV6BLYHy/tF8ekFxNttf65kxc3GWRWX6lbrq+FJ1QvQAXdSw9nbZcuxzwjg
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)(366004)(346002)(396003)(136003)(376002)(39860400002)(230922051799003)(230273577357003)(230173577357003)(1800799012)(64100799003)(186009)(451199024)(5660300002)(30864003)(2906002)(9686003)(122000001)(86362001)(38100700002)(99936003)(166002)(33656002)(66574015)(7696005)(83380400001)(6506007)(53546011)(26005)(966005)(66946007)(8936002)(41300700001)(66446008)(38070700009)(52536014)(478600001)(8676002)(64756008)(9326002)(66556008)(76116006)(71200400001)(66476007)(316002)(55016003)(110136005)(460985005); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: lQzwPcWWgpZ0MgHtgIdH9hfPIacscfg40o0CwXJo2+lR0gsRIARE9sDz5/hOzsFqRCX6ghtycEpajTxi7Ml6zfiKLOpZy8Wen+XzKOcH7+QxuNMFRYDADmMyf+2Q08Kk4dWr2+sKckmIHESSkCeCnFaxLWQONTM/G+bKz52izeWXpsEUocBru8DT9g+3IBnChMZD0065z9Sq9vUWDT/gX6RqpQGbXyuFJwhtJ1eKx7WzJoMhx9DzKtO0UvNpCaXQVJlwLTDmftuRn2uXj+0ZZ7GHrHhaZuSK6moAMwOebPxhP+G8RPM0lL+FJL8ErzD4ViNOgZF8AfnqkZb7Yny6HqFlN4mtGsWjeUFdlOTtLYaI3DZVvKrOvBAyrvJC70oxwjqJxD/9v/r0sIr+k8tbH7uUnU9q/TFIO8pE0IbPqNc/NwAjDoG9cg3T5Z/C7bN+MndBEAaeQE9jP0ccP+aHG2qhyfzFAOvGL0v/o0+zK6tVqGjvUifUM+8zF1TVdY3+Ja3FNcnSH3xNx6jgGIUzJvtzFCZlBCIqJjW5nrQiXx9Bt1dFkbV5e8icYZlwuWuQxnyeStaOaDbm8CmV4/K9ClF9QyeJ6eNAysHtGC2wgIbPS1sh8+O3R927gn8IiJbCZBvKaxhS2FVFHKpdWKEKNItnBdr70y1h25pm2TH0EV/ND6/GfdOPdSGs/RuFXwscQV3YwPPJN9EpmQBstvRXAA8bZ4G+tUNsZt/ZjK02gnpUWqsuGM2FKKOTulYXDOPbOXDvKEKs41YsMsxQ3B9ck3N7V93wS3LUD0amKLL/Z/gBcIIT2zljAubHiDWo+4Id9VSwQGwlIst9HR5aDh+3a7TDMw3tqjKR2FuasJ9/Ox27u3NJSwOEeSl12NmY8Ziwds7p/C1JZSwN8lYKzPgQ07YuA51TAGpc36XP5DcVU99dG++ZHaEpS5R2uBLJvzFMj4zJhm0dC0c37ewNDJ5EKHc6DoSO/eJ84MeryedwBFwahaaIBwI6MN/o63ZeJ+XxdodAehJghNINR5C+AlR8KR2lcKW5lNnm6TbHq5Vbu3FhSDrTpYka0DsvQQBAvO8Kkyr496uZP313Lxfwa/1wam6yNGsfbctWOqsjM4KnpJ4H/WOECPjFhVnJHh0Ft617CliJwgTJ8r++OEZPvsFQUq8A+1tWv4d2aD32W3AMnnOolb9BBEiZCq/rSbYqKnnv9006hidr+kpYA7/mwzguv8lJe+AvfbUZIMFU+41mjyiHQmZetckijfZYosvrfxcvMNAhhwYn4EuoJMzA7NgX3QMY1yUacvYajaIseP7oNgWit804fDVFp6n+PwDfkZp93btsOZX2b/j2oHhPILC7e503beYPT3Lnunu2oZmEClbmpLE5tzbgIwHRliC+qwi/hR5Sr3k+6shWJEkekPvWfRobDZzZKECZzeXnDAUTh+lfquLGYG9W4Iw/d2nSOiVYAOJbWav/j81GylcoX7s4wigH4EhEOei6xHzzj9hgcuRfJ353WJlXx+40NX3UWT7caYlWrxFd2RyGnJH2JKlVd/kNE+aVAjW9AWIBeNlvFSp92WLTeSd6WRVWpkA7R3Nr
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="----=_NextPart_000_0704_01DA489A.B94EBEC0"
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: b0793b8b-870f-485a-93b9-08dc16e4279a
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2024 22:40:35.2277 (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: hlcB71y1g+96h6EZd5dC/KJmx5jJ/nF84ohuHZkPnPhTNYNedyNoRL/qLj7CgfntZokxJBTH0erkX25HUU45ugqklQjWEo+UT1KwS7k7KNg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB7647
X-Proofpoint-ORIG-GUID: 8MIw7L-Myfw0ss-WEqpiy0Za7GybsOGC
X-Proofpoint-GUID: 8MIw7L-Myfw0ss-WEqpiy0Za7GybsOGC
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-16_14,2024-01-16_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 mlxlogscore=999 phishscore=0 malwarescore=0 mlxscore=0 impostorscore=0 suspectscore=0 clxscore=1011 lowpriorityscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401160179
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/LxXHMqwzFHUMrQ_mbP44hpgZ4xY>
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: Tue, 16 Jan 2024 22:42:20 -0000

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.

 

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.

 

 

 

> 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.

 

 

 

> 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.

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. Just because their key is in my truststore does not mean that I trust them to name themselves.

 

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.

 

 

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

---

Mike Ounsworth

 

From: Orie Steele <orie@transmute.industries> 
Sent: Tuesday, January 16, 2024 3:42 PM
To: scitt <scitt@ietf.org>; LAMPS <spasm@ietf.org>
Cc: Mike Ounsworth <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$>