Bitcoin Forum
November 16, 2024, 06:16:37 PM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Algoritmo di cifratura simmetrica "fai da te"  (Read 1335 times)
alex9919 (OP)
Sr. Member
****
Offline Offline

Activity: 448
Merit: 250


Make winning bets on sports with Sportsbet.io!


View Profile
June 19, 2017, 12:22:59 PM
 #1

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<strlen(messaggio); 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<strlen(messaggio); 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.

   ▄▄██████▄▄
  ████████████
███▄▄
 ██████████████▀▀▀██▄
████████████████   ▀██▄
████████████████     ▀██
██████████████       ██▌
██████████████        ▐██
██▌▀▀██████▀▀         ▐██
▐██                   ██▌
 ██▄                 ▄██
  ▀██▄             ▄██▀
    ▀██▄▄▄     ▄▄▄██▀
      ▀▀█████████▀▀





███████████████████████████
███████████▀▀         ▀▀███
████████▀   ▄▄██▄  ▀█▄  ▀██
██████▀  ▄████████▄  ▀█  ██
████▀  ▄██████▄▀  ██▄    ██
███▀  ██████▄▀  ▄▀████▄  ██
██▀  █████▄▀  ▄▀██████  ▄██
██  ▀███▄▀  ▄▀███████  ▄███
██    ▀██▄▄▀███████▀  ▄████
██  █▄  ▀████████▀  ▄██████
██▄  ▀█▄  ▀██▀▀   ▄████████
███▄▄         ▄▄███████████
███████████████████████████
███████████████████████████
████████▀▀       ▀▀████████
█████▀   ▄ ▀███▀ ▄   ▀█████
████  ▄████▄ ▀ ▄████▄  ████
███  ▄ ▀███▀ ▄ ▀███▀ ▄  ███
██  ▄██ ▀▀ ▄███▄ ▀▀ ██▄  ██
██  █▀ ▄█ ███████ █▄ ▀█  ██
██   ▄███▄ █████ ▄███▄   ██
███  ████▀ ▄▄▄▄▄ ▀████  ███
████  ▀ ▄ ▀█████▀ ▄ ▀  ████
█████▄  ▀▀▄ ███ ▄▀▀  ▄█████
████████▄▄       ▄▄████████
███████████████████████████
████████     INDUSTRY LEADING BITCOIN SPORTSBOOK     ████████
LIVE
STREAMING
DAILY PRICE
BOOSTS
LIVE DEALER
CASINO
FAST & SECURE
PAYMENTS
███████████████████████████
████████▀▀       ▀▀████████
█████▀  ▄█▄  ▀  ▄▄   ▀█████
████  ▄  ▀    ▀█████▄  ████
███  ▀█▀   ▀█▄   ▀▀██▄  ███
██  ▄    █▄  ▀██▄▄  ▀█▄  ██
██  █▀ ▄  ▀█▄  ▀███▄  ▀  ██
██    ▄██  ▀██▄  ▀███▄   ██
███  ▀████  ▀███▄  ▀█▀  ███
████  ▀████  ▀████▄    ████
█████▄   ▀▀█▄  ▀▀▀   ▄█████
████████▄▄       ▄▄████████
███████████████████████████
███████████████████████████
████████▀▀ █████ ▀▀████████
█████▀    ▄█████▄    ▀█████
██████▄▄█▀▀ ▄▄▄ ▀▀█▄▄██████
███▀███▀ ▄███▀███▄ ▀███▀███
██   █ ▄██▀     ▀██▄ █   ██
██   █ ██         ██ █   ██
██   █ ▀██▄▄█ █▄▄██▀ █   ██
███▄███▄ ▀██▄▄▄██▀ ▄███▄███
██████▀▀█▄▄ ▀▀▀ ▄▄█▀▀██████
█████▄    ▀█████▀    ▄█████
████████▄▄ █████ ▄▄████████
███████████████████████████





[.
WIN WITH US!
]
reee
Sr. Member
****
Offline Offline

Activity: 439
Merit: 252


Get Paid to Play your Media on Current


View Profile
June 21, 2017, 05:38:21 PM
 #2

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.

.
▄████████████████████████▄
██████████████████████████
██████████████████████████
██████████████████████████
▀█████████████████████████
   ▀██████████████████████
█▄▄   ▀███████████████████
████▄▄   ▀████████████████
███████▄▄   ▀█████████████
██████████    ▀██████████
███████▀▀        ▀███████
████▀▀              ▀████
█▀▀                    ▀█
..   █
█  █
█  █
█  █
█  █
█  █
█  █
   █
   Just Press Play
Spotify
YouTube
Soundcloud


8Tracks
Radio
Podcast

