Что такое задержка подписания и строгие имена в.net?

Я видел во многих статьях, где написано, что задержка подписания и строгое название для сборки не позволяют ему быть обманутым.

Что это значит?

Единственное, что я знаю, без строгого имени, вы не можете установить сборку в GAC. Итак, предположим, что у меня есть сборка без строгого имени, это может быть хай-джек?

Кто-то, пожалуйста, проясните мои сомнения.

1 ответ

Решение

Существует много информации об этом на MSDN; например: строгое именование и задержка подписи

Подводя итог основной идеи:

Сильное именование - это способ пометить вашу сборку простой идентификационной меткой, которую можно использовать позже для проверки того, что она не была изменена с момента ее развертывания. Строгое имя - это, по сути, хэш имени сборки, версии и "ключа строгого имени", уникального для разработчика. Ссылки на сборки со строгими именами проходят более строгую проверку, чем ссылки на неумышленные; в частности, ссылки со строгими именами должны соответствовать номерам версий, а хэш строгих имен должен соответствовать.

Это помогает избежать двух распространенных источников потенциальных уязвимостей в ваших программах:

  1. Злонамеренный пользователь заменяет сборку в вашей программе другой сборкой с тем же именем файла, но содержащей вредоносный код, и убеждает вашу программу загрузить и выполнить ее.
  2. Злонамеренный пользователь заменяет сборку в вашей программе другой версией той же сборки, но с известными ошибками, которые с тех пор были исправлены.

Процесс строгого имени отклонит оба этих действия, поскольку данные строгого имени не будут совпадать. Вот почему сборки в GAC должны иметь строгое название: они используются настолько повсеместно, что в противном случае они могли бы стать основными целями для такого рода угона.

Обратите внимание, однако, что строгие имена абсолютно ничего не делают для проверки личности издателя. Любой может опубликовать сборку со строгим именем, претендующую на звание Microsoft, и в строгом названии нет ничего, что могло бы опровергнуть это утверждение. Проверка идентификации - это задача цифровых подписей Authenticode, которые отличаются от строгих имен. Эти два часто используются вместе, но они являются ортогональными понятиями.

Задержка подписи - это метод подписания сборок вне процесса сборки. Идея заключается в том, что в вашей компании могут быть политики, которые не позволяют ключам строгого имени быть доступными во время сборки (возможно, они хранятся в автономном режиме или защищены паролем.) Сборка с задержкой со знаком помечается пустым символом строгого режима. Имя ключа: в основном резервирует место для ключа, который будет добавлен позже авторизованным пользователем. В то же время включается частичный ключ строгого имени - достаточно информации для других сборок, чтобы сделать надежную ссылку, но недостаточно для обнаружения изменений или модификаций.

Другие вопросы по тегам