SeedSigner è un wallet hardware per Bitcoin fai-da-te. È un dispositivo molto interessante che sicuramente fa le cose in modo diverso rispetto agli altri portafogli hardware sul mercato, utilizzando la modalità AIR GAPPED e fonti di entropia molto sicure.
COME CONFIGURARE E UTILIZZARE IL PORTAFOGLIO HARDWARE BITCOIN SEEDSIGNER
Le sue caratteristiche:
-È economico da realizzare (costa sui 50 euro)
-Consente la comunicazione QR tra il dispositivo ed il computer
-Non è persistente
-È un dispositivo bring-your-own-entropy (BYOE), cioè crei tu l’entropia desiderata
-È costituito da hardware di uso generale
Il progetto è “nato” il 14 dicembre 2020, ma recentemente ha iniziato a ricevere l’attenzione che merita. Partiamo da zero e procediamo ad analizzarne l’utilizzo in modo da poter vedere di cosa si tratta.
PREPARAZIONE
1 Raspberry Pi Zero (no WiFi)
1 SD card
Waveshare 1.3-inch LCD
AuviPal 5MP camera with OV5647 sensor
MakerHawk ribbon cable
GPIO Hammer Header (male)
4 F-F M2.5 spacers (10 mm)
4 viti M2.5 (6 mm)
4 viti M2.5 (12 mm)
Case stampato in 3D
Un joystick
3 bottoni di plastica
Tutto quello che trovate nella foto è costato circa 100 euro. Vale la pena ricordare che non si è cercata la componentistica più economica, ma quella più performante al momento. Si è optato per una custodia costosa, che costava 35 euro, mentre quella più economica costa 10 euro. E’ possibile ridurre i costi dei materiali a circa 50 euro.
Dopo aver ottenuto tutti i componenti, dovremo scaricare il sistema operativo e flasharlo sulla scheda SD.
IMAGE BURNING
SeedSigner utilizza una versione modificata di Debian per Raspberry Pi. Debian è una distribuzione Linux che utilizza solo software gratuito ed open source (FOSS). Puoi ottenere l’ultima versione qui.
Dopo aver ottenuto il file .IMG archiviato, dobbiamo verificarlo. Il file è firmato dal manutentore del progetto e utilizzeremo le sue credenziali per verificare l’integrità del file. Per questo utilizzeremo GPG, che è un programma che ci permette di importare le chiavi pubbliche degli autori e verificare le firme.
Ora, abbiamo bisogno della chiave pubblica GPG di SeedSigner.
Il manutentore ha la chiave listata in più posti.
Stiamo infatti cercando di assicurarci che un utente malintenzionato non abbia sostituito il file che vogliamo masterizzare sulla scheda SD. Se un utente malintenzionato riuscisse a compromettere il sito da cui otteniamo i file, ovviamente, cambierebbero anche la chiave pubblica.
Ecco perché dovresti sempre controllare la chiave da più fonti.
Puoi trovare la chiave:
Su Twitter: https://twitter.com/SeedSigner
Su Telegram: https://t.me/c/1469623205/6308
Su GitHub: https://github.com/SeedSigner/seedsigner/blob/main/seedsigner_pubkey.gpg
Quindi, apriremo un terminale e digiteremo:
curl -sS https://raw.githubusercontent.com/SeedSigner/seedsigner/main/seedsigner_pubkey.gpg | gpg –import
Ora che abbiamo importato la chiave, prendiamo i file da:
https://github.com/SeedSigner/seedsigner/releases
Otterremo due file:
Seedsigner_0_4_4.img.zip — l’immagine archiviata
Seedsigner_0_4_4.img.zip.txt.gpg — la firma prodotta dall’autore.
Il prossimo comando che eseguiremo confermerà l’integrità del file:
gpg –verify seedsigner_0_4_4.img.zip.txt.gpg
Stiamo cercando firma affidabile e sicura. Questa è una conferma che è tutto ok.
Ora che sappiamo che .IMG è reale, possiamo scriverlo sulla scheda SD. Per questo utilizzo BalenaEtcher, un software che permette di masterizzare il file .IMG sulla scheda SD. È abbastanza semplice ed intuitivo da usare.
ASSEMBLAGGIO DEL PORTAFOGLIO HARDWARE BITCOIN SEEDSIGNER
Inserire l’Header Hammer senza saldatura nei pin GPIO. Fai pressione finché non sono entrati bene dentro.
Inserisci il lato largo del cavo a nastro (quello a forma di trapezio) nella fotocamera AuviPal 5MP. Assicurati che i contatti lucidi siano rivolti verso il circuito verde.
Ora prendi la parte più stretta del cavo a nastro e collegalo al Raspberry Pi Zero. La stessa cosa di prima: i contatti lucidi devono essere rivolti verso il circuito verde.
Ora prendi la parte inferiore della custodia e inserisci la fotocamera nel supporto della fotocamera. Fai un po’ di pressione finché non senti un clic.
Ecco come dovrebbe apparire da dietro:
Inserisci la scheda SD nel Rasberry Pi. Quindi, posiziona delicatamente il Pi sulla fotocamera. Orienta il Pi in modo che le porte si adattino alle scanalature delle porte.
Posizionare il distanziatore F-F M2.5 da 10 mm sui fori nella parte anteriore.
Inserire e serrare le viti a testa bombata M2,5 da 12 mm da dietro. Ripetere per tutti e quattro i fori.
Ripetere per tutti e quattro i fori.
Inserisci il display LCD IPS Waveshare da 1,3 pollici nei pin GPIO.
Il processo dovrebbe essere molto semplice e diretto in quanto il display ha lo stesso numero di fori quanti sono i pin.
Utilizzando le quattro viti a testa bombata M2,5 rimanenti da 6 mm, fissare il display avvitando i distanziatori F-F M2,5 da 10 mm.
Aggancia insieme la parte inferiore e quella superiore.
E ora il montaggio è fatto.
UTILIZZO DEL PORTAFOGLIO HARDWARE BITCOIN SEEDSIGNER
ACCENSIONE
Prima di ogni altra cosa, dobbiamo collegare SeedSigner a una fonte di alimentazione. L’idea alla base di SeedSigner è che si tratta di un dispositivo AIR GAP, il che significa che è isolato da qualsiasi connessione Internet, da qui deriva la maggior sicurezza perche non vengono mai esposte alla connessione le chiavi crittografiche per firmare le transazioni.
Il Raspberry Pi Zero ha due porte e quella più a sinistra consente solo l’alimentazione.
Non preoccuparti se non vedi nulla sullo schermo, il dispositivo impiega circa 45 secondi per avviarsi.
GENERAZIONE DEI SEED
Abbiamo due opzioni disponibili per generare un seme BIP39:
1) Dado
2) Foto
Entrambi questi metodi sono ottime fonti di entropia in quanto non dipendono da hardware specializzato. La maggior parte dei dispositivi che utilizziamo ha hardware speciali che vengono utilizzati come fonti di entropia, ma la maggior parte di essi non può essere realmente verificata e questo crea un grande vettore di attacco e potrebbero esserci dei bug.
Questo approccio BYOE è davvero valido, in quanto elimina completamente queste preoccupazioni.
Una buona entropia (da un POV crittografico) significa che nessun altro può riprodurre ciò che hai fatto, e l’immagine e una serie successiva di 99 lanci di dadi sono davvero utili per questo.
Utilizzeremo la modalità immagine qui, poiché è abbastanza facile da fare e richiede meno tempo:
Nel menu, vai su “Seed Tools”, quindi su “Generate Seed With Image”. Punta la fotocamera su qualcosa e premi il joystick. Se sei soddisfatto dell’immagine, fai clic su “Accetta”.
GENERARE IL BACKUP DEL SEED
Ora prendi il modello e scrivi le parole BIP39. È preferibile l’uso di una matita, poiché resiste meglio alla prova del tempo (scorri verso destra con il joystick per avanzare).
Dopo aver scrollato le parole SEED vedrai un codice QR sullo schermo. Il QR codifica le parole in un modo più compatto e facile da leggere per i computer. Anche se non è tangibile per gli umani, è un ottimo modo per trasferire informazioni tra dispositivi.
Così si riesce a trasferire la quantità esatta di informazioni che si desidera, e ci consente di mantenere il dispositivo in modalità AIR GAPPED evitando la trasmissione di malware durante la comunicazione.
Premendo sul joystick, attiverai la modalità zoom. Potrai usare il joystick per navigare, e le coordinate X e Y ti aiuteranno a identificare dove ti trovi sul codice QR. Nota che questo è lo stesso del QR presente sul modello.
Inizierai dalla posizione A1 (che è l’angolo in alto a sinistra) e procederai intorno al QR. Ancora una volta, suggerisco di usare una matita, poiché la grafite è resistente alle radiazioni ultraviolette, all’umidità e ad altri prodotti chimici, il che la rende ideale per soluzioni di conservazione a lungo termine.
Ecco un video accelerato dove viene trascritto il seed BIP39 che è codificato in un codice QR nel modello che abbiamo scaricato in precedenza:
Al termine, fai clic su “SAVE SEED”
Poiché il SEED è salvato, è completamente non persistente, il che significa che non memorizza alcuna informazione sul dispositivo, dovrai importare il seme ogni volta che desideri effettuare una transazione. Puoi archiviare temporaneamente il SEED, ma verrà cancellato una volta riavviato il dispositivo.
WALLET XPUB
Successivamente, dobbiamo importare l’xPub sul nostro computer. Questo ci darà accesso a tutti gli indirizzi per ricevere fondi in futuro e controllare il saldo senza connettere il dispositivo. Possiamo generare tutti gli indirizzi che vogliamo in futuro, in modo da poter ricevere fondi, mentre il SEED rimane al sicuro sulla carta.
Nel menu, vai su “Settings”, quindi su “Script Policy”, quindi seleziona “Sig Native SegWit”. Quindi tornare al menu principale. Quindi vai su “Seed Tools”, quindi su “xPub From Seed”. Usa il seed salvato. Controlla se le parole corrispondono al backup e seleziona “Sparrow Wallet”.
Ti verrà presentato un codice QR sul SeedSigner: questo è l’xPub che importeremo sul computer.
IMPORTARE L’XPUB
Useremo Sparrow Wallet.
In Sparrow Wallet, sul tuo computer, crea un nuovo portafoglio hardware air gap. Fai clic sul pulsante “Scansione” accanto all’icona SeedSigner e inquadra il QR dal SeedSsigner con la fotocamera. Quando il QR viene riconosciuto, i dettagli verranno compilati.
Imposta una password e possiamo ricevere alcune monete.
RICEVERE BITCOIN
Successivamente, riceveremo dei bitcoin
Possiamo ottenere un nuovo indirizzo facendo clic su “Ottieni indirizzo successivo” o selezionandone uno dalla scheda “Indirizzi”. L’xPub importato consente al computer di calcolare tutti gli indirizzi che appartengono allo specifico seme BIP39.
Nel video, sto inviando 0,0001 BTC dal portafoglio “Trendon Shavers” (immagina che questa sia un’altra persona) al portafoglio SeedSigner. Questo è un hot wallet configurato sul computer. Nota che per ottenere un nuovo indirizzo, non abbiamo avuto bisogno dell’accesso al SeedSigner. Ora utilizzeremo il dispositivo per ciò per cui è stato creato, la firma QR.
In Sparrow Wallet, incolliamo l’indirizzo di destinazione, l’importo e la commissione come faremmo in qualsiasi portafoglio Bitcoin “normale”, quindi creiamo la transazione. Il modo in cui funziona Bitcoin è che la costruzione della transazione e la firma sono passaggi separati. Di solito i portafogli astraggono questo dato perché danno la priorità all’esperienza dell’utente.
Se proviamo a trasmettere la transazione senza firmarla, i nodi non troveranno una firma valida e non permetteranno di spendere le monete, quindi dobbiamo produrre una firma. Vogliamo trasferire la transazione non firmata al SeedSigner in modo che possa firmarla e ovviamente utilizzeremo nuovamente i codici QR.
C’è qualcosa di diverso in questi codici QR; sono animati. Come mai? Perché hanno bisogno di inviare più informazioni.
Immagina di avere qualcuno che usa il linguaggio dei segni per comunicare con qualcun altro. Se vogliono dire una frase lunga, hanno bisogno di più segni, uno dopo l’altro. Per produrre una firma, dobbiamo utilizzare le chiavi private, di cui abbiamo eseguito il backup su carta sotto forma di QR che rappresenta le parole BIP39.
Innanzitutto, importeremo il Seed nel SeedSigner utilizzando il codice QR che abbiamo su carta. Mentre lo facciamo, controlliamo due volte per assicurarci che le parole corrispondano.
Successivamente, ci verrà chiesto di scansionare il QR PSBT (PSBT sta per “transazione Bitcoin parzialmente firmata” ossia “partially-signed Bitcoin transaction”, che è ciò che rappresenta il QR animato). Ora puntiamo il SeedSigner sullo schermo del computer. Non appena questo è fatto, ci viene chiesto di confermare i dettagli della transazione.
Dopo la conferma, il SeedSigner ha firmato la transazione, quindi ora dobbiamo passare la transazione firmata al computer per trasmetterla.
Ovviamente utilizzeremo di nuovo un codice QR animato, ma questa volta effettueremo la scansione con la fotocamera del computer dal SeedSigner. Fatto ciò, facciamo clic su “Broadcast” e vediamo la transazione visualizzata in Block Explorer.
Fatto!