█  █
█  █
█  █
█  █
█  █
█  █
.
.
GET IN TOUCH
Telegram
.
ANN Thread
.
alex9919 (OP)
Sr. Member
****
Offline Offline

Activity: 448
Merit: 250


Make winning bets on sports with Sportsbet.io!


View Profile
June 21, 2017, 07:27:01 PM
 #3

In realtà per ora non ho ancora pensato a un modo per generare la chiave (andrebbe inserita da input).

   ▄▄██████▄▄
  ████████████
███▄▄
 ██████████████▀▀▀██▄
████████████████   ▀██▄
████████████████     ▀██
██████████████       ██▌
██████████████        ▐██
██▌▀▀██████▀▀         ▐██
▐██                   ██▌
 ██▄                 ▄██
  ▀██▄             ▄██▀
    ▀██▄▄▄     ▄▄▄██▀
      ▀▀█████████▀▀





███████████████████████████
███████████▀▀         ▀▀███
████████▀   ▄▄██▄  ▀█▄  ▀██
██████▀  ▄████████▄  ▀█  ██
████▀  ▄██████▄▀  ██▄    ██
███▀  ██████▄▀  ▄▀████▄  ██
██▀  █████▄▀  ▄▀██████  ▄██
██  ▀███▄▀  ▄▀███████  ▄███
██    ▀██▄▄▀███████▀  ▄████
██  █▄  ▀████████▀  ▄██████
██▄  ▀█▄  ▀██▀▀   ▄████████
███▄▄         ▄▄███████████
███████████████████████████
███████████████████████████
████████▀▀       ▀▀████████
█████▀   ▄ ▀███▀ ▄   ▀█████
████  ▄████▄ ▀ ▄████▄  ████
███  ▄ ▀███▀ ▄ ▀███▀ ▄  ███
██  ▄██ ▀▀ ▄███▄ ▀▀ ██▄  ██
██  █▀ ▄█ ███████ █▄ ▀█  ██
██   ▄███▄ █████ ▄███▄   ██
███  ████▀ ▄▄▄▄▄ ▀████  ███
████  ▀ ▄ ▀█████▀ ▄ ▀  ████
█████▄  ▀▀▄ ███ ▄▀▀  ▄█████
████████▄▄       ▄▄████████
███████████████████████████
████████     INDUSTRY LEADING BITCOIN SPORTSBOOK     ████████
LIVE
STREAMING
DAILY PRICE
BOOSTS
LIVE DEALER
CASINO
FAST & SECURE
PAYMENTS
███████████████████████████
████████▀▀       ▀▀████████
█████▀  ▄█▄  ▀  ▄▄   ▀█████
████  ▄  ▀    ▀█████▄  ████
███  ▀█▀   ▀█▄   ▀▀██▄  ███
██  ▄    █▄  ▀██▄▄  ▀█▄  ██
██  █▀ ▄  ▀█▄  ▀███▄  ▀  ██
██    ▄██  ▀██▄  ▀███▄   ██
███  ▀████  ▀███▄  ▀█▀  ███
████  ▀████  ▀████▄    ████
█████▄   ▀▀█▄  ▀▀▀   ▄█████
████████▄▄       ▄▄████████
███████████████████████████
███████████████████████████
████████▀▀ █████ ▀▀████████
█████▀    ▄█████▄    ▀█████
██████▄▄█▀▀ ▄▄▄ ▀▀█▄▄██████
███▀███▀ ▄███▀███▄ ▀███▀███
██   █ ▄██▀     ▀██▄ █   ██
██   █ ██         ██ █   ██
██   █ ▀██▄▄█ █▄▄██▀ █   ██
███▄███▄ ▀██▄▄▄██▀ ▄███▄███
██████▀▀█▄▄ ▀▀▀ ▄▄█▀▀██████
█████▄    ▀█████▀    ▄█████
████████▄▄ █████ ▄▄████████
███████████████████████████





[.
WIN WITH US!
]
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
June 21, 2017, 08:40:56 PM
 #4

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.

Waves mi piaceva ora non più.
reee
Sr. Member
****
Offline Offline

Activity: 439
Merit: 252


Get Paid to Play your Media on Current


View Profile
June 21, 2017, 09:37:55 PM
 #5

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.

.
▄████████████████████████▄
██████████████████████████
██████████████████████████
██████████████████████████
▀█████████████████████████
   ▀██████████████████████
█▄▄   ▀███████████████████
████▄▄   ▀████████████████
███████▄▄   ▀█████████████
██████████    ▀██████████
███████▀▀        ▀███████
████▀▀              ▀████
█▀▀                    ▀█
..   █
█  █
█  █
█  █
█  █
█  █
█  █
   █
   Just Press Play
Spotify
YouTube
Soundcloud


