CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО

CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО ЭЦП

27
(спустя 34 минуты)

Страница 1 из 9

Часовой пояс: UTC + 3

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

Время на прочтение

Хотел бы рассказать тут о такой важной особенности разработки под Windows как Code Signing. А ведь многие достаточно серьёзные разработчики до сих пор ей не пользуются, и очень зря. Помимо того что при запуске вашего неподписанного приложения появляется противная красная иконка с крестом и неприятным текстом:
«Этот файл не имеет цифровой подписи которая может подтвердить производителя. Вы должны запускать программы только от производителей которым доверяете.»
Это ещё и пропуск на корпоративный рынок.
При запуске неподписанной программы появляется такое окно:


CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО

А так выглядит окно когда программа подписана:


CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО

Раньше вы возможно не обращали внимания на эту ерунду, но многие обращают. Во многих компаниях (те что покрупнее и не очень) запуск неподписанных программ просто запрещён, защита от вирусов и прочего «добра». Так что неподписанной программой вы сходу закрываете себе этот рынок и пугаете обычных пользователей. И это при том что сертификат для подписи стоит всего $99 в год ( у Comodo Group Inc. ).

Один важный момент, прежде чем получать сертификат, очень желательно зарегистрировать вашу компанию или ИП в агенстве Dun & Bradstreet и получить DUNS номер. Этот номер очень уважается компаниями которые выдают сертификаты и при предъявлении этого номера, в абсолютном большинстве случаев, более никаких подтверждающих документов не спрашивают. Иначе придётся высылать сканы уставных документов, а иногда и каких-нибудь счетов на компанию, например за телефон. Для получения сертификата на ИП это один из главных шагов. Без этого в случае ИП может вообще ничего не получиться.

Сам процесс подписания программы/инсталлятора достаточно простой и легко автоматизируется, если надо могу описать и его.

Вот собственно и всё. Если вы работаете на рынке программного обеспечения для windows — сертификат это важная и необходимая вещь. Я надо признать и сам стал избегать неподписанных программ после этого.

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

Текущая актуальная версия программы 7
Распространяется бесплатно
Внедренная в документ электронная подпись работает только с небольшими документами помещающимися в память программы.
Ограничение криптопровайдера. Поэтому для подписи больших файлов используйте отделенную электронную подпись.

В ближайших версиях есть намерение дополнить программу:

17.01.2020 Поступило обращение без указанного обратного e-mail адреса о возникновении ошибки после выбора файла для подписи
и нажатия кнопки «Далее».
Код исключения c0000005.
Наиболее вероятно что ошибка связана с каким-то ограничением которое решил установить ваш антивирус.
Рекомендую попробовать пробно запустить программу с отключеным антивирусом. Затем разобраться что стоит добавить в исключения.
Наиболее вероятно что антивирус не дает взаимодействовать двум исполняемым файлам программы OPFD.exe и SignMachineW32.exe.
Если метод поможет не поленитесь пожалуйста отправить ответ о результате.

Предыдущие версии программы:

Запустив сегодня программу, описанную в статье, я увидел следующее предупреждение:


CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО

Бросается в глаза необычный префикс, Open source developer. Кроме того, несколько дней назад я уже видел точно такой же префикс, с другим именем. Напрашивается вывод, что, скорее всего, существует какая-то программа выдачи подобных сертификатов.

Несложный поиск показал следующее:

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

ЭЦП:  Код ошибки 0x80070002 в windows 10, 8.1, 7

На Хабре затрагивали тему подписывания кода несколько раз: общий обзор, советы по упрощению процедуры. Не так давно рассматривался вариант от StartSSL, тем не менее, требующий подтверждения личности class 2 (в терминах StartSSL), уже являющейся платной (в отличие от бесплатной class 1 для доменов).

Сумма в 60-500 долларов — не деньги для хоть сколько-нибудь крупной компании. Но как быть в случае с Open Source? Зачастую подобные проекты (если речь не идет об именах, которые у всех на слуху) не имеют достаточного финансирования либо разрабатываются исключительно на энтузиазме и других нематериальных ценностях.

