Protezione della comunicazione Peer to Peer

4

Esiste un modo standard per garantire la comunicazione peer-to-peer?

Attualmente sto usando HTTP per trasferire dati da peer to peer, tuttavia, la protezione con TLS / SSL richiede normalmente un'autorità di certificazione per autenticare l'identità e l'uso di un certificato autofirmato codificato in un'applicazione significa che è estraibile e che permetti ancora MiTM.

La creazione di un certificato in prima esecuzione è appropriata, quindi l'interfaccia utente visualizza l'impronta digitale del certificato in modo che gli utenti possano verificare l'identità fuori banda? O sarebbe più appropriato cifrare semplicemente i corpi inviati su HTTP con qualche altra libreria (perché rotolare il mio sarebbe un esercizio per creare buchi di sicurezza). In tal caso, quali sono i modelli e le librerie che si potrebbero usare (idealmente multipiattaforma)?

    
posta yincrash 08.03.2016 - 18:04
fonte

2 risposte

3

Is there a standard way to secure peer to peer communication?

Certo che c'è. Se vuoi fare una comunicazione altamente asimmetrica (ad es. Comunicazione chat o chat) OTR (o Axolotl ) è la strada da percorrere. Se vuoi fare (quasi) comunicazione in tempo reale TLS è la strada da percorrere.

Entrambi i protocolli richiedono chiavi statiche a lungo termine. È possibile visualizzare l'hash (esadecimale codificato?) All'utente e lasciare che siano verificati personalmente. Inoltre, è necessario memorizzare gli hash delle chiavi pubbliche e associarli ai peer a livello di applicazione per avvisare l'utente quando cambiano le chiavi pubbliche. Oltre a questo, puoi offrire ai tuoi utenti un approccio Web-Of-Trust, in cui possono verificare reciprocamente l'associazione pubblica di chiavi / persone utilizzando le firme digitali con le loro chiavi private.

OTR supporta nativamente l'utilizzo di "solo chiavi pubbliche", per TLS puoi utilizzare certificati autofirmati o chiavi pubbliche non formattate come da RFC 7250 combinato con l'autenticazione completa del client TLS.

    
risposta data 08.03.2016 - 21:55
fonte
0

Quando assicuri un'applicazione peer-to-peer avrai bisogno di una sorta di crittografia che hai già capito.

Non sono sicuro di quale lingua stai scrivendo la tua applicazione P2P, ma qui ci sono alcune possibilità:

  1. Ci sono molte librerie là fuori che ti permettono di usare AES, anche se ciò richiederebbe a entrambe le parti di conoscere la password. questo a sua volta lo renderà noioso e non molto user friendly.
  2. Reindirizza la tua app tramite la rete tor utilizzando il loro livello di crittografia.
  3. usa un certificato SSL - ottenere un certificato firmato è economico e facilmente ottenibile anche se è solo per lo scambio iniziale di chiavi (dal primo passaggio).

In sintesi, il modo più efficiente sarà un certificato SSL per il trasferimento sicuro dei dati. In qualsiasi altro modo, IMO aggiunge ulteriore complicazione e rimuove l'usabilità dai tuoi utenti.

Avrai bisogno delle librerie AES integrate in JAVA (se sei in java) o in qualsiasi altra lingua un rapido google ti aiuterà, ma raccomando AES se nient'altro funzionerà.

    
risposta data 08.03.2016 - 18:19
fonte

Leggi altre domande sui tag