Non è possibile creare un'applicazione in modo che non sia vulnerabile agli attacchi MiTM perché questi attacchi si verificano in un livello inferiore rispetto a quello su cui si basa l'applicazione. È possibile solo proteggere la rete utilizzata dai client. Ci sono diversi contromisure disponibili. Innanzitutto hai bisogno della sicurezza della porta che impedirà molti di questi attacchi. Quindi puoi aggiungere un IDS / IPS basato sulla rete che cattura la porta del monitor del tuo switch. Ma tutto questo non verrà gratuitamente, ti costerà un po 'di soldi e molto tempo.
//
La soluzione più pratica è usare la crittografia per garantire che qualcuno che esegue un attacco MiTM non sia in grado di leggere i dati che cattura. Ma anche questo non ti darà sicurezza al 100%. Il problema principale qui è che non hai un server.
Codice asincrono (simile a SSH)
Su entrambi i lati viene creata una coppia di chiavi RSA e quindi utilizzata per crittografare e decrittografare i messaggi. Quando viene stabilita la prima connessione tra due host, si salva la chiave di quell'host per identificare questo host in ulteriori sessioni. Il problema qui è che un MiTM-Attacker potrebbe interrompere la prima sessione. È quindi in una posizione in cui può iniettare i propri certificati per eseguire comunque un attacco MiTM. Questo porterà anche a un sito Web dove in altre sessioni che non vengono interrotte dall'attaccante la connessione verrà riconosciuta come non sicura perché la chiave salvata dell'hosting di opossing è in effetti quella dell'attaccante.
Il tuo problema è che non conosci la chiave del lato opossing finché non ti connetti per la prima volta. Molte aziende risolvono questo problema quando si tratta di ssh sincronizzando il ssh_known_hosts
tramite un server affidabile. Non hai un server di questo tipo perché non puoi farlo qui e sei un po 'insicuro alla prima connessione.
Pre-Shared-Key
È possibile implementare la crittografia con una chiave pre-condivisa, ma il problema qui è sempre l'usabilità e il comportamento dell'utente. Quando generi una PSK per ogni connessione, la chiave deve essere scambiata. Ricorda sempre: le persone sono pigre. Manderanno il PSK via posta che è potenzialmente non criptato. Inoltre, molte persone potrebbero dire "ohh questo è complesso, userò un altro software che è facile da usare" e questo è il modo in cui le persone finiscono con un software facile da usare ma totalmente insicuro.
// Inoltre nessuna delle procedure descritte preverrà un MiTM-Attack, ma impedirà solo che l'attacco abbia successo nel modo in cui lo è stato.