Для таких случаев можно воспользоваться предложением от польской компании Certum:


CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО

Как видим, процедура достаточно простая и не занимает много времени (по заявлениям компании — до 24 часов).

Для сертификатов заявляется следующее (перевел только существенные пункты, полную версию см. на сайте):

Похоже, что безопасность становится трендом, и появляется все больше некоммерческих предложений в разных сферах. Интересно, что нам предложат следующим?

UPD: сертификат перестал быть бесплатным, текущая стоимость — €14.00 / €17.22 (пока не ясно, на какой срок выдается сертификат)
Тем не менее, это все равно ниже, чем у ближайшего конкурента — StartSSL ($60)

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вы — разработчик Open Source (просьба к другим людям не голосовать). У вас есть цифровая подпись для сборок?

да, это крупный проект, я к подписыванию отношения не имею

да, это мой личный проект, покупал коммерческий сертификат

нет, но теперь появится

нет, не планирую

проект предоставляется в исходных кодах (интерпретируемый язык)

Проголосовали 340 пользователей.

Воздержались 613 пользователей.

Вы (голосование для всех):

разработчик, не участвую в Open Source

разработчик, участвую в Open Source

не являюсь разработчиком

Проголосовали 892 пользователя.

Воздержались 199 пользователей.

Последняя выпущенная версия программы поддерживает штампы времени.

Программа предназначена для электронной подписи документов
в соответствии с требованиями Российкого законодательства.
Посредством обращения к сертифицированному криптопровайдеру программа обеспечивает
юридическую значимость электронных документов посредством использования процедур формирования и проверки
(ЭП) в соответствии с отечественными стандартами
ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (с использованием ГОСТ Р 34.11-94 / ГОСТ Р 34.11-2012 для хешширования);

Используется сертификат электронной подписи квалифицированный (выданный одним из аккредитованных Минкомсвязи России
удостоверяющим центром) или неквалифицированный (например выданный на сайте ФНС России в личном кабинете физического лица).
Сертификатом вы должны уже обладать если желаете воспользоваться программой.
Вид создаваемой программой подписей CADES-BES , CADES-T и CADES-T дополненный штампом времени на содержимое документа.
Дополнительно об этом можно прочесть на этой страничке сайта компании КриптоПро.
Так как вид работ (криптографическая защита информации) требует специального лицензирования
то для операций подписи и ее проверки используются сертифицированные криптопровайдеры:
КриптоПро CSP или ViPNet CSP.
Хотя бы один из которых должен быть установлен на вашем компьютере.

Информация о получении ViPNet CSP на сайте производителя Infotecs
На момент написания этой статьи, криптопровайдер ViPNet CSP распространяется бесплатно, требует регистрации.

Информация о приобретении или получении пробной 90 дневной версии
КриптоПро CSP здесь на сайте КриптоПро.

Несколько слов о штампах времени.
Зачем они нужны?
Во первых при использовании штампа времени появляется доверенная дата подписания документа.
Во вторых наличие штампа времени удлиняет срок проверяемости электронной подписи.
В третьих исключает такую ситуацию:
Например: Имеем сертификат подписи срок действия которого с 01.01.2018 по 01.01.2019
Два документа были подписаны этим сертификатом.
Первый документ подписан без штампа времени 01.02.2018 когда сертификат подписи был действителен.
Второй документ подписан без штампа времени 30.03.2019 когда сертификат уже был просроченным.
Отправитель утверждает что оба документа были подписаны одновременно.
Получатель проверяющий подпись простым способом (CADES-BES) не может ничего уверенного сказать
относительно истинности утверждения отправителя о времени подписания и главное о том что на момент
подписания сертификат подписи был действителен.
Использование штампа времени и его проверка позволяют разрешить эту ситуацию.

ЭЦП:  СКЗИ КРИПТО КОМ 3 4 СКАЧАТЬ СКЗИ КРИПТО ПРО CSP

