2010-07-13 2 views
5

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

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

  • Подписанный exe имеет цифровой сертификат, который показывает как «действительный» сертификат. Когда вы загружаете такой файл из Интернета, он показывает предупреждение в Windows о том, что вы собираетесь запустить программу из потенциально опасного места, опубликованного Xyz Corporation.
  • Без подписи, загруженный файл даст совершенно другой вид предупреждение, что флажок файл сомнителен

Теперь, что касается меня, это:

  • Если подписанный ехе является изменен, когда вы перейдете в «Свойства»> «Цифровые подписи»> «Выбрать подпись»> «Подробнее ...», это показывает «Эта цифровая подпись недопустима». Это довольно неясный способ взглянуть на то, что может быть серьезной проблемой, а огромный индикатор не должен запускать файл.

    • Если вы запустите этот файл из Windows (не загружается), он будет работать нормально. Нет предупреждений или каких-либо признаков, что-то не так
    • Я не проверял, что произойдет, если вы загрузите файл, а затем попробуйте запустить его.
  • Если вы отделили подпись от файла (используя delcert), нет никаких указаний, что и в этом нет ничего плохого. Опять же, вы можете запустить файл, и только сертификат не отображается в диалоговом окне свойств.


Чтобы сделать это более полезно, я имею в виду, что подписанный файл должен проверить себя. При запуске должно быть проверено, что есть действительная подпись, и потенциально, что отпечаток sha1 подписи соответствует ожидаемой сигнатуре для сертификата Xyz Corporation.

(Конечно, это еще не справиться с ситуацией, когда кто-то вырезает сертификат, а затем редактирует файл для удаления проверки сертификата)


Я не могу найти кого-нибудь говорить о том, как сделать это (по крайней мере, не в .NET, и, конечно же, не с простым API-вызовом, как я бы ожидал) - так это приводит к двум вопросам:

  1. Есть ли причина, по которой подпись не проверяется? Какие еще преимущества могут быть подписаны без этой проверки?
  2. Я пытаюсь проверить подпись как средство обнаружения несанкционированного доступа так бесполезно, что его бессмысленно пытаться?
  3. Как проверить сертификат текущего исполняемого файла в .NET?
+1

Для .NET вы должны использовать сильное имя подписи, не Authenticode. –

ответ

0

Посмотрите на этот вопрос. Один из комментаторов сказал, что существует параметр политики, позволяющий запускать только подписанные исполняемые файлы.

Are "code-signed" windows applications less vulnerable to virus infections?

Кроме того, этот вопрос очень похож: Preventing executables with invalid Authenticode signatures from running

Смежные вопросы