Is it possible to a rogue employee to just login in a company server
and steal the private keys used to secure SSL connections?
Sì, tranne quando è difficile o quando è impossibile.
Is it as easy as copying a file?
È qui che entra in gioco la gradazione. Ci sono molti livelli di sicurezza, alcuni dei quali descriverò qui da facile a difficile:
-
Nel caso più semplice, sì, la chiave privata è un semplice file di testo (PEM) e potrebbe non avere nemmeno una protezione file adeguata *
-
Oppure il file chiave potrebbe essere archiviato con autorizzazioni restrittive. Ora il dipendente non deve solo essere sul server, deve avere i privilegi appropriati (Amministratore o applicazione) per copiare la chiave.
-
Il file chiave potrebbe essere protetto da password ma automatizzato. Questo di solito significa che oltre al file chiave, il dipendente deve trovare il file di configurazione con la password memorizzata e rubare anche quello. (Vedi anche "java keystore changeit" ...)
-
Il file chiave potrebbe essere protetto da password e la chiave immessa in fase di runtime da un operatore umano. In questo caso, la password non può essere semplicemente rubata dal sistema. Ovviamente, il tuo dipendente potrebbe essere un operatore ... Inoltre, in termini pratici, vengono eseguiti pochissimi server per richiedere l'intervento umano al riavvio.
-
Se ricordo correttamente, IIS era in grado di importare la chiave in un keystore che non era esportabile dagli utenti, ma consentiva l'uso da parte dei servizi. Generalmente queste cose possono essere risolte con privilegi sufficienti.
-
Infine, se viene utilizzato un modulo di sicurezza hardware (HSM), progettato per proteggere le chiavi anche dal sistema operativo stesso, per consentirne l'utilizzo tramite operazioni crittografiche senza esporre le chiavi all'hardware e al software del computer . In questo caso, il dipendente probabilmente troverà la chiave impossibile da rubare.
Here, I want to know how easy is to an insider get the private keys.
Dipenderà dal sito, ma in generale, la mia esperienza è stata che la maggior parte dei siti memorizza la chiave con nient'altro che permessi di file per proteggerla. Il senso generale è "Beh, se qualcuno irrompe nel server, ha già ottenuto tutto, e dovremo comunque emettere una nuova chiave quando riprendiamo". Certo, questo ignora
- il divario tra compromesso e scoperta e
- il potenziale utilizzo di una chiave privata per leggere tranquillamente il traffico nel frattempo.
Lo spostamento verso i cifrari effimeri TLS sta lentamente chiudendo il secondo gap, rendendo la chiave privata molto meno utile (il snooping è spesso più prezioso della rappresentazione, la rappresentazione può essere ottenuta in altri modi (forse più semplici).
* Dai, ragazzi, non fingere di non aver visto una dozzina di configurazioni Apache poco sicure in cui le chiavi sono state lasciate leggibili.