title: Can strong naming an assembly be used to verify the assembly author?
body: <p>I have been reading the proper article in MSDN, <em><a href="http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx" rel="noreferrer">Strong-Named Assemblies</a></em> and a related Stack&nbsp;Overflow question, <em><a href="https://stackoverflow.com/questions/308756">Checking an assembly for a strong name</a></em>.</p>
  
  <ol>
  <li>To which extent can a strong-named assembly be verified to avoid tampering?</li>
  <li>Is it possible to use strong-naming to verify an assembly author?</li>
  </ol>
  
  <p>The first question arises after reading the CSharp411 article <em><a href="http://www.csharp411.com/net-assembly-faq-part-3-strong-names-and-signing/" rel="noreferrer">.NET Assembly FAQ – Part 3 – Strong Names and Signing</a></em>, which mentions this, among other problems of using strong names:</p>
  
  <blockquote>
    <p>"<strong><em>Cannot Stop Full Replacement.</strong> Strong names cannot prevent a hacker from removing the strong name signature, maliciously modifying your assembly, re-signing it with his own key, and then passing off his assembly as yours.</em>"</p>
  </blockquote>
  
  <p>The second question intends to find the differences between strong naming and other signing schemes like, say, <a href="http://www.iss.net/security_center/advice/Countermeasures/Authentication/Authenticode/default.htm" rel="noreferrer">Authenticode</a>. The same MSDN article mentioned early states:</p>
  
  <blockquote>
    <p>"<em>Note, however, that strong names in and of themselves do not imply a level of trust like that provided, for example, by a digital signature and supporting certificate.</em>"</p>
  </blockquote>
  
  <p>Am I trying to use strong-naming for much more than it was created for? Was strong-naming created just to avoid name clashes or a new kind of "GAC DLL Hell"?</p>