Il miglior algoritmo di Keygen pubblico e privato-e perché

Gravitazionale sponsorizzato questo post.

Virag Mody
Virag è entrato a far parte di Gravitational a gennaio di 2020, dopo aver co-fondato una società di revisione del codice software per le applicazioni Ethereum. Continua a conoscere le tecnologie di tendenza e produce contenuti scritti e video di alta qualità.

Cosa c’è di peggio che lasciare le chiavi private incustodite? Avere chiavi pubbliche che possono essere forzate brute.

Il” secure “in” secure shell ” deriva dalla combinazione di hashing, crittografia simmetrica e crittografia asimmetrica. Insieme, SSH utilizza primitive crittografiche per connettere in modo sicuro client e server. Nei 25 anni dalla sua fondazione, potenza di calcolo e velocità in conformità con la legge di Moore hanno reso necessari algoritmi di basso livello sempre più complicati.

A partire dal 2020, gli algoritmi crittografici asimmetrici più diffusi nel mondo PKI sono RSA, DSA, ECDSA ed EdDSA. Quindi quale è il migliore?

Quindi quale usare?

La scelta dell’algoritmo giusto dipende da alcuni criteri:

  • Implementazione: gli esperti possono gestirlo o deve essere arrotolato?
  • Compatibilità: ci sono client SSH che non supportano un metodo?
  • Prestazioni: quanto tempo ci vorrà per generare una chiave sufficientemente sicura?
  • Sicurezza: la chiave pubblica può essere derivata dalla chiave privata? (L’uso del calcolo quantistico per rompere la crittografia non è discusso in questo articolo.)

RSA

Implementazione Le librerie RSA possono essere trovate per tutti i principali linguaggi, incluse le librerie approfondite

(JS, Python, Go, Rust, C).

Compatibilità L’utilizzo di SHA-1 (OpenSSH) o chiavi pubbliche sotto 2048 bit potrebbe non essere supportato.
Prestazioni Chiavi più grandi richiedono più tempo per generare.
Sicurezza Esistono algoritmi specializzati come il setaccio quadratico e il setaccio del campo numerico generale per fatturare interi con qualità specifiche.

Il tempo è stato il più grande alleato e il più grande nemico di RSA. Pubblicato per la prima volta nel 1977, RSA ha il supporto più ampio tra tutti i client e le lingue SSH e ha davvero superato la prova del tempo come metodo di generazione di chiavi affidabile. Successivamente, è stato anche soggetto alla legge di Moore per decenni e la lunghezza dei bit chiave è cresciuta di dimensioni. Secondo gli standard NIST, il raggiungimento della sicurezza a 128 bit richiede una chiave con una lunghezza di 3072 bit, mentre altri algoritmi utilizzano chiavi più piccole. La sicurezza dei bit misura il numero di prove necessarie per forzare una chiave. la sicurezza a 128 bit significa 2128 prove da interrompere.

DSA

Implementazione DSA è stato adottato da FIPS-184 nel 1994. Ha un’ampia rappresentazione nelle principali librerie crittografiche, simile a RSA.
Compatibilità Mentre DSA gode del supporto per i client basati su PuTTY, OpenSSH 7.0 disabilita DSA per impostazione predefinita.
Prestazioni Miglioramento significativo nei tempi di generazione delle chiavi per ottenere punti di forza di sicurezza comparabili, anche se la lunghezza di bit consigliata è la stessa di RSA.
Sicurezza DSA richiede l’uso di un valore imprevedibile e segreto generato casualmente che, se scoperto, può rivelare la chiave privata.

Ciò che rende DSA diverso da RSA è che DSA utilizza un algoritmo diverso. Risolve un problema completamente diverso, noto come problema del logaritmo discreto, utilizzando un diverso insieme di equazioni, elementi e passaggi.

Questo algoritmo prevede l’uso di un numero generato casualmente, m, che viene utilizzato con la firma di un messaggio insieme a una chiave privata, k. Questo numero m deve essere mantenuto privatamente. Il valore mis intende essere un nonce, che è un valore univoco incluso in molti protocolli crittografici. Tuttavia, le condizioni aggiuntive di imprevedibilità e segretezza rendono il nonce più simile a una chiave, e quindi estremamente importante.

Nota dello sponsor

logo dello sponsor

Gravitational offre OSS per distribuire, accedere e gestire applicazioni native per il cloud in qualsiasi infrastruttura con il minimo sforzo. Teleport è il nostro gateway di sicurezza per la gestione dell’accesso privilegiato all’infrastruttura server tramite SSH e Kubernetes. Provali a gravitational.com.

