Algoritmo della forza bruta per rompere la chiave simmetrica. Come trovare il programma quando la chiave corrente è quella corretta?

3

In un programma di forza bruta, le chiavi sequenziali vengono testate contro la chiave pubblica per trovare la chiave privata corrispondente.

La mia domanda è: come viene eseguito il test con ciascun tasto che ti consente di concludere che hai trovato la chiave corretta da inserire nel testo crittografato?

Suppongo che il testo venga letto dopo ogni test e se vengono trovate alcune parole chiave si sa che questa è la chiave corretta, ma se è così, è facile contrastare questa tecnica mescolando il testo con un algoritmo di crittografia tradizionale e poi con la chiave simmetrica.

    
posta Rogelio 26.01.2017 - 11:56
fonte

2 risposte

4

Idealmente è necessario avere un'idea di ciò che stai cercando, ma nella maggior parte delle situazioni il tuo testo in chiaro dovrebbe essere relativamente facile da distinguere. Ad esempio, potresti essere in grado di identificarlo perché contiene parole / grammatica in lingua inglese o, ad esempio, un formato di file noto.

Distanza unicita

Se il testo cifrato è abbastanza breve, il problema potrebbe essere che esiste più di un testo in chiaro valido per un singolo testo cifrato, sebbene solo uno di questi sia il messaggio previsto. Le chiavi valide aggiuntive sono false. Questo è il concetto di 'distanza di unicita': la lunghezza di un testo cifrato è necessaria in modo tale che non ci siano chiavi spurie.

Consider an attack on the ciphertext string "WNAIW" encrypted using a Vigenère cipher with a five letter key. Conceivably, this string could be deciphered into any other string — RIVER and WATER are both possibilities for certain keys. This is a general rule of cryptanalysis: with no additional information it is impossible to decode this message.

link

Nel caso in cui ci siano chiavi false, hai bisogno di un'idea ancora più specifica di ciò che stai cercando (ad esempio parole chiave come hai suggerito).

Altrimenti, come attaccante, hai bisogno di un testo cifrato sufficiente a soddisfare la distanza di unicita per essere sicuro.

For DES, the unicity distance is 8.2 bytes. For 128-bit ciphers, it is about 19 bytes.

This means that if you are trying to brute-force DES you need two ciphertext blocks. (DES's block length is 8 bytes.) Decrypt the first ciphertext block with one key after another. If the resulting plaintext looks like English, then decrypt the second block with the same key. If the second plaintext block also looks like English, you've found the correct key.

link

Obscuring The Plaintext

Ulteriormente offuscando il testo in chiaro, come hai suggerito, potrebbe quindi essere efficace in teoria purché l'attaccante non avesse la necessaria conoscenza di informazioni privilegiate e non stavano controllando l'offuscamento. Questo deve essere attentamente considerato, perché l'aggressore potrebbe aver trovato con successo la chiave corretta, ed è solo una questione di identificazione di ciò che hanno fatto.

Inoltre, dobbiamo considerare che alcuni (o molti) metodi di oscurità potrebbero essere identificabili. Qualcosa di banale come la codifica Base64 sarebbe banale da identificare e facilmente programmabile come controllo. Anche se il testo in chiaro era in realtà un altro testo cifrato, ci sono potenzialmente tecniche per identificare anche questi (anche se non sono banali) (ad esempio link ).

Di conseguenza, anche se questo ha il potenziale per rendere la vita di un aggressore più difficile, è l'oscurità piuttosto che la sicurezza, e mi piacerebbe comunque garantire che il livello di crittografia fosse adatto allo scopo anche se il testo in chiaro non fosse oscurato. non pensare che dovrebbe essere invocato come parte del meccanismo di sicurezza.

    
risposta data 26.01.2017 - 12:40
fonte
1

Devi controllare il contenuto del blocco di prova decrittografato. Dipende dal suo contenuto, come farlo.

Nel migliore dei casi, contiene alcuni dati di checksum o crc (è particolarmente utile per decifrare i dischi rigidi - la tabella delle partizioni msdos contiene per impostazione predefinita un checksum).

In alternativa, devi fare qualcosa di diverso. In genere, puoi controllare intestazioni o altri formati. Nella maggior parte dei casi non è così difficile.

La probabilità di un controllo positivo su un blocco di dati casuali dovrebbe essere significativamente inferiore, come la probabilità di trovare la chiave con una ricerca casuale. Cioè se disponi di un codice a 256 bit, i controlli dovrebbero dare un risultato positivo con P << 2^-256 su dati casuali.

Il codice di prova dovrebbe essere veloce , perché verrà eseguito una volta dopo ogni decodifica del blocco.

    
risposta data 26.01.2017 - 12:28
fonte

Leggi altre domande sui tag