it-swarm-eu.dev

Devo cambiare la chiave privata durante il rinnovo di un certificato?

Il mio dipartimento di sicurezza insiste sul fatto che io (l'amministratore di sistema) creo una nuova chiave privata quando desidero rinnovare un certificato SSL per i nostri server Web. Affermano che è la migliore pratica, ma i miei tentativi su Google non sono riusciti a verificare la loro richiesta. Qual è il modo corretto?

Il più vicino che ho trovato è Devo rigenerare la nuova chiave privata SSL ogni anno? , ma in realtà non spiega perché sarebbe necessario cambiare le chiavi.

So che non è un grosso problema cambiare le chiavi mentre ci sono, ma non sono mai stato uno a fare solo quello che mi è stato detto senza un motivo o una spiegazione adeguati :)

95
Commander Keen

Direi che il loro suggerimento non è molto solido, a meno che tu non stia usando dimensioni di chiave orribilmente piccole - nel qual caso hai un problema completamente diverso.

Una chiave a 2048 bit, con la maggior parte delle stime , ti terrà al sicuro almeno fino al 2020, se non più a lungo. Se stai utilizzando chiavi a 1024 bit o inferiori, sei al di sotto dello standard e ti consiglio di aggiornare immediatamente a 2048 bit. Se al momento stai utilizzando chiavi a 1536 bit, dovresti essere al sicuro per un anno o due.

Certo, tutto ciò è accademicamente parlando. La probabilità che qualcuno riesca (o sia incline) a decifrare la chiave SSL a 1024 bit entro un anno è estremamente bassa.

Come menzionato nella domanda che hai collegato, ci sono vantaggi e svantaggi.

Vantaggi

  • Dà a un aggressore meno tempo per decifrare la chiave. Un po 'irrilevante se si utilizzano comunque dimensioni di chiave ragionevoli.
  • Blocca i malvagi che potrebbero aver compromesso la tua chiave privata. Improbabile, ma sconosciuto.
  • Ti dà la possibilità di aumentare le dimensioni della chiave per essere in anticipo sulla curva.

Inconvenienti

  • Non ti dà alcuna protezione concreta contro il cracking delle chiavi a meno che tu non stia usando chiavi terribilmente piccole.
  • Il controllo SSL/i plug-in anti-MitM per i browser potrebbero avvisare l'utente che la chiave è stata modificata. Questo è, a mio avviso, un debole svantaggio: la maggior parte degli utenti non lo utilizzerà.
  • Potrebbe causare avvisi temporanei in relazione a politiche e implementazioni più rigorose HSTS .
  • Richiede lavoro. Potresti fare qualcos'altro.

Quindi su entrambi i lati ci sono alcuni motivi deboli e alcuni casi angolari che potresti dover considerare. Mi inclinerei leggermente verso l'angolazione "non farlo a meno che non sia necessario", purché si utilizzino chiavi a 2048 bit o superiori.

La cosa più importante è chiedere them perché pensano che sia necessario - potrebbe essere che tu abbia un motivo relativo all'infrastruttura per l'aggiornamento delle chiavi che non conosciamo. Se non riescono a trovare una valida argomentazione ("perché no?" Non è realmente valida) allora dovrebbero valutare nuovamente i loro consigli.

64
Polynomial

La modifica della chiave privata non è una pratica migliore , è una diffusa pratica; ha infatti ben poco a che fare con la sicurezza e molto con quanto comunemente CA gestisce i rinnovi dei certificati, vale a dire il più delle volte come un nuovo certificato, con una nuova generazione di chiavi private. È più semplice, sul lato CA , non fare nulla di speciale per un rinnovo. Da qui l'abitudine di cambiare le chiavi.

Gli stessi amministratori di sistema non insisteranno sulla generazione annuale di nuove chiavi per i loro server SSH, anche se la situazione è simile, dal punto di vista della sicurezza. O, più precisamente, la modifica di una chiave del server SSH è un po 'scomoda poiché interrompe .ssh/known_hosts file di client. Pertanto è consuetudine evitare di modificare le chiavi del server SSH. Pertanto, le chiavi del server SSH sono di lunga durata. Nessuno ci salta davvero un battito cardiaco. Perché dovrebbero preoccuparsi delle chiavi SSL con forza crittografica simile?