Программа умеет проставлять и проверять два типа штампов времени:

Главное различие этих штампов в том что штамп времени на содержимое ставится до подписания документа.
И затем уже документ подписывается вместе со штампом времени.
Таким образом данный штамп оказывается защищен подписью отправителя и не может быть изменен впоследствии.
Следовательно он придает уверенность в том что документ существовал на момент подписания.
А штамп времени на подпись подтверждает что на момент получения этого штампа
подпись существовала и сертификат не был просрочен.
Но в отличие от штампа времени на содержимое данный штамп может быть отнят от документа и заменен на более поздний
без ведома лица поставившего подпись. Т.е. он не может служить отметкой времени подписания документа.
Получается что в штампе времени на содержимое, видимо, более заинтересован отправитель, а
в штампе времени на подпись принявший подпись получатель. Он может даже добавить этот штамп времени на подпись
к документу не имеющему его.

О выборе сервера штампа времени:
Если нет более приоритетных соображений то лучше, выбрать тот сервер, у которого дольше действует сертификат подписи.
Это обеспечит более долгоживущую электронную подпись.
По умолчанию программа настроена на сервер штампа времени удостоверяющего центра КриптоПро
http://qs.cryptopro.ru/tsp/tsp.srf

Программа запускается в операционной системе Windows.
Совместима с большинством версий ОС Windows после XP.
Так же может быть запущена на терминал сервере что дает возможность использовать один
ключ с нескольких рабочих мест не переставляя его в разные компьютеры. И возможно сэкономить на лицензиях.
Исполняемый файл программы SignMachineW32.exe — собственно утилита подписания и проверки подписи.
Может использоваться самостоятельно для запуска из командной строки и подобным же
образом встраиваться в программные продукты.

Установка программы проста — достаточно скопировать файлы SignMachineW32.exe и OPFD.exe в нужную вам папку.

Запуск программы кликом на файл SignMachineW32.exe.

После запуска программа показывает окно выбора операции:


CODE SIGNING В WINDOWS ПРОСТОЙ И НЕДОРОГО

Для выполнения операции подписания нужно выбрать сертификат кнопкой «Выбрать сертификат(ы)».
Добавка «(ы)» не означает что можно за раз выбрать несколько сертификатов а просто подсказывает что
можно поставить несколько подписей. Выбирая их по очереди.

ПРОВЕРКА ПОДПИСИ.
Для проверки подписи документа выберите файл документа в следующем окне нажав кнопку «Обзор»:

Если подпись отделенная, то в строке, ниже появится такое же наименование файла подписи но с окончанием «.sig».
Вы можете выбрать файл, имеющий другое окончание (расширение) с отделенной подписью посредством кнопки, обозначенной стрелкой 2.
Затем нажимайте «Далее».
Появится окно:

Нажать «Проверить подпись»
По окончании проверки смотрим результат

Поле «Отчет о подписи» окрасилось в зеленый цвет — это признак что подпись проверилась без ошибок.
В строке обозначенной стрелкой 1 надпись «ПОДПИСЬ МАТЕМАТИЧЕСКИ КОРРЕКТНА» означает что подпись проверилась,
но возможна ситуация когда подпись сделана сертификатом с истекшим сроком поэтому стоит обратить
внимание и на то что написано в других строчках см стрелки 2 и 7.
Стрелки 3 и 7 сообщают о результате проверки штампа времени на содержимое.
Стрелка 4 показывает строку с датой и временем получения штампа на содержимое.
Внимание! Время в штампе в формате всемирное координированное время UTC.
Если требуется узнать время Московское то необходимо перевести это время с учетом сезонных и прочих сдвигов.
Стрелки 5,6 и 7 показыват иформацию о результатах проверки штампа времени на подпись.

ЭЦП:  ЧТО ИЗМЕНИТСЯ В 2022 ГОДУ ОСОБЫЙ РЕЖИМ ЭЛЕКТРОННОЙ ПОДПИСИ

