Oggi Koen Maris ci parla del seme (seed) IOTAI token IOTA sono memorizzati in “portafogli virtuali”, privati ​​e pseudo-anonimi. Ogni portafoglio è identificato e protetto da una chiave di accesso univoca nota come “seme” (seed). Sebbene li chiamiamo portafogli, in realtà non contengono i token. Pensiamo a loro come portachiavi che danno accesso a token che sono conservati permanentemente sul libro mastro (ledger).

Ricordiamo che il seme (seed) è l’unica cosa che è obbligatorio proteggere dalla divulgazione in ogni momento. Informazioni dettagliate su come creare e proteggere i tuoi semi (seeds) possono essere trovate qui. Ma per molti il ​​seme rimane un mistero.

Questo blogpost aiuterà a comprendere come funziona un seme nel mondo IOTA, tra cui:

  • Come si generano gli indirizzi sono dal seme
  • Perché è necessario “riagganciare” (reattach) con il portafoglio leggero (light wallet) dopo uno snapshot
  • Quanto è grande la possibilità che qualcuno indovini il tuo seme

Comprendere il seme IOTA

Il seme è composto da 81 caratteri (chiamati trytes). Un tryte è qualsiasi lettera inglese MAIUSCOLA o numero 9. Un seme di qualità contiene non meno di 81 trytes (più di 81 sono ignorati) ed assomiglia a quanto segue:

LZQOPWMHGGGDBDGWRKABFSARXDBSNPAWK9FYFZK0DVEWVNPKLQXNTUOKBCBQTLGUENHZDVKLNIZKMNGOL

[NOTA DELL’AUTORE: È stato intenzionalmente inserito un carattere errato nel seme di esempio sopra, per impedire alle persone di copiarlo ed usarlo, il che creerebbe una situazione pericolosa.]

Ricordiamoci che il seme non deve mai essere esposto. Per ricevere o inviare token non è mai necessario rivelarlo a nessuno. Durante una transazione, il seme non viene trasmesso da nessuna parte. Ad esempio, quando si utilizza un nodo o qualsiasi altro dispositivo (e.g. una stazione di ricarica per veicoli elettrici), il seme non viene passato a questi dispositivi. Viene trasmessa solo una chiave pubblica (o “indirizzo”).

Come si generano gli indirizzi?

Il seme viene utilizzato per generare un indirizzo. IOTA gestisce gli indirizzi in modo deterministico, ovvero lo stesso insieme di indirizzi viene sempre generato nello stesso ordine. Ciò fornisce la flessibilità di non dover memorizzare un file di chiave privata su un dispositivo, poiché è richiesto solo il seme, che viene utilizzato per (ri)calcolare le chiavi. Spesso si legge il termine “indice”, che, come i numeri di pagina in un libro, descrive l’ordine delle chiavi generate.

Ecco una panoramica semplificata del processo di generazione degli indirizzi, che spiega perché il seme non viene mai rivelato:

  1. Un indice viene aggiunto al seme (l’indicizzazione consente al portafoglio stateless di trovare l’ultima chiave utilizzata).
  2. Si effettua un hash di index+seed per creare un sotto-seme (sub-seed).
    L’hashing è un processo a senso unico per generare un valore di lunghezza fissa da una stringa/testo utilizzando una funzione matematica. Da questo momento in poi, viene utilizzato questo valore o hash a lunghezza fissa, ed è impossibile tornare all’indice+seme dall’hash. L’hash è chiamato un sotto-seme (sub-seed) nel mondo di IOTA.
  3. Successivamente questo sotto-seme viene hasato di nuovo per generare un indirizzo. Anchq qui è impossibile tornare al sotto-seme dall’indirizzo. Questi meccanismi unidirezionali proteggono tutti i semi dalla divulgazione.

Se ti piacciono tutti i dettagli tecnici dettagliati, continua qui.

Effettuare le transazioni

L’invio o la ricezione di token si basa su ciò che viene comunemente chiamato indirizzo. Questo indirizzo è spesso chiamato la chiave pubblica, ma c’è una differenza nel modo in cui viene utilizzato in IOTA rispetto ad altre criptovalute. Invece di avere sia una chiave privata che pubblica, IOTA genera una chiave pubblica (indirizzo) dalla sua chiave privata (seme). Questo avvantaggia gli utenti consentendo loro di accedere al portafoglio da qualsiasi luogo su qualsiasi dispositivo.

