Originariamente richiesto su link , ma è stato suggerito di chiedere qui invece.
Ho visto molte domande in merito alla crittografia su http, ad esempio questo . La maggior parte delle risposte che ho visto ha detto che non c'è modo di verificare l'identità del server così vulnerabile all'attacco MitM.
La mia domanda di seguito sarà leggermente diversa, perché si tratta di un ambiente mobile, in cui presumo che l'app sia scaricata da AppStore o PlayStore. In questo modo, posso presupporre che il codice sia verificato e non modificato dall'hacker e che la chiave pubblica del server in bundle con l'app non venga modificata in modo che possa verificare l'identità del server.
Date queste garanzie, è possibile eseguire la crittografia a livello di applicazione e ci sono eventuali librerie esistenti per farlo?
Più in particolare, sto scrivendo alcune app che parlano al server HTTP. Il server è ospitato su alcuni piani economici in cui non è disponibile HTTPS. Supponendo che il server gestisca le richieste HTTP usando PHP o Python, è possibile implementare il client e il server, in modo che facciano un po 'di handshake all'inizio della sessione su HTTP, per concordare alcune chiavi di crittografia; in seguito, tutti i messaggi vengono crittografati utilizzando i tasti. Quindi dal punto di vista degli hacker, vedono il traffico HTTP tra client e server e vedono alcuni campi base nelle intestazioni HTTP, ad es. host e endpoint, come testo normale, ma tutto il resto è crittografato come corpo HTTP o argomento dell'URL.
È possibile e ci sono biblioteche che lo fanno facilmente? Intuitivamente, è solo l'implementazione di TLS a livello di applicazione, quindi in teoria è totalmente possibile e ha la stessa forza di sicurezza di TLS. Mi mancano i buchi di sicurezza qui?