Re: [quicwg/base-drafts] Editorial suggestions from Benjamin Kaduk's IESG review (qpack) (#4789)

kaduk <notifications@github.com> Wed, 20 January 2021 23:41 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 33E7B3A15DA for <quic-issues@ietfa.amsl.com>; Wed, 20 Jan 2021 15:41:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.35
X-Spam-Level:
X-Spam-Status: No, score=-3.35 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.25, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8BC7Mjp7cJuN for <quic-issues@ietfa.amsl.com>; Wed, 20 Jan 2021 15:41:36 -0800 (PST)
Received: from smtp.github.com (out-25.smtp.github.com [192.30.252.208]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3B0123A15AC for <quic-issues@ietf.org>; Wed, 20 Jan 2021 15:41:36 -0800 (PST)
Received: from github.com (hubbernetes-node-ff38e26.ash1-iad.github.net [10.56.113.24]) by smtp.github.com (Postfix) with ESMTPA id 841488407F2 for <quic-issues@ietf.org>; Wed, 20 Jan 2021 15:41:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1611186095; bh=5rlCPAlQI46QidxHIyi2cg+a8SUModEOrEMSbwpKdxo=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=h5RfxmfPrsH3ivIZKBOz9VCATzkTasfVu1QOGhrgkLqcfbtIDyi6cC6kePIUBJ9hS 5GPamlALkRvdm2ji9iXfsg++I/ys0dtQwCgN8XEh3RM2AjhTJGQQQyjqpKSrfdZ6RL ooTegNHsNSzBysCSoviF/a6zt0+ViBRKUsmWKesY=
Date: Wed, 20 Jan 2021 15:41:35 -0800
From: kaduk <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK3R6E2LLX4FOL4FSA56CSQK7EVBNHHC6HKUTI@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/4789/review/572785617@github.com>
In-Reply-To: <quicwg/base-drafts/pull/4789@github.com>
References: <quicwg/base-drafts/pull/4789@github.com>
Subject: Re: [quicwg/base-drafts] Editorial suggestions from Benjamin Kaduk's IESG review (qpack) (#4789)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_6008bfaf82137_631a042226bc"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kaduk
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/8bOLhQM2O8C5jy7IovedMn3yBns>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 20 Jan 2021 23:41:38 -0000

@kaduk commented on this pull request.



> @@ -1203,9 +1204,9 @@ the dynamic table state. If a guess is compressed into a shorter length, the
 attacker can observe the encoded length and infer that the guess was correct.
 
 This is possible even over the Transport Layer Security Protocol (TLS, see
-{{?TLS=RFC8446}}), because while TLS provides confidentiality protection for
-content, it only provides a limited amount of protection for the length of that
-content.
+{{?TLS=RFC8446}}) and QUIC Transport Protocol (see {{QUIC-TRANSPORT}}), because
+while TLS and QUIC provide confidentiality protection for content, they only
+provides a limited amount of protection for the length of that content.

Perhaps we should just not mention TLS at all?

> @@ -1235,12 +1236,12 @@ recovered successfully. However, values with low entropy remain vulnerable.
 Attacks of this nature are possible any time that two mutually distrustful
 entities control requests or responses that are placed onto a single HTTP/3
 connection. If the shared QPACK compressor permits one entity to add entries to
-the dynamic table, and the other to access those entries to encode chosen field

If you can "access" those entries, you're done already :)

> @@ -1277,6 +1279,11 @@ different values.  This penalty could cause a large number of attempts to guess
 a field value to result in the field not being compared to the dynamic table
 entries in future messages, effectively preventing further guesses.
 
+This response might be made inversely proportional to the length of the
+field value. Disabling access to the dynamic table for a given field name might
+occur for shorter values more quickly or with higher probability than for longer
+values.
+

This is just  moving the related paragraph up so the note appears at the end.

> @@ -1339,7 +1341,7 @@ An attacker can try to cause an endpoint to exhaust its memory. QPACK is
 designed to limit both the peak and stable amounts of memory allocated by an
 endpoint.
 
-The amount of memory used by the encoder is limited by the protocol using
+The amount of memory used by the decoder is limited by the protocol using

In some sense this is true as it is, but that's not a terribly interesting statement to make -- the encoder can limit its memory usage unilaterally, and could be sloppily implemented and exceed the protocol-conveyed limit.

> @@ -1717,7 +1719,7 @@ Stream: Decoder
                                3   0  custom-key  custom-value
                               ^-- acknowledged --^
                                4   0  :authority  www.example.com
-                              Size=215
+                              Size=217

The table hasn't changed from the previous state, properly shown as 217 bytes.

> @@ -1738,7 +1740,7 @@ Stream: Encoder
                               ^-- acknowledged --^
                                4   0  :authority  www.example.com
                                5   0  custom-key  custom-value2
-                              Size=215
+                              Size=214

I attempted to count the difference between `:authoritywww.example.com` and `custom-keycustom-value2`.

> @@ -1787,8 +1789,8 @@ for line in field_lines:
 
 # encode the prefix
 if requiredInsertCount == 0:
-  encodeIndexReference(prefixBuffer, 0, 0, 8)
-  encodeIndexReference(prefixBuffer, 0, 0, 7)
+  encodeInteger(prefixBuffer, 0, 0, 8)
+  encodeInteger(prefixBuffer, 0, 0, 7)

encodeIndexReference() is shown earlier with a different signature.  I know pythonic things do have optional parameters, but this seems to match the encodeInteger() signature perfectly, so I assume it was just an incomplete edit.  Though, stylistically perhaps the second argument should be `0x00` rather than a literal `0`.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/4789#pullrequestreview-572785617