Implementazione di crittografia a blocchi in C ++

4

Sto scrivendo un'implementazione di un codice a blocchi in C ++. Mi piacerebbe studiare la crittoanalisi differenziale del cifrario, quindi sto generando testi e chiavi casuali e poi li criptico.

Qual è il modo migliore per generare questi tasti in chiaro e chiavi casuali? La funzione casuale offerta da C ++ è abbastanza casuale? Dovrei usare alcune funzioni di hash o lo stesso codice delle permutazioni pseudocasuali per generarle?

    
posta hashed 18.10.2012 - 13:51
fonte

2 risposte

8

Cryptanalisi differenziale è un tipo di attacco che sfrutta alcuni dettagli nella struttura della cifra attaccata; si guardano coppie di testi in chiaro, crittografati con la stessa chiave e i corrispondenti numeri cifrati. Le coppie devono essere scelte con cura in modo che la differenza tra i due testi in chiaro (di solito, la differenza di bit, cioè un XOR) eserciti con probabilità "alta" l'esatta debolezza dell'algoritmo che è mirata. Non esiste una crittanalisi differenziale "generica" in cui si dovrebbero semplicemente inserire caratteri in chiaro al codice e sperare che si combinino in qualche modo in un Megazord -come attacco.

In parole povere, per fare una crittoanalisi differenziale, devi capire cosa stai facendo, fino ai dettagli matematici pelosi. E quando si raggiunge quel punto , si vede che i bit di base per la crittoanalisi differenziale non sono molto importanti (ciò che conta è la differenza tra i due testi in chiaro). Pertanto, nel contesto di un esperimento di laboratorio , la maggior parte dei generatori casuali faranno - ma probabilmente dovrai generare molte coppie di testi in chiaro, quindi potresti incontrare qualche collo di bottiglia se il PRNG è troppo lento (ma non ci credere ancora; misuralo ).

Se vuoi ottenere il succo della crittanalisi differenziale, leggi questo libro e prova ad implementarlo su una versione ridotta di DES (fino a 8 round invece dello standard 16).

    
risposta data 18.10.2012 - 14:43
fonte
2

Per le chiavi, dovrebbero essere casuali come puoi ottenerle, quindi usa un vero generatore di numeri casuali (improbabile) o un generatore di numeri pseudo casuali crittograficamente sicuro .

Il testo semplice può essere casuale da qualsiasi generatore, tuttavia non vuoi che il testo normale rispecchi in modo più accurato i dati reali in cui alcune stringhe di bit potrebbero essere più comune ?

    
risposta data 18.10.2012 - 13:59
fonte

Leggi altre domande sui tag