Эрик Липперт недавно опубликовал о сборках со строгой подписью:
Назначение строгого имени состоит исключительно в том, чтобы гарантировать, что при загрузке сборки по имени, вы загружаете именно ту сборку, которую думаете, что загружаете . Вы говорите: «Я хочу загрузить Frobber версии 4, полученной от FooCorp». Механизм строгого имени гарантирует, что вы действительно загрузите именно эту DLL, а не другую сборку под названием Frobber, версия 4, которая пришла от Dr. Evil Enterprises. Затем вы можете установить политику безопасности, которая гласит: «Если у меня есть сборка от FooCorp на моем компьютере, полностью доверяйте ей». Эти сценарии являются единственными намерениями использования строгих имен.
Короче говоря, сборки со строгими именами подписываются сертификатом. Они играют роль для CAS (Code Access Security): что сборка имеет право делать или не делать.
[Edit], как указали некоторые из вас: действительно рекомендуется создавать сильные сборки, поскольку они будут более устойчивы к атакам, таким как внедрение чужого вредоносного кода в ваше приложение, если вы, например, написали какой-либо механизм подключаемых модулей.
Таким образом вы можете ограничить то, что разрешено делать сторонним надстройкам в контексте вашего приложения.
Я нашел эту статью журнала MSDN полезной при изучении сборок строгого именования.
If you're talking about .NET assemblies, here are the docs.