La migliore pratica è cambiare la chiave quando i progressi tecnologici hanno reso la tua chiave un po 'vulnerabile, tenendo conto della paranoia generale (spesso chiamata "per motivi di conformità"); quindi considereresti che adesso, nel 2013, una chiave RSA a 1024 bit dovrebbe essere sostituita con una chiave più lunga, anche se siamo ancora lontani dall'essere in grado di romperla. Se la tua chiave RSA è 1536-bit o più ampia, non c'è motivo crittografico per crearne una nuova (ma, di nuovo, forse è solo più conveniente cambiarla, sul lato CA).

45
Thomas Pornin

La risposta non è tecnica o crittografica, riguarda le persone. Con cose come i cambiamenti di lavoro (sentito parlare di amministratori scontenti?), Le migrazioni dei server, i test DR, i backup e tali chiavi private possono diventare un po 'esposte.

Considerato quanto sopra, il rinnovo chiave è una buona pratica di sicurezza.

19
Bob Jones

Non preoccuparti di qualcuno che prende in considerazione la tua chiave RSA. Il factoring di una chiave RSA a 1024 bit potrebbe essere possibile per gli avversari a livello statale, ma anche per loro probabilmente non è conveniente. Il factoring con chiavi a 2048 bit probabilmente non sarà possibile per alcuni decenni.

Mi preoccuperei soprattutto che la tua chiave privata venga rubata in un compromesso del server. Il guadagno in caso di compromessi passati è un po 'poco chiaro, poiché l'attaccante potrebbe avere malware persistente sul tuo server. Quindi dovrai reinstallare il server per proteggere la nuova chiave.

Un altro problema è che alcune suite SSL deboli (principalmente la famiglia basata sulla crittografia RSA) usano la chiave a lungo termine per la riservatezza e non solo per l'autenticazione. Con questi un compromesso della chiave del server consente la decrittografia di tutte le comunicazioni SSL passate con il server che utilizzava una suite così debole. L'uso di una nuova chiave e l'eliminazione sicura di quella precedente limita l'impatto di tale attacco.

Quindi se il tuo server ha ancora quelle suite abilitate, ti consiglio vivamente di cambiare regolarmente la chiave.

10
CodesInChaos
  • Hai cambiato le chiavi dopo HeartBleed?
  • Cosa fanno i tecnici del tuo data center con dischi rigidi danneggiati?
  • Qualcuno ha lasciato l'organizzazione operativa nell'ultimo anno?
  • Quando è stata ruotata l'ultima volta le password dell'amministratore e le chiavi ssh?

Tutte queste domande dovrebbero farti pensare all'integrità delle tue chiavi. Non sto dicendo che è probabile che siano compromessi o che qualcuno sarà in grado di abusarne. Sto cercando di farti pensare al motivo per cui potresti voler ruotarli.

Le chiavi rotanti dovrebbero essere super facili ed è una buona igiene della sicurezza. Se non lo fai perché è difficile, questo è un problema serio. Costruisci strumenti e processi per renderlo semplice. Se non lo fai, finirai per non riuscire a ruotare cose molto più importanti.

6
jorfus

Più usi una chiave, più tempo dai a un attaccante. Anche se la rottura del 2048 bit non è considerata possibile con la tecnologia attuale, essere più cauti e sostituire la chiave non è affatto una cosa negativa.

Inoltre, qualcuno potrebbe essere riuscito a ottenere la tua chiave privata, senza che tu sia in grado di rilevarla. Se non può ripetere l'azione, il vantaggio del rinnovo è molto chiaro.

6
Dinu

Pur concordando sul fatto che vi sono pochi motivi tecnici per generare nuove chiavi ogni volta che si rinnova un certificato, non contesterei immediatamente il team/i responsabili della sicurezza e li chiamerei sul problema.

