Ответы:
Файл .snk используется для применения строгого имени к сборке .NET . такое сильное имя состоит из
простое текстовое имя, номер версии и информация о культуре (если есть) - плюс открытый ключ и цифровая подпись.
SNK содержит уникальную пару ключей - закрытый и открытый ключи, которые можно использовать для обеспечения уникального строгого имени для сборки. Когда сборка имеет строгое имя, из содержимого сборки создается хеш, и хеш шифруется с помощью закрытого ключа. Затем этот подписанный хеш помещается в сборку вместе с открытым ключом из .snk.
Позже, когда кто-то должен проверить целостность сборки со строгим именем, он создает хэш содержимого сборки и использует открытый ключ из сборки, чтобы расшифровать хеш, который поставляется вместе со сборкой - если два хеша совпадают, проверка сборки проходит.
Важно иметь возможность проверять сборки таким образом, чтобы никто не поменял сборку на вредоносную, которая разрушит все приложение. Вот почему сборкам со строгими именами не доверяют так же, как сборкам со строгими именами, поэтому они не могут быть помещены в GAC. Кроме того, существует цепочка доверия - вы не можете сгенерировать сборку со строгим именем, которая ссылается на сборки без строгого имени.
Статья " Секреты строгого именования (заархивирована на Wayback Machine) ". Отличная работа по объяснению этих понятий более подробно. С картинками.
В мире .Net файл SNK используется для подписи ваших скомпилированных двоичных файлов. Это позволяет пару вещей произойти:
Я не знаком с тем, как работает сервер BizTalk , поэтому я не думаю, что смогу пролить свет на то, какую конкретную цель они выполняют в этой среде.
Надеюсь, это было несколько полезно.
Файл .snk используется для подписания сборок, чтобы иметь возможность добавлять их в глобальный кэш сборок (GAC).
Файл .snk содержит публичные и приватные токены для вашего ключа. Если вы хотите подписать некоторые данные (или двоичные данные) этим ключом, для данных вычисляется контрольная сумма, которая затем шифруется с помощью личного токена. Зашифрованная контрольная сумма затем добавляется к данным. Любой может использовать открытый токен из вашего ключа, чтобы расшифровать контрольную сумму и сравнить ее с вычисленной контрольной суммой, чтобы убедиться, что подписанные данные не были подделаны.
Вы можете прочитать больше о криптографии с открытым ключом на http://en.wikipedia.org/wiki/Public-key_cryptography .
Файл .snk - это постоянная версия вашего «Ключа», созданная утилитой sn в наборе утилит framework. Затем вы используете этот файл для «цифровой подписи» ваших сборок. Это двухкомпонентный ключ .. комбинация закрытого и открытого ключей. Публичная часть ключа опубликована, то есть известна всем. Приватная часть известна только вам, разработчику компонентов / приложений, и предназначена для сохранения таким образом.
Когда вы подписываете свою сборку, она использует закрытый ключ и хеш-значение для вашей сборки, чтобы создать цифровую подпись, встроенную в вашу сборку. После этого любой, кто загружает вашу сборку, проходит этап проверки. Открытый ключ используется для проверки, действительно ли сборка исходит от вас ... для этого вам просто нужен открытый ключ (который также встроен в токенизированную форму в манифесте сборки). Если сборка была подделана, значение хеша будет другим, и нагрузка на сборку будет прервана. Это механизм безопасности.
Файл .snk используется, чтобы гарантировать, что кто-то другой не сможет вставить свою сборку вместо вас. Он предоставляет пару ключей шифрования / дешифрования.
Когда для подписи сборки используется файл .snk, значение хеш-кода вычисляется из файла сборки и шифруется с использованием закрытого ключа. Затем этот зашифрованный «дайджест» прикрепляется к сборке вместе с открытым ключом из файла .snk.
Затем, когда кто-то получает вашу сборку, он также может вычислить это значение хэш-кода. Они используют открытый ключ, чтобы расшифровать тот, который вы рассчитали, и сравнить рассчитанные значения. Если сборка была изменена вообще, эти значения будут другими, и пользователь сборки будет знать, что ваша сборка не та, которую вы указали.
В контексте BizTalk Server тот, кто создает какие-либо пользовательские сборки, используемые вашим решением BizTalk, должен будет использовать файл .snk для подписи сборки, чтобы сервер BizTalk мог загрузить его в GAC и использовать его.