Esiste qualcosa come una coppia di chiavi SSH firmata?


9

Stiamo trasferendo file a un server remoto nella nostra applicazione e il metodo di autenticazione richiesto è utilizzare le chiavi SSH.

Quindi, ho creato la mia coppia di chiavi usando ssh-keygen e ho inviato la mia chiave pubblica per l'inserimento nel file authorized_keys dell'host remoto. Tuttavia, questo è stato respinto da IT Security che ha dichiarato che avrebbero generato la coppia di chiavi per me e mi avrebbero inviato la chiave privata. Motivo: "Abbiamo bisogno che le chiavi SSH siano firmate dal team di sicurezza IT. Questo per garantire che abbiamo un po 'di vantaggio nel monitoraggio e nella responsabilità."

Ovviamente, ho problemi con questo. Avere la chiave privata generata da qualcun altro significa che posso avere quella persona mascherata da me a mia insaputa. Sto cercando di trovare il modo di confutare questo argomento.

Per quanto posso google, non sembra esserci alcun modo noto per firmare le chiavi in ​​modo tale da aiutare a rintracciare una persona che ha effettuato l'accesso. Il fatto che io abbia inviato la mia chiave pubblica significa che possiedo la chiave e chiunque acceda al server remoto con quella chiave viene automaticamente identificato come me stesso. In che modo la firma aiuterebbe? E come avrebbero firmato comunque?

Qualcuno per favore mi indichi se sbaglio, grazie!


Ok, ora che abbiamo stabilito che non è possibile firmare le chiavi SSH, devo mostrare alla sicurezza IT come possono effettivamente tenere traccia di chi ha effettuato l'accesso (devo essere costruttivo, immagino, se non inizia la mano alta ). Sul mio server, ho impostato LogLevel di sshd su DEBUG. Quindi ora quando accedo, posso vedere il seguente frammento:

Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

Questo sembra essere un valore di hash. Come posso ricollegarlo a quale chiave pubblica nel file authorized_keys è stata utilizzata? So che c'è un'altra linea che dice:

debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1

ma questo non è utile in quanto i numeri di riga possono essere facilmente modificati se dovessi inserire una chiave nella parte superiore del file, spingendo le chiavi originali verso il basso.

Grazie!


2
Forse stamperanno le chiavi, lo firmeranno (sulla carta) e poi lo archivieranno?
innaM

Il valore di hash che ottieni è molto probabilmente la cosiddetta impronta digitale della chiave. Consiglio di consultare il manuale di openssh su come elencare queste impronte digitali.
Niels Basjes,

Il motivo più probabile per cui questa politica è in atto è che in realtà vogliono essere in grado di impersonarti se necessario. L'argomento della firma è solo BS per renderlo plausibile ai neofiti. Anche se avessero bisogno di firmare il pubkey, non avrebbero bisogno di generarlo da soli.
b0fh

Risposte:


13

Nel tempo da quando hai posto la tua domanda, l'universo è cambiato.

Openssh5.4 ha aggiunto il supporto esattamente per il tipo di certificati che stavi cercando. Vedi le note di rilascio su http://www.openssh.org/txt/release-5.4 (e le pagine man) per maggiori informazioni, o se vuoi davvero essere pazzo, guarda PROTOCOL.certkeys per i dettagli cruenti


Ho visto questo dopo molto tempo ... sembra legittimo :) Lo proverò, grazie!
feicipet,

8

La mia prima impressione quando leggo la tua domanda è che la persona IT ha confuso SSH e SSL (deve essere firmato da noi) e inoltre non capisce come funziona davvero la firma SSL.

Ad ogni modo non è possibile firmare una chiave SSH (di cui sono a conoscenza).


+1 non puoi firmare chiavi ssh nello stesso modo in cui puoi firmare certificati PGP o SSL. Chiederei loro chiarimenti.
David Pashley,

4

Qualcosa non è giusto in questa richiesta.

Se sta consegnando i file firmati al server,
mi aspetto che ciò avvenga al minimo indispensabile.

  1. Crei una coppia di chiavi per te (chiama questa mia chiave)
    • Quando vuoi inviare qualcosa,
    • prima lo crittografate con my-key-private
    • quindi caricato sul server questo file crittografato
    • Qualcuno sul server deve invertire il processo in questo modo,
    • usano il tuo my-key-pubper decifrare il file
    • se hai inviato il file, il decrypt lo recupererà
    • altrimenti, non otterranno alcun file utilizzabile
    • efficacemente, hai firmato il file con la tua chiave privata
    • hanno verificato la firma con la tua chiave pubblica
    • la responsabilità è effettuata da loro confermando che hai inviato il file

Esistono altri modi per fare queste cose,
tuttavia, ottenere una coppia di chiavi generata da qualcun altro è inutile come schema di autenticazione .
Ha una forte conseguenza che ti fidi di loro tanto quanto ti fidi di te stesso.


Queste sono le domande iniziali che puoi porre al tuo IT.
Se la responsabilità è una preoccupazione per l'IT,

  1. Come si assicurano di non condividere / perdere la coppia di chiavi fornita da loro? e,
    • In che modo questo concetto di coppia di chiavi dell'IT differisce da una password fornita dall'IT.
      Perché preoccuparsi delle coppie di chiavi in ​​quel caso.

Stai pensando a PGP / GnuPG per la crittografia dei file. In questo caso la firma delle chiavi è normale. La domanda originale riguarda le chiavi SSH. Avrebbe senso se chiedessero una chiave SSH firmata / crittografata PGP (dopo aver verificato e firmato le chiavi PGP reciproche).
pag

@pgs, sto cercando di vedere a cosa si rivolge la persona IT.
nik,

Sono abbastanza sicuro che il responsabile della sicurezza sia confuso, ma dal momento che è il responsabile della sicurezza IT dell'azienda del mio cliente e non il mio collega, ho bisogno di essere un po 'più tatto e spingere costruttivamente senza ridere solo di lui e dire che ha le cose mischiato. Sì, è sicuramente SSH e non PGP.
feicipet,

@feicipet, diventando discreto è dove i miei ultimi punti ti aiuteranno.
nik,

@feicipet, il tuo obiettivo sarebbe quello di far finalmente capire loro il minimo che avrebbero dovuto fare per raggiungere correttamente il loro intento.
nik,

2

Non c'è motivo per cui non si possano usare i certificati X.509 per l'autenticazione SSH invece delle chiavi nude - in effetti, lo preferirei di gran lunga se OpenSSH funzionasse in questo modo! Ma la versione stock di OpenSSH no, ed è l'implementazione dominante in questi giorni.

Ho visto alcune versioni patchate di OpenSSH fluttuare attorno a ciò, e l'implementazione commerciale di SSH.com sembra supportare anche l'autenticazione X.509. Pertanto, se l'organizzazione utilizza uno di questi, richiederebbe che le chiavi vengano firmate da un'autorità centrale avrebbe molto senso.

Detto questo, non ci sono scuse per richiedere che la chiave privata sia generata da una terza parte! Se stanno percorrendo la rotta X.509, allora dovrebbero farti generare una coppia di chiavi e una richiesta di firma del certificato, proprio come faresti con qualsiasi altro certificato X.509 usato per SSL, ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.