Se qualcuno interrompe la crittografia, come fanno a sapere che hanno successo?

36

Diciamo che ho un file contenente un gruppo casuale di bit e quindi lo crittografo utilizzando un algoritmo moderno (Blowfish, AES o qualsiasi altra cosa). Se qualcuno cattura il file e monta un attacco di forza bruta su di esso, come fanno a sapere di averlo decodificato con successo? Sarebbe ovvio se l'input originale fosse significativo, ma in questo caso l'input originale era solo un mucchio di byte casuali. Come faranno a sapere, se mai, che questo era il mazzo CORRETTO di byte casuali?

    
posta M. Evans 18.01.2011 - 04:56
fonte

8 risposte

30

Non lo farebbero. Il problema che hai descritto è ben trattato nell'articolo di Wikipedia su Distanza Unicity . Questo articolo si collega anche a di Bruce Schneier che potrebbe essere più accessibile.

    
risposta data 18.01.2011 - 05:02
fonte
12

Generalmente le persone non codificano la spazzatura casuale. Supponendo che lo abbiano fatto, un attacco con solo testo cifrato sarebbe impossibile.

Considera, tuttavia, che schemi crittografici comuni aggiungono al messaggio dati non casuali, come dati di riempimento e codici di autenticazione dei messaggi . In alcuni schemi, questi possono essere usati per verificare se una chiave indovinata è corretta.

    
risposta data 18.01.2011 - 09:59
fonte
5

In generale, non possono rompere la crittografia (se si cripta il file random (ad esempio la chiave segreta) o addirittura comprime il file) ma se lo sniffer ha qualche altro accesso al sistema mittente o ricevente, può fare un altro tipo di attacco, e può rompere la crittografia dei file casuali. leggi di più qui:

risposta data 18.01.2011 - 10:15
fonte
3

Se il testo chiaro è casuale, non lo sapranno. Tuttavia, la maggior parte dei tipi di file ha una sorta di struttura riconoscibile. Passando il blob A tramite l'algoritmo B con la chiave C si otterrà un output alcuni . Se quell'output ha una struttura, allora hai un vincitore.

    
risposta data 18.01.2011 - 09:36
fonte
2

Non lo fanno. TrueCrypt sfrutta questo fatto per offrire una negabilità plausibile attraverso "volumi nascosti": link

    
risposta data 18.01.2011 - 17:32
fonte
2

La tua domanda mi sembra duplice. Prima di tutto, un buon algoritmo di crittografia è indistinguibile dalla casualità. Quindi, nessuno distinguerà nemmeno il testo cifrato da dati casuali. Inoltre un testo cifrato falsamente decifrato sembrerà anche casuale. Pertanto, non sarà possibile trovare i dati casuali originariamente inseriti nel codice con una ricerca approfondita delle chiavi.

In secondo luogo il punto è che le persone di solito non forniscono dati casuali nel codice. Gli attuali standard di crittografia non coprono solo l'algoritmo ma anche i dati utilizzati. Le persone solitamente prestano e suffissano i tuoi dati sempre con una certa imbottitura e determinati metadati (gli schemi di crittografia hanno una lunghezza fissa. Dovresti in qualche modo specificare per quanto tempo il tuo testo è stato). Conoscere questi bit standard renderà ovviamente più facile la scelta tra la chiave giusta e quella sbagliata :) Mentre il padding serve per lo più a scopi pratici, può anche migliorare o persino garantire funzionalità di sicurezza (vedi attacco in chiaro in chiaro sul RSA di testo).

    
risposta data 23.03.2011 - 23:20
fonte
0

Se il file è unicode / ansi / etc, puoi fare qualche algoritmo per analizzare qualcosa come il primo 200 di un file e vedere se ci sono più caratteri latini di altri caratteri.

Ricordo che ero piuttosto seccato quando ho provato l'attacco di forza bruta XOR su un semplice esercizio di progetto eulero, ma era facile e dovevo solo cercare parole inglesi comuni.

Ho letto da qualche parte che nel software di crittografia, l'implementazione è molto importante, a volte più importante degli alorithms. Quando leggo questo, mi chiedo ancora se si parla di argomenti ovvi come i generatori di pseudo casuali, o piuttosto di dettagli meno ovvi come nascondere il formato del file che si cripta.

Ad esempio, se si cripta un file, se si tratta di un file PNG o GIF, assicurarsi di rimuovere il numero magico / stringa che contiene i formati di file e, se si tratta di un file di testo, non utilizzare una tabella ASCII : usa la tua tabella dei caratteri, ad esempio, metti tutto il carattere latino a 0, i numeri a 245-255 e così via. potresti anche permutare, o rot13, o altro.

Algoritmi come AES o Blowfish / TwoFish sono "matematicamente" sicuri, perché è stato dimostrato che nessun attacco DIVERSO DI BRUTEFORCE è stato testato abbastanza efficiente: puoi solo decifrare il testo trovando la chiave effettiva.

Ma quegli algoritmi sono solo teoricamente efficienti, DEVI implementarli considerando altri fattori di pratica come la dimensione del file, l'uso della compressione, la codifica del testo ecc.

Ad esempio, sappi che sarebbe semplicemente stupido archiviare il nome del file in testo normale accanto al tuo file criptato.

    
risposta data 18.01.2011 - 17:41
fonte
0

Oltre all'approccio teoricamente ignorante di alcuni "professionisti" sul campo, c'è una risposta piuttosto semplice alla tua domanda: confrontando i "risultati della decifrazione della forza bruta" con cose ovvie ai fini della categorizzazione.

Permettetemi di darvi esempi pratici: i file di testo conterranno molto probabilmente "stop words" ( link ). Trova più di una parola di stop dopo la decodifica e probabilmente hai decodificato del testo con successo.

I file multimediali come le immagini e la maggior parte degli altri tipi di file (audio, video, ecc.) hanno intestazioni specifiche, rendendo piuttosto semplice l'identificazione del tipo di dati. Pensi di aver decodificato un jpeg perché hai rilevato un'intestazione simile? Controlla il formato del file. Sembra che sia corretto? Probabilmente hai decifrato con successo un file multimediale jpeg.

Potrei fornire libri di esempi ... ma io so cosa intendo adesso, vero? ;)

Il resto equivale a un po 'di "verifica umana" in modo da sapere quando smettere di forzare brute-forzando qualsiasi cosa tu stia cercando di decodificare.

È pratico? No. Ma può essere fatto se codificato correttamente e rende il lavoro più semplice. L'ho visto in azione più volte; non solo in un ambiente aziendale.

    
risposta data 27.12.2011 - 12:58
fonte

Leggi altre domande sui tag