Come si fa a sapere quando un messaggio viene decodificato con successo? [duplicare]

4

In che modo le persone che decodificano i messaggi crittografati sanno di aver decodificato il messaggio corretto? Continuano a decifrare fino a quando il messaggio non è in inglese (o in qualsiasi altra lingua) oppure esiste un metodo standard comprovato che dice che quando un determinato algoritmo viene applicato a un messaggio crittografato, il messaggio originale viene riprodotto?

Stavo proprio pensando a questo oggi e mi ha colpito il fatto che è possibile nascondere un messaggio all'interno di quello che sembra essere il messaggio reale, che potrebbe essere inteso per eliminare chiunque stia tentando di decifrare il messaggio crittografato senza conoscendo la tecnica di crittografia. Quindi, con questa nuova intuizione, è quasi impossibile decidere se il messaggio decodificato è l'originale o un altro enigma. È una cosa o mi sto perdendo qualcosa?

Modifica:

Ritengo che dovrei limitarlo a un'istanza specifica, in modo che le risposte siano meno ampie. Nel caso di una guerra, quando una parte intercetta un messaggio / trasmissione crittografato, è sempre garantito che il messaggio decrittografato sia il messaggio originale [prima della crittografia]? Supponiamo che tu abbia un lavoro di decodifica dei messaggi intercettati e che venga dato un messaggio cifrato intercettato destinato al nemico, come inizieresti a decrittografarlo o scegliere un algoritmo che potrebbe farlo? È come un processo graduale che l'intero processo da A-Z dipende e ha dimostrato di funzionare?

Inoltre, come indicato da una delle risposte, come sapresti che il nemico sta inviando le coordinate crittografate o un messaggio? O è la stessa tecnica di decrittografia utilizzata universalmente? In sostanza, gli esseri umani sono così prevedibili che qualsiasi tecnica di crittografia sviluppata segue un modello predefinito (risposta con schema o collegamento)? Spero che questo sia sufficiente per impostare alcune nuove risposte sulla strada giusta.

    
posta smac89 12.05.2014 - 06:11
fonte

5 risposte

2

Sono sicuro che la risposta reale -non così utile- è "dipende", ma penso che tu sia sulla strada giusta qui:

Un buon modo per iniziare è rilevare i caratteri ASCII (assumendo, è un messaggio di testo in ASCII), o un'intestazione del file (se il tipo di file è noto), o un campione "conosciuto", essendo una sequenza di caratteri ( pensa intestazioni TCP / IP, tag XML, ...).

Nei cyphers deboli (come XOR o qualsiasi altra cosa simile a Caesar), puoi rilevare i pattern, che se sostituisci con un altro valore, puoi provare a ricavare la chiave, o parti di essa.

Questa è ovviamente una versione semplificata, Cryptanalysis è un campo molto vasto e, in nessun caso, sono un esperto di esso.

    
risposta data 12.05.2014 - 07:58
fonte
2

Penso che tu stia facendo due domande molto diverse:

  1. Come faccio a sapere che una sequenza specifica di byte contiene un messaggio (vale a dire che è sintatticamente corretto)?
  2. Come faccio a sapere che tale sequenza porta un messaggio significativo (cioè che semanticamente è corretto)?

Ad esempio, supponiamo che un messaggio in chiaro possa contenere solo i simboli a e b (per mantenere le cose semplici). Decifri con successo due messaggi cifrati e finisci con le sequenze aba e abbbba .

Sono, in senso stretto, "decifrati con successo". Tuttavia, questo non ti dice nulla sul loro significato .

In altre parole: la sintassi della stringa decrittografata è corretta (contiene i simboli a e b ), ma la loro semantica è ciò che fa la differenza. Nel nostro caso particolare abbbba è una stringa palindromo, cioè una stringa che può essere letta in entrambe le direzioni. Questo aggiunge un altro bit di informazioni che non è incorporato nella sintassi.

Torna alla tua domanda originale:

I was just thinking about this today and it struck me that it is quite possible to hide a message inside what seems to be the actual message,

Ciò di cui stai parlando è steganografia e in modo simile ibile negabilità .

In particolare, se poniamo la tua domanda nel dominio della crittografia del disco e dei filesystem, una bella implementazione è il Volumi nascosti di TrueCrypt :

The principle is that a TrueCrypt volume is created within another TrueCrypt volume (within the free space on the volume). Even when the outer volume is mounted, it should be impossible to prove whether there is a hidden volume within it or not*, because free space on any TrueCrypt volume is always filled with random data when the volume is created** and no part of the (dismounted) hidden volume can be distinguished from random data. Note that TrueCrypt does not modify the file system (information about free space, etc.) within the outer volume in any way.

    
risposta data 12.05.2014 - 13:41
fonte
1

Questo mi ricorda una sfida che ho avuto una settimana fa in cui dovevo trovare una chiave AES di un testo cifrato. Uno dei problemi era quando avrei saputo che la chiave è corretta quando l'ho colpita?

Quello che ho fatto è che ho capito una parola che era sicura in quel messaggio: "Congratulations" o "the" or "a" .. hai capito l'idea.

C'era un altro fatto interessante in AES: i byte di riempimento. Il sistema AES CBC aggiungerà 0xff come primo byte, seguito da 15 byte di 0x0f padding (questo probabilmente non è solo AES ma altri sistemi di crittografia)

Un altro modo: sarebbe cercare il testo in chiaro con la maggior parte di ASCII stampabile (caratteri da 32 (spazio) a 126 (tilde ~)) in esso poiché gli altri candidati saranno solo dati inutili.

Quindi di nuovo se li cerchi, indicherà anche una possibilità di avere il messaggio originale.

    
risposta data 12.05.2014 - 09:42
fonte
1

Solo utilizzando la crittografia non puoi sapere se il tuo testo cifrato è stato correttamente decrittografato o meno. Quello che ti serve è una certa fornitura di integrità.

L'integrità può essere fornita contro errori accidentali o attacchi intenzionali con checksum o funzioni MAC rispettivamente.

Un altro aspetto da sapere è che non tutte le crittografie sono in "lingue". Diciamo, se ti aspetti un valore casuale (ad esempio una chiave crittografica) ... Come faresti a sapere se hai decifrato quello corretto?

    
risposta data 12.05.2014 - 12:45
fonte
0

Non penserei che sia possibile senza garantire un controllo di integrità, purtroppo l'unico modo in cui riesco a pensare sono le popolari offerte PKI. Suppongo che i checksum non siano disponibili perché avrai comunque bisogno del file originale per confrontarlo o trovare un modo per comunicare il valore di checksum.

Stabilisci una comunicazione di sessione sicura utilizzando il metodo della chiave asimmetrica e generando un segreto principale (ad esempio SSL per es.), quindi utilizza la chiave simmetrica per comunicare. Il mittente crittografa i dati con la chiave, invia i dati crittografati tramite il canale protetto. Il destinatario decodifica i dati. È così, il ricevitore saprà che il messaggio decrittografato è accurato a causa delle disposizioni che PKI offre: integrità, non ripudio, ecc.

    
risposta data 12.05.2014 - 14:01
fonte

Leggi altre domande sui tag