C'è qualche programma che, dato un testo cifrato, mi dirà qual è l'algoritmo di crittografia?
E se avessi il testo in chiaro? C'è qualcosa che può essere fatto in quel caso?
C'è qualche programma che, dato un testo cifrato, mi dirà qual è l'algoritmo di crittografia?
E se avessi il testo in chiaro? C'è qualcosa che può essere fatto in quel caso?
No.
L'intero punto della crittografia è produrre un testo cifrato che non sia distinguibile dal rumore casuale.
In assenza di suggerimenti esterni, l'unico modo per determinare quale meccanismo di crittografia viene utilizzato è eseguire la routine di decodifica con la password corretta e controllare il risultato per vedere se sembra corretto.
Su una nota correlata, allo stesso modo l'unico modo per determinare se si sta utilizzando la password corretta è eseguire la routine di decodifica con il codice corretto e controllare il risultato.
Finché viene utilizzata la crittografia moderna non è assolutamente possibile determinare quale codice è stato utilizzato.
Tuttavia, se si dispone del testo normale e se in qualsiasi momento il flusso PRNG viene trasferito da una codifica stream, è possibile decodificare i messaggi sconosciuti con una semplice operazione xor. Il riutilizzo PRNG è sgradevole, ma solo un novizio potrebbe commettere un simile errore.
Un tenant principale della teologia della crittografia è quello anche se sai esattamente come è qualcosa crittografato, non hai ancora un attacco migliore di una ricerca di forza bruta per la chiave.
D'altra parte, se hai trovato una pila di bit da qualche parte con una nota allegata dice "password segreta è foobar", quindi potrebbe essere utile avere un dizionario del wrapper e formati di file comuni utilizzati dal noto software di crittografia. non ho mai visto uno, ma sono sicuro che i professionisti li hanno.
Ci sono due lati della tua domanda:
Se il sistema di crittografia è valido, il suo output è indistinguibile dai byte casuali. Pertanto, la crittografia con algoritmo A1 e la crittografia con algoritmo A2 dovrebbero essere indistinguibili l'una dall'altra, poiché entrambi non sono distinguibili dai byte casuali.
I crittografi presumono sempre che l'attaccante sappia quale algoritmo è stato usato. Questo è assunto perché non sappiamo quanto sicuro possa essere il nome dell'algoritmo; dopotutto, è incarnato come software, in un file eseguibile, e c'è un codice sorgente da qualche parte, e molte persone sanno quale algoritmo è usato. Non può essere molto segreto. Pertanto, l'analisi della sicurezza prende l'atteggiamento cauto (se prudente) di considerare che solo la chiave è segreta (ecco a cosa serve la chiave: per concentrare il segreto).
A causa del punto 2, molti formati di crittografia includono intestazioni (al di fuori della parte realmente crittografata) che definiscono in modo piuttosto chiaro quale algoritmo di crittografia è stato utilizzato. Non modifica l'analisi della sicurezza, poiché facciamo l'analisi partendo dal presupposto che ogni utente malintenzionato conosce già tutto ciò che contiene l'intestazione. Tuttavia, tale intestazione è molto comoda per la robustezza dell'applicazione; in particolare, aiuta molto l'agilità dell'algoritmo (la capacità di supportare diversi tipi di algoritmi).
Ad esempio, un'e-mail crittografata con S / MIME è in realtà un CMS oggetto (codificato in Base64 in modo che possa viaggiare illeso come un'e-mail) che contiene una specifica chiaramente visibile dell'algoritmo di crittografia (digitare ContentEncryptionAlgorithmIdentifier
nel CMS specifica).
Riepilogo: sebbene il nome dell'algoritmo di crittografia non possa normalmente essere ricalcolato dai dati crittografati (indipendentemente dal fatto che tu conosca il testo in chiaro o meno), tali informazioni possono solitamente essere ottenute dai metadati che circondano il blob crittografato, e questo non è un problema di sicurezza .
(O meglio, se conoscere l'algoritmo aiuta in modo significativo l'aggressore, allora l'algoritmo è spazzatura.)
Leggi altre domande sui tag encryption attacks