Diffie Hellman Key Exchange in un'applicazione di messaggistica

7

Attualmente sono uno studente che sta tentando di sviluppare un'applicazione di messaggistica su Android utilizzando java che implementerà lo scambio di chiavi diffie hellman per garantire che entrambi siano in grado di calcolare una chiave segreta per decrittografare il contenuto che viene inviato all'interno del testo.

Ho cercato varie fonti online, ma non sono riuscito a trovare una libreria o in grado di effettuare il mio scambio di chiavi diffie hellman all'interno dell'app stessa. Ad esempio, se utilizzo il cellulare A per generare la chiave, in che modo il cellulare B riceve quei dati e sa che è la chiave pubblica? Inoltre, una volta ricevuta la chiave pubblica, come genera la propria chiave privata in base alla chiave pubblica?

Ho esaminato le varie fonti come link link link

e molti altri, ma sembra che i codici che forniscono siano più adatti all'applicazione in cui sono presenti 2 utenti nel dispositivo e non all'interno dell'app, ma 1 utente per dispositivo.

Ci scusiamo per il disturbo, grazie!

    
posta hongster32 16.05.2016 - 10:44
fonte

1 risposta

4

Per ottenere una buona immagine del Diffie Hellman Key Exchange alcuni le rappresentazioni schematiche potrebbero essere utili.

L'approccio comune per le applicazioni di messaggistica su Android (o qualsiasi altro dispositivo client) in Java (o qualsiasi altra lingua) consiste nell'utilizzare TLS di solito in combinazione con HTTPS per autenticare, autorizzare e comunicare in sicurezza il messaggio di testo in chiaro attraverso un flusso contenente le rappresentazioni del testo cifrato tra pari.

La probabilità di implementare una versione casalinga sicura di uno scambio di chiavi Diffie Hellman senza pochi anni di esperienza è minima. Un fatto che può chiarire il quadro generale è che la sicurezza nella crittografia pubblico-privata si basa sul coinvolgimento dell'autorità di certificazione come parte dell'autenticazione. JSA (Java Security Architecture) ti offre alcune opzioni da utilizzare tutto ciò tra pari e in assenza di un server web, ma a un livello superiore.

La relazione tra la chiave privata e pubblica è progettata in modo tale che la chiave privata non può essere calcolata praticamente dalla chiave pubblica, quindi non preoccuparti di cercare un modo per farlo.

Un'altra alternativa altamente sicura sarebbe quella di utilizzare un one time pad, che probabilmente non sarà affatto pratico per la tua applicazione.

Se entrambi i dispositivi hanno lo stesso segreto (che è stato concordato in anticipo), è possibile utilizzare semplicemente un algoritmo simmetrico su entrambi i peer, ma richiederebbe una password complessa per essere archiviata su entrambi i dispositivi o ricordata da entrambi gli utenti.

    
risposta data 21.02.2017 - 22:13
fonte