Ricevere i token è semplice, fornendo un “indirizzo” al mittente e quella persona invia una quantità definita di token. Ricorda è possibile ricevere tutti i token che desiderati sullo stesso indirizzo (chiave pubblica), a condizione che nessun token sia stato speso da quell’indirizzo (firmando con la chiave privata).

Quando si invia i token a qualcuno (e.g. si spendono i token), è necessario mostrare a tutti che si è il proprietario dell’indirizzo da cui si sta spendendo. La firma della transazione dimostra di essere il detentore della chiave privata per quell’indirizzo.

La firma utilizzata per firmare la transazione viene generata utilizzando la prima metà dello stesso metodo che genera l’indirizzo dal seme (vedere la sezione precedente). Quindi, per verificare la firma, viene utilizzata la seconda metà di questo stesso metodo (che genera l’indirizzo dal seme). Il risultato di questa funzione viene quindi confrontato con l’indirizzo, per vedere se corrispondono. Solo la persona che detiene il seme può generare la firma corretta utilizzando la prima metà del metodo, che quando viene applicata la seconda metà del metodo fornirà quindi l’indirizzo corretto.

IOTA utilizza un algoritmo di firma una tantum. Questo è ottimo per la sicurezza, ma ha l’inconveniente che non è possibile spendere due volte dallo stesso indirizzo, poiché si rivela una parte della propria chiave privata ogni volta che si firma una transazione. Se si spende due volte da un indirizzo, si rivelerà più del 50% della chiave privata, il che rende facile attaccare il resto della chiave privata e rubare i fondi rimanenti su quel indirizzo.

Nota: anche in questo caso, il seme non è stato compromesso, solo quel singolo indirizzo.

Il portafoglio leggero (light wallet) ed il nuovo portafoglio Trinity dispongono di una protezione incorporata in modo tale che quando si spendono i token da un indirizzo, il resto dei token venga automaticamente spostato su un nuovo indirizzo.

Domande frequenti

Quanti indirizzi posso generare?
Non all’infinito, ma molti. Per essere precisi è possibile creare 3243 chiavi con un seme.

Il mio seme viene inviato a qualcun altro?
No, mai. Il tuo seme viene utilizzato per creare indirizzi (che vengono poi inviati). Il seme non lascia mai il dispositivo.

Perché devo rigenerare gli indirizzi dopo uno snapshot (con il lightwallet)?
Dopo uno snapshot è necessario rigenerare tutti gli indirizzi utilizzati prima dello snapshot. Se hai già utilizzato 14 indirizzi, devi ricollegarli per trovare l’ultimo utilizzato. Questo ti permetterà di trovare il tuo saldo. Puoi trovare un articolo dettagliato qui

Come posso evitare di rigenerare x volte dopo un’istantanea?
Quando la rigenerazione diventa troppo dispendiosa in termini di tempo, prendere in considerazione la creazione di un nuovo seme e il trasferimento dei fondi su di esso prima dello snapshot. Ciò significa che avrai molti meno indirizzi da rigenerare dopo lo snapshot.

In alternativa, usare il Trinity Wallet che è statico (cioè conserva la cronologia completa) rispetto al portafoglio leggero. Il Trinity Wallet ha anche semplici strumenti per automatizzare il processo di rigenerazione (per le persone che spostano un vecchio seme su Trinity).

Cos’è un portafoglio senza stato rispetto ad un portafoglio statico?

Il lightwallet è senza stato (stateless). Questo ha un grande vantaggio che puoi accedere da qualsiasi dispositivo ovunque, con la condizione di conoscere il tuo seme. Alcuni la considerano inefficiente dal momento che ogni volta che si effettua il login, (ri)genera tutti gli indirizzi passati utilizzati fino a quando ne trova uno senza una transazione. Questo può rallentare l’accesso se hai già utilizzato molti indirizzi.

Trinity d’altra parte è un wallet stateful, quindi quando si effettua il login, ricorda già la cronologia precedente delle transazioni, ecc … Ciò rende il log in più veloce del lightwallet.


Il testo originale in lingua inglese si trova qui: https://blog.iota.org/one-seed-to-sow-your-key-s-f074f1bb6714


Da oggi è possibile dare il vostro supporto su Patreon https://www.patreon.com/antonionardella

Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.
Se avete trovato utile la mia libera traduzione, accetto volentieri delle donazioni 😉

IOTA:
QOQJDKYIZYKWASNNILZHDCTWDM9RZXZV9DUJFDRFWKRYPRMTYPEXDIVMHVRCNXRSBIJCJYMJ9EZ9USHHWKEVEOSOZB
BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79

Non garantisco nulla e mi libero da ogni responsabilità.


Also published on Medium.