Come posso verificare se alcuni dati sono veramente la controparte decrittografata di una sequenza di byte?

3

Più in dettaglio: voglio creare un proxy che riceve i dati decrittografati da un client ed è in grado di verificare che questi dati siano ciò che un server di origine ha inviato al client.
Ad esempio, un client stabilisce una connessione con un server HTTPS, proxy attraverso questo proxy. Il client invierà al proxy alcune risposte web provenienti dal server Web di origine, che a sua volta dovrà decidere se quelle sono in realtà la versione non crittografata dello stream che potrebbe osservare in precedenza (crittografato).

    
posta alvatar 30.10.2016 - 23:29
fonte

3 risposte

2

Questo non è possibile.

L'unico modo conosciuto per verificare se il testo cifrato e il testo cifrato corrispondono (con un algo moderno come AES) è quello di crittografare / decodificare, e per questo la chiave è necessaria. (Ancor di più, non esiste un modo noto per decidere se il testo cifrato è realmente dati crittografati (dati qualsiasi) o semplicemente spazzatura casuale.)

    
risposta data 30.10.2016 - 23:38
fonte
1

Decripta e confronta

In un cryptosystem appropriato, avere un candidato in testo normale non dovrebbe e non aiuta significativamente a decrittografare un messaggio - o puoi decodificarlo con le chiavi appropriate, oppure non puoi.

Inoltre, ci possono certamente essere cryptosystems in grado di fornire più opzioni di decrittografia valide e significative per chiavi diverse. Non è il caso del protocollo HTTPS comune, ma ci sono sistemi di crittografia denigrati per la crittografia e la messaggistica del disco rigido. In quel caso, non puoi nemmeno fare questa verifica avendo una chiave appropriata che decrittografa il testo cifrato sul testo in chiaro che hai; poiché potrebbe anche avere un altro messaggio crittografato.

Tuttavia, per il proxy HTTPS, è necessario decrittografare i dati acquisiti con la chiave di sessione appropriata e confrontare i risultati, oppure, in modo simmetrico, crittografare il testo in chiaro noto con quella chiave di sessione e confrontarlo con il testo cifrato atteso. L'ottenimento della chiave di sessione viene lasciato come esercizio per il lettore.

    
risposta data 31.10.2016 - 00:52
fonte
1

Come menzionato in altre due risposte, non puoi decrittografare i messaggi senza conoscere le chiavi. Inoltre, potresti incontrare problemi etici se utilizzi questo design al di fuori del tuo esperimento.

In base ai tuoi commenti, vuoi assicurarti che il client non possa negare di aver decrittografato loro testo se lo hanno fatto con successo. Questo non è davvero possibile nemmeno per arrivarci. Supponendo che tu (il proxy) sia stato in grado di decodificare il testo proveniente dal server, se non ti fidi del client non puoi fidarti di loro per inviarti il testo corretto decrittografato per la verifica.

Nel tuo caso, il modo più sicuro sarebbe quello di testare correttamente il proxy e poi chiedere i log ogni volta che il client si lamenta di non essere in grado di decodificare il testo.

    
risposta data 01.11.2016 - 15:16
fonte

Leggi altre domande sui tag