Sono abbastanza nuovo per la crittografia e ho bisogno di aiuto. Ho un problema che sto cercando di risolvere.
Il mio problema è il seguente:
- Ho un server Web e un'app (iOS) che comunicano tra loro.
- Voglio che la comunicazione sia sicura, quindi sto utilizzando HTTPS.
- Il server Web e l'app stanno comunicando tramite una rete intranet, senza accesso a Internet alle due estremità.
- Poiché non vi è alcuna connessione a Internet, il certificato SSL sul server Web è autofirmato e non può essere verificato contro una CA.
Quindi il mio problema è che quando si stabilisce una connessione HTTPS, il certificato non può essere considerato attendibile perché non può essere verificato, quindi gli attacchi MITM sono possibili. Quindi quello di cui ho bisogno è un modo per verificare il certificato senza ricorrere a una CA.
La mia idea è di iniziare stabilendo una connessione sicura tra l'App e il server Web utilizzando Diffie-Hellman per trasferire il certificato, in modo che quando viene stabilita la connessione SSL, posso verificare se il certificato è corretto.
Funzionerebbe? O è in qualche modo ancora suscettibile al MITM o ad altri attacchi? Se lo è, allora in che altro modo posso risolvere il mio problema?
Inoltre, vale la pena ricordare che ognuno dei miei clienti avrà il proprio server Web e quindi i propri certificati autofirmati. Quindi incorporare la chiave pubblica nell'app non è un'opzione.