Fastcrypto, la libreria di crittografia utilizzata in Sui, ha infranto molti record di velocità e il nostro lavoro sui benchmark e sull'analisi della sicurezza ha risolto numerose vulnerabilità della sicurezza aprendo al contempo la porta all'innovazione identificando nuovi trucchi di ottimizzazione.

Un articolo, Fastcrypto: Pioneering Cryptography Via Continuous Benchmarking, recentemente presentato al workshop di benchmarking della International Conference on Performance Engineering (ICPE) presso l'Imperial College di Londra, descrive il nostro benchmarking continuo e sistematico delle funzioni crittografiche nella libreria Fastcrypto.

La presentazione faceva parte di una sessione intitolata "Innovazioni nel test delle prestazioni: strategie e tecnologie" nel workshop Test di carico e benchmarking dei sistemi software. La conferenza ha attirato ospiti sia del mondo accademico che dell'industria, inclusi rappresentanti di MongoDB e Amazon che hanno parlato nello stesso workshop.

Abbiamo evidenziato il benchmarking sistematico e continuo della libreria Fastcrypto, che è una raccolta di funzioni crittografiche come firme digitali, funzioni hash e prove a conoscenza zero. In Fastcrypto, tutte le funzioni vengono confrontate continuamente al momento del rilascio e su richiesta, e i risultati vengono pubblicati online. Funzioni simili possono essere facilmente confrontate e conserviamo i dati storici per poter monitorare le prestazioni nel tempo.

La presentazione ha sottolineato come questi benchmark abbiano facilitato un processo decisionale più informato nello sviluppo di Fastcrypto e Sui, influenzando le scelte delle dipendenze e dell'utilizzo, nonché ottimizzando la focalizzazione delle risorse degli sviluppatori.

Processo decisionale qualificato in base a benchmark

Un caso di studio tratto dal documento ha affrontato la sfida di selezionare uno schema di firma per i validatori in Sui. Affinché un utente possa inviare una transazione a Sui, la transazione deve essere firmata da un quorum di validatori, combinati in un certificato di transazione. Con circa 100 validatori e una quota equamente distribuita, un quorum è composto da 67 validatori, il che significa che ciascun validatore deve verificare 67 firme per transazione.

Lo schema di firma BLS consente di verificare più firme come se fossero una singola firma, ma è molto più lento rispetto alle alternative, come EdDSA. Un benchmarking dettagliato ha rivelato che il punto di pareggio tra questi due schemi è compreso tra 40 e 45 firme. Quindi, per Sui, utilizzare BLS è più efficiente ed è proprio ciò che viene utilizzato oggi.

Il benchmarking degli schemi di firma EdDSA e BLS ha rivelato un punto di pareggio di 40-45 firme in batch, dimostrando che, con il pool di validatori di Sui, BLS è una scelta performante.

"Dovresti anche preoccuparti se il software improvvisamente diventa molto più veloce"

La presentazione ha inoltre illustrato come i benchmark possano scoprire comportamenti software inattesi. Un esempio riguardava le biblioteche che implementavano lo schema di firma EdDSA, che presupponeva che la chiave pubblica dovesse essere memorizzata nella cache e fornita come input alla funzione di firma. Se fosse stata fornita una chiave pubblica errata, ciò potrebbe portare all'estrazione della chiave privata (come mostrato nel nostro GitHub ed25519-unsafe-libs).

Questo problema è stato rilevato perché alcune librerie hanno mostrato prestazioni insolitamente veloci, ignorando la derivazione della chiave pubblica e utilizzando quella potenzialmente errata fornita come argomento. Sebbene i benchmark spesso mirano ad accelerare il software, "dovresti anche preoccuparti se il software diventa improvvisamente molto più veloce", come ha osservato un membro del pubblico presente al workshop.