Algoritmo di crittografia simmetrica

3

Sto cercando di saperne di più sulla crittografia e ho ideato un algoritmo sotto per la crittografia simmetrica. So che non dovremmo usare algoritmi auto-progettati, ma questo sembra incredibilmente semplice e basato su SHA-256.

1) Take an input and a numeric key, k.
2) Pad i with 0s until its length has 256 as a factor.
3) Generate pseudo random bits using SHA-256(k), incrementing k each time.
4) XOR the input with the pseudo random bits.

Perché penso che sia così infrangibile come SHA-256:

  • La crittografia XOR con numeri veramente casuali che non vengono riutilizzati è perfettamente sicura
  • L'algoritmo SHA-256 non è ancora stato rotto, ma non c'è prova matematica che sia indistruttibile, quindi il mio algoritmo è strong almeno quanto SHA-256

Ci sono problemi con questo algoritmo e la crittografia di cose come questa?

    
posta Lolums 03.09.2018 - 21:05
fonte

1 risposta

3

Qui vedo un paio di problemi.

Non c'è IV

Ciò significa che se si cifrano due messaggi identici con la stessa chiave, il testo cifrato è lo stesso. Se anche una parte del messaggio è la stessa, è possibile determinare il contenuto degli altri messaggi e persino la chiave. Leggi crib-dragging e vedrai perché.

strong come SHA-256

Non proprio. È strong come la chiave. Stai utilizzando un tasto numerico, ma per quanto tempo? È lungo 4 byte, lungo 16 byte, lungo 512 byte? Questo fa la differenza.

Chiave numerica e SHA-256

Una chiave numerica a incremento automatico non è buona. I rig di bruteforcing SHA-256 sono abbondanti, di solito sono venduti come Bitcoin Miners. Sono economici, sono efficienti e molto, molto potenti. Usane uno per generare Terahashes al secondo, applica il tuo calcolo XOR molto, molto veloce, calcola l'entropia del messaggio e un attaccante può rinforzare il tuo messaggio segreto in pochi minuti, forse meno.

Crittografia XOR con numeri veramente casuali

Non sono casuali, sono deterministici. Bruteforce il primo blocco e tutti i tuoi dati sono infranti. Se i primi byte del messaggio sono deterministici (come l'intestazione di una richiesta, l'intestazione del tipo di file o il tipo di messaggio Saluti caro utente ), e l'attaccante può utilizzare l'attacco di trascinamento della cache per dedurre parte del hash e dargli da mangiare a bruteforcer.

Vulnerabile a Conoscere l'attacco di testo normale

Se un utente malintenzionato conosce la coppia di testo cifrato, conosce la chiave XOR, perché plaintext XOR cyphertext = KEY . Queste informazioni vanno a bruteforcer e tu sai cosa succede.

Vulnerabile a analisi di frequenza

256 byte di dati sono sufficienti per ricostruire parte del messaggio utilizzando l'analisi della frequenza. Ricostruire il resto dei primi 256 byte è banale e si traduce in un testo in chiaro con testo in chiaro. Questo abilita l'attacco in chiaro del testo in chiaro sui primi 256 byte, consentendo di scoprire e forzare la chiave XOR.

So che stai cercando di imparare, ma provare a imparare la crittografia facendolo è come fare una pistola per tentativi ed errori. Ti sparerai ai piedi o alla testa. Wikipedia ha un bell'articolo su crittografia simmetrica , con un elenco di algoritmi, i principi dietro di loro e le carenze.

    
risposta data 03.09.2018 - 21:41
fonte

Leggi altre domande sui tag