SignMachineW32 - Программа для электронной подписи документов со штампом времени и проверки подписи.
Содержимое сайта обновлено 09.11.2023(добавлена программа PDFA).

Новая версия программы поддерживает штампы времени.

Программа SignMachineW32.exe предназначена для электронной подписи документов
в соответствии с требованиями Российкого законодательства.
Посредством обращения к сертифицированному криптопровайдеру программа обеспечивает
юридическую значимость электронных документов посредством использования процедур формирования и проверки
электронной подписи (ЭП) в соответствии с отечественными стандартами
ГОСТ Р 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) не может ничего уверенного сказать
относительно истинности утверждения отправителя о времени подписания и главное о том что на момент
подписания сертификат подписи был действителен.
Использование штампа времени и его проверка позволяют разрешить эту ситуацию.

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

  1. На содержимое документа;
  2. На подпись;

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

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

Теперь о том как пользоваться программой SignMachineW32.exe:>

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

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

Запуск программы кликом на файл SignMachineW32.exe.
После запуска программа показывает окно выбора операции:

  1. Подписать документ отделенной от документа подписью.
    В данном варианте у проверяющего, впоследствии вашу подпись, должны быть два файла.
    Неизменённый файл самого документа и отдельный файл подписи.
    Это бывает удобно, так как передаваемый файл документа остается в неизменном виде
    и его можно прочесть даже не имея программы проверки подписи.
  2. Подписать документ внедренной в документ подписью.
    В этом случае документ и подпись находятся в одном файле.
    И получающий его должен иметь программу проверки подписи чтобы открыть документ.
  3. Проверить подпись в варианте отделенной от документа подписи.
  4. Проверить подпись внедренную в документ
  5. Добавить штамп времени на подпись к чужой подписи не имеющей штампа времени.
  6. Указать адрес сервера штампа времени.
Нажатием одной из кнопок на экране перейдите к требуемой операции.
Установка галочек "Ставить штамп времени..." влияет на операции "подписать документ...".
При установленных галочках проставляется соответствующий подписи галочки штамп времени.

ПОДПИСЬ.

Для подписи документа выберите файл документа в этом окне нажав кнопку "Обзор":
При создании отделенной электронно-цифровой подписи программа сохраняет подпись в отдельном от документа файле имеющем
такое же наименование как файл документа с добавлением в конце ",sig"
При создани внедренной подписи программа сохраняет документ с внедренной подписью в файл имеющий
такое же наименование как файл документа с добавлением в конце ",sig"
Если документ выбран нажмите "Далее".
откроется окно с выбором сертификата, строкой с иформацией о сертификате (серийный номер и срок действия),
строкой результата и отчета о работе программы.


На окошке выше стрелочками с номерами обозначены:
1. Строки с именем субъекта сертификата из локального хранилища. Вам надо выбрать свой действующий сертификат.
2. При выборе сертификата из списка в этой строке появится краткая дополнительная информация о сертификате.
3. Кнопка "Посмотреть сертификат". Нажатие этой кнопки позволяет рассмотреть выбираемый сертификат подробнее.
4. Кнопка "Выбрать сертификат(ы). Нажатие этой кнопки добовляет сертификат подписи которым будет подписано сообщение.
Можно добавлять несколько подписей.
5. Здесь вы увидите отчет о простановке пописи и конечный результат работы например "ДОКУМЕНТ УСПЕШНО ПОДПИСАН"
6. Здесь вы увидите отчер о простановке штампа времени на содержимое документа.
7. Здесь вы увидите отчет о простановке штампа времени на подпись документа.
8. Окошко в которое выводится разная дополнительная служебная информация о работе программы.
9. Кнопки "Подписать" и "Закрыть окно" говорят сами за себя.
"Подписать" становится активна после выбора хотя бы одного сертификата.


В окошке выше показан пример что будет если выбрав в списке (обозначенном 1) сертификат нажать
кнопку 2 "Посмотреть сертификат". В результате открывается стандартное окно просмотра сертификата подписи.

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

В окошке выше вы видите результат нажатия на кнопки "Выбрать сертификат"
В обведенном регионе можно видеть информацию о добавлении сертификата и проверке его на допустимость использования.


При нажатии на кнопку "Подписать" к документу сначала добавляется штамп времени на содержимое.
Затем выскакивает стандартное для КриптоПро окошко ввода пароля для ключа подписи.


В окошке выше вы выдите результат подписи. Стрелками в окошках отмечены сообщения о результатая добавления
подписи и штампов времени. Одна из стрелок показывает наличие полосы прокрутки полей вывода результата.
Информации в поле может быть больше чем видно. Надо прокрутить поле чтобы посмотреть все.

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

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

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

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

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

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


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


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

Нажмите кнопку обозначенную стрелкой 1.
Результат добавления штампа смотрите где стрелка 2.
Закрываем окно.
Чтобы посмотреть, как добавился штамп времени, и какое там время можно выполнить операцию проверка подписи.

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

В котором в строке обозначенной стрелкой 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 signedfile.txt.sig
где signedfile - имя подписанного файла,
signedfile.txt.sig - имя файла отделенной подписи.
>

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

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