Как кодировать подпись несколькими временными метками - мои марки перезаписываются - PullRequest
0 голосов
/ 04 июня 2019

Задача

Несмотря на то, что я не получаю ошибки в подробных командах SignTool ( manual ) в моем исполняемом файле Windows, временные метки перезаписываются, и я хочу, чтобы было несколько временных меток, возможно ли это?

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

Вот что я попробовал

Функция PowerShell

function sign32exe([string]$arg)
{
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' sign /fd sha256 /a $arg
    Start-Sleep -Seconds 5
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://timestamp.globalsign.com/?signature=sha2 /td sha256 /v $arg
    Start-Sleep -Seconds 5
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v $arg
    Start-Sleep -Seconds 5
    & 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://time.certum.pl /td sha256 /v $arg
}

Выход PowerShell

Я получаю положительный вывод от SignTool, но временные метки перезаписываются при каждом вызове (реструктурируются для лучшей читаемости):

Процесс подписания проходит хорошо:

Done Adding Additional Store
Successfully signed: .\my.exe

Далее следуют метки времени, которые по отдельности идут без проблем:

Successfully timestamped: .\my.exe
Number of files successfully timestamped: 1
Number of errors: 0

Successfully timestamped: .\my.exe
Number of files successfully timestamped: 1
Number of errors: 0

Successfully timestamped: .\my.exe
Number of files successfully timestamped: 1
Number of errors: 0

Изображение для слов

only the last timestamp present


Обоснование

Сертификат, которым я владею, принадлежит органу Certum и называется Стандартная кодовая подпись . Поскольку он скоро истекает, я хотел бы убедиться, что мой исполняемый файл Windows не будет проблем после истечения срока действия моего сертификата подписи. Я думал, что больше временных отметок будет лучше, если один сервер станет недоступным во времени или служба остановится, например, это может означать, что полномочия Certum исчезнут, например.


Дополнительные детали

Мое идеальное решение должно решить вышеуказанную проблему:

  • путем отметки времени более чем с одним сервером; или

  • путем цитирования какого-либо достоверного источника о том, что это невозможно

1 Ответ

5 голосов
/ 09 июня 2019

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

Краткий ответ: нет, отметка времени невозможна более одного раза.

Однако можно подписывать разными алгоритмами (двойным знаком), но это означает, что будут созданы две отдельные подписи, каждая со своей собственной временной меткой.

Что на самом деле означают несколько временных меток?Отметка времени сообщает потребителю, когда актив был подписан.Не возможно, чтобы единственное действие подписания было сделано в два отдельных момента.Если не применяются две разные подписи, каждая из которых имеет собственную временную метку (двойную подпись).

Кроме того, давайте представим, что к одной и той же подписи можно применить две временные метки.Допустим, файл подписан 01.01.2009, первая временная метка применяется 01.02.2017, а вторая - 3/3/2020.Что бы это значило для клиента, который проверяет подпись?Это не имеет особого смысла, не так ли?Только последняя временная метка действительно имеет значение, если сертификат все еще действителен - вот почему SignTool переопределяет предыдущую временную метку.

Кстати, в общем, есть много статей о временной метке, ни одна из них не упоминает назначение более одной временной меткик сертификату, например:

...