Ci possono essere ragioni non tecniche che sono altrettanto valide per generare nuove chiavi. Ad esempio, in una grande organizzazione in cui vi sono vari livelli di centralizzazione IT, competenze, procedure e solide pratiche, un'area di gestione della sicurezza centralizzata può richiedere che tali pratiche aiutino a mitigare alcuni dei rischi. Ciò può anche aiutare a mantenere le procedure più piccole e più gestibile. Sebbene le procedure più complesse possano essere più corrette dal punto di vista tecnico, sono più difficili da documentare e rendono più difficile per il personale sapere che le stanno seguendo correttamente. A condizione che la pratica non crei un sovraccarico significativo, potrebbe essere più semplice adottare e mantenere l'approccio X sempre più semplice.

Pensaci da un'altra prospettiva. Tutti nella tua organizzazione che hanno la responsabilità della gestione dei certificati hanno la stessa consapevolezza e comprensione delle tue problematiche e sono approfonditi/dedicati? Qual è il livello di turnover del personale e in che misura è necessario preoccuparsi della quantità di dati sensibili che gli ex dipendenti possono avere accesso ecc.

Ogni volta che si considera la sicurezza, il fattore umano è quasi sempre altrettanto importante o più importante degli aspetti tecnici. Le politiche e le procedure devono considerare l'elemento umano e cercare di garantire che tali politiche e procedure siano strutturate in modo tale da consentire al personale di fare la cosa giusta, anche quando potrebbero non comprendere appieno il motivo per cui devono farlo.

4
Tim X

SP 800-57 Parte 1 Revisionata, Raccomandazione per la gestione delle chiavi

Le raccomandazioni del NIST sui criptoperiodi RSA sembrano essere di 1-2 anni.

3
Jason

Diverse persone hanno sollevato il fatto che le chiavi dell'host ssh sono raramente ruotate come argomento per non ruotare le chiavi dell'sl. Sembra solo un altro problema da risolvere. (Chiedo scusa per una risposta leggermente fuori tema, ma diverse persone qui lo hanno menzionato, quindi sembra appropriato)

Vedi la mia risposta sopra per perché si potrebbe desiderare di ruotare le chiavi.

Quanto segue sarà particolarmente utile per tutti coloro che, per motivi di conformità, sono tenuti a ruotare le chiavi dell'host ssh, ma che si preoccupano dell'impatto dell'usabilità sugli utenti finali.

1) Distribuire un ssh_ca (Istruzioni straordinariamente complete in man ssh-keygen)

ssh-keygen -f ssh_ca -b 4096

2) Distribuire il certificato agli utenti: aggiungere la riga dell'autorità di certificazione a ~/.ssh/known_hosts

@cert-authority *.domain.name ssh-rsa AAAAB3[...]== Comment

3) Firma le chiavi dell'host (assicurati di limitare ciascuna a un singolo host)

ssh-keygen -s ssh_ca -I Host.domain.name -h -n Host.domain.name -V +52w /etc/ssh/ssh_Host_rsa_key.pub

4) Configurare i server per presentare il certificato (/ etc/ssh/sshd_config):

HostCertificate /etc/ssh/ssh_Host_rsa_key-cert.pub

Qualsiasi chiave host firmata dalla CA è ora considerata attendibile dal client (non è più necessario accettare ciecamente una chiave sig la prima volta che ci si connette)

Ora è possibile eseguire il rolling della chiave Host senza interrompere i client. La firma della chiave può essere inserita nel processo di creazione/orchestrazione dell'host.

Questo è un buon riferimento. Questo progetto ha creato alcuni strumenti utili usando ssh_ca per l'accesso dell'utente con scadenza automatica.

1
jorfus

È come cambiare le password davvero. Se qualcuno sta cambiando la tua password quando la cambi, dovrebbero ricominciare da capo. O se la password, o la chiave privata, fosse rubata, il rinnovo invaliderebbe la loro chiave rubata (supponendo che non possano facilmente rubarla di nuovo).

Potrebbe essere una buona abitudine cambiare la chiave privata ogni anno o ogni pochi anni solo per sapere che non si romperà nulla quando è necessario cambiarla, ma non è necessario per la sicurezza del certificato in sé.

1
Luc