Как закодировать подпись с несколькими отметками времени - мои отметки перезаписываются

Проблема

Хотя я не получаю ошибок в подробном 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

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

присутствует только последняя отметка времени


Обоснование

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


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

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

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

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


person LinuxSecurityFreak    schedule 04.06.2019    source источник
comment
Поскольку он скоро истекает, я хотел бы убедиться, что у моего исполняемого файла Windows не возникнет проблем после истечения срока действия моего сертификата подписи. Я думал, что больше временных меток было бы лучше, если один сервер станет недоступен вовремя или служба остановится - я совершенно не понимаю, что вы имеете в виду. Как будущее истечение срока действия вашего сертификата соотносится с отметками времени существующих подписей? Обратите внимание, что TSA не должен участвовать в будущих проверках метки времени: en.wikipedia.org / wiki /   -  person JimmyB    schedule 11.06.2019


Ответы (1)


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

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

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

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

Кроме того, давайте представим, что к одной и той же подписи можно применить две отметки времени. Предположим, что файл подписан 01.01.2019, первая отметка времени применена 01.02.2019, а вторая отметка времени - 03.03.2020. Что это будет значить для клиента, который проверяет подпись? В этом нет особого смысла, не так ли? Только последняя временная метка действительно имеет значение, если сертификат все еще действителен - поэтому SignTool переопределяет предыдущую временную метку.

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

person Grzegorz Smulko    schedule 08.06.2019
comment
Точно! Это не вопрос технической осуществимости, но совершенно ясно, что то, чего хочет ОП, просто не имеет никакого смысла. Подпись не может произойти в два момента времени, а может произойти только один раз, для чего изначально были изобретены службы отметок времени. Вопрос является типичным примером проблемы XY: автор описывает как он хочет решать проблему, а не какую проблему он любит решать. (Хорошо, он упоминает свое обоснование, так что это всего лишь 80% XY.) - person kriegaex; 13.06.2019