Quale è meglio in "DH-group14-sha1 con hmac-sha2-256" e "DH-group-exchange-sha256 con hmac-sha2-256" dal punto di vista delle prestazioni e della sicurezza?

2

Nel nostro prodotto (sistema embedded), finora stavamo usando diffie-hellman-group1-sha1 con hmac-sha1. Ma a causa di problemi di sicurezza, stiamo pianificando di utilizzare diffie-hellman-group14 per lo scambio di chiavi e hmac-sha2-256 per HMAC.

Va bene usare diffie-hellman-group14-sha1 insieme a hmac-sha2-256. La combinazione diffie-hellman-group14-sha1 e hmac-sha2-256 è buona dal punto di vista delle prestazioni e della sicurezza?

Ci sarebbe molto impatto sulle prestazioni se usassimo la combinazione diffie-hellman-group-exchange-sha256 e hmac-sha2-256.

Dato che stiamo usando un sistema embedded, vogliamo mantenere un buon equilibrio tra sicurezza e prestazioni.

Sarei molto grato se le persone possano fornire le loro opinioni?

    
posta Rakesh Gupta 06.03.2014 - 14:12
fonte

2 risposte

2

Il contesto non dichiarato di questa domanda è un server SSH: si tratta di opzioni crittografiche negoziabili nel protocollo di trasporto SSH. Potresti voler aggiornare la domanda per indicarlo.

Dalla forma della tua domanda, prima voglio chiarire qualcosa. Quando chiedi:

Is it ok to use diffie-hellman-group14-sha1 along with hmac-sha2-256. Would diffie-hellman-group14-sha1 and hmac-sha2-256 combination be good from performance and security point of view?

... sembra implicare che tu pensi che ci sia qualcosa di cui preoccuparsi nella mera combinazione di questi algoritmi. Non c'è; sono completamente indipendenti. Questi:

  • Diffie-Hellman-Gruppo 1-sha1
  • Diffie-Hellman-group14
  • Diffie-Hellman-gruppo-scambio-sha256

... sono algoritmi di scambio chiave. Vengono utilizzati nelle prime fasi del protocollo di trasporto per stabilire le chiavi di sessione (crittografia / MAC), autenticando il server nel processo. Questi:

  • hmac-sha1
  • hmac-sha2-256

... sono i nomi degli algoritmi MAC utilizzati per implementare il controllo dell'integrità per i dati utente successivamente trasmessi dal protocollo. Questi sono usati in seguito, con chiavi derivate dall'output dello scambio di chiavi. Se stai facendo la domanda perché pensi che ci possa essere qualche problema nel "mixare" SHA-1 e SHA-256 - per quanto ne so, non c'è motivo di preoccuparsi di questo in questo scenario.

Would there be much performance impact if we use diffie-hellman-group-exchange-sha256 and hmac-sha2-256 combination.

Ora hai introdotto la versione di "scambio di gruppo" dello scambio di chiavi SSH Diffie-Hellman. Ciò consente al server di utilizzare parametri Diffie-Hellman configurati localmente (gruppi finiti), anziché i gruppi fissi prescritti dagli scambi "group1" e "group14". L'impatto sulle prestazioni sarà determinato dai gruppi che fornisci, principalmente dalla dimensione dei gruppi in questione. È possibile ridurre l'overhead utilizzando gruppi più piccoli, con una corrispondente riduzione della sicurezza. Tieni presente che il client richiede un modulo per dimensione, quindi devi fornire gruppi abbastanza grandi da soddisfare i tuoi clienti.

  • Protocollo di trasporto SSH ( link )
  • Scambio di gruppo SSH Diffie-Hellman ( link )
risposta data 07.03.2014 - 00:16
fonte
0

L'altra risposta non sembra rispondere alla domanda, solo chiarire l'uso dei termini e delle ipotesi sbagliate. Quindi se vuoi sapere qual è meglio, diffie-hellman-group14-sha1 vs diffie-hellman-group14-sha1, allora ecco il mio tentativo.

Una parte della domanda è tra SHA2 e SHA1. SHA2 è più strong di SHA1 e diffie-hellman-group-exchange-sha256 è SHA2.

L'altro è i numeri primi usati nello scambio. I numeri primi del gruppo 14 sono considerati forti (2048 bit), ma sono noti pubblicamente. I primi di scambio di gruppo dipendono da un elenco lato server di primi e limitazioni lato client. In OpenSSH su Linux, hai un file / etc / ssh / moduli che contiene questi. Quel file è fornito dalla distribuzione, quindi sono anche noti pubblicamente, ma puoi cambiarli.

Per vedere il conteggio di ogni dimensione che hai ora, prova qualcosa del tipo:

awk '$1 != "#" {print $5+1}' /etc/ssh/moduli | sort | uniq -c

Che su alcuni sistemi Ubuntu 16.04 che ho testato dicono la stessa cosa:

 49 1536
 40 2048
 37 3072
 38 4096
 37 6144
 36 7680
 29 8192

Quindi potenzialmente lo scambio di gruppo potrebbe usare chiavi molto piccole di 1536. Quindi se rimuovi tutti i più piccoli per abbinarli a group14 (Oakley Group 14, size 2048), probabilmente dovrebbe essere migliore (dato che sha256 è migliore di sha1), e anche perché potresti controllarli per non essere conosciuti pubblicamente. Il cambiamento di dimensioni potrebbe non avere alcun effetto se i clienti stanno limitando il proprio minimo e massimo comunque ... ma non può ferire. o se preferiscono una grande dimensione ma min è bassa, un attacco di downgrade come LogJam potrebbe funzionare.

Per ridimensionare il tuo file in modo che contenga solo numeri primi 2048 e più grandi (ancora noti pubblicamente), potresti usare:

awk '$1 == "#" || $5 >= 2048 {print $0}' /etc/ssh/moduli > /etc/ssh/moduli.tmp
mv /etc/ssh/moduli /etc/ssh/moduli.bak.$(date +%s)
mv /etc/ssh/moduli.tmp /etc/ssh/moduli

E per creare un nuovo file di numeri primi unici, forse non noti pubblicamente (esiste ovviamente una sovrapposizione), puoi generarli (che potrebbero richiedere ore):

mv /etc/ssh/moduli /etc/ssh/moduli.bak.$(date +%s)
ssh-keygen -G /tmp/moduli -b 2048
ssh-keygen -T /etc/ssh/moduli -f /tmp/moduli

Suggerisco di riavviare sshd dopo averlo fatto.

Vedi anche link

    
risposta data 03.08.2017 - 11:18
fonte

Leggi altre domande sui tag