ECDSA vs ECDH vs Ed25519 vs Curve25519

89

Tra gli algoritmi ECC disponibili in openSSH (ECDH, ECDSA, Ed25519, Curve25519), che offre il miglior livello di sicurezza e (idealmente) perché?

    
posta Omar 04.02.2014 - 10:53
fonte

4 risposte

84

In SSH, vengono utilizzati algoritmi due : un algoritmo di scambio di chiavi (Diffie-Hellman o la variante di curva ellittica chiamata ECDH) e un algoritmo di firma. Lo scambio di chiavi produce la chiave segreta che verrà utilizzata per crittografare i dati per quella sessione. La firma è tale che il client può assicurarsi che parli con il server giusto (un'altra firma, calcolata dal client, può essere utilizzata se il server applica l'autenticazione del client basata su chiave).

ECDH usa una curva ; la maggior parte dei software utilizza la curva NIST standard P-256. Curve25519 è un'altra curva, il cui "tono di vendita" è che è più veloce, non più strong, di P-256. La differenza di prestazioni è molto piccola in termini umani: stiamo parlando di calcoli inferiori al millisecondo su un PC piccolo, e questo accade solo una volta per sessione SSH. Non te ne accorgi. Non si può dire che nessuna curva sia "più strong" dell'altra, non in pratica (entrambe sono piuttosto distanti nel regno "non si può spezzare") né accademicamente (entrambe sono al "livello di sicurezza a 128 bit").

Anche quando ECDH viene utilizzato per lo scambio di chiavi, la maggior parte dei server e client SSH utilizzerà le chiavi DSA o RSA per le firme. Se si desidera un algoritmo di firma basato su curve ellittiche, allora questo è ECDSA o Ed25519; per alcune ragioni tecniche dovute alla definizione precisa dell'equazione della curva, questo è ECDSA per P-256, Ed25519 per Curve25519. Anche in questo caso, nessuno dei due è più strong dell'altro e la differenza di velocità è troppo piccola per essere rilevata da un utente umano. Tuttavia la maggior parte dei browser (incluso Firefox e Chrome) non supporta più ECDH (anche dh).

L'uso di P-256 dovrebbe garantire una migliore interoperabilità in questo momento, perché Ed25519 è molto più recente e non così diffuso. Ma, per un determinato server che si configura e che si desidera accedere dalle proprie macchine, l'interoperabilità non ha molta importanza: si controlla sia il software client che quello server.

Quindi, fondamentalmente, la scelta è verso l'estetica, cioè completamente a te, senza alcun motivo razionale. I problemi di sicurezza non saranno comunque causati da quella scelta; gli algoritmi crittografici sono la parte più strong dell'intero sistema, non il più debole.

    
risposta data 04.02.2014 - 13:32
fonte
67

Dalla introduzione a Ed25519 , ci sono alcuni vantaggi in termini di velocità e alcuni vantaggi in termini di sicurezza. Uno dei più interessanti vantaggi per la sicurezza è che è immune a numerosi attacchi da canale laterale:

  • No secret array indices. The software never reads or writes data from secret addresses in RAM; the pattern of addresses is completely predictable. The software is therefore immune to cache-timing attacks, hyperthreading attacks, and other side-channel attacks that rely on leakage of addresses through the CPU cache.
  • No secret branch conditions. The software never performs conditional branches based on secret data; the pattern of jumps is completely predictable. The software is therefore immune to side-channel attacks that rely on leakage of information through the branch-prediction unit.

Per fare un confronto, ci sono stati diversi attacchi di temporizzazione della cache in tempo reale dimostrati su vari algoritmi. link

    
risposta data 14.03.2014 - 16:53
fonte
33

Ho avuto l'impressione che Curve25519 sia effettivamente più sicuro delle curve NIST a causa della forma della curva che lo rende meno suscettibile ai vari attacchi dei canali laterali e ai fallimenti di implementazione. Vedi: link

Ed25519 ha il vantaggio di essere in grado di usare la stessa chiave per firmare un accordo di chiave (normalmente non lo faresti). Non conosco bene la matematica per dire se si tratta di una proprietà di una curva di Edwards, anche se so che è convertito nel sistema di coordinate Montgomery (efficacemente in Curve25519) per un accordo chiave ... Ed25519 è più di una curva, specifica anche la generazione di chiavi deterministiche tra le altre cose (ad es. Hashing), vale la pena tenere a mente. Questa è una cosa frustrante delle implementazioni di DJB, come accade, in quanto devono essere trattate in modo diverso per mantenere l'interoperabilità.

    
risposta data 07.02.2014 - 22:27
fonte
33

C'è un importante vantaggio pratico di Ed25519 rispetto al DSA (EC): l'ultima famiglia di algoritmi si rompe completamente se utilizzato per le firme insieme a un generatore di numeri casuali non funzionante. Un tale errore RNG ha successo prima e potrebbe benissimo accadere di nuovo.

Teoricamente, le implementazioni possono proteggere contro questo specifico problema, ma è molto più difficile verificare che entrambe le estremità stiano usando un implementazione corretta piuttosto che preferire o applicare (in base alle esigenze di compatibilità) un algoritmo che specifica esplicitamente il comportamento sicuro (Ed25519).

    
risposta data 01.12.2014 - 12:53
fonte

Leggi altre domande sui tag