Rende la chiave pubblica irrecuperabile data la chiave privata

0

OpenSSL sembra unire la chiave privata insieme alla chiave pubblica quando produce file .pem. C'è un modo per evitare che ciò accada; ad esempio, impedire a OpenSSL di creare una chiave privata .pem con la chiave pubblica al suo interno? Secondo Wikipedia, la chiave pubblica di RSA non è direttamente derivabile dalla chiave privata.

Lo scenario di utilizzo specifico è: sto creando un piccolo servizio in cui tutti possono ssh tunnel su un server per anti-block. Per facilitare questo (e renderlo automagic) distribuisco una chiave privata SSH con il mio programma che utilizza per poi accedere a uno dei server. Non abbiamo bisogno di autenticare i nostri utenti - chiunque può utilizzare la chiave privata per accedere e l'utente non ha permessi diversi dall'apertura di un tunnel - ma dobbiamo evitare i MITM. known_hosts non va bene dato che i nostri server sono su IP dinamici che sono distribuiti con qualcosa che non è DNS. Quindi, la cosa che vogliamo mantenere segreta è il nostro file "authorized_keys" che contiene la chiave pubblica per il login. Ma qualsiasi malintenzionato può semplicemente utilizzare PuTTYgen per generare la chiave pubblica dalla chiave privata e configurare un server MITM che l'utente può autenticare con successo in ...

    
posta ithisa 12.02.2013 - 18:21
fonte

3 risposte

8

Per gli algoritmi crittografici comunemente usati, la chiave pubblica può essere ricalcolata dalla chiave privata. Un caso limite può essere una chiave RSA con un grande esponente pubblico (cioè non il tradizionale 65537) e senza conoscenza dei fattori del modulo. Questo contraddice il formato di archiviazione standard descritto in PKCS # 1 ; non conoscere i fattori significa che le operazioni con le chiavi private non saranno ottimizzate con il CRT , quindi le firme e la decifrazione richiederanno quattro volte tanta CPU; e, ultimo ma non meno importante, esponenti pubblici che non si adattano a 32 bit non saranno supportati da alcune implementazioni RSA diffuse (il CryptoAPI in Windows, ovvero).

Pertanto, non sembra pratico provare a "nascondere" la chiave pubblica dal portachiavi privato.

Nel tuo caso, non puoi impedire un attacco MitM dal lato server, e persino se potessi "nascondere" la chiave pubblica, questo non ti comprerebbe nulla: l'attaccante potrebbe montare un server modificato che accetta ogni utente come "valido" indipendentemente dalla chiave pubblica che usano per autenticarsi. Se vuoi proteggere i tuoi utenti da un MitM, chiedi al loro software di verificare che parli con il server giusto, cioè il tuo. Questo è ciò che fa semplicemente SSH con il file known_hosts . Se non puoi usare questa funzione ma non puoi distribuire un client SSH modificato, allora dovrai fare affidamento su user education : insegnagli che quando si collegano al tuo server e il loro client (es. PuTTY) borbotta su la chiave del server non è nota, fai in modo che verifichi la "impronta digitale della chiave" visualizzata dal client: deve corrispondere all'impronta digitale della chiave del server .

    
risposta data 12.02.2013 - 18:39
fonte
3

Distribuisci una chiave pubblica con il software. Chiedere al cliente di verificare che la chiave privata del server corrisponda alla chiave pubblica integrata nel software. Non stai guadagnando nulla avendo la chiave privata incorporata nel software in quanto è banale estrarre la chiave privata dal software e quindi chiunque potrebbe fingere di essere il tuo software. La cosa migliore è semplicemente assicurarsi che qualsiasi client inalterato sappia connettersi al tuo server solo memorizzando la chiave pubblica.

    
risposta data 12.02.2013 - 20:48
fonte
1

Non combattere il protocollo. Puoi prevenire MitM, distribuendo il tuo SSH_host_key pubblico con il tuo software? Il tunneling SSH dovrebbe utilizzare una verifica host rigorosa utilizzando la propria chiave host. Se la tua chiave host cambia, smetterà di funzionare, quindi potresti aver bisogno di un modo per ottenere l'ultima chiave host (in modo sicuro).

    
risposta data 12.02.2013 - 21:48
fonte

Leggi altre domande sui tag