Udfordringer i forbindelse med bevis for arbejde: Stop robotter uden at irritere mennesker
Ingen bryder sig om at klikke på trafiklys for at bevise, at de er mennesker. Udfordringer i forbindelse med dokumentation af arbejdet tager en anden tilgang: Gør arbejdet usynligt for dig og dyrt for alle, der sender en million anmodninger.
CAPTCHA er et mærkeligt stykke teknologi, når du tænker over det. For at bevise, at du ikke er en robot, udfører du en opgave, som robotter nu målbart er bedre til, end du er, mens en virksomhed høster arbejdskraften til at træne billedgenkendelsesmodeller. I mellemtiden betaler de faktiske bot-operatører en løsningsservice en brøkdel af en cent pr. Puslespil og fortsætter.
Proof-of-work udfordringer kommer på problemet fra en helt anden retning, og skiftet er værd at forstå, fordi det ændrer, hvad du rent faktisk forsvarer.
Stop med at identificere, begynd at oplade
En CAPTCHA forsøger at svare "er det her et menneske?" - et spørgsmål, der bliver sværere hvert år og aldrig rigtig var ansvarligt i første omgang.
Bevis for arbejde spørger ikke. Det antager, at det ikke kan fortælle, og i stedet gør hver anmodning til en lille mængde beregning. Din browser er afleveret et puslespil, der tager lidt CPU til at løse og næsten intet at kontrollere: finde en værdi, der, når hashed sammen med udfordringen, producerer en hash startende med et bestemt antal nuller. Der er ingen genvej. Du prøver værdier, indtil de virker.
For én besøgende, der er et par hundrede millisekunder af en baggrundstråd, helt ubemærket. For nogen, der sender en million anmodninger, er det en million gåder, og den aritmetiske beregning, der gjorde operationen værd, stopper med at fungere.
Det er et økonomisk forsvar snarere end en afsløring, og det er dets virkelige styrke. Det behøver ikke at være smart om fingeraftryk, ikke nedbrydes som bots forbedre, og kan ikke outsources til en menneskelig løsning gård fordi omkostningerne er CPU tid, og en menneskelig klikke knapper hjælper ikke.
Hvordan det rent faktisk kører
Sekvensen er kort. En besøgende anmoder om en beskyttet side. Kanten returnerer i stedet en let udfordringsside med et puslespil og en sværhedsparameter. JavaScript i browseren løser det, normalt i en webarbejder, så siden forbliver lydhør. Løsningen indsendes, verificeres på mikrosekunder, og den besøgende modtager en signeret cookie, der tillader dem i en konfigureret periode - normalt en dag - så de ikke udfordres igen ved hvert klik.
Sværhedsgraden er en skive snarere end en kontakt. En lav indstilling er umærkelig; en høj tager et par sekunder og gør automatiseringen dramatisk dyrere. Hæv den til en loginside under aktivt angreb, hold den nede for generel browsing, og de fleste besøgende lærer aldrig, at funktionen eksisterer.
Usynlig tilstand
- Løser lydløst i baggrunden
- Besøgende ser højst et kort tomt øjeblik
- Højre standard for generel beskyttelse
Interaktiv tilstand
- Viser en kort statusindikator
- Bedre til høje vanskeligheder, hvor forsinkelsen er mærkbar
- Stadig intet for mennesket at løse
Mod en CAPTCHA
| CAPTCHA | Bevis for arbejde | |
|---|---|---|
| En indsats for mennesket | Løs gåder | Ingen |
| Tilgængelighed | Ofte en barriere | Ingen interaktion nødvendig |
| Besejret ved at løse problemer med landbruget | Ja, billigt | Nej – prisen er CPU, ikke klik |
| Tredjeparts datadeling | Normalt | Ingen påkrævet |
| Omkostninger for en legitim besøgende | Sekunders opmærksomhed | Millisekunder af CPU |
| Stopper en målrettet angriber med lav volumen | Noget | Ikke rigtig |
Hvad bevis for arbejde ikke gør
Den sidste række fortjener at blive udvidet, fordi et forsvar, du misforstår, er værre end et forsvar, du ikke har.
Proof-of-work øger omkostningerne pr. anmodning. Hvis en angriber kun har brug for en håndfuld anmodninger - test af en bestemt stjålet legitimation, udnyttelse af en kendt sårbarhed, skrabning af en side - er omkostningerne ubetydelige, og de betaler det uden at bemærke det. Det er et volumenforsvar, og mod en målrettet angriber gør det meget lidt.
Det medfører også reelle omkostninger for besøgende med langsomme enheder. En ti år gammel Android-telefon tager betydeligt længere tid end en nuværende bærbar computer, så vanskeligheder med indstillinger, der føles øjeblikkelige på din maskine, er måske ikke. Og det kræver JavaScript, hvilket betyder alt, hvad du vil nå dit websted uden at udføre scripts - nogle tilgængelighedsværktøjer, nogle legitime integrationer, RSS-læsere - har brug for en undtagelsessti.
Undtag altid bekræftede søgerobotter, før du aktiverer udfordringer. Googlebot løser ikke JavaScript-puslespil som en browser gør, og udfordrende det er en effektiv måde at fjerne dig selv fra søgeresultaterne. Verificer ved hjælp af omvendt DNS i stedet for at stole på brugeragenten, og lad den derefter komme igennem uden at blive udfordret.
Almindelige spørgsmål
Hvad er en proof-of-work udfordring?
En proof-of-work-udfordring kræver, at en besøgendes browser løser et lille beregningspuslespil – typisk at finde en værdi, der producerer en hash med et påkrævet antal førende nuller – før den ønskede side serveres. Løsning tager målbar CPU-tid, mens verificering er næsten øjeblikkelig, så omkostningerne falder på den, der laver et stort antal anmodninger i stedet for på individuelle besøgende.
Er proof-of-work bedre end CAPTCHA?
For at blokere højvolumenautomatisering, generelt ja: det kræver ingen interaktion fra den besøgende, præsenterer ingen tilgængelighedsbarriere, deler ingen data med en tredjepart og kan ikke besejres af menneskelige løsninger, fordi Prisen er CPU i stedet for klik. Det er svagere mod en målrettet angriber, der kun foretager en håndfuld anmodninger, hvor de ekstra omkostninger er ubetydelige.
Gør proof-of-work udfordringer langsommere rigtige besøgende?
Lidt, og som regel umærkeligt. Ved en typisk vanskelighed med at indstille en moderne browser løser puslespillet på få hundrede millisekunder i en baggrundstråd, og en signeret cookie optager derefter den besøgende i en konfigureret periode, så de ikke udfordres igen på hver side. ldre eller mindre enheder tager længere tid, hvilket er værd at tage højde for, når du vælger problemer.
Vil en proof-of-work-udfordring blokere Googlebot?
Det vil, hvis du ikke fritager det, og det ville fjerne sider fra søgeresultaterne. Verificerede søgerobotter bør være tilladt, før udfordringer er aktiveret, identificeret ved omvendt DNS-verifikation af deres IP-adresser snarere end ved deres brugeragentstreng, som er trivielt forfalsket.
Rammen er værd at holde: en CAPTCHA forsøger at fortælle mennesker og maskiner fra hinanden, og bliver mindre i stand til hvert år. Bevis for arbejde holder op med at forsøge, og opkræver betaling for anmodningen i stedet. Det er en mindre påstand, men den bliver ved med at være sand.
Se, hvordan NordicCDN gør dette for dit websted:
Mads har arbejdet med IT – mest som vært – siden han var 16. Han tog tidligt ejerskab i en SaaS-virksomhed og var med til at udvide den til Visma, har opbygget og drevet datacenternetværk og fungeret som CTO for et dansk datacenter. Han startede NordicCDN for at gøre hurtig og sikker infrastruktur enkel at bruge.