Implementazioni del protocollo del segnale: autenticazione e ispezionabilità della chiave di pub? (Allo, WhatsApp, FB messenger, Signal)

4

Una parte fondamentale del Protocollo del segnale , utilizzato da Google Allo, WhatsApp, Facebook Messenger e Signal, tra gli altri) è un'infrastruttura a chiave pubblica. Le chiavi pubbliche sono necessarie per impostare le sessioni. Per quanto posso vedere, non specifica un modo per autenticare le chiavi. Vale a dire, quando Alice organizza una sessione con Bob, come può essere sicura di ricevere la sua chiave pubblica e quella di nessun altro?

In secondo luogo, supponendo che la domanda di cui sopra abbia una risposta soddisfacente, possiamo controllare cosa succede sul filo? Cioè, Alice (avendo accesso alle sue chiavi private) può esaminare il protocollo sul filo, estrarre la chiave pubblica di Bob e autenticarlo a mano (impronte digitali, chiamare Bob e chiedergli di confrontare)?

Questo probabilmente differisce per implementazione, immagino. Per prima cosa, non vedo una risposta nel panoramica sulla crittografia di WhatsApp whitepaper. Quindi, come viene implementato?

In un contesto più ampio la vera domanda è ovviamente: fino a che punto dobbiamo fidarci delle implementazioni, cioè i fornitori di servizi? Onestamente, è strano per me che ci sia così tanto clamore su questi servizi che sono criptati end-to-end; mi sembra (NON è un esperto del protocollo!) che sia abbastanza facile per i fornitori di servizi origliare, se lo desiderano. Potrebbero non volerlo o volerlo, ma per chiunque sia sufficientemente importante la privacy, è comunque una responsabilità.

    
posta Evert Lammerts 12.10.2016 - 22:33
fonte

2 risposte

2

when Alice sets up a session with Bob, how can she be sure she receives his public key and nobody else's?

Al momento non può. (Una domanda migliore sarebbe stata: come può Alice essere sicura che il client usi la chiave pubblica di Bob per configurare la sessione, e non uno di un utente malintenzionato?) Il white paper sulla sicurezza di WhatsApp dice:

Per l'autenticazione, gli utenti possono confrontare manualmente le impronte digitali delle chiavi pubbliche attraverso un canale esterno.

Ci sono due problemi con questo:

  • Alice deve fare affidamento sul client per generare l'impronta digitale della chiave pubblica / codice QR. Potresti vedere il problema affidandoti al client per verificare che il client stia utilizzando le chiavi corrette.
  • Il che ci porta al secondo problema: anche se Alice può impronta digitale della chiave pubblica che il client memorizza per Bob senza usare il client, allora come può essere sicura che il client usi la chiave questo quando lei comunica con Bob, invece di es usando la chiave pubblica di qualche utente malintenzionato? Verificare il protocollo sul filo è ciò che è necessario qui. Anche il client closed source non semplifica le cose.

can we check what happens on the wire?

Non per quanto ne so. Nel thread Reddit relativo a questa domanda, un commentatore rileva una documentazione migliore per il Protocollo segnale sarà pubblicato presto . Speriamo che questo possa aiutare. Ma ciò di cui abbiamo veramente bisogno sono istruzioni dettagliate sulla verifica del traffico.

to what extent do we need to trust the implementations, i.e. the service providers?

Prima di tutto, per quanto posso vedere, il protocollo Signal include praticamente tutto ciò che è richiesto da un protocollo di crittografia per configurare canali e2e sicuri. Se lo scambio di chiavi diventa mai sicuro, abbiamo tutti gli ingredienti necessari per la comunicazione e2e.

Ma con le attuali implementazioni non siamo ancora arrivati.

Quindi, come risposta a questa domanda, direi che dovremmo assumere che la segretezza dei nostri messaggi di chat dipende interamente dalla buona volontà dei fornitori di servizi.

    
risposta data 19.10.2016 - 15:21
fonte
0

In questo momento dobbiamo avere fiducia nell'implementazione in esecuzione su piattaforme binary only e in nessun modo reale per garantire che tutta la crittografia, i certificati e la casualità siano gestiti correttamente all'interno di questi sistemi "binari consegnati". La mia convinzione è che ciò che viene creato su iOS o Android e altri, non può essere considerato attendibile e tutta la crittografia end-to-end è inutile perché la sicurezza del punto finale non riesce in grande tempo. A causa di "conosciuti sconosciuti" all'interno di questi sistemi operativi.

Ho contribuito al progetto in cui abbiamo creato un dispositivo di crittografia esterno da utilizzare con Apple o Android. Compiliamo il kernel di Linux 4.8, le librerie e la crittografia e2e (con PKI gestito dall'utente) dall'albero di origine 100% e sostituisce la fiducia con un'implementazione corretta e capace di auditing. Questo, credo, è solo un modo per affrontare la risposta a questa domanda.

Quindi esegui la crittografia prima che colpisca telefoni e reti, dominio totalmente non attendibile.

    
risposta data 18.10.2016 - 19:30
fonte