Non sto chiedendo del design di bitcoin ... ma mi interessa la capacità di hashing di un bitcoin miner.
Per essere brevi : i bitcoin miners (o alcuni di essi) accettano input personalizzabili e li cancellano in blocco (invece di accettare alcune istruzioni di alto livello e fanno automaticamente il mining)?
La vera domanda è che ho letto alcuni articoli su uno schema di firma della crittografia post-quantica, il Merkle Signature Scheme (MSS):
Questo nuovo modo di eseguire la firma digitale richiede una grande quantità di hash calcolati, ad esempio:
-
un singolo One-Time-Signature (OTS) richiede almeno 512 volte di hash se utilizziamo SHA-256 con una dimensione di output di
512*256/8=16kBytes
.Se si desidera un output più piccolo, che richiede un compromesso tra memoria temporale, ad es. per ridurre la dimensione di quasi 8, richiede% hash di
2^8 * (256 / 8) = 8192
con una dimensione di output circa256 * 256 / 8 / 8 = 1024 Bytes
; per ridurre di 16, richiede% hash di2^16 * (256 / 16) = 1048576
con una dimensione di output di circa 512 byte. -
ogni firma di MSS è composta da varie OTS, autenticate da alberi binari concatenati (l'OTS su una foglia è usato per autenticare la chiave pubblica radice dell'albero sottostante), il che significa, per n alberi esiste n OTS da fare.
- per calcolare la chiave pubblica della radice dell'albero, potrebbe essere necessario eseguire l'hash dell'intero albero: con i livelli m , occorrono circa 2 ^ m di hash.
E infine, in questo modo si può raggiungere una durata di n*m
(il limite di fare la firma). Ad esempio: se 2^80
firme sono state progettate, con n=4, m=20
e un tradeoff con 16, nel caso peggiore ci vogliono 4*1048576 + 4*2^20=8388608
hash (ma con una dimensione di output allettante circa (256*256/16*4+80*256)/8=4608Bytes
rispetto agli algoritmi popolari).
Questo requisito sembra troppo alto per il software (OpenSSL potrebbe farlo in 3 secondi, ma se una firma impiega 3 secondi, perché dovremmo progettare una vita di 2^80
segni?), ma per hardware come i minatori bitcoin, sembra ancora troppo facile (non sono sicuro, non ho mai giocato con quello). Quindi ho considerato la possibilità di adattare un bitcoin miner a un'accelerazione hardware per tale algoritmo di firma. Per fare ciò, è necessario alimentare il minatore con gli input che vogliamo che calcoli. È possibile? (Penso che dovrebbe, dal momento che dovrebbero almeno consentire la personalizzazione di alcuni parametri relativi all'utente nei test hashcash ...)