Хочу спросить местных разработчиков про code signing. Я до сих пор плохо представляю что это такое, можно ликбез? Что-то добавляется к экзешнику с помощью специальной программы? Насколько сложно заплатить за эту подпись?
p.s. Я не очень ориентируюсь - может на форуме есть более подходящий раздел для такой темы?
Если не вдаваться в криптографию, то кратко:
Выпускается цифровой сертификат. Он хранится либо в виде обычного файла, либо в специальном USB токене, либо в облачном хранилище.
В винде есть специальная утилита SignTool, которая позволяет подписывать exe (и некоторые другие типы) этим сертификатом. В самом exe, в свойствах, можно увидеть этот сертификат. Подавляющее большинство приложений от нормальных разработчиков имеет цифровую подпись, которую можно увидеть.
Смысл всего этого в том, что винда при запуске любого приложения проверяет эту подпись. Если подписи нет, то ругается. Если подпись есть, то проверяется, кем был выдан сертификат и если он выдан нормальным удостоверяющим центром, а не каким-то ноунеймом, а также в облачной базе microsoft накопилась статистика о частом запуске этого приложения по всему миру (10000+ запусков примерно), то никакой ошибки не будет и сразу запустится приложение.
Можно выпустить расширенный сертификат, который отличается тем, что винда вообще не проверяет количество запусков, а сразу запускает приложение. Этот сертификат идет с пометкой EV (Extended Validation).
Как получить:
Есть удостоверяющие центры, типо GlobalSign (сам покупаю у них), регистрируетесь и оплачиваете. Дальше проходите множество этапов подтверждения личности. Для обычного Code sign сертификата (без EV) требований меньше и можно получить даже на физ. лицо.
Для EV сертификата требуется более сложная процедура валидации, отправка документов юр. лица, а также поиск адвоката, который сможет подтвердить подлинность документов в личном присутствии. С адвокатом удостоверяющий центр сам свяжется через его адвокатскую палату и спросит, удостоверился ли он в корректности документов.
Сертификаты от удостоверяющих центров обычно устанавливаются только на токен, который отправят курьером под личное вручение.
Ценник на обычный сертификат примерно 10-20к на год. EV сертификат выйдет дороже, около 30-50к в год (плюс услуги адвоката, покупка токена).
Storm54
> Выпускается цифровой сертификат. Он хранится либо в виде обычного файла, либо в специальном USB токене, либо в облачном хранилище.
>
> В винде есть специальная утилита SignTool, которая позволяет подписывать exe (и некоторые другие типы) этим сертификатом. В самом exe, в свойствах, можно увидеть этот сертификат. Подавляющее большинство приложений от нормальных разработчиков имеет цифровую подпись, которую можно увидеть.
Как это выглядит с технической точки зрения? Этот сертификат в виде файла мне надо поместить в дистрибутив рядом екзешником? Или всё сводится к модификации екзешника? Далее вопрос, как мне быть если я каждые два месяца выкладываю новую версию программы - мне не потребуется каждый раз вызывать курьера? Может я им пришлю экзешник, они проверят его на антивирусы и пришлют мне подписанный вариант?
Или получить сертификат потребуется только один раз, и я при каждом обновлении программы буду запускать SignTool для подписи? А как тогда решается вопрос проверки, что я не начал со временем подписывать своим сертификатом что-то не то?
Vit Nhoc
> Или всё сводится к модификации екзешника?
модификация екзешника
> при каждом обновлении программы буду запускать SignTool для подписи?
да
Vit Nhoc
> что я не начал со временем подписывать своим сертификатом что-то не то?
это твоя подпись и твоя репутация.
но пользователю будет спокойнее, если вирус будет подписан производителем. ОСь не будет возражать, да и спецслужбовцем будет проще найти концы :)
если приватный ключ подписи кто-нить украдёт. Так же обрадаешься в сервис, который выдал ключ и они отзывают подпись. После чего тебя никто не сможет прдставить
Есть смысл подписывать инсталяторы, что бы при их скачивании система не ругалась. Это реально влияет на установки. Подписывать сами программы смысла большого не имеет
Vit Nhoc
> Как это выглядит с технической точки зрения? Этот сертификат в виде файла мне надо поместить в дистрибутив рядом екзешником?
Как уже написали, это модификация экзешника. В некоторых форматах файлов есть специальная секция под цифровую подпись. Туда помещается контрольная сумма (SHA256 обычно) файла и подпись этой контрольной суммы, а также публичная часть сертификата.
Vit Nhoc
> Далее вопрос, как мне быть если я каждые два месяца выкладываю новую версию программы - мне не потребуется каждый раз вызывать курьера?
Когда выдатут сертификат, то у него будет срок действия (обычно 1-3 года). Этим сертификатом можно подписывать любые exe файлы любое количество раз. Для этого достаточно воткнуть токен в компьютер, запустить SignTool и ввести пароль в появившемся приложении токена.
Vit Nhoc
> Может я им пришлю экзешник, они проверят его на антивирусы и пришлют мне подписанный вариант?
Никто ничего не проверяет. Подразумевается, что ты от лица своей компании подписываешь сертификат и в случае чего отвечаешь за любые нарушения, которые причинило подписанное тобой приложение. Есть еще определенная страховая сумма (типо, 50000$), которая покрывает расходы, но в это я не вникал, т.к. лучше просто не подписывать вредоносный код или просто чужие приложения.
Vit Nhoc
> А как тогда решается вопрос проверки, что я не начал со временем подписывать своим сертификатом что-то не то?
Во-первых, могут отозвать сертификат в любой момент, если пойдут жалобы.
Во-вторых, могут обратиться в соответствующие органы, т.к. информация о владельце сертификата доступна.
Более того, эта информация доступна (вплоть до полного адреса, а иногда и номера телефона) любому человеку, который откроет свойства файла.
KolyaL
> Есть смысл подписывать инсталяторы, что бы при их скачивании система не ругалась. Это реально влияет на установки. Подписывать сами программы смысла большого не имеет
Я не понимаю как это работает. Если саму программу подписывать не надо, почему нельзя просто обойтись без инсталлятора, выложить на сайт обычный zip архив?
Потому что так упаковывается продукт.
Рядовой пользователь не будет разбираться как извлекать архив.
Наверное, это потому что подписывать нужно и программу и инсталлятор к ней
Ещё вопрос: а на физлицо в России вообще можно получить сертификат? Я вот услышал что GlobalSign делает подпись только для ИП.
Ранее у Sectigo можно было заказать, сейчас других вариантов нет.
Без ИП не совсем понятно, зачем в это все влезать. Ради копеек можно ничего и не подписывать.
Storm54
> Ранее у Sectigo можно было заказать, сейчас других вариантов нет.
Не совсем понял, каких других вариантов?
Сейчас физик в России может сделать сертификат через Pestigo?
Мне сказали что GlobalSign уже полтора года не делает сертификат для физиков.