Hashcash

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Hashcash este un sistem de dovadă a muncii utilizat pentru a limita e-mailurile spam și atacurile de refuz de serviciu și, mai recent, a devenit faimos pentru utilizarea sa în bitcoin (și alte criptomonede ) ca parte a algoritmului de minerit. Hashcash-ul a fost propus în martie 1997 de Adam Back . [1]

Cum functioneazã

Hashcash este un algoritm de dovadă a muncii (descurajează atacurile DOS și alte abuzuri de serviciu) care necesită o cantitate selectabilă de muncă, unde o astfel de dovadă de eficiență poate fi prezentată fără nicio problemă. Pentru o utilizare a acestei metode prin e-mail, un cod text al unui hashcash este adăugat la antetul e-mailului pentru a dovedi că expeditorul a luat ceva timp pentru a utiliza o cantitate mică de CPU, calculând ștampila înainte de a trimite e-mailul. Cu alte cuvinte, dacă expeditorul a folosit o anumită perioadă de timp pentru a genera ștampila și a trimite e-mailul, este foarte puțin probabil ca aceștia să fie un spammer. Destinatarul poate, la un cost de calcul neglijabil, să verifice dacă ștampila este validă. Cu toate acestea, singura modalitate cunoscută de a găsi antetul cu proprietățile necesare este prin forță brută, încercând valori aleatorii, până când se găsește răspunsul. Cu toate acestea, în timp ce analiza unui singur șir este ușor, posibilitatea de a găsi un răspuns satisfăcător este la fel de dificilă, iar acest lucru va implica un număr considerabil de încercări de a găsi răspunsul.

Ipoteza este că spammerii, al căror model de afaceri se bazează pe capacitatea de a trimite o cantitate mare de e-mailuri la un cost redus pe mesaj, încetează să facă profit dacă există chiar și un cost suplimentar mic pentru fiecare. Destinatarul poate verifica dacă expeditorul a făcut o astfel de investiție și poate folosi rezultatele pentru a filtra și securiza e-mailurile.

Detalii tehnice

Linia de antet arată astfel: [2]

 X-Hashcash: 1: 20: 1303030600: [email protected] :: McMybZIhxKXu57jd: ckvi

Antetul conține:

  • ver: format versiune hashcash, 1 (înlocuind versiunea 0).
  • biți : numărul de (zero) biți „pre-imagine” din codul hash.
  • data : ora la care a fost trimis mesajul, în format YYMMDD[hhmm[ss]] .
  • resursă : șir al resursei de date care este transmisă, de ex. Adresa IP sau adresa de e-mail.
  • ext : extensie (opțional; ignorat în versiunea 1).
  • rand : șir de caractere aleatorii, codate în format de bază 64.
  • contor : contor binar (până la 2 20 ), codificat în formatul de bază 64.

Antetul conține data mesajului, informații care demonstrează că au avut loc calculele necesare și adresa de e-mail a destinatarului, motiv pentru care fiecare antet trebuie calculat diferit pentru fiecare destinatar. Data permite destinatarului să înregistreze antetele primite recent și să se asigure că sunt unice pentru mesajul de e-mail.

Partea expeditorului

Expeditorul pregătește un antet și setează o valoare contor inițializată la un număr aleatoriu. Apoi hashul de 160 biți SHA-1 este calculat antet. Dacă primii 20 de biți (adică primele 5 cifre hex) ale hash sunt zero, atunci antetul este acceptabil. Dacă nu, expeditorul mărește contorul și încearcă încă o dată hashul. Din 2 160 de valori hash, doar 2140 valori hash îndeplinesc acest criteriu. Astfel, probabilitatea de a obține aleatoriu un antet care are 20 de zerouri la începutul hashului este 1 din 2 20 . Numărul de încercări pe care trebuie să le încerce expeditorul pentru a obține un cod hash valid este modelat prin distribuția geometrică . Expeditorul va trebui să încerce în medie 2 20 de valori pentru a găsi un antet valid. Având în vedere estimări rezonabile ale timpului necesar calculării hashului, va dura aproximativ o secundă pentru a găsi antetul corect. În prezent, nu există metode mai eficiente cunoscute pentru a găsi un antet valid.

Un utilizator normal care folosește un computer desktop nu este deranjat în mod semnificativ de timpul procesului folosit pentru a genera un șir de hashcash. Cu toate acestea, spammerii vor suferi foarte mult, având în vedere cantitatea mare de mesaje spam pe care le trimit.

Partea destinatarului

