[Rats] Re: draft-ietf-rats-coserv-07 early Httpdir review
Paul Howard <Paul.Howard@arm.com> Mon, 24 August 2026 08:59 UTC
Return-Path: <Paul.Howard@arm.com>
X-Original-To: rats@mail2.ietf.org
Delivered-To: rats@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 87F0B12E44454; Mon, 24 Aug 2026 01:59:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1787561984; bh=Lwnmc6Xb8kM9U0K5g3a6hcl7YjtZ/skr413HTWRg4IM=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=bD8oncIyVmAgfOu0w2+zDBXmkZYIc+gC0tFKl7JxduIiqJZT36/BqWnqSe899Wn/P zAwAH0tKpj55IdYsf3L566KLJxDK0ei6HYYzsv0zHIVaxZFv59eZesVA4bvddgOvzl RUtcci4Fa0vrlcA/ojcGUGVDLPwzHN4KVoL0mY3o=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.095
X-Spam-Level:
X-Spam-Status: No, score=-2.095 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, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=arm.com header.b="QCkP1A+R"; dkim=pass (1024-bit key) header.d=arm.com header.b="QCkP1A+R"
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FjLez06sQ7bc; Mon, 24 Aug 2026 01:59:42 -0700 (PDT)
Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013050.outbound.protection.outlook.com [40.107.162.50]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 7171F12E44449; Mon, 24 Aug 2026 01:59:42 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Py9ltTHlJH6+uGLLwd7iQDKQo/bhuUSKyvPwr/eqwD8XMotMrKKlMjyjSQ5g62BNxCjg5pJ6DpQoqksubg1+k3cG82dqJJsO7qdmZssre1O5enw+t9U6FfpL7wmaX3h5O+R96Emtem5/d7dh2qvc0S/a/2ayL/I9nr7JvkpP67/uwT2Z4NoLaLMw8b60MoNBqJP8IjDNcNU4n6dA9MYUyr4c9gHgcPqaVAUtVUJfTGbNsIUxGK96IoG7rl7od/Qgama77IMXtiNAowENPafc7XNhqG/NMsZtplpRlcHMIBjJxOOAJ3rx5SKjOrsTcOPHeC+l+HNTMwvXc1k7norahQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=c/AxtFJP2WivcjPw+Ouo+sQ5R1LLUAM3/nAdElzRBQw=; b=hWCfO5SvDo15kjDbDyJHRwOW9nv9xdlzSAmgh7Ekc+J3rXpGs9Rd+pjnNfkkHcO2BMC8pSdnUOaiI83W+B0VEqg1/gJxCvvSd6eJMuAwlWwPYUHvj2kVMj92jMBnv8doab3BhIbsBnqS+F7ibv3gS924rPr0fV9kezs1JfVMSYIu6wtBw3UzjiZDBL9Z962A3Lotxqi7gJag7MxBWlJ11akuJpsvZD8hv3HcIOz6UVXu8Ndze1fOJydDc0B3rJgw0jn7iOYs8t9UcDGXUAqAev8FSoEKUfmIoR6McWnCTMnUXmPtBm7TUjbOmLyweee0i//UDBfQft07zXKvu8DiQw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lucaspardue.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c/AxtFJP2WivcjPw+Ouo+sQ5R1LLUAM3/nAdElzRBQw=; b=QCkP1A+Ra3sg3QMUqrWV0TyvONN5OiXyfTmq9VM7vjH8/0GMtvs0csGZTs7jlKigNV39ElQJejNx3GsxsYDjft2dHMdpqXCCrwsSQPp/Ut6PYlP3sLyXaSVBAQTGZOcLTApJwi2iW/Lzvb32BV4Y2mqcQqRzb53Hjz7FEvTi9Ng=
Received: from AM0PR02CA0140.eurprd02.prod.outlook.com (2603:10a6:20b:28d::7) by DB4PR08MB9288.eurprd08.prod.outlook.com (2603:10a6:10:3f4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 08:59:28 +0000
Received: from DU6PEPF0000B61E.eurprd02.prod.outlook.com (2603:10a6:20b:28d:cafe::d) by AM0PR02CA0140.outlook.office365.com (2603:10a6:20b:28d::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.12 via Frontend Transport; Mon, 24 Aug 2026 08:59:28 +0000
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C
Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000B61E.mail.protection.outlook.com (10.167.8.133) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Mon, 24 Aug 2026 08:59:28 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CwV9Vm+3bbQ3nTWhs1KyfgTkMdmNWZC9Jpt39XHhsYZkmQMfQ0IWLmXKB5M2trdgJQmxJJeKLrVO0c9LxVBXrhIHvqUYAIY/3+/sToin/cED3kH8mAk4cAutvELHEEk0ncCUXZ68knpJjr5/gJtXp9e3b2WUm5w7wddqsUuf8nQclpM3IIPkqIog1KPNmr77cgXBvBO9cyMQ+EkBjR8TzjtftgMzs8eT1NySak7heKdVJlWDDVdCgSbaIArZ1Txcf/zbKpnSJA0ZGckl+zNMrE7wLNq4sFf+RGN2/8NKr28IDVMUO2orWEl/dN6PlUuGhkFPTPJ70rHSi5L49OhgGg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=c/AxtFJP2WivcjPw+Ouo+sQ5R1LLUAM3/nAdElzRBQw=; b=SwSWdcAZLHHIPQ8ittZFgZgLlxGfCsRyC+Hzb4sm71p/cpL03s7Z8cZUeENJ4ePblmrMX4cn1bpnQuthzQEgOXE48nj0fcVUz2HscUqTODfsua3kgxNnwPdp7CBErs4bZmLR1sIBFK5fCcJvCf5PYlaiaGtdwpvYy5bTnrN0ek14u0IY4fW5jVj4cYGwnxzH+5XJZzEHeavnQkcdpEXPe+po23r/bn6BIaQQHOUwDy0CIjG32+blfSrSkg1AKObF36OscLLfejhwNCA1wuqlarHEOUCaM83GRzhiuG1YkWDAo7KzjN2RAgl4ZYVlhROAdx747jYQdLXTwnVv4W5xVw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c/AxtFJP2WivcjPw+Ouo+sQ5R1LLUAM3/nAdElzRBQw=; b=QCkP1A+Ra3sg3QMUqrWV0TyvONN5OiXyfTmq9VM7vjH8/0GMtvs0csGZTs7jlKigNV39ElQJejNx3GsxsYDjft2dHMdpqXCCrwsSQPp/Ut6PYlP3sLyXaSVBAQTGZOcLTApJwi2iW/Lzvb32BV4Y2mqcQqRzb53Hjz7FEvTi9Ng=
Received: from GV2PR08MB11418.eurprd08.prod.outlook.com (2603:10a6:150:2c9::6) by AS8PR08MB9741.eurprd08.prod.outlook.com (2603:10a6:20b:617::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 08:58:51 +0000
Received: from GV2PR08MB11418.eurprd08.prod.outlook.com ([fe80::c085:d424:9d12:b7c4]) by GV2PR08MB11418.eurprd08.prod.outlook.com ([fe80::c085:d424:9d12:b7c4%7]) with mapi id 15.21.0339.012; Mon, 24 Aug 2026 08:58:51 +0000
From: Paul Howard <Paul.Howard@arm.com>
To: Lucas Pardue <lucas@lucaspardue.com>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Thread-Topic: draft-ietf-rats-coserv-07 early Httpdir review
Thread-Index: AQHdLG0Vw/MRfX+H10iu3P4ai5jyl7aouvEi
Date: Mon, 24 Aug 2026 08:58:51 +0000
Message-ID: <GV2PR08MB11418D87E12D6A7CBAEB59E03EAA32@GV2PR08MB11418.eurprd08.prod.outlook.com>
References: <178676748452.123882.12124109778422691769@dt-datatracker-7c6ddbc678-86d5j>
In-Reply-To: <178676748452.123882.12124109778422691769@dt-datatracker-7c6ddbc678-86d5j>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-reactions: allow
Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic: GV2PR08MB11418:EE_|AS8PR08MB9741:EE_|DU6PEPF0000B61E:EE_|DB4PR08MB9288:EE_
X-MS-Office365-Filtering-Correlation-Id: 420177dc-389a-4688-3e68-08df01be00f2
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|38070700021|6133799003|3023799007|10067099003|56012099006|5023799004|11063799006|8096899003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info-Original: NcAtAI/ZVsD0KjuRAqNTHNXyEDHlvexc5Ry0LBn/0nd02PjU5hf5s4wXnd2oyahm2EgiICyToZ0IMG83SvHAq7fNLhktZcAdkC0kzm8TE4woloGcXk5zm/mNVabYtEPM0DoGGa5etfqacfaWlYkZgVH/A+uOr36SRYga4mFHuq5uIxswkB5xZSiIUE6UmK6v7QsbjgHzeGz43Rj52X7lZzCYmCarQ9hTZhvv3JO+lkIFR8IR1sIcn8RFPfZ9NRNWzv/9C8WDIof20QbZ+6kiugqmBeb3BOIm61LIWu0gJNhlwdPB6+8mmpxMET9ZcFlN/2YZL39kMXfjd3P+0tFnVV3Tv8+RXqvQUuEVm4ZSLWe52z/vHLPOiW4pmra20ZI4Ak8UhTXxWZ1IEPa+UWZaRljPafIeMCx/4KjrZyLIjptQaCqg1fNmWb3Qdcz8rrNKfhYA/vtP4+SvftY236htPlcj3s3NUVPaImKWeqRtX4N6fgHd/jpiI0ZjEo6if7KGQftjwkrDiA4cPigFBtjtUL3JYrpcqGwZzfDV/hVrOa9aKgouYbame0wOkAut1Kq2u5i3ByuERmzLPO/doEJWQgTsR8L3UPnNLtdqDW27KyIUc/bV2WXVwkLvTNYP/yyZl1F+CrujAyAc3amqksvsJLt69r+8IGQYZvUgCYdnfZAKLZNJGbZmYFtHGcDqEqfdHHviowtQhKms1zcYrsunZBxwDByc2SIkYgqjTzri3YY=
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR08MB11418.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(38070700021)(6133799003)(3023799007)(10067099003)(56012099006)(5023799004)(11063799006)(8096899003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
Content-Type: multipart/alternative; boundary="_000_GV2PR08MB11418D87E12D6A7CBAEB59E03EAA32GV2PR08MB11418eu_"
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked: JStjKWdXl+ualu0/s2kKKImQEYAdbGU3hEFQMT+H608Y2vSONK0bShkyfLHldRgTcMFlNx+kiIUMiQ1ONMG1Q4iqvIQBNfEU/l2G4l81WOecG3ad42TNqjSnBKAbBtYqL5YCLzmpbsSmxnarJqSGymIxmhVGOlqI6ZotNN6Jg9yYT9ueH6L32ZRXwJxBlr5i6XnPqsMXHPI99Ge4u/sfE2KAdhCXwqybR3d1QR+1uCbGj5/JMoujd/GidAhfIt6a5/yXB0a/QTjmc7UeTVUtFdnltsQs0oH25EgMFwAJZ1RRdvHYvmlCv8Mvpv2Ebh5pHFqaIOy6Zp10Rbh3dIkJ+w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9741
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000B61E.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs: 3c90ac23-6c7b-4470-c086-08df01bdeadf
X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|35042699022|14060799003|36860700016|23010399003|376014|1800799024|10067099003|6133799003|3023799007|22082099003|18002099003|5023799004|11063799006|56012099006|8096899003;
X-Microsoft-Antispam-Message-Info: Z2yShUb9QqwWSAJSaq9UN746g67zAjyWo2pAK6moHa/mJND+y+9ZamUrAFmT3IosalSuqSbgHfx+cAYoWGpJB7Lh44hXD3RuR3SR7BGqZ5knyAKprS8ZiW6aEXa0rXUjoGC15pB2tAMEGkBM5N/5cxXjJSGQbE0ActatNRXvfc1PA1SKLo4RYxd3K613glgEkBoLqRroabqvFunBD7o8G0fIEZeZIOe2FUzL+6VnUUnhBs5ECrZ25wsGjHPoG1RBWTmsN0p8iEFOG8uDrruKO0aoOG5KJtHMqlGJjWdFBi1yEVg+bG47/y8cg7pLCVc+E9DZmTfqGeZ/47qSVSnlZAvv5rR8GgjbS1uKw5Xp10D0w9w0RtNPOxapsIX73lB2N0yqbWDu2TvFdPd7wwtoHNL6V3Ou/Yq263F9gQK4Utk3Zy4+ODJqYWvSVSVDYM4dff6JCNagxSuGMWzk0HSoZ/qrlJHPD1GJ9YgnazSCjxJ+LhQ5Iz3FSaDCE1AknvT7ZimJIOMrgXx91yx/Y+2R32XmDNAaZJDNwyld95/yKREv1x9N0iu1o/u7VmtNxjU3bx7GIYf7alSIn0YaWEZpYQip/1rxlZBJR2/tVGtT0PZ/UaxHj6vG8pwt6c4luVGPXFhwEfpUsWBf71DN5HYglVDEh3LTse6s0xRMEfJKn7vE+6dyf0Irwih6WB0dCPC52ygGs82O4ntaLY086yPY6g==
X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(14060799003)(36860700016)(23010399003)(376014)(1800799024)(10067099003)(6133799003)(3023799007)(22082099003)(18002099003)(5023799004)(11063799006)(56012099006)(8096899003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: LNenR15ozEuBbfSCLoVDq1lZzI7NJqr2U8N7Z5b5sLevzRBO7vEaiED/aqJ6NltNgoGoM4dmFuCVD4qCSiOavKJX48iWMXpvUJPHgNJS7Ougx+lRXaxkcFtFFOVfmgST3chhR75Y2YeNrPdCebXMsQIb7rnnnj0LgpxHcoE78aQRpCJMCPThuGqxwGeXQY0dSMM4r2PyPRJM/02lH8wNjlKAdkETU/867x1BsLfsDiX9ejulSOuFz3OSO7JSr8atZfj/VliC5bdZRMbmhLbP54reX1b8QZdFBw4Q3IVVop6LG+LiU8FqLVtdtHvkCUjMkIANrRDTP+IgjZazRIKZSdLbZa2r+ZAysEMFpNr/im3k3WaT7oig2etIDEhnSXd53i4PsaN8pVuZRYUz6DanhlpUzEt7cfMW4463y6dmzxRi6craL0ejtyPseY+KR2r7
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2026 08:59:28.0110 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 420177dc-389a-4688-3e68-08df01be00f2
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com]
X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000B61E.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9288
Message-ID-Hash: V4I2XG5DH4SFQNELEQ5FUDL7NW7WCMD4
X-Message-ID-Hash: V4I2XG5DH4SFQNELEQ5FUDL7NW7WCMD4
X-MailFrom: Paul.Howard@arm.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-rats.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "draft-ietf-rats-coserv.all@ietf.org" <draft-ietf-rats-coserv.all@ietf.org>, "rats@ietf.org" <rats@ietf.org>, nd <nd@arm.com>, Thomas Fossati <tho.ietf@gmail.com>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Rats] Re: draft-ietf-rats-coserv-07 early Httpdir review
List-Id: Remote ATtestation procedureS <rats.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/rats/fEiKoYYGabI3va9ZleNAREmyyDE>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rats>
List-Help: <mailto:rats-request@ietf.org?subject=help>
List-Owner: <mailto:rats-owner@ietf.org>
List-Post: <mailto:rats@ietf.org>
List-Subscribe: <mailto:rats-join@ietf.org>
List-Unsubscribe: <mailto:rats-leave@ietf.org>
Dear Lucas and CoSERV-ers,
Lucas, thank you once again for the comprehensive review of CoSERV.
Thomas Fossati and I have met last week to do a walk-though of the issues raised, and I’d like to summarise the changes to the draft text that we are proposing to make to address them.
I’ll top-post the suggested changes per-issue. The full issues from the original review are also quoted below for cross-referencing.
Lucas, please feel free to alert us if you think that the suggestions are not sufficient to address the issues from your review. Please note also that we had one clarification question for you around ISSUE 9, which is included below, so we’d specifically appreciate your attention to that.
CoSERV co-editors, please also review the following suggestions. Unless I hear otherwise, I will begin to prepare a PR to the draft with these changes applied.
ISSUE 1: Privacy concerns of the caching design wrt HTTP caching
SUGGESTED CHANGE: We will add the oracle cautions to Privacy Considerations in the draft and suggest the use of the no-store or private Cache-Control directives for queries related to small anonymity sets.
ISSUE 2: Safe methods and HEAD
SUGGESTED CHANGE: We will explicitly disallow HEAD method support as a “MUST NOT”, instructing servers to return the 405 status code if this method is attempted. The rationale is that CoSERV providers are not general-purpose servers. CoSERV is a specialised protocol. There is no value in the HEAD method for the case of a CoSERV query.
ISSUE 3: Validators and ETags
SUGGESTED CHANGE: Agree that the current illustration of ETags in the example diagrams is not quite correct, so we will amend the diagrams to make it clear that the ETag comes from the origin server and is propagated elsewhere. We will also recommend that origin servers should compute ETags in such a way that they are based on the unsigned content, in order to avoid the accumulation of cache entries that are identical except for their signature.
ISSUE 4: Query size bounds, URI privacy and QUERY method
SUGGESTED CHANGE: We will caution on the URI privacy issues in the Privacy Considerations section. We will also document the potential 414 status return code for GET operations. The QUERY method looks like a good fit for CoSERV, so we will specify it as an optional alternative, but not require all CoSERV providers to support it.
ISSUE 5: Freshness
SUGGESTED CHANGE: We will strongly encourage (with a “SHOULD”) that CoSERV origin servers set Cache-Control headers explicitly, so to avoid infrastructure layers defaulting to controls that might be unsuitable for the content lifetimes.
ISSUE 6: Discovery content negotiation and response caching
SUGGESTED CHANGE: We fully expected that discovery documents would be cached by clients (and our running PoC code demonstrates exactly this pattern), so we will make sure this is explicitly called out in the draft text. We will also add the statement that the server MUST support both CBOR and JSON formats of the document, along with the recommendation to use the Vary header to avoid serving the wrong content type from cached responses.
ISSUE 7: Accept looseness
SUGGESTED CHANGE: For the GET method to fetch the discovery document, there are no special semantics beyond standard HTTP content negotiation, including the use of defaults. Therefore, the redundant sentence about negotiation can be removed. However, this is distinct from the method to execute a CoSERV query (the request-response transaction). For this case, the requirements are a little stronger, because there is no sensible default Content-Type. We will strengthen the text in this case to say that the client MUST supply exactly one supported media type from among the capabilities in the discovery document. This means that a 406 response should, in theory, never occur. But we will continue to document the potential for 406, and also indicate that the server MAY provide the permitted Accept types in the response headers.
ISSUE 8: Error Content-Type broadness
SUGGESTED CHANGE: We will alter the wording to make it clear that error responses are a requirement on the origin server, but cannot be assumed by clients in the presence of infra layers.
ISSUE 9: Rate Limiting
SUGGESTED CHANGE: We will delete the rate limiting example and explain that rate limiting could (and typically would) occur in infra layers rather than at the origin server. Error details beyond the HTTP status code will not be prescribed.
CLARIFYING QUESTION: We don’t understand the comment “the ‘MAY’ is an issue and needs to be rephrased”. The current text indicates that the server MAY include a Retry-After for rate-limited cases. We don’t understand what’s wrong with this text. It seems to be sensible even in cases where rate-limiting is controlled by infra layers.
ISSUE 10: Truncated Examples
SUGGESTED CHANGE: Rather than extend the examples with complete base64-encoded queries (which would add a lot of textual bulk), we propose instead to indicate typical sizes for queries, from which the reader will be able to infer what a typical CoSERV URI would look like in practice. We can add this information in a new paragraph, which can also be used to indicate the potential use of QUERY instead of GET (see ISSUE 4 above).
ISSUE 11: Redirects
SUGGESTED CHANGE: We would not expect redirects to rewrite the actual query (which is the leaf element of the path), even if other parts of the URI path are affected. We can add some explicit text to this effect if that helps, but we don’t feel that CoSERV requires any specific handling for redirects.
ISSUE 12: Inconsistent discovery responses
SUGGESTED CHANGE: We will align the CBOR and JSON examples for greater clarity.
ISSUE 13: Caching examples and time
SUGGESTED CHANGE: We will fix the lower diagram in the caching example, adding an Age field alongside the existing Cache-Control header field.
On 15/08/2026, 05:18, "Lucas Pardue via Datatracker" <noreply@ietf.org> wrote:
Document: draft-ietf-rats-coserv
Title: Concise Selector for Endorsements and Reference Values
Reviewer: Lucas Pardue
Review result: Not Ready
[…]
# Major issues
1. Privacy concerns of the caching design wrt HTTP caching
IIUC this topic has been discussed in the WG. However, I think the current text,
in combination with fundamental design choices wrt HTTP caching, leaves a
potential adjacent privacy issue.
A CoSERV query is serialized into a URI using a well defined, **deterministic**
mechanism and sent in an HTTP request e.g. GET
/coserv/{base64url-encoded-string}. The protocol expects this URI to be used as
a cache key. The data that forms the input to the CoSERV query can contain
sensitive information for a small anonymity set. In my simplified comprehension
of RATS terms, an `instance` can identify a single unique device or component,
while a `group` is a group whose anonymity is only as good as its size.
While the document addresses some of this topic in RATS terms, the use of
generic HTTP caching, IIUC, introduces some potential new threats. The HTTP
cache itself can become an oracle; the timing of serving responses can indicate
if someone has already queried the information. An attack could come in the form
of scraping a list of predictable identifiers (correlating to a deterministic
URI) to gain intel on instances or groups based on the performance of HTTP
results. A generic HTTP cache makes itself available to any generic client to
perform such an attack.
The AI tooling suggests that this has been touched on in issue 81 and 67.
However, the text following text in the document is likely insufficient to
address the oracle problem:
> Although reusing cached responses is generally desirable, clients that need to
> bypass the caching infrastructure can do so by specifying Cache-Control:
> no-cache in their requests.
This cache control directive affects one aspect, skipping any cached value and
going to origin. However, that doesn't prevent the issue. The result of the
no-cache request **can be stored in the cache**. Its unclear to me if the
authors meant to specify the usage of the **no-store** directive. Importantly,
other clients can do other things; if they can probe a shared cache with private
info, a side channel exists.
A possible improvement is to lean on HTTP's toolkit more. The "private"
directive might be appropriate for very-fine-grained information in the query
such as instance or group. This would stop caching for those queries while
allowing broader queries to benefit.
If the WG/authors agree this oracle is an issue but cannot find consensus on a
standard mitigation, then security consideration text that highlights the
threats and HTTP toolkit might be sufficient. Sometimes its really up to
deployments to decide on the privacy/performance tradeoff. The important thing
is the ensure no naive use of shared caching; an "off-the-shelf" caching HTTP
server might just do that.
2. Safe methods and HEAD
The document states "only safe HTTP methods are used" and goes on to specify how
GET is used to make queries. But this is not an s/methods/method editorial-level
matter.
RFC 9110 states "All general-purpose servers MUST support the methods GET and
HEAD. All other methods are OPTIONAL.".
This document is silent on HEAD, which is problematic. HEAD is functionally
equivalent to GET ("SHOULD send the same header fields in response to a HEAD
request as it would have sent if the request method had been GET), implying that
a CoSERV server would run the same processing as the GET request. Is that
desirable?
There's also some deeper consideration to make wrt caching. Various freshness
validators _could_ be used with GET. However, RFC 9111 Section 4.3.5 states how
HEAD requests interact with caching in the absence of conditional GET.
This issue is somewhat elevated by the lack of explicit guidance on validators,
see (3).
For the purposes of CoSERV, it may be appropriate to disallow HEAD. This would
prevent clients from having a cheap way to trigger work on the server (i.e. a
low-bandwidth CPU amplification attack). Safe methods can be trivially replayed
and things like 0-RTT early data could make a server more liable to attack.
4. Query size bounds, URI privacy and QUERY method
This is probably going to be one of the more controversial comments.
The CoSERV HTTP binding requires converting a query into a base64url string
carried in the URI. I don't know how big the underlying query data tends to be
in practice but the HTTP ecosystem does tend to limit the size of URI they
support. IIUC query size is unbounded but there may be real practical limits to
sending them via HTTP.
The recently published QUERY method (RFC 10008) summarizes the potential
problems quite well:
> when the data conveyed is too voluminous to be encoded in the request's URI,
this pattern becomes problematic:
> * size limits often are not known ahead of time because a request can pass
through many uncoordinated systems (but note that Section 4.1 of [HTTP]
recommends senders and recipients to support at least 8000 octets),
> * expressing certain kinds of data in the target URI is inefficient because
of the overhead of encoding that data into a valid URI,
> * request URIs are more likely to be logged than request content and may
also turn up in bookmarks,
The simplest thing to do is consider adding some text to highlight the potential
failure mode. A 414 (URI too Long) mention might be useful. You may also want to
highlight the privacy issues with logging URIs that contain any potential PII.
Possibly unpalatable: consider adding/substituting support for QUERY. This would
allow you to have a safe method to send the query in a more efficient binary
representation. A valid reason not to adopt QUERY wholesale at this time is that
support is still rolling out. A future binding might want to consider it though,
especially if you need larger queries and bump into limits.
3. Validators and ETags
The document is quite quiet on conditional GETs. Perhaps thats ok since it
things might "just work". However, the document does mention use of ETags in an
example. And as presented, the example is both invalid and raises some
questions.
The AI was very concerned about the **determinism of the response** (in contrast
to the determinism of the request). While RFC 9110 describes its the origin
servers prerogative to calculate ETags however they like, this doc might have to
do more. The AI raised the requirement in section 3.5 "Result sets always
include a timestamp indicating the expiry time of the entire result set." and
highlighted that results are signed via COSE (section 4.6) which may not be
byte-for-byte identical unless the server uses RFC 6979. I am not qualified to
comment authoritatively on these aspects of the payload. However, RFC 9110
section 8.8.1 does have text on this type of thing. The document might want to
consider spec'ing the use of weak validators if that's a better representation
of the information. SCIM appears to have had to do so. Strong validators based
on a hash of the content might cause all conditional requests to fail, which
would defeat the caching purposes of this protocol.
More specifically on ETags, the examples that use them are invalid - the origin
should be the ones generating them.
5. Freshness
This one is borderline minor. The document attempts to align CoSERV result
"embedded freshness" with HTTP freshness and provides a recommendation:
> the origin server MUST NOT set HTTP cache directives (e.g. Cache-Control:
> max-age, Expires) such that the freshness lifetime of the HTTP response
> exceeds the result set expiry timestamp contained within the CoSERV results.
That's good, but an origin might not set any Cache-Control directive in
responses. That could trigger an HTTP cache to use its own heuristics for
deciding on the cache freshness; see RFC 9111 section 4.2.2:
> Since origin servers do not always provide explicit expiration times, a cache
> MAY assign a heuristic expiration time when an explicit time is not specified,
> employing algorithms that use other field values (such as the Last-Modified
> time) to estimate a plausible expiration time. This specification does not
> provide specific algorithms, but it does impose worst-case constraints on
> their results.
The document might want to highlight the possibility for such an origin to
behave this way, even if there's not much that can be done to make genric HTTP
caches deal with it.
# Minor issues
6. Discovery content negotiation and response caching
It seems #94 was not properly resolved. There was a comment "I think we need to
say that servers MUST support both formats" but no text was actually added to do
it.
Leading on from that, the discovery document has two formats, JSON or CBOR. By
default, the responses for these objects is going to be cachable too. However,
the spec doesn't mention it. For scalability, I suspect you might want to
embrace it. If so, consider adding text about the `Vary: Accept` field in the
origin's response to ensure that a HTTP cache doesn't accidentally serve
a different type than a client might expect.
7. Accept looseness
The document levies some requirements on the Accept header:
> If the client presents any media type other than these two options in its HTTP
> Accept header, the implementation SHOULD respond with an HTTP 406 (Not
> Acceptable) status code
RFC 9110 section 12.4.1 has some text too:
> For each of the content negotiation fields, a request that does not contain
> the field implies that the sender has no preference on that dimension of
> negotiation.
> If a content negotiation header field is present in a request and none of the
> available representations for the response can be considered acceptable
> according to it, the origin server can either honor the header field by
> sending a 406 (Not Acceptable) response or disregard the header field by
> treating the response as if it is not subject to content negotiation for that
> request header field. This does not imply, however, that the client will be
> able to use the representation.
I'm not sure if this spec is trying to be stricter than RFC 9110 or not. This
probably needs tightening up with a MUST, or just defer to RFC 9110 if it
doesn't matter much.
8. Error Content-Type broadness
The doc states:
> For error responses (4xx or 5xx status codes), the Content-Type header field
> MUST be application/concise-problem-details+cbor... containing [title,
> detail].
This is a bit broad because HTTP layered. the CoSERV app is running atop
lower-layer HTTP things, which could generate their own errors. It's more
correct to state something along the liens that a CoSERVER MUST send
application/concise-problem-details+cbor... content when returning error
responses (including the useful details like content-type and fields etc). That
accomodates for a client seeing any kind of error status with any content (or
none at all), that might be generated in an Internet deployment.
9. Rate limiting
There is an example about ratelimiting. I'm not sure it fits this document well.
Its possible that a layer beneath CoSERV could be implementing the rate
limiting, yet this example seems to imply its the CoSERV server?
The use of 429 overlaps a bit with issue 7. What should a client expect to do
with a rate limiting response, especially if it isn't the
application/concise-problem-details+cbor you're mandating at the CoSERV level.
The document might want to nix the example and instead describe the possibility
of rate limiting in the binding or security consideration sections. HTTP
ratelimiting is also evolving, using one very specific example might lead people
up the garden path.
If you want to keep this, the "MAY" is an issue and should be rephrased.
10. Truncated examples
The request examples have truncated URIs such as "/coserv/ogB4I3R...". Given how
important these are to the whole caching story it would be really useful to have
a fully worked value in the document somewhere. Even if the examples use a
short-hand for presentation.
11. Redirects
There is no definition of how redirects are to be handled. This seems
problematic given that there seems to be some expectation that the URI is
closely related the response content.
12. Inconsistent discovery responses
Section 6.1.2.3 has examples. The requests are to the same /.well-known endpoint
and vary only by the Accept header. However, the AI suggests the
"result-verification-key" doesn't match. This contrasts with other normative
text that states the responses should be equivalent apart from the
serialization.
13. Caching examples and time
The AI states the examples in 6.1.4.2 misuse HTTP fields. Its worth double
checking this once the ETag stuff is decided upon. RFC 9111 states
> When a stored response is used to satisfy a request without validation, a
> cache MUST generate an Age header field (Section 5.1), replacing any present
> in the response with a value equal to the stored response's current_age; see
> Section 4.2.3.
The example decrements values in Cache-Control and doesn't use Age. This is not
correct.
# Nits
14. The [HTTP] and [HTTP-CACHING] references seem to have been inverted :-)
15. Use URI consistently. Aside from base64url encoding, there seems to be a few
"URLs" that have crept in.
- [Rats] draft-ietf-rats-coserv-07 early Httpdir re… Lucas Pardue via Datatracker
- [Rats] Re: draft-ietf-rats-coserv-07 early Httpdi… Paul Howard
- [Rats] Re: draft-ietf-rats-coserv-07 early Httpdi… Paul Howard
- [Rats] Re: draft-ietf-rats-coserv-07 early Httpdi… Mark Nottingham
- [Rats] Re: draft-ietf-rats-coserv-07 early Httpdi… Paul Howard
- [Rats] Re: draft-ietf-rats-coserv-07 early Httpdi… Mark Nottingham
- [Rats] Re: draft-ietf-rats-coserv-07 early Httpdi… Paul Howard