PBKDF2, as an example on 100k iterations can easily pin a CPU core for a few seconds. This is part of why I always have my authentication services separate from my applications, it reduces the DDoS vector. Now, you can shift work to the client as kind of an inverse-ddos rate limiter.
Combine that with a websocket connection, where the browser is sending user events like mouse movement, touch, scroll, focus/blur and input/paste... the two, combined with event timing analysis can give you a pretty good guess if something is a real user. And if it isn't, definitely slowing down bots.
The point is: a CAPTCHA has to be something that is easy for humans and hard for bots. This is at best the same level of effort from human('s devices) and bots. And realistically, more, because bots aren't battery-powered. It can't work.
Do you know of any such things? Because I routinely find captchas difficult now.
In this vein, anything requiring ML/expensive computation is still a worthwhile addition, as today the primary purpose of a CAPTCHA is to slow down/rate limit bot-activity. Your single server use case is not really realistic -- it can be easily reverted (it won't come from 3600 IP addresses, otherwise the rate would be much lower), and 3600 times an hour is.. not a lot for a computer. So it seems to do its job well.
A decentralized CAPTCHA that reduces an attacker to one request per second is a lot better than nothing! Why are you dismissing this as useless?
At the end of the day, all CAPTCHAs can be circumvented by paying humans to solve them. So all CAPTCHAs have a price, and in this case it’s the price of the power used by the CPU as well as renting the CPU (or the depreciation on a CPU you own).
Downthread, emurlin has done the calculation for the actual cost of the deterrent and how bad it is compared to CAPTCHA: https://news.ycombinator.com/item?id=37056504
Actually no. The server CPU has lower GHz and server memory is slower due to ECC.
But server has lotta more bandwidth to handle concurrent processing.
This very case is far worse as it uses SHA-256, all that bitcoin asics love.
Sure, it is possible that your gaming PC beats the average server in terms of CPU frequency. But that's not what the average website visitor is using, and you can't scale the proof-of-work out of their reach.
Let's just declare that captcha now stands for Completely Automated Public Thingy to Make Spammers And Fraudsters Life A Bit Harder.
Point fo captcha is to make sure that there is a human eg. writing this comment or creating account.
If I used this (admitedly cool and useful) rate limiter instead of real captcha I would have 1000s of ai generated posts and 100s of new accounts. Yes, it would be rate limited and spread over a day or week, and servers would easly handle it, but that's not the point. I don't want this fake activity at all - that's the point!
This seems like a good alternative/addition to cloudflare and their anti ddos features though (?)
It's a semantic expansion. It happens all the time in language. That's not a meme! That's just an image with a caption on it!
CAPTCHA is widely known as a thing that is implemented to prevent spam [0]. This is a thing that is used to prevent spam. It's CAPTCHA now. Here, the concept of preventing spam is communicated through the word CAPTCHA.
"mRateLimiter: Open-source proof-of-work rate limiter for websites"
Huh? What is this thing, what does it do?
[0]: Speaking of the word spam... You're not spamming! Spamming is when you send junk email! You're just pressing a button on your controller over and over again!
The gaming use seems to precede the email use by quite a bit, and be part of the route between the Monty Python sketch and the email use, FWIW.
Now back to updating the sophos captcha appliance at work.
CAPTCHA is essentially a proof-of-work variant where challenges are designed to be solved by humans rather than computers, and same as any PoW it works by means of consuming some limited resource (human time, processor time, energy).
Also, that is no longer the case that Cloudflare uses Captchas for bot blocking. That's the legacy mode
Let's stop pretending that all things are in the same bucket because "you can pay to have it solved". That's such a weird claim. For the right price you can have someone rob a bank for you, that doesn't mean it's as safe as your $2 padlock.
At this point you are just arguing for the sake of it. What is it you are even trying to debate at this point?
I don’t make application so that users benefit or to make them happy. I make applications so that I can earn money.
Earning money requires having human on the other side. Just like you are not making bread to make bread and throw it into a shredder.
If someone has scheme where automation is beneficial they will create API for their system. You should use API if I provide one. But when I create UI then I create it for people to use it.
This is why most commercial software is so bad.
There is no “non commercial software” that is better even if commercial is bad it is still better than non existing one.
Read again my down voted post and think about the sentence in context of post where "Fice" wrote: "Telling computers and humans apart is a wrong goal.".
Then add to that topic of CAPTCHA and that CAPTCHA is annoying for users so adding CAPTCHA is not beneficial for users so it specific case and discussed in context.
Some shop (for example, concert ticket-selling) have very limited supply and high demand, and don’t want automation in buying.
Rate limit by IP, and you get attacked by a botnet that "steals" IP addresses with malware.
Rate limit by PoW and you get people stealing AWS accounts, or using aforementioned botnet. See bitcoin mining.
Rate limit by CAPTCHA and you have to get a lot more clever (see things like setting up porn sites and proxying CAPTCHAs there)
So while you can pay to have CAPTCHAs solved, you actually DO have to pay and can't just steal your way in, so it means your target has to be more valuable.
None of these things you listed above are available for free. They all require either effort to obtain or paying someone to do the work.
Unless you set your challenge to many minutes of work, you are not competitive with the human-centric solutions.
And keep stealing them after you get blocked on the first ones?
edit: To be fair, as another comment mentioned, this would be cheaper to solve.
But what is the point of telling computers and humans apart. Look at all the hype around "AI". Why would we want to tell one from the other. Certainly there are reasons. What are they.
Perhaps the goal is advertising. Perhaps websites that use CAPTCHAs want clients that are advertising friendly, with graphics and Javascript and what not.
Perhaps the goal is to conserve server resources. But in that case it would seem whitelisting or rate-limiting would be a better solution.
For example, academic journal websites put the IP addresses of subscriber institutions on a whitelist. No problem downloading a paper from a journal when sitting in the university library but to do so from home requires a proxy.
What is most annoying about so-called "Web APIs", which might seem like a reasonable approach to solve the resource usage problem, is that websites will often deliberately not publish the rate limits.
Websites can of course do whatever they like, they can block everyone or no one or anything in between, but unfortunately they use the alleged problem of "bot traffic" to justify tactics that are really aimed at increasing ad revenue. They might start blocking requests without a user-agent header. (For example, Stackoverflow sites do this.) But what problem is that solving. Anyone can forge a UA header. It isn't even required by the RFCs. It's solving the problem of no UA header. No they are trying to collect as much data as possible. They are trying to serve ads. Is it going to solve the "bot traffic" problem. Who knows. But they are getting more data and that's what they really want.
For many years I have been downloading source code from FTP and HTTP servers, e.g., NetBSD and various mirrors used for software in the packages distribution, and also binary packages from Linux distribution package repositories, and I wonder sometimes why these sites do not have problems with "bot traffic" that websites filled with ads claim to have. In fact, the majority of the traffic these mirrors receive is automated. It's all "bots", i.e., scripts, package managers, and other automation.
Anyway, the point is that there's an elephant in the room with respect to discussions of CAPTCHAs and that is data collection and advertising. Why do websites want certain browsers. It's possible to have non-automated, manually operated clients that actually use less resources than Chrome. And yet sites will often proclaim these clients are "bots". There is more to discuss than just that awful "bot traffic". Humans are getting blocked and constantly urged to enable JS or install Chrome.
They're designed to block bots, sure, I agree. But we are burying our heads in the sand if we think that captchas imply humanity. They don't. The tests that they impose are not rigorous or strong enough to do that. What audio/video captchas do in practice is impose a cost in front of automated access.
We'd like them to do more than that, but the tech hasn't really ultimately worked out in that direction so even though we'd like a captcha to prove that a user is a human, what the captcha enforces is just a cost-per-request. Sometimes that involves paying a human pennies to solve the captcha, sometimes it just means turning on accessibility features and piping the captcha into a text-to-speech service. Either way, the final request can still be trivially coming from a bot (and regularly is).
Call this a client rate-limiter, or whatever else, but it is obviously not a CAPTCHA and cannot function in this way.
Another obvious problem is that server hardware is vastly more powerful than the average user's device. If you set your challenge to an amount of work that doesn't meaningfully drive users away and/or drain their batteries, you are allowing a malicious server to pass your challenge tens of thousands of times an hour.