Per chi ha una chiave e un testo cifrato, è possibile scoprire quale algoritmo di crittografia è stato utilizzato?

4

Per qualcuno che ha una chiave e un testo cifrato, è possibile scoprire quale algoritmo di crittografia è stato utilizzato?

    
posta Jahongir 20.12.2013 - 02:45
fonte

4 risposte

8

Per scoprire quale metodo di crittografia è stato utilizzato, la prima cosa che puoi fare è esaminare la lunghezza della chiave e del testo cifrato al fine di limitare e classificare la probabilità dei possibili candidati:

  • Con una dimensione di n bit, ovviamente solo gli schemi di crittografia applicano le chiavi di supporto di queste dimensioni. Ad esempio: se n è 168, si può essere certi che il codice a blocchi 3DES sia usato (non si conosce ancora la modalità operativa, però); se n è uguale a 128 o 256, l'elenco dei codici probabili è un po 'più lungo.
  • Se la lunghezza del testo cifrato è un multiplo di 128 bit (uno scenario comune), c'è una buona probabilità che un cifrario a blocchi che utilizza questa dimensione di blocco (probabilmente AES) sia stato utilizzato nella modalità CBC estremamente comune. Quando la dimensione del testo cifrato non è un multiplo di 128 o 64 bit, puoi essere certo che stai guardando qualcosa crittografato con un codice di flusso o un codice a blocchi usando qualcosa come la modalità CTR o GCM.
  • Alcuni cifrari sono molto comuni (in particolare AES-CBC), provali prima.

Successivamente, puoi semplicemente provare i candidati uno per uno finché non ti ritroverai con un testo in chiaro che non sembra casuale senza senso. Se viene utilizzato uno schema di crittografia autenticato, non è nemmeno necessario consultare il testo in chiaro perché l'algoritmo ti dice quando è corretto.

