Игровая индустрияФорумУправление

Цифровая подпись Windows программы

#0
12:28, 14 мая 2025

Хочу спросить местных разработчиков про code signing. Я до сих пор плохо представляю что это такое, можно ликбез? Что-то добавляется к экзешнику с помощью специальной программы? Насколько сложно заплатить за эту подпись?
p.s. Я не очень ориентируюсь - может на форуме есть более подходящий раздел для такой темы?

#1
13:58, 14 мая 2025

Если не вдаваться в криптографию, то кратко:

Выпускается цифровой сертификат. Он хранится либо в виде обычного файла, либо в специальном USB токене, либо в облачном хранилище.

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

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

Можно выпустить расширенный сертификат, который отличается тем, что винда вообще не проверяет количество запусков, а сразу запускает приложение. Этот сертификат идет с пометкой EV (Extended Validation).

Как получить:
Есть удостоверяющие центры, типо GlobalSign (сам покупаю у них), регистрируетесь и оплачиваете. Дальше проходите множество этапов подтверждения личности. Для обычного Code sign сертификата (без EV) требований меньше и можно получить даже на физ. лицо.
Для EV сертификата требуется более сложная процедура валидации, отправка документов юр. лица, а также поиск адвоката, который сможет подтвердить подлинность документов в личном присутствии. С адвокатом удостоверяющий центр сам свяжется через его адвокатскую палату и спросит, удостоверился ли он в корректности документов.

Сертификаты от удостоверяющих центров обычно устанавливаются только на токен, который отправят курьером под личное вручение.

Ценник на обычный сертификат примерно 10-20к на год. EV сертификат выйдет дороже, около 30-50к в год (плюс услуги адвоката, покупка токена).

#2
14:48, 14 мая 2025

Storm54
> Выпускается цифровой сертификат. Он хранится либо в виде обычного файла, либо в специальном USB токене, либо в облачном хранилище.
>
> В винде есть специальная утилита SignTool, которая позволяет подписывать exe (и некоторые другие типы) этим сертификатом. В самом exe, в свойствах, можно увидеть этот сертификат. Подавляющее большинство приложений от нормальных разработчиков имеет цифровую подпись, которую можно увидеть.

Как это выглядит с технической точки зрения? Этот сертификат в виде файла мне надо поместить в дистрибутив рядом екзешником? Или всё сводится к модификации екзешника? Далее вопрос, как мне быть если я каждые два месяца выкладываю новую версию программы - мне не потребуется каждый раз вызывать курьера? Может я им пришлю экзешник, они проверят его на антивирусы и пришлют мне подписанный вариант?
Или получить сертификат потребуется только один раз, и я при каждом обновлении программы буду запускать SignTool для подписи? А как тогда решается вопрос проверки, что я не начал со временем подписывать своим сертификатом что-то не то?

#3
(Правка: 15:09) 14:57, 14 мая 2025

Vit Nhoc
> Или всё сводится к модификации екзешника?
модификация екзешника
> при каждом обновлении программы буду запускать SignTool для подписи?
да

Vit Nhoc
> что я не начал со временем подписывать своим сертификатом что-то не то?
это твоя подпись и твоя репутация.

но пользователю будет спокойнее, если вирус будет подписан производителем. ОСь не будет возражать, да и спецслужбовцем будет проще найти концы :)

если приватный ключ подписи кто-нить украдёт. Так же обрадаешься в сервис, который выдал ключ и они отзывают подпись. После чего тебя никто не сможет прдставить

#4
16:02, 14 мая 2025

Есть смысл подписывать инсталяторы, что бы при их скачивании система не ругалась. Это реально влияет на установки. Подписывать сами программы смысла большого не имеет

#5
16:38, 14 мая 2025

Vit Nhoc
> Как это выглядит с технической точки зрения? Этот сертификат в виде файла мне надо поместить в дистрибутив рядом екзешником?

Как уже написали, это модификация экзешника. В некоторых форматах файлов есть специальная секция под цифровую подпись. Туда помещается контрольная сумма (SHA256 обычно) файла и подпись этой контрольной суммы, а также публичная часть сертификата.

Vit Nhoc
> Далее вопрос, как мне быть если я каждые два месяца выкладываю новую версию программы - мне не потребуется каждый раз вызывать курьера?
Когда выдатут сертификат, то у него будет срок действия (обычно 1-3 года). Этим сертификатом можно подписывать любые exe файлы любое количество раз. Для этого достаточно воткнуть токен в компьютер, запустить SignTool и ввести пароль в появившемся приложении токена.

Vit Nhoc
> Может я им пришлю экзешник, они проверят его на антивирусы и пришлют мне подписанный вариант?
Никто ничего не проверяет. Подразумевается, что ты от лица своей компании подписываешь сертификат и в случае чего отвечаешь за любые нарушения, которые причинило подписанное тобой приложение. Есть еще определенная страховая сумма (типо, 50000$), которая покрывает расходы, но в это я не вникал, т.к. лучше просто не подписывать вредоносный код или просто чужие приложения.

Vit Nhoc
> А как тогда решается вопрос проверки, что я не начал со временем подписывать своим сертификатом что-то не то?
Во-первых, могут отозвать сертификат в любой момент, если пойдут жалобы.
Во-вторых, могут обратиться в соответствующие органы, т.к. информация о владельце сертификата доступна.
Более того, эта информация доступна (вплоть до полного адреса, а иногда и номера телефона) любому человеку, который откроет свойства файла.

#6
16:58, 14 мая 2025

KolyaL
> Есть смысл подписывать инсталяторы, что бы при их скачивании система не ругалась. Это реально влияет на установки. Подписывать сами программы смысла большого не имеет

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

#7
17:52, 14 мая 2025

Потому что так упаковывается продукт.
Рядовой пользователь не будет разбираться как извлекать архив.

#8
18:24, 14 мая 2025

Наверное, это потому что подписывать нужно и программу и инсталлятор к ней

#9
19:17, 14 мая 2025

Ещё вопрос: а на физлицо в России вообще можно получить сертификат? Я вот услышал что GlobalSign делает подпись только для ИП.

#10
21:39, 14 мая 2025

Ранее у Sectigo можно было заказать, сейчас других вариантов нет.

Без ИП не совсем понятно, зачем в это все влезать. Ради копеек можно ничего и не подписывать.

#11
5:37, 15 мая 2025

Storm54
> Ранее у Sectigo можно было заказать, сейчас других вариантов нет.

Не совсем понял, каких других вариантов?
Сейчас физик в России может сделать сертификат через Pestigo?
Мне сказали что GlobalSign уже полтора года не делает сертификат для физиков.

Игровая индустрияФорумУправление