Di seguito gli interventi pubblicati in questa sezione, in ordine cronologico.
La protezione dei ns programmi è un argomento sempre attuale!
Per una protezione efficace è necessario rendere INSEPARABILE il legame tra protezione e programma. Ma chi utilizza il .NET deve prevedere -anche la possibilità- che il Suo codice venga spiato e/o analizzato (con l'ausilio dei decompilatori).
Se il codice può essere analizzato, risulta superfluo, utilizzare crittografia a chiave simmetrica per proteggere i dati utilizzati per il licensing. Il punto debole degli algoritmi a chiave simmetrica è la chiave che -necessariamente- deve essere distribuita con il programma.
Ora, quindi, l'idea è questa:
1) utilizzare Goliath .NET MuPAL (Multi-Precision Arithmetic Library);
2) implementare ALGORITMI A CHIAVE ASIMMETRICA: si cryptano i dati con la chiave privata e si decryptano i dati con la chiave pubblica (distribuita con il programma);
3) e, come detto, per RENDERE INSEPARABILE IL LEGAME tra protezione e programma invece di inserire manualmente i valori utilizziamo quelli presenti nello STRONG-NAME.
Ne consegue:
- per alterare anche 1 solo byte dei ns programmi è necessario ELIMINARE LO STRONG-NAME;
- eliminando lo strong-name, RISULTA FALSATA, qualsiasi decodifica dei ns dati.
Per esporre quanto detto, si decide, di utilizzare RSA:
normalmente per cryptare si utilizza:
C = M^E mod N
e per decryptare:
M = C^D mod N
dove:
M = testo da cifrare ( per non avere problemi la dim. consigliata è: (keysize/8)+1 )
P = 1° NUMERO PRIMO di grandi dimensioni (per ora >=512 bits)
Q = 2° NUMERO PRIMO di grandi dimensioni (per ora >=512 bits)
E = ESPONENTE PUBBLICO che soddisfa: GCD(E, (P-1)*(Q-1))==1)
N = MODULO PUBBLICO, il prodotto di P e Q: N=P*Q
D = ESPONENTE PRIVATO: D=E^(-1) mod ((P-1)*(Q-1))
P, Q e D ...DEVONO RIMANERE SEGRETI!!!
invece nel ns sistema di licensing utilizzeremo il sistema RSA al contrario (verifica firma):
per cryptare: C = M^D mod N e per decryptare: M = C^E mod N
il risultato di tale operazioni potrà -ad esempio- essere utilizzato per far compiere al ns programma una qualsiasi operazione (e non un banale vero/falso del risultato!)
N.B.: con tale tecnica è virtualmente impossibile realizzare un keygen dei ns programmi perchè è necessario scoprire i parametri P e Q dalla chiave pubblica N. Per riuscire nell'impresa si deve fattorizzare N (la sfida del nuovo millennio). Lo strong-name usa chiavi a 1024 bits. I tempi di calcolo -per tali dimensioni di chiavi- risultano -con le attuali macchine- davvero proibitivi!
Per maggiori informazioni si consiglia di visionare gli esempi contenuto con la libreria Goliath .NET MuPAL!
enjoy!
Disponibile, a breve, Goliath .NET MuPAL (Multiple-Precision Arithmetic Library) 
La libreria, realizzata 100% in VB.NET e CLSCompliant(True)
, rappresenta la naturale evoluzione della libreria matematica creata e già utilizzata per le procedure di licensing di tutti i prodotti Cantelmo Software 
La libreria consente di:
- utilizzare matematica con precisione arbitraria;
- utilizzare numeri di qualsiasi dimensione (rappresentati da stringhe);
- implementare i più moderni Crittosistemi Asimmetrici, Ellittici, ect.;
- ect.
a breve, quindi, versione dimostrativa, esempi e video tutorial! 