ETFFIN Finance >> Finanza personale corso >  >> Criptovaluta >> Blockchain

I numeri casuali non mentono:uno sguardo tecnico più approfondito sui recenti attacchi DeFi

Poiché le tariffe del gas di Ethereum sono salite a livelli record durante il mercato rialzista del 2021, rendendo molti protocolli di finanza decentralizzata (DeFi) inutilizzabili per gli utenti occasionali, diversi progetti sono stati costretti a dispiegarsi su altre catene.

Ciò ha creato un enorme aumento della domanda di meccanismi cross-chain, chiamati bridge, in grado di trasferire in modo sicuro le risorse degli utenti da una catena all'altra. I ponti trasversali possono essere generalmente suddivisi in ponti di custodia centralizzati (CCB) e ponti non di custodia decentralizzati (DNCB).

Come ci si può aspettare, la crescente domanda di ponti trasversali ha portato all'emergere di una nuova ondata di protocolli di diversa reputazione. Poiché i ponti tra catene servivano un pool sempre più prezioso di risorse utente, era solo questione di tempo prima che attori e hacker malintenzionati se ne accorgessero.

Parlando in generale, gli hacker prenderanno di mira i DNCB perché possono sfruttare le carenze nei protocolli progettati da team di sviluppo inesperti. Un hacker esperto può facilmente trarre vantaggio da errori nella logica o scappatoie incorporate nella crittografia e nella progettazione di un protocollo mal progettato.

Questo ci porta ad oggi:le conseguenze di molteplici attacchi ai ponti trasversali. Un altro occhio nero su un'industria consumata dalla battaglia. Ricapitolando, solo nel mese di luglio 2021:

  • ChainSwap ha subito un hack il 2 luglio, del valore di circa $ 800K in risorse utente.
  • I pool di liquidità AnySwap V3 hanno subito un attacco il 10 luglio, vale quasi $ 8 milioni in $ USDC e $ MIM. AnySwap è un DEX cross-chain alimentato da Fusion Network.
  • ChainSwap ha subito un altro attacco, solo 9 giorni dopo il primo hack. Questa volta vale $ 4 milioni in risorse utente. ChainSwap è una piattaforma supportata da Alameda che collega Ethereum a Binance Smart Chain.

Lo scopo principale di questo editoriale è quello di educare e introdurre, in relativo dettaglio, due elementi spesso ignorati, ma vitali dei bridge cross-chain decentralizzati:il numero casuale "k" coinvolto nel Secure Multi-Party Computation (SMPC) e il suo derivato "R".

L'hack di AnySwap:due non sono sempre meglio di uno

Secondo quanto riferito, l'hacking di AnySwap è avvenuto perché due transazioni separate sono state firmate utilizzando lo stesso valore "R". L'hacker ha utilizzato queste due firme per decodificare la chiave privata che controlla l'account MPC cross-chain di AnySwap e ha rubato i fondi degli utenti.

Ma cosa, Esattamente, è un valore "R"?

Che cos'è la "R" - il tallone d'Achille della sicurezza del conto

Una delle prime lezioni che tutti imparano in blockchain è che i fondi nel tuo portafoglio sono controllati dalla tua chiave privata.

Avete tutti sentito la frase:"non le tue chiavi, non le tue monete”. Questo idioma significa che qualsiasi individuo che ha la chiave privata di un portafoglio ha il pieno controllo delle risorse in quel portafoglio. Davvero, l'unica cosa necessaria per trasferire fondi da un conto all'altro è firmare una transazione con la chiave privata di quel conto.

In questo momento, l'algoritmo di firma digitale standard utilizzato nelle blockchain è l'Elliptic Curve Digital Signature Algorithm (ECDSA).

ECDSA appartiene alla categoria “non deterministica” degli algoritmi di firma digitale. A differenza degli algoritmi “deterministi” che danno sempre lo stesso output dato un particolare input, Gli algoritmi “non deterministici” possono produrre output diversi anche se hanno lo stesso input. Per l'ECDSA, ciò significa che lo stesso set di dati, o transazione, avrà più firme legali.

Ogni volta che una transazione viene firmata utilizzando ECDSA, viene generato un numero casuale crittograficamente sicuro "k". 'k' viene quindi utilizzato per calcolare un punto sulla curva ellittica che, a sua volta, viene utilizzato per calcolare il valore "R". È fondamentale che venga generato un nuovo numero casuale "k" ogni volta che una transazione viene firmata utilizzando ECDSA.