Din punct de vedere tehnic, sistemul este implementat cu următoarele faze:

  • Computerul destinatarului calculeaza 160-bit SHA-1 hash a întregului șir. timpul de calcul luat de o mașină de 1 GHz este de aproximativ două microsecunde, mult mai puțin timp decât este necesar pentru a primi restul e-mailului. Dacă primii 20 de biți nu sunt toți zero, hash-ul este nevalid.
  • Computerul destinatarului verifică data din antet (de exemplu, "060409" , care reprezintă 9 aprilie 2006). Dacă data respectivă nu se află în cele două zile anterioare datei curente, atunci șirul hash este nevalid.
  • Computerul destinatarului verifică dacă adresa de e-mail din codul hash se potrivește cu orice adresă de e-mail validă înregistrată a expeditorului sau se potrivește cu orice listă de e-mail la care este abonat expeditorul.
  • Computerul destinatarului adaugă șirul de hash într-o bază de date. Dacă acel șir există deja, atunci șirul hash este nevalid.

Dacă șirul hash trece toate aceste teste, este considerat valid. Toate aceste teste necesită mult mai puțin timp și spațiu pe disc decât primirea întregului corp al e-mailului.

Avantaje și dezavantaje

Sistemul hashcash, comparativ cu propunerile de microplată , are avantajul că nu este implicată nicio sumă de bani. Nici expeditorul, nici destinatarul nu trebuie să plătească, astfel încât problemele administrative implicate în toate sistemele de microplată sunt complet evitate.

Pe de altă parte, deoarece hashcash-urile necesită resurse de calcul potențial semnificative pentru fiecare e-mail trimis, este oarecum dificil să reglați cantitatea potrivită de timp mediu dorit, clienții având nevoie de timp pentru a calcula un antet valid. Acest lucru poate însemna sacrificarea accesibilității sistemelor încorporate low-end sau riscul ca gazdele ostile să nu fie suficient de provocate pentru a oferi filtrarea eficientă a spamului.

Hashcash-ul este, de asemenea, destul de simplu de implementat în agenții de e-mail și filtrele de spam. Nu este nevoie de un server central. Hashcash-ul poate fi implementat incremental - antetul hashcash suplimentar este ignorat atunci când este primit de clienții de e-mail care nu îl pot interpreta.

O analiză plauzibilă [3] a concluzionat că numai una dintre următoarele este probabilă: fie e-mailurile non-spam vor fi blocate din cauza lipsei de putere de calcul a expeditorului, fie spamul va trece în continuare. Un exemplu al ambelor cazuri include, respectiv, o topologie de e-mail centralizată ( listă de corespondență ), în care unele servere trebuie să trimită cantități uriașe de e-mailuri legitime și rețele botnet sau ferme cluster cu care spammerii își pot crește enorm puterea de calcul.

Majoritatea acestor probleme pot fi rezolvate. De exemplu, botnet-urile ar putea dispărea rapid, deoarece utilizatorii ar putea observa încărcarea ridicată a procesorului și ar putea lua măsuri contrare, iar serverele listelor de corespondență ar putea fi înregistrate în liste albe de pe gazdele abonaților și astfel pot atenua provocările hashcash. [ fără sursă ]

O altă problemă analizată este că, conform legii lui Moore , calculatoarele devin mai rapide în fiecare zi. Prin urmare, dificultatea calculelor necesare trebuie crescută în timp. Oricum ar fi, se poate aștepta ca țările în curs de dezvoltare să utilizeze hardware vechi, ceea ce înseamnă că este foarte dificil să participe la acest sistem de e-mail. Acest lucru se întâmplă și în țările mai dezvoltate, persoanelor cu venituri mici, care nu își pot permite cel mai actual hardware.

Ca hashacash, criptovalutul utilizează o funcție hash, la fel ca și sistemele de dovadă a muncii. Creșterea criptomonedelor a creat o cerere pentru mașini miniere bazate pe ASIC (circuite create special pentru un scop). În timp ce majoritatea criptomonedelor utilizează funcția de hash SHA-256 , aceeași tehnologie ASIC ar putea fi utilizată pentru a crea rezolvători de hashcash care sunt de trei ori mai rapide decât un procesor normal, reducând obstacolul de calcul pentru spammeri.

Aplicații

Minarea Bitcoin

Spre deosebire de hashcash-urile din aplicațiile de poștă electronică, care se bazează pe destinatar pentru a configura manual o cantitate de muncă destinată descurajării expeditorilor rău intenționați, rețeaua de criptocurrency Bitcoin folosește o dovadă de lucru diferită , bazată pe hash, care face ca mineritul bitcoin să fie competitiv.

