Author

Topic: Algoritmo di cifratura simmetrica "fai da te" (Read 1333 times)

legendary
Activity: 3570
Merit: 1985
Se la password è più corta di metà del messaggio, a occhio e croce si cracca più o meno facilmente con un po' di criptoanalisi
Non esiste un implementazione in C/Java di un metodo di cifratura più robusto?

non è una questione di implementazione, è proprio l'algoritmo che è debole, perché riusi ciclicamente la stessa password. In pratica usi una modalità ECB senza initialization vector (IV), che è la più insicura.
Qui trovi una spiegazione con diverse modalità a confronto:

https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
newbie
Activity: 46
Merit: 0
Se la password è più corta di metà del messaggio, a occhio e croce si cracca più o meno facilmente con un po' di criptoanalisi
Non esiste un implementazione in C/Java di un metodo di cifratura più robusto?
Per Java puoi usare BouncyCastle, in rete trovi tutti gli esempi che vuoi.
sr. member
Activity: 448
Merit: 250
Make winning bets on sports with Sportsbet.io!
Se la password è più corta di metà del messaggio, a occhio e croce si cracca più o meno facilmente con un po' di criptoanalisi
Non esiste un implementazione in C/Java di un metodo di cifratura più robusto?
legendary
Activity: 3570
Merit: 1985
Se la password è più corta di metà del messaggio, a occhio e croce si cracca più o meno facilmente con un po' di criptoanalisi
legendary
Activity: 2506
Merit: 1120
Se come chiave si usasse una immagine (o altro documento) compresso? Credete possa essere sicuro? Alla fine i file compressi (ovviamente senza perdita di informazioni) non dovrebbero avere ridondanza e, a naso, direi che dovrebbero assomigliare a sequenza pseudocasuali.
non è un metodo granchè sicuro, le immagini hanno degli header prefefiniti che potrebbero portare a decifrare parti di codice. Vanno generati per forza dei dati casuali per fare una cosa "seria".

Ah, tra gli "svantaggi" mi ero dimenticato il fatto che la chiave può essere usata solo una volta.
Per pura didattica,
Usi il file zippato per chiave, non il file immagine. Immagino che il problema sia ... Aldo ha il messaggio crittato e non deve poterlo leggere, come arriva a capire che la chiave è proprio quella senza altre informazioni (tipo sa che è uno zip - da risolvere il problema degli header o metadati degli zip) ...
Se ci pensi potrebbe essere un metodo abbastanza semplice per scambiarsi la chiave senza dare nell'occhio ... anche se sono consapevole che non è sicuro ma ...
sr. member
Activity: 439
Merit: 252
Get Paid to Play your Media on Current
Se come chiave si usasse una immagine (o altro documento) compresso? Credete possa essere sicuro? Alla fine i file compressi (ovviamente senza perdita di informazioni) non dovrebbero avere ridondanza e, a naso, direi che dovrebbero assomigliare a sequenza pseudocasuali.
non è un metodo granchè sicuro, le immagini hanno degli header prefefiniti che potrebbero portare a decifrare parti di codice. Vanno generati per forza dei dati casuali per fare una cosa "seria".

Ah, tra gli "svantaggi" mi ero dimenticato il fatto che la chiave può essere usata solo una volta.
legendary
Activity: 2506
Merit: 1120
Se come chiave si usasse una immagine (o altro documento) compresso? Credete possa essere sicuro? Alla fine i file compressi (ovviamente senza perdita di informazioni) non dovrebbero avere ridondanza e, a naso, direi che dovrebbero assomigliare a sequenza pseudocasuali.
sr. member
Activity: 448
Merit: 250
Make winning bets on sports with Sportsbet.io!
In realtà per ora non ho ancora pensato a un modo per generare la chiave (andrebbe inserita da input).
sr. member
Activity: 439
Merit: 252
Get Paid to Play your Media on Current
In pratica è un cifrario di Vernam.
E' sicuro se si ha modo di generare la chiave usando numeri davvero "casuali" (e qui non hai postato il codice per generare la chiave, diciamo che se la chiave è generata correttamente allora il tuo algoritmo è sicuro).

Gli svantaggi sono:
1) tutti i tipici svantaggi della crittografia simmetrica (serve un canale sicuro per comunicare la chiave)
2) la chiave deve essere della stessa lunghezza del messaggio.
sr. member
Activity: 448
Merit: 250
Make winning bets on sports with Sportsbet.io!
Salve, diversi mesi fa, interessato all'argomento iniziai a scrivere del codice in C che applicasse una cifratura simmetrica a un determinato messaggio inserito dalla console (in seguito non mi sono dedicato più per diversi motivi).
Questa è la funzione per cifrare:
Code:
void cifra(char messaggio[], char pass[]){
    int i=0;
    for(; i        messaggio[i]^=pass[i%strlen(pass)];
    }
}
E questa è la funzione per ottenere il messaggio in chiaro:
Code:
void decifra(char messaggio[], char pass[]){
    int i=0;
    for(; i        messaggio[i]^=pass[i%strlen(pass)];
    }
}
Come si può vedere è un metodo abbastanza semplice per cifrare, che usa l'operatore xor tra un carattere del messaggio (in ordine crescente) e un carattere della chiave determinato dell'espressione: i%strlen(pass).
Vorrei chiedere a chi è più esperto, cosa ne pensa e quali sarebbero le falle di tale metodo.
Jump to: