Puncte:1

Este acest algoritm simplu Proof of Work bazat pe SHA256 susceptibil la atacul de extensie de lungime?

drapel us

Conținutul fiecărui bloc este hashing în 32 de octeți folosind $\operatorname{SHA-256}$ (numiți acest șir $a$). Pentru ca blocul să fie acceptat, trebuie să existe un nonce de 256 de biți (numiți acest șir $b$) cu condiția ca $\operatorname{SHA-256}(a\mathbin\|b)$ ($a$ concatenat cu $b$) are $N$ sau mai mulți biți zero de început, unde $N$ este un parametru de dificultate.

Este bazat pe acest algoritm simplu Proof of Work $\operatorname{SHA-256}$ susceptibil la atacul de extensie de lungime?

Puncte:1
drapel in
  1. Atacul de extensie de lungime modifică rezultatul hash prin urmare cu mare probabilitate parametrii de dificultate nu mai sunt valabili. Din această $$ h = \operatorname{SHA-256}(a\mathbin\|b\mathbin\|pad1)$$ în asta*. $$ h'= \operatorname{SHA-256}(a\mathbin\|b\mathbin\| \text{pad1}\mathbin\|\text{apended_data} \mathbin\| \text{pad2})$$ Nu ne așteptăm să fie egali, egalitatea este un eveniment neglijabil.

    Desigur, atacatorul poate căuta o astfel de extensie (appended_data) care are un parametru de dificultate similar.Totuși, ei nu au prea mult timp la dispoziție din moment ce unul dintre clienți a găsit deja nonce care este valabil pentru parametrul de dificultate și deja se propagă în rețea.

  2. Verificatorii vor primi $a$ și $b$ și rezultatul hash $h'$ (dimensiunea limitată este cheia aici). Când vor calcula valoarea hash, o vor calcula $h = \operatorname{SHA-256}(a\mathbin\|b)$ și ei vor vedea asta $h \neq h'$ iar egalitatea este un eveniment neglijabil.

    Chiar și au aceeași valoare hash sau parametru de dificultate valid, un client implementat corespunzător va vedea atacul.

Prin urmare, cu implementări adecvate, un atac de extensie de lungime nu este o problemă. Cu toate acestea, nu vă bazați pe implementări, deoarece acestea pot fi incorecte, utilizați SHA-256 dublu așa cum a făcut Bitcoin. Ca alternativă, utilizați funcții hash rezistente la extensia de lungime, cum ar fi SHA-512/256, BLAKE2/3, SHA3-256.

Rețineți că POW este conceput pentru a necesita multă muncă, așa că alegeți SHA-256 dublu nu a fost o idee rea când a început designul Bitcoin.


*Umpluturile
$pad1$ este umplutura lui SHA-256 unde pumnul 1 este atașat cât mai mic posibil 0este astfel încât, atunci când se adaugă codificarea lungimii, mesajul este multiplu de 512. Atacatorul cu extensia de lungime trebuie să folosească această umplutură și apoi să adauge mesajul extins, apoi va avea nevoie de o umplutură suplimentară ca $pad2$, de asemenea.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.