Un miner bitcoin rulează un program pe PC care colectează toate tranzacțiile neconfirmate de la comercianții de monede online. Cu alte date, acestea pot forma un bloc și pot câștiga minerii, dar blocul este acceptat de rețea numai atunci când minerul descoperă printr-o metodă de „ încercare și eroare ” un număr „ nonce ” (număr arbitrar care doar unul poate fi folosit timp) ca atunci când este inclus în bloc, returnează un hash cu un număr suficient de zero biți pentru a atinge scopul de a împiedica rețeaua. Blocurile acceptate de mineri formează un blockchain bitcoin, care este un registru în creștere alcătuit din toate tranzacțiile bitcoin de la prima creație a monedei.

În timp ce hash-urile folosesc politica de hash SHA-1 și au nevoie de primii 20 de biți hash din 160 pentru a fi zero, dovada de lucru bitcoin folosește încă două hash-uri cu politica SHA-256 , care inițial cerea ca cel puțin primii 32 din 256 de biți hash au fost zero. Oricum ar fi, rețeaua bitcoin resetează periodic nivelul de dificultate pentru a menține numărul mediu de creații bloc la 6 pe oră.

Filtre spam

Hashcash-urile sunt folosite ca o soluție potențială la fals pozitive (sau „alarme false”, care este un rezultat care indică faptul că există o condiție dată, deși nu există) cu sisteme automate de filtrare a spamului, deoarece utilizatorii legitimi vor fi rareori deranjați de exces de timp pentru a găsi o ștampilă. [4] SpamAssassin a reușit să găsească ștampile hashcash de la versiunea 2.70, atribuind un scor negativ (adică spam mai puțin probabil) ștampilelor hash valide și necheltuite. Cu toate acestea, deși pluginul hashcash este teoretic activ în mod implicit, trebuie totuși configurat cu o listă de modele de adrese care trebuie să se potrivească cu câmpurile de resurse hashcash, deci nu funcționează în mod implicit.

Email client

Pe SourceForge , proiectul software Penny Post [5] implementează hashcash în clientul de e-mail Mozilla Thunderbird [6] . Proiectul își primește numele din faptul că unele servicii de e-mail costă expeditorului doar un ban.

Bloguri

La fel ca e-mailurile, blogurile sunt adesea victime ale spamului. Unii proprietari de bloguri au folosit scripturi hashcash scrise în JavaScript pentru a încetini spamul. [7] Unele scripturi susțin că implementează hashcash, dar depind de fapt de ofuscarea JavaScript, forțând clientul să genereze o cheie potrivită; deși toate acestea necesită putere de calcul, nu sunt utilizați algoritmi hashcash sau timbre hashcash.

Notă

  1. ^ O schemă poștală bazată pe coliziune hash parțială ( TXT ), la hashcash.org . Adus la 13 octombrie 2014 .
  2. ^ hashcash - instrument de măsurare anti-spam / refuz de serviciu hashcash ( TXT ), pe hashcash.org . Adus la 13 octombrie 2014 .
  3. ^ Hashcash dovada lucrării ( PDF ), la hashcash.org . Adus la 13 octombrie 2014 .
  4. ^ Hashcash FAQ , hashcash.org , 26 iunie 2003. Accesat la 11 februarie 2014 .
  5. ^ Proiectul software Penny Post pe SourceForge , la pennypost.sourceforge.net . Adus la 13 octombrie 2014 .
  6. ^ Penny Post: Ce vrei să spui prin timbru poștal? , pe pennypost.sourceforge.net , 16 iunie 2008. Adus 11 februarie 2014 .
  7. ^ WP-Hashcash, un plugin pentru software-ul de blog Wordpress Depus 27 octombrie 2005 în Internet Archive . care implementează o facilitate de tip Hashcash, scrisă în JavaScript, de Elliott Back

Bibliografie

  • Adam Back, „Hashcash - A Denial of Service Counter-Measure”, raport tehnic, august 2002 (PDF) .
  • Ben Laurie și Richard Clayton, „„ Dovada muncii ”se dovedește a nu funcționa”, WEIS 04. (PDF) .
  • Dwork, C. și Naor, M. (1992) „Prețuri prin prelucrare sau combaterea e-mailurilor nedorite”, Crypto '92, pp. 139–147. (PDF)

linkuri externe

Securitate IT Portal de securitate cibernetică : Accesați intrările Wikipedia care se ocupă de securitatea cibernetică