In che modo l'attacco MiTM è stato eseguito su un certificato autofirmato mentre le chiavi private sono generate da noi stessi?

0

On MongoDB Ho abilitato la funzionalità SSL / TLS per crittografare la trasmissione dei dati tra client e server. Ma quello che ho fatto è generare un certificato autofirmato usando openssl in linux.

La domanda è: come qualcuno può eseguire l'uomo nell'attacco centrale mentre io possiedo la chiave privata e nessun altro l'ha? Perché MiTM non può essere eseguito quando è acquistato da una CA?

L'implementazione della mia connessione MongoDB è facile come segue:

pymongo.MongoClient('172.15.141.190:27017', ssl=True, ssl_crlfile='ANY_KEY.pem')

E mongoDB config è:

net:   
    port: 27017   
    bindIp: 0.0.0.0   
    ssl:
        mode: preferSSL
        PEMKeyFile: /etc/ssl/mongodb.pem
    
posta ALH 01.05.2018 - 08:52
fonte

2 risposte

3

TL; DR: L'uso di certificati autofirmati non significa che MITM è possibile e l'utilizzo di un certificato emesso da una CA pubblica non significa che MITM sia impossibile. Tuttavia, è più probabile che MITM sia possibile se vengono utilizzati certificati autofirmati poiché i client che trattano con certificati autofirmati spesso gestiscono questi dati nel modo sbagliato.

L'utilizzo di un certificato autofirmato non consente il MITM in generale e l'utilizzo di un certificato emesso da una CA pubblica non protegge in generale dal MITM. Oltre a mantenere privata la chiave privata, l'importante protezione contro gli attacchi MITM non è il tipo di certificato utilizzato sul server ma il modo in cui questo certificato viene verificato sul client, ovvero se il server viene autenticato correttamente utilizzando un certificato o meno.

Il modo stabilito per autenticare un server utilizzando un certificato firmato da una CA pubblica è controllare l'oggetto del certificato, la catena di fiducia, la scadenza ecc. - vedere Framework di certificati SSL 101: In che modo il browser verifica effettivamente la validità di un determinato certificato server? per i dettagli. Ma se un client non sta eseguendo questi controlli o non sta facendo correttamente questi controlli, un utente malintenzionato nel percorso potrebbe invece fornire il proprio certificato e il client non lo noterà. In passato questo tipo di errori si verificava a causa dell'ignoranza o di errori, ad esempio non controllare i certificati, non convalidare l'argomento, non controllare i vincoli di base ecc.

Con certificati autofirmati è anche possibile l'autenticazione corretta del server: se il client sa che il certificato deve aspettarsi (o la sua chiave pubblica, o un hash di esso ...) in primo piano il client può controllare che il certificato consegnato corrisponde a quello previsto. Questo tipo di verifica viene effettivamente eseguita correttamente in molti casi d'uso. Ma in molti altri casi è sbagliato: non è raro che i client abbiano semplicemente disabilitato completamente tutti i controlli del certificato se si aspettano un certificato autofirmato invece di aspettarsi un certificato autofirmato specifico. Con tali client interrotti MITM è facile poiché l'utente malintenzionato potrebbe semplicemente utilizzare un certificato arbitrario e il client lo accetterà.

    
risposta data 01.05.2018 - 09:11
fonte
2

Un uomo nell'attacco centrale è possibile senza conoscere la tua chiave privata, terminando la connessione con il tuo server e avendo una seconda connessione con il client.

Se questo è effettivamente possibile non ha nulla a che fare con la tua chiave privata, ma piuttosto come la fiducia della chiave pubblica corrispondente viene gestita all'interno del client.

Anche se ottenere un certificato da una CA può migliorare la sicurezza rispetto a "fidarsi di qualsiasi certificato autofirmato" perché vengono utilizzati Trust Ankers di fiducia, limitare la fiducia sul certificato autofirmato offre una sicurezza ancora migliore.

Tuttavia, c'è la possibilità che tu abbia usato un numero primo per la generazione di chiavi che anche qualcun altro ha usato. In tal caso, la tua chiave è facilmente ottenibile eseguendo semplici operazioni aritmetiche.

    
risposta data 01.05.2018 - 09:15
fonte

Leggi altre domande sui tag