C'è un modo per dividere la mia chiave SSH usando Shamir's Secret Sharing?

5

Ho alcuni server e macchine a cui mi collego regolarmente, quindi mi chiedevo se fosse possibile proteggerli usando una versione di Shamir's Secret Sharing .

Ho pensato di poter dividere la mia chiave privata in un numero di pezzi, quindi distribuirli tra tutti i computer che uso ogni giorno e una penna USB. In questo modo ho potuto spostare la chiavetta USB dal computer al computer e ogni volta che inserisco la chiavetta USB in una nuova macchina il numero di pezzi di chiave presenti sarebbe sufficiente per ricostituire la chiave SSH privata.

Perdonami se questo non ha molto senso, potrei aver completamente frainteso il funzionamento di questo sistema!

È possibile e qualcuno può aiutarmi a iniziare questo problema?

Grazie!

Modifica: per chiarimenti, pensavo che fosse possibile amministrare i miei server remoti solo dalle due macchine di casa mia. La chiave privata sarebbe suddivisa in un numero di parti con ciascuna delle due macchine in casa mia con una sezione della chiave, metterei anche una sezione della chiave su una scheda SD.

In questo modo, quando la scheda SD viene inserita in una delle macchine, viene raggiunta la soglia e la chiave privata può essere riassemblata e utilizzata. Tuttavia, penso di aver frainteso questa condivisione segreta e la sua utilità in questa situazione.

Grazie ancora!

    
posta robotsandcake 24.01.2014 - 20:38
fonte

1 risposta

6

Shamir's Secret Sharing è un buon algoritmo per dividere un valore segreto in più parti e consentire il recupero con una soglia ; significa che dividi (per esempio) il segreto in dieci condivisioni , in modo tale che tre parti siano sufficienti per ricostruire il segreto.

Questo richiede due commenti:

  • Il vantaggio principale dell'algoritmo è il suo meccanismo di soglia; non ha molto senso se sono necessarie tutte le condivisioni per ricostruire il segreto. Nello scenario descritto, con le chiavi SSH, non è chiaro cosa significherebbe questo meccanismo di soglia. C'è è uno scenario in cui vuoi qualcosa di simile (l'ho visto distribuito in produzione, vedi sotto) ma coinvolge diversi proprietari di chiavi.

  • Sebbene le condivisioni siano separate, il processo di ricostruzione deve avvenire, per necessità, su una singola macchina che ottiene, a un certo punto, il segreto stesso. In particolare, se si esegue il riassemblaggio su una macchina che è malvagia (ovvero che è sotto il controllo di un utente malintenzionato attraverso malware subdolo), l'utente malintenzionato viene a conoscenza della chiave privata SSH e si perde.

Lo scenario in cui il meccanismo di soglia con SSH ha senso è il seguente: c'è un server molto sensibile da qualche parte (una Certification Authority ), che non deve mai essere amministrato da un singolo amministratore senza alcun testimone. Tuttavia, il server è remoto e alcune amministrazioni remote devono ancora essere eseguite. Quindi l'idea è di avere una chiave privata speciale, autorizzata per l'accesso root (la chiave pubblica è in /root/.ssh/authorized_keys ). La chiave privata corrispondente dovrebbe essere accessibile solo su una macchina che si presume sicura (una macchina dedicata per l'attività e tenuta al sicuro attraverso il normale meccanismo - in tal caso, un sistema Linux con procedure sysadmin sane). Quando deve essere eseguita l'amministrazione remota, un quorum del proprietario chiave collabora, inserisce le loro "condivisioni" sulla macchina e quindi sblocca la chiave privata. Mantengono il sysadmin sotto controllo visivo per l'intera durata della procedura di amministrazione.

In tale scenario, uno schema di condivisione segreta avrebbe senso. Tuttavia, le "condivisioni" sono grandi valori numerici, che devono essere memorizzati su dispositivi fisici, non nel cervello umano; questo era scomodo Inoltre, il normale software client SSH non consente il collegamento di sistemi di condivisione segreta arbitrari (non facilmente almeno). Quindi la soluzione pratica era la seguente: la chiave privata era memorizzata più volte, ogni volta protetta da una password divisa in due metà; ogni umano conosceva solo la metà. Se ci sono proprietari di condivisioni n , la chiave privata deve essere crittografata con password n (n-1) / 2 volte (quindi con n = 5 , questo significa 10 copie della chiave privata, criptate ciascuna con una combinazione di due metà della password). Quando è necessario eseguire l'amministrazione remota, due proprietari di chiavi selezionano il corrispondente file di chiave privata crittografato; ogni proprietario digita la sua password a metà e la connessione si verifica.

Il sistema funziona in pratica. Non scala bene (con i proprietari di chiavi n e il quorum di t , richiede O (n t ) file crittografati, per tutte le combinazioni), ma per valori piccoli è perfettamente funzionante.

    
risposta data 24.01.2014 - 21:53
fonte

Leggi altre domande sui tag