8Tracks
Radio
Podcast

█  █
█  █
█  █
█  █
█  █
█  █
.
.
GET IN TOUCH
Telegram
.
ANN Thread
.
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
June 21, 2017, 09:58:19 PM
 #6

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 ...

Waves mi piaceva ora non più.
jack0m
Legendary
*
Offline Offline

Activity: 3822
Merit: 2046


View Profile
June 26, 2017, 09:29:17 AM
 #7

Se la password è più corta di metà del messaggio, a occhio e croce si cracca più o meno facilmente con un po' di criptoanalisi

Money is a hoax. Debt is slavery. Consumerism is toxic.
alex9919 (OP)
Sr. Member
****
Offline Offline

Activity: 448
Merit: 250


Make winning bets on sports with Sportsbet.io!


View Profile
July 05, 2017, 02:53:57 PM
 #8

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?

   ▄▄██████▄▄
  ████████████
███▄▄
 ██████████████▀▀▀██▄
████████████████   ▀██▄
████████████████     ▀██
██████████████       ██▌
██████████████        ▐██
██▌▀▀██████▀▀         ▐██
▐██                   ██▌
 ██▄                 ▄██
  ▀██▄             ▄██▀
    ▀██▄▄▄     ▄▄▄██▀
      ▀▀█████████▀▀





███████████████████████████
███████████▀▀         ▀▀███
████████▀   ▄▄██▄  ▀█▄  ▀██
██████▀  ▄████████▄  ▀█  ██
████▀  ▄██████▄▀  ██▄    ██
███▀  ██████▄▀  ▄▀████▄  ██
██▀  █████▄▀  ▄▀██████  ▄██
██  ▀███▄▀  ▄▀███████  ▄███
██    ▀██▄▄▀███████▀  ▄████
██  █▄  ▀████████▀  ▄██████
██▄  ▀█▄  ▀██▀▀   ▄████████
███▄▄         ▄▄███████████
███████████████████████████
███████████████████████████
████████▀▀       ▀▀████████
█████▀   ▄ ▀███▀ ▄   ▀█████
████  ▄████▄ ▀ ▄████▄  ████
███  ▄ ▀███▀ ▄ ▀███▀ ▄  ███
██  ▄██ ▀▀ ▄███▄ ▀▀ ██▄  ██
██  █▀ ▄█ ███████ █▄ ▀█  ██
██   ▄███▄ █████ ▄███▄   ██
███  ████▀ ▄▄▄▄▄ ▀████  ███
████  ▀ ▄ ▀█████▀ ▄ ▀  ████
█████▄  ▀▀▄ ███ ▄▀▀  ▄█████
████████▄▄       ▄▄████████
███████████████████████████
████████     INDUSTRY LEADING BITCOIN SPORTSBOOK     ████████
LIVE
STREAMING
DAILY PRICE
BOOSTS
LIVE DEALER
CASINO
FAST & SECURE
PAYMENTS
███████████████████████████
████████▀▀       ▀▀████████
█████▀  ▄█▄  ▀  ▄▄   ▀█████
████  ▄  ▀    ▀█████▄  ████
███  ▀█▀   ▀█▄   ▀▀██▄  ███
██  ▄    █▄  ▀██▄▄  ▀█▄  ██
██  █▀ ▄  ▀█▄  ▀███▄  ▀  ██
██    ▄██  ▀██▄  ▀███▄   ██
███  ▀████  ▀███▄  ▀█▀  ███
████  ▀████  ▀████▄    ████
█████▄   ▀▀█▄  ▀▀▀   ▄█████
████████▄▄       ▄▄████████
███████████████████████████
███████████████████████████
████████▀▀ █████ ▀▀████████
█████▀    ▄█████▄    ▀█████
██████▄▄█▀▀ ▄▄▄ ▀▀█▄▄██████
███▀███▀ ▄███▀███▄ ▀███▀███
██   █ ▄██▀     ▀██▄ █   ██
██   █ ██         ██ █   ██
██   █ ▀██▄▄█ █▄▄██▀ █   ██
███▄███▄ ▀██▄▄▄██▀ ▄███▄███
██████▀▀█▄▄ ▀▀▀ ▄▄█▀▀██████
█████▄    ▀█████▀    ▄█████
████████▄▄ █████ ▄▄████████
███████████████████████████





[.
WIN WITH US!
]
joosh
Newbie
*
Offline Offline

Activity: 46
Merit: 0


View Profile
July 08, 2017, 02:46:30 PM
 #9

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.
jack0m
Legendary
*
Offline Offline

Activity: 3822
Merit: 2046


View Profile
July 08, 2017, 07:52:39 PM
 #10

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

Money is a hoax. Debt is slavery. Consumerism is toxic.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!