È mai possibile decifrare un carattere chiave di crittografia per carattere?

4

Nei film e negli spettacoli televisivi, i personaggi sono spesso raffigurati utilizzando dispositivi e applicazioni che sono in grado di determinare una chiave di crittografia o un codice di accesso carattere per carattere (o cifra per cifra). Sono un programmatore e penso di avere una buona idea di come funzioni la crittografia in generale, ma non sono sicuro se prenderlo come un modo semplice per mostrare i progressi o se c'è qualcosa in concreto.

È mai possibile e se sì quali proprietà di un algoritmo lo rendono vulnerabile a questo tipo di cracking?

    
posta thesquaregroot 15.07.2014 - 03:33
fonte

5 risposte

10

Se un sistema di crittografia consente il crack dei caratteri per personaggio, è terribilmente debole e non dovrebbe essere utilizzato.

Matematicamente, i cifrari a blocchi sono definiti come permutazioni pseudocasuali . Un codice a blocchi funziona sullo spazio dei blocchi di lunghezza n bit; tale spazio ha dimensione 2 n . Ci sono 2 n ! permutazioni su quello spazio (è un fattoriale, il che significa che il numero di permutazioni possibili è enorme ). Un cifrario a blocchi sicuro è tale da non essere indistinguibile da una permutazione selezionata a caso, in modo uniforme, nello spazio delle possibili permutazioni: ogni chiave dovrebbe corrispondere a una scelta casuale di permutazione e, in modo cruciale, tutte le scelte per ogni possibile chiave i valori sono indipendenti l'uno dall'altro.

Ciò significa, nelle parole banali, che per un cifrario a blocchi sicuro, si ha l'intera chiave, esatta fino all'ultimo bit o non si ha nulla. Contrariamente alle rappresentazioni di Hollywood, una chiave "quasi buona" non risulta in un "testo in chiaro sfocato": se anche un bit di una chiave è sbagliato, dovresti ottenere una posta indesiderata casuale (cioè un'uscita che è sufficientemente indistinguibile da una junk casuale che non puoi sapere se sei vicino al tasto giusto o no).

Naturalmente, se il sistema di crittografia è debole, tutto va bene. @ Mark cita un caso di "splitting" (in WPS) che è una debolezza atroce che può, in effetti, essere sfruttata per attacchi più veloci. Gli attacchi oracle di riempimento funzionano anche su una perdita byte per byte che consente la ricostruzione byte-by-byte del testo in chiaro ( non la chiave, ma ancora).

Un altro esempio più tecnico è vecchio codice di flusso PKZip : un codice di flusso "fatto in casa" che si è rivelato, con tutte le ineluttabilità della Morte in una tragedia greca, essere debole; il codice stream si basa su diverse "chiavi" interne che possono essere sbrogliate una per una. Incoraggio le persone interessate alla crittografia a studiare quell'esempio, perché dimostra abbastanza bene il modo in cui pensa un crittanalista, e perché il semplice accumulo di operazioni non garantisce la sicurezza; e l'attacco è abbastanza leggero da essere implementato nella pratica (il costo totale è di circa 2 38 , che si trova nel raggio di poche ore di calcolo su un PC con programmazione decente, non necessariamente assemblaggio ottimizzato). / p>

Molti sistemi crittografici risalenti a prima dell'era dei computer erano irrisolvibili in base al carattere, perché dovevano essere eseguiti dal cervello umano degli operatori, e tali strumenti non sono efficaci nell'utilizzare grandi valori o fare un sacco di operazioni. I codici classici di trasposizione e sostituzione (una famiglia molto ampia) tendono a ricadere sull'analisi della frequenza dei caratteri, che è, in effetti, una rottura per carattere.

    
risposta data 15.07.2014 - 14:41
fonte
6

Sì.

L'attuale esempio più noto non è strettamente di carattere per carattere, ma Wi-Fi Protected Setup divide la chiave in due metà e le verifica in modo indipendente, che consente a un utente malintenzionato di forzare la prima metà e poi la seconda metà (e lo rende molto più semplice).

meno conosciuta, ma forse più dannosi sono vari in cui la verifica di un tasto, password o altri segreti viene eseguito su base byte per byte, restituendo l'errore alla prima mancata corrispondenza. Ciò consente a un utente malintenzionato di conoscere il primo byte errato quando indovina il segreto, in modo che possano individuarlo un byte alla volta.

Poiché questo è un tipo noto di attacco, buoni sistemi crittografici sono progettati per impedire, ma come esempio WPS mostra, ci sono un sacco di crittografia là fuori che non sono ben progettato.

    
risposta data 15.07.2014 - 07:13
fonte
2

Alcuni attacchi ai canali laterali, come l'analisi della potenza differenziale, funzionano recuperando il materiale chiave un bit alla volta. Invia un numero statisticamente significativo di richieste di crittografia attraverso il processore e osserva il consumo energetico che potrebbe indicare che una determinata operazione è avvenuta. Ad esempio, quando la chiave viene ruotata a sinistra in DES dopo ogni round, la CPU potrebbe consumare più energia se deve portare con sé quella.

Sarebbe certamente possibile visualizzare i bit recuperati mentre l'attacco avanza.

    
risposta data 15.07.2014 - 15:04
fonte
1

Non sono a conoscenza di casi reali in cui ciò sia possibile. Esistono alcuni crittosistemi in cui le debolezze ti hanno permesso di apprendere su bit specifici (ad esempio, bias del keystream RC4), ma anche questi sono punti deboli in gran parte teorici.

I film e i programmi TV ritraggono la sicurezza (e molti altri argomenti) in un modo che è destinato ad essere affascinante per il tuo spettatore medio, non tecnologicamente accurato. Avere un mucchio di GPU che si allontanano per ore o giorni e poi improvvisamente ottenere una risposta: non interessante. Allo stesso modo, fissando il proxy Burp, non è interessante; scrivendo un'interfaccia GUI che utilizza visual basic per tracciare l'indirizzo IP del killer , interessante.

    
risposta data 15.07.2014 - 03:38
fonte
-2

La risposta è sì, il metodo forza bruta potrebbe darti un personaggio alla volta se lo fai in un ordine. Ecco perché:

Considera il codice binario della password, che sarebbe lungo n . Se si imposta il primo bit su 0 (o 1) e si provano tutte le combinazioni possibili con i bit rimanenti e nessuno di essi funziona, si sa che il primo bit è un 1 (o 0). Poi fai lo stesso con il prossimo bit e così via, rivelando sempre più password. Alla fine hai abbastanza bit per formare una lettera, se è così che preferisci leggerlo.

Puoi vedere che con ogni lettera la password diventa esponenzialmente più facile da risolvere e se la password non è casuale diventa più facile da indovinare.

    
risposta data 11.09.2014 - 02:04
fonte

Leggi altre domande sui tag