Leggendo un blog, sono arrivato a quello di Francesco che referenziava questo video.
Mi preme quindi fare una importante precisazione. Gli strong name non sono uno strumento che garantisca la sicurezza ma sono esclusivamente un meccanismo di versioning. La differenza è fondamentale.
Veniamo alla definizione che MSDN da dello strong name:
A name that consists of an assembly's identity, its simple text name, version number, and culture information (if provided) strengthened by a public key and a digital signature generated over the assembly.
In sostanza, dato un assembly, genero uno strong name con sn.exe, lo referenzio dentro l'attributo AssemblyKeyFile e alla compilazione ottengo un assembly firmato con strong name.
È questo un sistema che gaarantisce la sicurezza del nostro assembly o del codice che viene eseguito? No:
Se volete un altro illustre parere con altre spiegazioni, rimando al blog del caro amico Valery.
Il bug che ho sfruttato alla WPC è stato solo una delle tante possibilità. Ero già amministratore su quel server grazie alla solita SQL Injection ed alti errori dell'amministratore distratto.
Che non ci debba fidare dell'integrità di un assembly firmato con strong name, c'è scritto ancora in MSDN:
Assemblies with the same strong name are expected to be identical.