Non solo è difficile garantire la vera casualità all’interno di una macchina, ma un’implementazione impropria può interrompere la crittografia. Ad esempio:

  1. La classe Java SecureRandom di Android era nota per creare valori R in collisione. In altre parole, la classe ha riutilizzato alcuni numeri generati casualmente. Ciò ha esposto un certo numero di diversi portafogli Bitcoin basati su Android al furto delle loro chiavi private. I requisiti del nonce m significano che due istanze con lo stesso valore nonce potrebbero essere decodificate e rivelare la chiave privata utilizzata per firmare le transazioni.
  2. Facendo un ulteriore passo avanti, fail0verflow ha scoperto la chiave privata utilizzata per firmare gli aggiornamenti del firmware per Sony Playstation 3. In altre parole, i programmatori potrebbero scrivere il proprio codice, firmarlo con la chiave privata rivelata ed eseguirlo su PS3. A quanto pare, Sony stava usando lo stesso numero casuale per firmare ogni messaggio.

ECDSA e EdDSA

I due esempi sopra riportati non sono del tutto sinceri. Sia Sony che il protocollo Bitcoin impiegano ECDSA, non DSA propriamente detto. ECDSA è un’implementazione della curva ellittica di DSA. Funzionalmente, dove RSA e DSA richiedono lunghezze di chiave di 3072 bit per fornire 128 bit di sicurezza, ECDSA può eseguire lo stesso con solo chiavi a 256 bit. Tuttavia, ECDSA si basa sullo stesso livello di casualità di DSA, quindi l’unico guadagno è la velocità e la lunghezza, non la sicurezza.

In risposta alle velocità desiderate delle curve ellittiche e ai rischi per la sicurezza indesiderati, un’altra classe di curve ha guadagnato una certa notorietà. EdDSA risolve lo stesso problema di log discreto di DSA/ECDSA, ma utilizza una famiglia diversa di curve ellittiche note come Curva di Edwards (EdDSA utilizza una curva di Edwards contorta). Pur offrendo lievi vantaggi in termini di velocità rispetto ECDSA, la sua popolarità deriva da un miglioramento della sicurezza. Invece di fare affidamento su un numero casuale per il valore nonce, EdDSA genera un nonce deterministicamente come hash rendendolo resistente alle collisioni.

Facendo un passo indietro, l’uso di curve ellittiche non garantisce automaticamente un certo livello di sicurezza. Non tutte le curve sono uguali. Solo poche curve hanno superato test rigorosi. Fortunatamente, l’industria PKI è lentamente arrivata ad adottare Curve25519 — in particolare per EdDSA. Mettere insieme che rende l’algoritmo di firma a chiave pubblica, Ed25519.

Implementazione EdDSA è abbastanza nuovo. Crypto++ e cryptlib attualmente non supportano EdDSA.
Compatibilità Compatibile con i client più recenti, Ed25519 ha visto la più grande adozione tra le Curve Edward; anche se NIST ha anche proposto Ed448 nella loro recente bozza di SP 800-186.
Prestazioni Ed25519 è l’algoritmo più veloce per tutte le metriche. Come con ECDSA, le chiavi pubbliche sono il doppio della lunghezza della sicurezza bit desiderata.
Sicurezza EdDSA fornisce il più alto livello di sicurezza rispetto alla lunghezza della chiave. Migliora anche le insicurezze trovate in ECDSA.

Fondamentalmente, RSA o EdDSA

Quando si tratta di esso, la scelta è tra RSA 2048/4096 e Ed25519 e il compromesso è tra prestazioni e compatibilità. RSA è universalmente supportato tra i client SSH, mentre EdDSA esegue molto più velocemente e fornisce lo stesso livello di sicurezza con chiavi significativamente più piccole. Peter Ruppel mette la risposta in modo succinto:

” La risposta breve a questo è: finché la forza chiave è abbastanza buona per il prossimo futuro, non ha molta importanza. Perché qui stiamo considerando una firma per l’autenticazione all’interno di una sessione SSH. La forza crittografica della firma deve solo resistere agli attacchi attuali e all’avanguardia.”- Ed25519 per SSH

Basta non usare ECDSA / DSA!

Caratteristica immagine via .

Il nuovo Stack è una consociata interamente controllata da Insight Partners, un investitore nelle seguenti società menzionate in questo articolo: Bit.

Leave a Reply