Salve a tutti!
Sto approfondendo gli studi sulla crittografia, e vorrei sapere come viene determinata/calcolata l'inespugnabilità di un algoritmo di crittografia. In base a cosa viene stabilito se un algoritmo sia migliore rispetto ad un altro?
in base a tempo e potenza di calcolo richiesti per decifrare il crittogramma (usado ad esempio tecniche come Brutal Force)?
o quello per scoprire un'eventuale parola chiave?
La domanda credo sia più che lecita, poiché, nel momento in cui bisogna celare informazioni importanti e soprattutto sensibili, è bene essere a conoscenza della migliore tecnica che si utilizza per la crittografia.
Come ho già detto sto approfondendo per conto mio l'argomento (scopo tesina di maturità). A scuola ho studiato già alcune tecniche di crittografia (a chiave simmetrica/asimmetrica e a trasposizione), ma nulla di più specifico. Sto inoltre realizzando una piccola applicazione java che permette di inviare messaggi criptati tra due computer in rete locale. Ho realizzato pertanto un piccolo algoritmo di cifratura, e mi tornerebbe utile saperne analizzare, almeno per grandi linee, l'efficienza.
In sintesi l'algoritmo che ho realizzato fuziona così:
Ho una parola chiave conosciuta solo da mittente e destinatario. Non viene trasmessa.
La chiave viene "sovrapposta al messaggio", e la lettera N-esima del testo in chiaro viene spostata in avanti nell'alfabeto di K posizioni, dove K è uguale alla posizione nell'alfabeto della lettera N-esima del messaggio.
Esempio:
---------------------------------
chiave: "bca"
testo: "prova"
p (16) + b (2) = r(18)
r (18) + c (3) = u(21)
o (15) + a (1) = p(16)
v (22) + b (2) = x(24)
a (1) + c (3) = d(4)
crittogramma = "RUPXD"
----------------------------------
Questo è un piccolo esempio. Nell'algoritmo completo utilizzo un alfabeto composto da caratteri ASCII disordinati, comprensivo di simboli e numeri.
Come posso calcolare l'efficienza di questo algoritmo?
Sto cercando in rete informazioni sull'argomento, ma non ho ancora trovato quello che cerco. Forse sto cercando la cosa sbagliata o nei posti sbagliati...
Qualcuno quindi saprebbe in grado spiegarmelo, o magari di consigliarmi un manuale o un sito da cui prendere le informazioni che mi servono?
Grazie a tutti dell'attenzione