Come assicurarsi che due messaggi siano della stessa parte

3

Devo verificare che due messaggi, provenienti da canali distinti, provengano dalla stessa origine:

  • senza sapere nulla sull'origine in anticipo
  • i canali sono a senso unico, solo un messaggio può essere inviato su ogni
  • il mittente può avere la chiave pubblica dei destinatari

Il mittente ha un numero casuale che li identifica. Apparentemente posso inviare l'ID crittografato con due diverse chiavi pubbliche, una per ogni canale? C'è un metodo più semplice? Stavo pensando a qualcosa come due funzioni commutative, f e g così che f (g (x)) == g (f (x)) ? Non ho bisogno di conoscere l'ID e sarebbe un po 'più sicuro se non lo facessi. Devo solo sapere che i messaggi provengono dallo stesso mittente.

    
posta Jan Hudec 21.06.2013 - 11:33
fonte

2 risposte

3

Il meccanismo più semplice a cui riesco a pensare:

  • Il cliente sceglie un valore casuale di grandi dimensioni come ID.
  • Crittografa i dati, contenenti l'ID, con le due chiavi pubbliche separate.
  • Invia ogni messaggio ai due canali diversi.
  • Il server verifica che entrambi gli ID siano uguali e che entrambe le firme siano corrette.

La tua sicurezza si basa su una combinazione della sicurezza del tuo codice asimmetrico (ad es. RSA) e della difficoltà a indovinare un ID. Se si utilizza un CSPRNG appropriato, gli ID 128 bit dovrebbero essere sufficienti.

    
risposta data 21.06.2013 - 12:52
fonte
2

Il secondo messaggio potrebbe contenere un hash crittografico del cleartext di (l'hash crittografico di) (qualsiasi informazione contenuta in) il primo messaggio, che è stato inviato crittografato con la chiave pubblica del destinatario.

Per sicurezza, questo dimostra solo che il Sender B ha avuto accesso al messaggio di Sender A, not che sono la stessa persona. Se Eve ottiene l'accesso al messaggio dopo che Bob lo ha ricevuto, può falsificare un nuovo messaggio che sembra provenire da Alice.

Se il mittente può preparare entrambi i messaggi in anticipo, può includere in ciascuno l'hash dell'altro, in modo che l'ordine di arrivo non sia importante.

Un'altra possibilità sarebbe quella di includere in ogni messaggio una chiave privata o pubblica dalla stessa coppia di chiavi ad hoc . Questo può dimostrare che il mittente A e il mittente B condividono la stessa coppia di chiavi, ma richiede che i messaggi vengano inviati crittografati; altrimenti, Eva potrebbe ad es. manomettere il primo messaggio, sostituire la chiave privata con uno dei propri dispositivi e falsificare un secondo messaggio con la chiave pubblica corrispondente.

    
risposta data 21.06.2013 - 12:54
fonte

Leggi altre domande sui tag