Quando sento dei metodi per violare gli algoritmi di crittografia, noto che ci si concentra spesso su come decodificare molto rapidamente e su come ridurre lo spazio di ricerca. Tuttavia, mi chiedo sempre come sia possibile riconoscere una decifrazione efficace e perché questo non costituisce un collo di bottiglia. Oppure si presume spesso che sia nota una coppia crittografata/decifrata?Non è difficile riconoscere una decrittazione corretta?
risposta
Nella crittografia assimetrica di solito si ha accesso alla chiave pubblica. Pertanto, qualsiasi decodifica di un testo cifrato crittografato può essere re-crittografata utilizzando la chiave pubblica e confrontata con il testo cifrato originale, rivelando così se la decrittografia ha avuto successo.
Lo stesso vale per la crittografia simmetrica. Se pensi di aver decrittografato un codice, devi anche pensare di aver trovato la chiave. Pertanto, è possibile utilizzare tale chiave per crittografare il testo, presumibilmente corretto, decrittografato e verificare se il risultato crittografato è identico al testo cifrato originale.
eccetto per la crittografia simmetrica, qualsiasi tasto si comporterà in questo modo ... –
La tua osservazione non è davvero utile per la crittografia simmetrica, dato che hai usato la tua chiave per generare il decrittografato testo: ovviamente sta per coincidere quando lo usi per crittografare di nuovo. Si consideri il caso estremo di un blocco temporaneo; per un determinato testo cifrato puoi indovinare le chiavi che ti daranno * qualsiasi * testo in chiaro della lunghezza corretta e tutte saranno correttamente crittografate con successo al ciphertext corretto :). –
I due precedenti commenti mostrano che questa è la risposta non è corretta, purtroppo. –
Da Cryptonomicon:
Esiste un compromesso tra i due estremi, da un lato, non conoscendo nessuna delle chiaro a tutti, e, dall'altro, sapendo tutto questo . Nel Cryptonomicon che ricade sotto la voce di presepi. Una greppia è una supposizione istruita per sapere quali parole o frasi potrebbero essere presenti nel messaggio . Ad esempio se si era decifrare messaggi tedeschi da World War II, si potrebbe supporre che il testo in chiaro includa la frase "HElL HITLER" o "SIEG HElL." È possibile selezionare una sequenza di dieci caratteri al numero e dire "Supponiamo che questo sia rappresentato da HEIL HITLER. Se questo è , cosa significherebbe sul resto del messaggio?"
...
Seduto nel suo ufficio con i intercettazioni Arethusa freschi, è andato a lavoro, utilizzando FUNERAL come un presepe: se questo gruppo di sette lettere decifra a FUNERAL , quindi che aspetto ha il resto del messaggio? Gibberish? Ok, che ne dici di questo gruppo di sette lettere ?
Per la crittografia simmetrica in cui la lunghezza della chiave è inferiore alla lunghezza del testo cifrato, è garantito che non si è in grado di produrre tutti i possibili testi in chiaro. Probabilmente puoi indovinare quale forma assumerà il tuo testo normale, in una certa misura - probabilmente saprai se si tratta di un'immagine, o XML, o se non sai nemmeno che molto quindi puoi pensare che sarai in grado di eseguire file
su di esso e non ottenere 'dati'. Devi sperare che ci siano solo poche chiavi che ti darebbero anche una decifratura vagamente sensibile e solo una che corrisponda al modulo che stai cercando.
Se si dispone di un esempio di testo semplice (o parziale testo in chiaro), questo diventa molto più semplice.
Generalmente, si ha un'idea del formato del file che si prevede deriverà dalla decrittografia e la maggior parte dei formati fornisce un modo semplice per identificarli.Ad esempio, quasi tutti i formati binari come immagini, documenti, file zip, ecc, hanno intestazioni facilmente identificabili, mentre i file di testo conterranno solo ASCII o solo sequenze UTF-8 valide.
- 1. Perché determinare se una funzione è puramente difficile?
- 2. La versione di Nuget non è corretta?
- 3. Quanto è difficile aggiornare una macchina virtuale di Azure
- 4. Come gestire "ultimo blocco incompleto in decrittazione"
- 5. Macro per riconoscere WinRT?
- 6. Maven Internal Repository, è davvero così difficile?
- 7. L'amministratore di Django è difficile da personalizzare?
- 8. Contatore linea XSLT - è così difficile?
- 9. Quanto è difficile decodificare i file .pyd?
- 10. blocco pad corrotto durante la decrittazione (Android)
- 11. Quanto è difficile il multi-threading Haskell?
- 12. NUnit non può riconoscere un TestCase quando contiene una serie
- 13. pycrypto - cifrato con lunghezza non corretta
- 14. ICCP: Non riconoscere noto profilo sRGB che è stato modificato
- 15. NSLog codifica non corretta
- 16. In che modo utilizzare Entity + LINQ non è solo una codifica essenzialmente difficile delle mie query?
- 17. JSON.stringify (oggetto) non corretta
- 18. PyCharm Non correttamente Riconoscere Requisiti - Python, Django
- 19. Riconoscere le distorsioni in una griglia regolare
- 20. Perché classe Python non riconoscere variabile statica
- 21. Difficile boo sintattica macro
- 22. Ordinamento gerarchico difficile
- 23. PHP - calcolo matematico Difficile
- 24. Promesse in nodoJS/una richiamata all'interno di una promessa/ordine di esecuzioni non è corretta
- 25. è la mia enumerazione corretta?
- 26. PySNMP non può riconoscere la risposta
- 27. non corretta chiave prefisso MySQL
- 28. L'ottimizzazione inline Java è corretta?
- 29. Qual è l'architettura Node.js corretta?
- 30. questa sintassi PHP è corretta?
specialmente nel parco Bletchly con "Bombe" di Turing ... Come facevano quelle macchine a sapere quando avevano decifrato il codice? –
Le Bombe funzionavano alla ricerca di soluzioni internamente coerenti: molte delle ipotesi per la chiave del giorno erano incompatibili con i testi cifrati generati, e le bombe li eliminavano, lasciando solo quelli coerenti per l'analisi manuale. Vedi http://en.wikipedia.org/wiki/Bombe –