Se la stessa "k" viene utilizzata per firmare più transazioni, il valore "R" di due transazioni sarà lo stesso e la chiave privata perderà. Questo è indicato come una collisione del valore "k" ed è ciò che ha causato l'hack della PS3 di Sony alla fine del 2010. È anche ciò che ha causato l'hack di AnySwap.

Prossimo, esaminiamo come l'hacker AnySwap ha decodificato la chiave privata che controlla l'account MPC cross-chain di AnySwap per rubare i fondi degli utenti.

Due non è sicuramente sempre meglio di uno

Considera cosa succede quando due transazioni vengono firmate usando lo stesso numero casuale "k". Poiché 'k' è usato per derivare 'R', anche il valore "R" delle due transazioni sarà lo stesso. Chiamiamo queste due firme (s1) e (s2).

Per ECDSA, le equazioni che rappresentano queste due transazioni sono:

dove S1, S2, e "R" rappresentano i dati della firma e rappresentano i dati della transazione. Questi sono tutti dati pubblicamente visibili sulla blockchain. Ciò lascia due parametri sconosciuti rimanenti:il numero casuale "k" e la chiave privata dell'account.

Chi ricorda l'algebra del liceo saprà subito come risolvere i parametri incogniti utilizzando le due equazioni. La chiave privata sk può quindi essere scritto come:

L'hacker AnySwap ha notato che due transazioni avevano lo stesso valore "R", implicando che lo stesso numero casuale "k" è stato utilizzato in entrambi. Ciò ha permesso all'hacker di decodificare la chiave privata che controlla l'account MPC cross-chain di AnySwap utilizzando una semplice algebra e rubare le risorse degli utenti.

L'errore critico è stato che lo stesso numero casuale "k" è stato utilizzato in più transazioni. Chiaramente, 'k' non è stato generato casualmente! Quindi come si sarebbe potuto evitare?

La necessità di un calcolo multiparte sicuro

Rispetto alle firme di transazione di base, Il Secure Multi-Party Computation (SMPC) è in effetti piuttosto complesso. Tuttavia, vale la pena fare uno sforzo extra. Se SMPC – che è molto diverso dalle multi-firme - viene utilizzato correttamente per generare numeri casuali reali, non vi è alcun rischio che il numero casuale "k" venga esposto.

Quando si sfrutta SMPC, l'agente di firma non è più una persona fisica, ma più persone lavorano di concerto per firmare le transazioni.

Con le firme di transazione di base, un vero generatore di numeri casuali è sufficiente da solo per generare il valore "R" e garantire la sicurezza. Tuttavia, perché SMPC coinvolge più parti non correlate, c'è sempre la minaccia che una o più di queste parti siano dannose.

Come tale, non è ragionevole consentire a una singola persona di generare il valore "R" da sola in quanto potrebbe essere un attore malintenzionato. Se da soli controllano il numero casuale 'k' e, a sua volta, il valore "R", saranno in grado di decodificare la chiave privata dell'account e rubare risorse. Dunque, tre principi devono essere rispettati quando si utilizza SMPC per generare il valore "R":

  1. Il valore "R" non può essere generato da un singolo individuo;
  2. Nessun singolo individuo può conoscere il numero casuale "k" utilizzato per derivare il valore "R";
  3. Il numero casuale 'k' deve essere sufficientemente casuale da essere imparziale e imprevedibile.

In parole povere, SMPC richiede che un gruppo di persone lavori insieme su un'attività senza sapere su cosa stanno lavorando, né con chi stanno lavorando.

SMPC Standard-Setter:il progetto di condivisione segreta verificabile pubblicamente di Wanchain

I bridge cross-chain di Wanchain si basano su un meccanismo unico che utilizza SMPC per mantenere le risorse cross-chain bloccate in account gestiti da 25 parti anonime chiamate nodi Storeman. Il numero di nodi Storeman può essere aumentato secondo necessità.

Quando si firmano transazioni dal conto bloccato, il valore "R" è determinato congiuntamente da questi 25 nodi Storeman attraverso un processo noto come Publicly Verifiable Secret Sharing. Questo processo garantisce che nessuna transazione avrà mai lo stesso valore "R".

