Di seguito tutti gli interventi pubblicati sul sito, 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!
La "guerra" tra obfuscators contro decompilers (e/o deobfuscators) è sempre attuale. 
Sono stati rilasciati strumenti che -se usati creativamente- potrebbero facilitare un eventuale aggressore nell'eliminazione di una precisa tecnica di protezione: il control-flow! 
Prevedendo questa "realistica possibilità" è necessario complicare ulteriormente il codice dei ns algoritmi!
Ragion per cui in Goliath .NET Obfuscator release 3.0.4 (Edizione Enterprise) è stata inserita una nuova procedura che offusca i valori numerici unitamente ai valori booleani True/False (aggiornamento del 02-dic-2008). 
Cantelmo Software è sempre un passo avanti! Ai competitors "poco creativi"...non rimane altro che copiare anche questa tecnica! 