>> assemblies, so you can apply strong> security policies to determine what permissions are granted to the assembly .They differ not in their technical details, but in the problems that they must solve.
The purpose of a strong name is solely to ensure that when you load an assembly by name, you load the exact assembly that you think you are loading . This is only for the intended purpose of a strong name. You say, "I want to download Frobber, version 4, which appeared in FooCorp." A strong naming convention ensures that you are actually loading this particular DLL, and not another assembly called Frobber, version 4, which comes from Dr. Evil Enterprises.
To achieve this, all that is required is that you know the public key token associated with the FooCorp private key. How do you know that a public key token is your business. There is no infrastructure to help you get this information safely. You just have to know what it is.
The purpose of a digital signature from a publisher’s certificate is to establish a verifiable chain of identification and trust . The chain of trust runs from a piece of code of unknown or uncertain origin to the "trusted root" - the object that you configured your operating system to trust. You are downloading some code, and the code is digitally signed with a certificate from FooCorp. You check the certificate, and it says: "This program comes from FooCorp. VeriSign has assigned the accuracy of this certificate." Since VeriSign is one of your trusted roots, you now have the confidence that this code has really appeared in FooCorp.
Notice how much more difficult the problem is solved by digital signatures. We are not trying to simply determine if this code is code associated with this name or not? Instead, we are trying to determine where this code came from, and who scolds the existence of the company supposedly responsible, and should we trust this company?
The distinction between strong names and digital signatures emphasizes that it is difficult to use for crypto protection. The tough problem is not cryptography; it's just math. A tough problem is the secure management of the distribution of key information and their binding to the correct objects. Strong names, because they are trying to solve a very small but important problem, do not have management problems. Or rather, they are imposing a key management problem on you, the user. Digital signatures aim to automate the secure distribution of key information through certificates to solve much more complex issues of trust and identification.
It is clear?
(Big question: it will be my blog on September 3rd)
Eric Lippert Aug 26 '09 at 16:45 2009-08-26 16:45
source share