При проверке, внедренной в документ подписи, после выполнения проверки исходный подписанный документ извлекается
и записывается в файл с названием как у исходного документа, но без финального расширения.
Если файл с внедренной подписью был без расширения то, наоборот, к извлеченному документу
добавляется расширение «.xtr»
Пример А: Документ с внедренной подписью назывался — «тренировка.txt.sig»
после проверки подписи в папке с документом появится документ — «тренировка.txt»
Пример Б: Документ с внедренной подписью назывался — «тренировка»
после проверки подписи в папке с документом появится документ — «тренировка.xtr»
В случае Б для того чтобы документ открыть в приложении вам придется самим угадывать правильное
расширение файла или спросить у отправителя.

ДОБАВЛЕНИЕ ШТАМПА ВРЕМЕНИ НА ПОДПИСЬ.
Как упоминалось выше штамп времени для документа, который подписан не вами, можно добавить только на подпись.
Потому что содержимое вместе со штампом времени на него уже пописано отправителем и невозможно добавить
к содержимому штамп не потеряв при этом подпись отправителя.
Для простановки штампа выберите документ и файл отделеной подписи как и в разделе ПОДПИСЬ

Если добавляете штамп для внедренной в документ подписи, то выберите документ с внедренной подписью
в поле «выберите документ для добавления штампа времени» этого же окна и нажимайте «Далее».

Когда же откроется окно показанное ниже:

УСТАНОВКА АДРЕСА СЕРВЕРА ПРОВАЙДЕРА ШТАМПА ВРЕМЕНИ.
После нажатия кнопки «Указать адрес сервера штампа времени» в самом первом окне выбора операций.
Откроется следующее окошко:

В котором в строке обозначенной стрелкой 1 вы можете указать адрес нужного вам сервера дающего штампы времени.
Поле изменения адреса намите кнопку «Установить» обозначенную стрелкой 2.
Если какая-то политика не диктует вам использование штампа времени конкретного УЦ то
лучшим вариантом будет сервер имеющий сертификат с большим сроком действия.
Проверить срок действия сертификата сервера вы можете, установив его адрес и затем подписав и проверив подпись
для пробного документа. При проверке отобразится сертификат сервера штампа времени. Выделив его из списка, нажмите
«просмотреть сертификат» и обратите внимание на срок действия.
Из перечисленных в окне программы серверов на момент написания этого текста такой сертификат у сервера компании «КриптоПро».
Этот адрес установлен в программе по умолчанию.

Теперь информация для тех кто будет программу запускать из командной строки:

Примеры запуска программы SignMachineW32.exe из командной строки:

Пример подписи файла отделенной подписью:
SignMachineW32.exe sign detached filetosign signature
где filetosign путь и имя подписываемого файла,
signature — имя файла в котором будет лежать отделенная подпись, включая сертификат с открытым ключом подписанта.
отправляете корреспонденту оба файла filetosign и signature .

Пример проверки отделенной подписи:
SignMachineW32.exe verify detached signedfile signature
где signedfile — имя подписанного файла,
signature — имя файла, в котором лежит отделенная подпись, включая сертификат с открытым ключом подписанта.

Пример подписи файла встроенной подписью:
SignMachineW32.exe sign attached filetosign signedfile
где filetosign путь и имя подписываемого файла,
signedfile — имя подписанного файла с включенной подписью и сертификатом с открытым ключом подписанта.
Отправляете корреспонденту один файл signedfile .

Пример проверки встроенной подписи:
SignMachineW32.exe verify attached signedfile
где signedfile — имя подписанного файла включающего документ, подпись и сертификат с открытым ключом подписанта.

Пример добавления штампа времени на внедренную подпиь:
SignMachineW32.exe addstamp detached signedfile.txt.sig
где signedfile.txt.sig — имя подписанного файла с внедренной подписью,

В случае успешной подписи или успешной проверки подписи программа по завершении возвращает 0
и -1 в случае неуспеха.
Простановка штампов времени зависит от предварительно проставленных галочек в оконном интерфейсе программы.

Оцените статью
ЭЦП64
Добавить комментарий