Intermediazione sicura dei messaggi

0

Supponiamo che ci siano i sistemi A, B e C.

A ha una relazione di fiducia * con B e B ne ha una con C. Come può B intermediare una richiesta da A a C mentre ancora fornisce sia A che C la garanzia che stiano parlando tra loro?

Alcune opzioni che ho considerato:

  • A può condividere una passkey con C e tale chiave può essere utilizzata per crittografare i messaggi prima che vengano inviati a B e decifrati quando raggiungono C.

* = Significa che sono collegati tramite una connessione affidabile non specificata.

    
posta David Reis 23.02.2012 - 22:41
fonte

1 risposta

2

Prima di tutto, quando si dice che X e Y hanno una relazione di fiducia, di solito implica che X si fidi di Y e viceversa. Questo non è necessariamente a che fare con la qualità o le garanzie del collegamento tra di loro. Non sto solo dicendo questo per correggere la tua definizione, ma perché questa relazione fiducia è importante.

Se nel tuo caso, A si fida di B, e C si fida anche di B, quindi sia A sia C dovrebbero credere che B consegna i messaggi che hanno inviato senza modifiche. Esistono molti esempi di crittografia che utilizzano trusted 3rd party per esattamente questo tipo di cose.

Se tuttavia, non c'è fiducia in B. Solo una fiducia nella sicurezza dei link a / da B, quindi è una storia diversa.

Probabilmente la crittografia non è ciò di cui hai bisogno qui o non SOLO di ciò che ti serve. Se A e C condividono una chiave e crittografano i messaggi tra loro (tramite B), B non sarà in grado di leggere i messaggi, ma nulla gli impedirà di modificare messaggi. Alcune volte è possibile apportare modifiche al messaggio crittografato. Ad esempio, se crittografo un messaggio "Ti devo $ 1000", potrebbe essere possibile che B aggiunga elementi al messaggio, quindi dopo la decifrazione sembra "ti devo $ 10000" o cambiarlo in "ti devo $ 9000" ( ad es. attacco di bit flipping ). Ho scritto un piccolo post sul blog che descrive questo equivoco in modo un po 'più dettagliato, nel caso in cui ti interessa.

Se vuoi proteggere il messaggio contro la modifica , dovresti prendere in considerazione l'utilizzo di qualche tipo di Autenticazione dei messaggi Codice (MAC) . In genere, probabilmente vorrai utilizzare HMAC - che utilizza una funzione di hash sicura per generare il MAC. Questo è come una firma sul messaggio. Anche la modifica più piccola invalida questa firma, quindi può essere rilevata. Senza conoscere la chiave tra A e C, B non può falsificare questa firma.

Ora nulla ti impedisce di usare Crittografia + Firma. Ciò garantirà sia che quei messaggi non possano essere letti né modificati.

Tenendo presente tutto ciò, ti esorto ancora a non sviluppare / costruire la tua soluzione, ma piuttosto a trovare un protocollo adatto o almeno una libreria / pacchetto che fornisce quel tipo di meccanismi.

    
risposta data 23.02.2012 - 23:31
fonte

Leggi altre domande sui tag