- From: Melvin Carvalho <melvincarvalho@gmail.com>
- Date: Fri, 23 May 2025 04:34:32 +0200
- To: Demi Marie Obenour <demiobenour@gmail.com>
- Cc: Watson Ladd <watsonbladd@gmail.com>, ietf-http-wg@w3.org
- Message-ID: <CAKaEYh+5GuTWsvBHA54Ji3rCySQoxWrJCYkrJ83xAf6JPi3c4A@mail.gmail.com>
pá 23. 5. 2025 v 3:29 odesílatel Demi Marie Obenour <demiobenour@gmail.com>
napsal:
> On 5/22/25 13:37, Watson Ladd wrote:
> > On Thu, May 22, 2025 at 1:15 PM Demi Marie Obenour
> > <demiobenour@gmail.com> wrote:
> >>
> >> On 5/22/25 08:59, Ben Schwartz wrote:
> >>> In general, the IETF has been skeptical of "proof of work" designs
> that deliberately waste CPU time. As an alternative, you may want to
> review Privacy Pass (RFC 9576-9578), which allows an HTTP Origin to require
> clients to expend a different kind of resource ("tokens") that may be
> limited, without learning the clients' identities.
> >>
> >> Does that just move the problem to the token issuer?
> >
> > And from the shameless plug department, that is why privacypass exists!
> >
> > Token issuers can have much better ways to issue limited use tokens:
> > they may be aware of hardware support on the client to limit identify
> > proliferation, or existing relationships that make bypassing
> > expensive. This capabilities cannot usually be expressed over the
> > Internet without significant privacy impacts (but read
> > https://www.usenix.org/conference/soups2022/presentation/whalen for an
> > alternative, and the accompanying SAC 21 paper to see how the crypto
> > is done (in a way that's rapidly deployable: production at Internet
> > scale with browser support would make different tradeoffs)).
> My concern is that these methods are going to be used to deny service to
> those using non-attestable open systems such as those running desktop
> Linux,
> or to systems running alternate operating systems such as GrapheneOS. For
> users to be denied access to a website because of this, or to be forced to
> upload a government-issued ID (which they might not have), would be very,
> *very* bad. Proof of work is indeed incredibly inefficient, but it does
> not have these risks, as it can be passed by *any* device with enough
> time or processing power.
>
> Any serious proposal to deploy Privacy Pass for protection from scrapers
> needs to specify how it is going to ensure that users can access sites
> without having to use server-approved hardware, pass a CAPTCHA, or upload
> a government-issued ID. Otherwise, it will deny legitimate users access
> to websites that they should have access to. A visually disabled
> user running Linux on a PinePhone who doesn’t have access to government
> documents needs to still be granted access.
>
> That said, I do think there is a significant problem with building proof
> of work into HTTP, and that is that while it forces clients to consume
> additional CPU time, it does *not* force them to run a full-fledged
> browser.
> Scrapers strongly prefer to *not* run full browsers, as running a full
> browser significantly increases memory requirements.
> See
> https://old.reddit.com/r/selfhosted/comments/1jy6mug/fail2ban_400_sendmail_blocks_in_12_hours/mmxxd1v/
> for where I got this information.
>
It might look like this for a stateless version (as opposed to
challenge/response)
Header: X-Hashcash
Fields:
- ver: Hashcash version (currently "1")
- ts: Timestamp truncated to the current minute (UTC ISO8601)
- method: HTTP method (e.g., GET)
- path: Request target path (e.g., /api/data)
- origin: Hostname of the server (e.g., example.com)
- nonce: Random client-generated value
- suffix: Value incremented by client to meet PoW difficulty
- algo: Hash algorithm (e.g., sha256)
4.2. Example Header
X-Hashcash: ver=1; ts=20250523T042200Z; method=GET;
path=/api/data; origin=example.com;
nonce=abc123; suffix=42829; algo=sha256
5. Server Validation
The server MUST:
Reconstruct the string:
"ver=1;ts=...;method=...;path=...;origin=...;nonce=...;suffix=..."
Hash it using the declared algorithm.
Check that the hash has the required number of leading zero bits (e.g., 22).
Ensure ts is within a reasonable clock skew (e.g., ±2 minutes).
> --
> Sincerely,
> Demi Marie Obenour (she/her/hers)
Received on Friday, 23 May 2025 02:34:51 UTC