Questo tipo di crittografia potrebbe essere utile a qualcosa?

-12

Ho messo molta attenzione in questo algoritmo molto semplice e non ho idea se fosse stato pensato prima ... Ma penso che dovrebbe avere.
Inoltre non so nulla di altri algoritmi di crittografia, quindi non posso dire se questo è stato già inventato o meno.

È tutto disegnato su questo foglio:

E questa è una piccola funzione C # per questo algoritmo.

public static void Encrypt(Stream source, Stream target, byte[] key)
{
    int current;
    long pos = 0;

    int res;

    if (source.CanSeek) source.Seek(0, SeekOrigin.Begin);
    if (target.CanSeek) target.Seek(0, SeekOrigin.Begin);

    while ((current = source.ReadByte()) != -1)
    {
        byte b = (byte)current;

        res = b + key[pos++ % key.Length];
        if (res > byte.MaxValue) res -= byte.MaxValue;

        target.WriteByte((byte)res);
    }
}

Tutto quello che so sulla crittografia è che (i-) modifica in modo reversibile i dati per proteggerli.
Da quanto ne so, non c'è modo di decifrare la chiave senza conoscere i dati originali.
E per verificare se la chiave è corretta (nel tentativo di decodificare), l'integrità dei dati deve essere verificata. Quindi un hash deve essere conosciuto ...

Quindi questo algoritmo quasi ritardato manterrà i miei dati al sicuro?
In caso negativo, perché?

Modifica: tentare di risolvere il problema!
I byte crittografati sono 169 131 181 215 152 43 55 126 235 88 46 150 17 45 185 122 180 203 34 67 109 54 127 234 87 45 57 222 125 152 142 133 ...
L'hash MD5 è 116 249 25 168 168 255 211 143 122 60 216 192 37 167 178 112 !
Vai avanti!

    
posta Vercas 28.06.2011 - 18:12
fonte

3 risposte

17

Semplicemente no: link

A Bruce Schneier piace dire: "Chiunque può inventare un algoritmo di crittografia che loro stessi non possono rompere, è molto più difficile inventarne uno che nessun altro può violare"

Gli attuali algoritmi RSA, AES ecc. sono stati sottoposti a rigorosi scrutamenti nel corso degli anni da decine di migliaia. Perché non usare solo questi?

Inoltre: Lezioni apprese e idee sbagliate riguardanti crittografia e crittologia

    
risposta data 28.06.2011 - 18:37
fonte
13

Questa non è una cifra Vigenère ? Consulta l'articolo, sono abbastanza sicuro che parli della crittanalisi di questo codice (trova la lunghezza del ley, l'analisi della frequenza, ecc.)

E se la chiave ha la stessa lunghezza del testo in chiaro, disponi di un one-time pad che è praticamente indistruttibile senza la chiave (a condizione che questa chiave abbia buone proprietà casuali e non venga mai riutilizzata).

    
risposta data 28.06.2011 - 18:47
fonte
0

Il primo che devi considerare quando chiedi a qualcuno di testare il tuo codice dell'algoritmo o qualcosa del genere è RENDERE COMPRENSIBILE. Se riesci a capire cosa intendi, non significa che tutti possano farlo. In ogni caso ci sono due problemi nel tuo codice: non è sicuro sotto Semantic Security (con una chiave più breve del messaggio) ed è insicuro sotto CPA (Chosen Plaintext Attack) e qualsiasi cifra del genere non è nemmeno presa in considerazione. Lascia che ti spieghi un po 'più in dettaglio. Come puoi vedere dalla costruzione generale del tuo cifrario, è qualcosa di leggermente simile a OTP (One-time pad), anche se molto meno sicuro. Tuttavia, anche se il sistema di crittografia fosse sicuro come l'OTP nel momento in cui si utilizza la stessa chiave per crittografare più messaggi, la crittografia viene rapidamente interrotta e più di quella viene dedotta. E anche se il tuo algoritmo di crittografia sarebbe stato resistente a dedurre la chiave dalla coppia di testo in chiaro, l'algoritmo di crittografia non è sicuramente una funzione randomizzata né un algoritmo di crittografia nonce-based e quindi non è resistente al CPA. Per fare un ultimo punto l'algoritmo di crittografia è ancora peggiore dell'algoritmo di crittografia OTP perché quello che stai facendo è semplicemente creare un Cipher Stream con un PRG completamente prevedibile (Pseudo Random Generator) che non fa nulla a caso, ma ripete semplicemente la chiave quando mai lo spazio è finito. L'unico caso sicuro con il tuo cifrario è quando la chiave è lunga quanto il messaggio e quindi non è necessario crittografarlo perché se hai un modo per comunicare la chiave al destinatario in modo sicuro perché perdere tempo e non utilizzare il metodo per comunicare l'intero messaggio? Ad ogni modo il punto chiave è che hai fatto un tentativo di fare un codice di streaming ma hai usato un Pseudo Random Generator completamente insicuro e lascia che questa sia una lezione per non provare a reinventare la ruota.

    
risposta data 19.03.2014 - 12:08
fonte

Leggi altre domande sui tag