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.