Come sapere se un file è decifrato o meno

36

Per la scuola, devo fare un esercizio in cui devo decodificare i file con un attacco di forza bruta.

Ci sono molti file differenti in diversi formati di file. I file sono stati crittografati usando XOR o l'algoritmo caesar.

So come provare ogni possibile chiave per decrittografare i file, ma come faccio a sapere se il file viene decodificato con il tasto giusto o no?

    
posta juan michelle 08.04.2016 - 16:45
fonte

7 risposte

52

Davvero non puoi, se stai solo criptando / decodificando il testo.

Se sai che la stringa crittografata è "kdo" e il metodo di crittografia è uno spostamento di Caesar, il testo in chiaro potrebbe essere semplicemente "IBM" come "HAL". Dovresti avere un'idea di ciò che il testo in chiaro "sembra". Ad esempio, se sai che il testo in chiaro è il nome di un personaggio di Stanley Kubrick, avresti un'idea decente su quale dovrebbe essere.

Se hai una stringa più lunga, è molto più semplice restringere le cose. Un grande file di testo ha molti meno risultati comprensibili rispetto all'esempio di tre caratteri sopra. Ma dovrai comunque determinare se è decodificato da solo.

D'altra parte, se decifri un intero file in un formato specifico (.docx, ecc.), puoi essere ragionevolmente sicuro che il file viene decifrato se il programma di analisi (Word, ecc.) può leggerlo.

    
risposta data 08.04.2016 - 16:56
fonte
18

Puoi assolutamente dire con vari gradi di certezza se un file, o anche una stringa, è stato decrittografato con successo. La maggior parte delle sfide nei criptopali dipendono da questo . Ho iniziato a creare uno strumento per crittografare bruteforce e analisi che automatizza proprio questo compito. Puoi trovarlo qui se vuoi dare un'occhiata.
(ha bisogno di molto ripulire, non giudicarmi)

Il mio obiettivo originariamente in questo progetto era di migliorare la mia efficienza nelle sfide crittografiche CTF con un semplice strumento a forza bruta, ma sto iniziando a lavorare per implementare molte più analisi. Così com'è, può rinforzare tutto il caesar, XOR a singolo byte, atbash e alcune codifiche, con XOR a tasto ripetuto sviluppato ma non ancora integrato.

Il modo in cui funziona ora

  • accetta la stringa o il file cifrato di stringhe di testo cifrato delimitate da nuova riga
  • tenta di decrittografare con l'intero spazio delle chiavi delle crittografie supportate
  • dopo ogni tentativo di decrittografia, esegue una funzione di rilevamento su testo chiaro per determinare se il testo decrittografato è in inglese
  • mostra le ipotesi più probabili

L'unica cosa che rende complicato questo processo è come le soglie per il rilevamento inglese devono essere regolate in base alla lunghezza del ciphetext. Il valore predefinito è richiedere che il 60% del testo in chiaro sia costituito da parole e il 75% del testo in chiaro sia costituito da lettere per registrare una corrispondenza. Questa impostazione raramente fornisce falsi positivi, e anche meno frequenti falsi negativi, su testi chiari di lunghezza medio-lunga (qualsiasi cosa su poche stringhe). Tuttavia, quando vengono utilizzati in cifrari a breve durata, alcuni falsi positivi si apriranno e molti falsi negativi saranno superati. Nel test, ho dovuto abbassare le soglie del 30% o più per rilevare una corrispondenza su alcune stringhe corte e nel processo generare molti più falsi positivi che devo setacciare per trovare la corrispondenza reale.

Raccomando vivamente di utilizzare le sfide dei criptopals fin dall'inizio se sei interessato a saperne di più sulla creazione di oracoli e sulla rottura della crittografia. Inizia facile e progredisce negli attacchi del mondo reale, come fare un Oracle di Bleichenbacher , parte di ciò che rende DROWN lavoro di attacco.

tl; dr

è necessario creare un modulo che rilevi l'inglese e applicarlo al risultato di ogni tentativo di decrittografia. o solo fork mine e renderlo migliore.
nei casi in cui il testo non è inglese o un'altra lingua, è necessaria un'analisi più avanzata.

    
risposta data 10.04.2016 - 12:58
fonte
10

Se hai un'idea di cosa sia il testo in chiaro, puoi usare quella congettura di conoscenza quando potresti aver violato il testo cifrato.

Se pensi che il testo in chiaro sia l'inglese, ad esempio, inizia a cercare le parole inglesi nel tuo tentativo di decrittografia.

Se pensi che il testo in chiaro sia un file zip, i file zip hanno una firma all'inizio del file. Cerca quella firma.

Se ritieni che il testo chiaro sia un'e-mail, cerca le intestazioni delle email rivelatrici.

In generale, puoi provare a cercare il "contenuto informativo" del tentativo di decrittografia. Normalmente il testo normale ha un contenuto informativo inferiore rispetto al testo cifrato, sebbene ciò non sia vero per un semplice codice cesareo.

Ma è necessario iniziare con un po 'di inchiostrazione di ciò che potrebbe contenere il testo in chiaro, anche se (come sopra) è semplicemente "un punteggio di contenuto informativo inferiore rispetto al testo cifrato".

    
risposta data 08.04.2016 - 20:26
fonte
7

Le altre risposte qui sono eccellenti per il caso generale. Per un compito in classe, sospetto che i professori vogliano rendere molto facile capire quando hai il file decrittografato.

Ad esempio, i file che decifri sono file di testo che mostrano un messaggio quando vengono decifrati correttamente? In tal caso, puoi prendere un dizionario nella tua lingua e controllare se una grande proporzione delle parole nel messaggio sono nel dizionario. Se si sta usando l'inglese, direi che una soglia del 50% delle parole è in un dizionario inglese come un buon numero da usare - un file decrittografato in modo errato sarà quasi del tutto privo di senso, ma non si vuole ignorare il testo in chiaro corretto se ha poche parole, come nomi propri o gergo tecnico, che non si trovano nel tuo dizionario.

    
risposta data 09.04.2016 - 01:00
fonte
2

Se il file crittografato è un testo, devi controllare se le frasi all'interno del file hanno o meno senso, ma se hai bisogno di scoprire qualcosa che non è una parola o una frase (es. password o lettere casuali) deve provare tutte le diverse possibilità. Ad esempio, ho una password di accesso (lettere casuali) crittografata con il codice Caesar. Devo provare, nel peggiore dei casi, tutte le 26 possibilità (supponendo che stiamo usando l'alfabeto internazionale in minuscolo) per verificare se la password è corretta.

    
risposta data 08.04.2016 - 16:55
fonte
1

Molti formati di file iniziano con un numero magico (una sequenza di byte) che puoi cercare. Wikipedia ha una lista.

    
risposta data 11.04.2016 - 10:19
fonte
0

Altre risposte hanno coperto la maggior parte degli aspetti, ma un altro punto è che, se si ha accesso all'API che ha creato i file crittografati, è possibile crittografare il proprio file noto e forzare bruto (qui avere qualcosa contro cui confrontare)

Una volta ottenuta la chiave, utilizzala sugli altri file.

    
risposta data 08.04.2016 - 20:32
fonte

Leggi altre domande sui tag