настолько хорошо, лаконично и практично написано что не удержался и перевел.
— Powershell in depth Don Jones Richard Siddaway
Глава 17.3.1 Цифровая подпись, ликбез
Уже несколько лет Microsoft продвигает идею подписи кода как механизм защиты. Подписанный код несет в себе зашифрованный блок называемый цифровая подпись. Эта подпись содержит в себе информацию идентифицирующую подписывающего, и дает уверенность что код не был изменен с момента подписи. С практической точки зрения подпись говорит что (А) кто подписал приложение, (Б) оно не было изменено с момента подписания. Любые проблемы с приложением могут таким образом переложить отвественость на распространяющую сторону, а информация в сертификате помогает выйти на нее.
Цифровая подпись не предотвращает распространение вредного кода. Но в идеале, только экстремально тупой человек поставит свою цифровую подпись на вредоносе, потому что подпись позволяет выйти на подписывающего. Такова идея в идеале.
Цифровая подпись это целый бизнес, работающий на механизме доверия (в русскоязычной литературе доверительных отношений).
Давайте используем аналогию: в США водительские лицензии могут использоваться для идентификации людей (кароче как паспорт). Кроме всего прочего они включают в себя дату рождения и бармен или продавец в магазине могут проверить ее до того как продадут вам алкоголь. В компьютерных терминах США имеют 52 «центра сертификации» (CA): по одному в каждом из 50 штатов, один в Вашингтоне округ Колумбия (их столица, идет как отдельный субъект), и один армии США. Если вы живете в Неваде, вы идете за правами в департамент транспортных средств штата Невада и получаете права. Вы выезжаете в Калифорнию и покупаете баночку пива, потому что Калифорния доверяет департаменту в Неваде. В реальности, все другие штаты доверяют CA других штатов, и таким образом ваши права действительны по всей стране. Почему это так? Очевидно что по юридическим причинам, но в реальности причина в следующем: штат доверяет другому штату потому что они все используют одинаковые основные процессы проверки вашей личности, ее возраст, и проверки были проведены перед выдачей документа. Это не значит что один штат полностью доверился другому штату, но это означает что один штат доверяет процессу в другом штате и процедуры всеми приняты (согласованы). Если в новостях объявят что штат лишается лицензии то все водительские лицензии этого штата прекратят действовать в других штатах, по причине прекращения доверия.
Давайте вернемся к компьютерам. В мире цифровых сертификатов есть несколько классов сертификатов. каждый класс сертификатов создан исходя из решений что может произойти если сертификатом завладеет злоумышленник. Сертификаты Class 1 используются для шифрования электронной почты, и наихудшее что произойдет это чтение вашей почты когда вы не хотите этого. Плохо для вас, но не так плохо для общества в целом.
Сертификаты необходимые для подписи кода называются Class 3. И выдаются только организациям (февраль 2016 — это уже не так, можно пройти процедуру индивидуальной проверки у нотариуса и выслать документы факсом) после тщательной проверки указанных ею данных. Обычно CA проверяет регистрацию компании в Dun&Bradstreet, регистрацию фирмы в государстве или штате где она зарегистрирована, и т.п. Таким образом если у вас есть сертификат Micrisoft Corporation то все считают что вы имеете право представлять эту компанию.
Это место где включается в дело доверие. Сертификат может быть выдан коммерческим центром сертификации или приватным (самделошным CA). Windows имеет встроенный список СА которым она может доверять. Vista и более ранние системы имеют маленький список СА. Вы можете проверить центры сертификации по списку в системе и проверить как они выдают сертификаты. Если вам не понравится вы можете удалить этот СА из списка сказав «я не думаю что они хорошо проверяют сертификаты, может быть они выдали их без проверки злоумышленникам. Этот СА выдает сертификаты без проверки». Это тоже самое что произойдет если департамент штата начнет выдавать водительские лицензии направо и налево без проверки — все перестанут доверять правам этого штата, процесс не соблюдается, значит и доверие исчезает.
Таким образом ваш компьютер должен содержать список СА которые хорошо делают свою работу, должна быть уверенность что сертификат был выдан именно той компании что указана. Если приложение заражено вы сможете с легкостью найти организацию и принять меры. Но если ваш СА делает работу плохо, то вы не можете доказать что вредоносный код был подписан именно «Adobe Inc». Когда вы будете отслеживать его вы обнаружите что СА не знает кому выдал сертификат, т.к. не провел как нужно проверку подлинности.
Таким образом цифровая подпись не предотвращает появления плохого кода. Подписанные скрипты не становятся лучшими скриптами или не начинают безопаснее работать в вашей среде. Все что вы знаете из подписи это кто ее поставил (подписал) и что код не был модифицирован со времени подписи.
— глава 17.3.3 абзац (RemoteSigned)
Помните что некоторые приложения например Firefox, Internet Explorer, Outlook добавляют специальный флаг к файлу когда он сохраняется на диск. Файлы с этим флагом будут определены как получение извне при попытке их запустить в PowerShell
Автор: pak-nikolai