Ovviamente avrai ancora bisogno di distinguere in qualche modo "random gibberish" da un vero testo in chiaro. Poiché il numero di schemi comuni di crittografia comunemente usati è piuttosto limitato, è probabilmente sufficiente stampare semplicemente il risultato della decrittografia in un file di testo e lasciare che sia umano a guardarli. Se si desidera verificare la presenza di testi in chiaro in modo automatico, sarà necessario utilizzare alcune informazioni sul materiale crittografato (ad esempio, che contenga un testo con codifica UTF-8 o che sia un'immagine JPEG) o eseguire alcuni semplici test statistico. Nota che probabilmente non ci riuscirai affatto se il testo in chiaro è in realtà una sequenza di byte generati casualmente non conosciuti da te.

Alcune questioni possono rendere questo processo più complicato: quasi tutti gli schemi di crittografia richiedono una IV o nonce che sono essenziali per decifrare il testo cifrato. Questo IV / nonce è probabilmente preposto o aggiunto al testo cifrato, ma in caso contrario potrebbe dipendere dal contesto del protocollo crittografico. Se davvero non hai idea di cosa possa essere l'IV / nonce, puoi sempre provare alcuni numeri piccoli, sperando che la numerazione delle sequenze sia usata per determinare la IV.

Si noti inoltre che i dati che si ritiene siano un testo cifrato potrebbero effettivamente contenere più dati crittografati. Oltre alla IV o nonce sopra menzionata, un MAC (messaggio di autenticazione del codice) o un tag di autenticazione potrebbe essere stato aggiunto o anteposto. Se viene aggiunto, probabilmente non sarà problematico; ma se il tuo testo cifrato inizia con esso potresti accidentalmente iniziare a decodificarlo e quindi offuscare il resto del testo in chiaro.

Ultimo ma non meno importante, ci sono anche codici a cascata: algoritmi di crittografia multipli con cui i dati vengono crittografati in successione. Se vuoi controllarli tutti (fino a un certo numero massimo di cipher usati), potrebbero far crescere significativamente il tuo spazio di ricerca. Tuttavia, nella pratica viene utilizzato solo un numero limitato di schemi di crittografia a cascata diversi, quindi questo probabilmente non sarà un grosso problema.

Se tutto questo fallisce, potrebbe accadere che venga utilizzato un codice oscuro di cui non si è a conoscenza. In questo caso puoi sperare che sia una criptata crittografia fai-da-te e puoi iniziare a provare ad eseguire alcune cryptanalys su di esso.

    
risposta data 20.12.2013 - 15:49
fonte
2

"Possibile" è la parola chiave. Risolvere enigmi di crittanalisi richiede tempo, risorse informatiche e competenze. La tua domanda riguarda anche l'efficacia dei costi. L'NSA, se ha urgentemente bisogno di una risposta, risolve il problema dichiarato? Non lo dicono, ma hanno miglia quadrate di risorse informatiche e molti esperti altamente qualificati. Potresti risolvere il problema? Dici di essere nuovo nella crittografia, presumo tu abbia forse uno o due personal computer, e stai risolvendo il problema per divertimento (non trarrai profitto risolvendolo). Quanto tempo sei disposto a dedicare a questo? Presumo solo una quantità limitata di tempo.

All'interno di questi parametri puoi tentare di decodificare il testo cifrato usando questo o quel software di crittografia e questo o quell'algoritmo, e possibilmente potresti essere fortunato. Forse no. Forse il testo cifrato è stato crittografato usando un algoritmo oscuro, o più di una volta. Nessuno lo sa.

Hai altre informazioni per far valere il problema? Ad esempio, sai che il testo è stato crittografato da tuo cugino Bob, sai che Bob usa PGP e Bob ti sta sempre raccontando cos'è un grande algoritmo Blowfish. Questo tipo di informazioni potrebbe semplificare l'attività a portata di mano.

C'è anche un forum di crittografia su StackExchange.

    
risposta data 20.12.2013 - 03:45
fonte
1

@AardvarkSoup fa un ottimo lavoro nel mostrare i modi in cui puoi diagnosticare l'algoritmo di crittografia dato una chiave e un testo crittografato.

Dato che uno studente sta chiedendo, farò anche notare che in pratica non c'è generalmente mistero. Diversi protocolli e standard gestiscono questo in modo diverso, ma il più delle volte c'è un formato per concordare l'utilizzo di un determinato meccanismo crittografico. SSL, ad esempio, ha una stretta di mano. L'e-mail crittografata avrà un'intestazione in chiaro. Nei sistemi primitivi, lo schema di crittografia può essere codificato su entrambe le estremità.

La filosofia generale è che l'unica cosa che deve rimanere segreta è la chiave. Non c'è nulla di segreto sul metodo di crittografia - dovrebbe essere OK per rivelarlo, quindi non c'è alcun valore per offuscarlo e ogni ragione per rendere più facile sui sistemi coinvolti nella trasmissione di informazioni.

Detto questo - l'obiettivo con il testo cifrato deve essere casuale. Mentre è possibile ottenere alcune informazioni dalla chiave, l'obiettivo è di fare in modo che il testo cifrato sia simile a una sequenza casuale di valori privi di significato che non fornirà alcuna indicazione sul contenuto. Quindi, se riesci a scrutare il testo cifrato e dire "questo sembra lo schema di encrpizione X", è fattibile temere che questa crittografia NON sia adeguatamente casuale ...

    
risposta data 21.12.2013 - 00:30
fonte
0

In generale, no senza informazioni aggiuntive come un file binario che può eseguire la crittografia o la decrittografia.

In pratica, probabilmente abbastanza spesso. Il metodo più semplice è prendere il testo cifrato, la chiave e l'elenco delle funzioni di decifrazione che si sospetta possano essere utilizzate e continuare ad applicarle al testo cifrato fino a ottenere qualcosa che (a) decodifica effettivamente (molte combinazioni di tasti cifrati e non essere in grado di decifrare), e (b) decifrare a testo in chiaro significativo. È possibile utilizzare cose come la lunghezza della chiave, ecc.

Ma ci sono un numero infinito di possibili schemi di crittografia che puoi escogitare, anche se c'erano solo alcuni primitivi crittografici fondamentali. Anche iniziando con una sola funzione di crittografia è AES-128, potresti fare un numero infinito di variazioni su di esso. È quindi possibile crittografare un messaggio con AES-128-CBC e crittografarlo nuovamente con la stessa chiave. Oppure potresti cifrarlo una volta, invertendo la chiave in senso bit-bit e ricodificandolo di nuovo. Oppure è possibile modificare la chiave con xor-ing con una stringa casuale specifica incorporata nell'algoritmo sulla seconda crittografia. Oppure inverti la prima metà della chiave, ma non la seconda metà, o interlaccia la chiave in qualche modo. Puoi cambiare la modalità di crittografia a blocchi da CBC a OFB, CTR, CFB, GCM, CCM, ecc. E ancora, poiché è possibile crittografare il testo cifrato con qualsiasi numero di applicazioni di AES (e potrebbe variare queste scelte in modo predeterminato), si ottiene un numero infinito di potenziali algoritmi di crittografia. Puoi modificare i parametri fissi di AES, cambiando il numero di dire da 10 a 13, o alterando la S-box di Rjindael, o il passo di mixcolumn, o ... (Certo, dovresti stare molto attento mentre lo fai, molti apparentemente benigni le modifiche indeboliscono drasticamente la sicurezza dell'algoritmo, ad esempio, gli S-box sono stati costruiti appositamente per resistere alla crittanalisi differenziale). E questo è solo iniziando con un tipo di funzione di crittografia, mentre in realtà ci sono molti spesso basati su principi completamente diversi. Non consiglierei mai di costruire il tuo cifrario, a meno che non fosse solo un progetto di giocattolo e hai pienamente riconosciuto quanto sia probabilmente insicuro.

Certo, l'idea del principio di Kerckhoffs è che la sicurezza dei tuoi dati dovrebbe essere basata esclusivamente sul mantenere la tua chiave segreta, indipendentemente dal fatto che gli hacker conoscano le tue funzioni di crittografia / decrittografia. È facile passare a una nuova chiave, ma è molto più difficile implementare le modifiche agli algoritmi esistenti quando ci sono dei difetti, specialmente se sono in uso e ampiamente distribuiti. Ad esempio, considera quanti web-server e browser Web utilizzano ancora i protocolli e modalità di SSL / TLS con difetti noti diversi anni dopo i difetti erano ampiamente pubblicati ).

    
risposta data 20.12.2013 - 21:23
fonte

Leggi altre domande sui tag