I passaggi specifici che questi 25 nodi Storeman intraprendono sono i seguenti:

  1. Ciascun nodo Storeman (Pi) genera un numero casuale 'ki' localmente utilizzando un vero generatore di numeri casuali;
  2. Ogni nodo Storeman (Pi) condivide il suo numero casuale "ki" con gli altri nodi attraverso un canale sicuro utilizzando la condivisione segreta di Shamir.
    Shamir's Secret Sharing è uno schema di condivisione segreta progettato per condividere un segreto in modo distribuito. Il segreto è diviso in più parti, chiamate azioni. Il segreto può essere ricostruito utilizzando un numero minimo di condivisioni. La condivisione segreta di Shamir è spesso usata in crittografia.
  3. Dopo aver ricevuto le condivisioni segrete dagli altri nodi, ogni nodo Storeman raccoglie le quote segrete e le moltiplica per il punto base della curva ellittica, e trasmette il risultato;
  4. Ciascun nodo Storeman esegue l'interpolazione di Lagrange utilizzando i dati broadcast per ottenere un punto della curva ellittica la cui ascissa è il valore "R".

Sebbene il processo di cui sopra sia piuttosto complicato, il concetto di base è abbastanza semplice. Il valore "R" è determinato congiuntamente da 25 nodi Storeman. Ogni nodo Storeman contribuisce con parte del numero casuale crittografato "k". Il valore "R" viene quindi determinato tramite operazioni crittografiche.

In altre parole, i 25 nodi Storeman stanno lavorando insieme senza sapere su cosa stanno lavorando, né chi sono gli altri nodi Storeman.

Condivisione di segreti verificabili pubblicamente:perché è fondamentale?

La condivisione di segreti verificabili pubblicamente garantisce che:

  1. È impossibile che due transazioni abbiano lo stesso valore R

Ci sono due ragioni principali per questo. Primo, il valore "R" è determinato congiuntamente da 25 nodi Storeman, piuttosto che un individuo. In teoria, finché c'è un solo nodo onesto, il valore "R" sarà casuale. Secondo, il contributo di ogni nodo Storeman è generato dal vero generatore di numeri casuali.

Combinato, due transazioni avranno lo stesso valore "R" solo se la somma dei numeri casuali selezionati da tutti i 25 nodi Storeman è la stessa in due transazioni. La probabilità che ciò accada è 2^(-256). È meno probabile che tu venga colpito da un meteorite in questo momento, mentre leggi questa frase.

  1. Il numero casuale "k" utilizzato per derivare il valore "R" rimane nascosto

Come dimostrato in precedenza, una volta noto il numero casuale 'k', la chiave privata può essere decodificata. Quando si firmano transazioni dal conto bloccato, ogni nodo Storeman genera solo una quota del numero casuale 'k'. Poiché ogni condivisione sta trasmettendo attraverso canali sicuri, nessun nodo Storeman può recuperare l'intero valore del numero casuale 'k'.

In altre parole, grazie al design SMPC di Wanchain, il numero casuale 'k' utilizzato per derivare il valore 'R' rimane sempre nascosto. Gli account bloccati utilizzati nei bridge cross-chain leader del settore di Wanchain sono estremamente sicuri. Non è possibile che la chiave privata perda.

Verdetto

Il team di ricerca e sviluppo di Wanchain non è d'accordo sul fatto che l'hack AnySwap rappresenti un rischio generale per altri progetti che adottano SMPC. Il team di ricerca e sviluppo di Wanchain, in linea con altri sviluppatori del settore che hanno implementato SMPC, non considera le vulnerabilità o gli errori che hanno consentito l'hacking di AnySwap come un rischio generale.

Il team vuole anche sottolineare l'importante ruolo che i numeri casuali giocano nella blockchain. I numeri casuali non vengono utilizzati solo allo scopo di firmare transazioni. Sono utilizzati a più livelli di progettazione tecnica e sono componenti importanti di PoS Consensus e algoritmi shard, che determinano direttamente la sicurezza di una rete blockchain.

La generazione efficiente di numeri casuali affidabili non è un compito semplice. È il Santo Graal di interi settori della matematica e della crittografia. Persone brillanti hanno dedicato la loro vita e le loro menti all'ottimizzazione della generazione di numeri casuali.

Gli sviluppatori di blockchain di tutto il mondo devono continuare questa tradizione e sviluppare algoritmi di generazione di numeri casuali meglio distribuiti continuando a ottimizzare la generazione di numeri casuali su catena. Il futuro della DeFi – e in effetti della blockchain nel suo insieme – sarà costruito sul lavoro svolto oggi.

Divulgazione:questo articolo è stato scritto dal team di ricerca e sviluppo di Wanchain.