Bcademy

CAPIRE BITCOIN | PARTE QUINTA: CHIAVI E INDIRIZZI | SEZIONE TERZA: GLI INDIRIZZI

2020-01-13 16:18:18

Il testo è una guida completa, che partendo dalla parte teorica e toccando quella pratica, entra in profondità nelle dinamiche interne di Bitcoin. Per approfondimenti: "Mastering Bitcoin" di A. Antonopoulos e "The Bitcoin Standard" di S.Ammous. Per info sui corsi [email protected]

Gli indirizzi prodotti dalle chiavi pubbliche consistono in una stringa di numeri e lettere e cominciano con 1 (fino all’attivazione di SegWit), qui un esempio: 1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy 

L’indirizzo bitcoin è il dove vengono all’interno di una transazione viene inviato il valore. Un indirizzo bitcoin può rappresentare:

  • Il proprietario di una coppia di chiavi privata/pubblica;
  • Uno script di pagamento.

In precedenza si è detto che da K attraverso un algoritmo di hashing  (una funzione di crittografia unidirezionale) viene generato un indirizzo bitcoin (A)Un “algoritmo di hashing” o semplicemente “algoritmo di hash” è una funzione unidirezionale che produce un’impronta digitale (digest o codice) o “hash” di un input di dimensioni arbitrarie. Tali funzioni sono fondamentali in Bitcoin, e sono presenti in diverse parti del sistema. Gli algoritmi utilizzati per creare un indirizzo bitcoin da una chiave pubblica sono Secure Hash Algorithm (SHA) e RACE Integrity Primitives Evaluation Message Digest (RIPEMD), in particolare SHA256 RIPEMD160. Dalla chiave pubblica K calcoliamo prima l’hash SHA256 e in seguito l’hash RIPEMD160, generando un numero a 160-bit (20-byte).

Gli indirizzi bitcoin vengono quasi sempre presentati in una codifica chiamata Base58Check, che utilizza 58 caratteri (un sistema di numeri Base58) e un checksum (bech32 verrà approfondito in seguito) per evitare l’ambiguità e proteggere dagli errori nella trascrizione e nella registrazione degli indirizzi.

Formati di chiavi private. Le chiavi private possono essere rappresentate in differenti formati, i quali corrispondono al medesimo numero a 256-bit. Hexadecimal e raw binary sono usati internamente ai software e raramente mostrati agli utenti, mentre WIF è utilizzato per l’import/export delle chiavi e spesso usato in una rappresentazione QR code (barcode). Lo standard BIP 38 permetti di crittografare le chiavi private (compatibilmente con svariati wallet e client Bitcoin) con una passphrase e codificarle con Base58Check in modo che possano essere archiviate in modo sicuro su supporti di backup, trasportate in modo sicuro tra wallet o conservate in qualsiasi altra condizione in cui la chiave potrebbe essere esposta. Lo standard per la crittografia utilizza l’Advanced Encryption Standard (AES), uno standard stabilito dal National Institute of Standards and Technology (NIST) e ampiamente utilizzato nelle implementazioni di crittografia dei dati per applicazioni commerciali e militari. Uno schema di crittografia BIP0038 accetta come input una chiave privata bitcoin, solitamente codificata in WIF, come una stringa Base58Check con un prefisso “5” (per le chiavi pubbliche non compresse, mentre da anni si utilizzano chiavi pubbliche compresse, indicate da chiavi private che iniziano con “L” o “K”). Inoltre, lo schema di crittografia BIP 38 accetta una passphrase, una lunga password, in genere composta da più parole o da una stringa complessa di caratteri alfanumerici. Il risultato dello schema di crittografia BIP 38 è una chiave privata crittografata con codifica Base58Check che inizia con il prefisso 6P.


Alessio Salvetti, Co-founder di Bcademy e board member (VP), business developer, filosofo per formazione e bitcoiner per passione, esperto di modeling e lean startup, è co-founder di Inbitcoin e responsabile prodotto di Bcademy (CPO).



10